Preocupações com a privacidade estão em alta, e os navegadores começaram a impor limitações na funcionalidade de cookies de terceiros. Em 2019, o Safari começou a forçar uma expiração de 7 dias para cookies de terceiros, e o Firefox começou a bloqueá-los por padrão. No primeiro trimestre de 2024, o Google Chrome começará a bloquear cookies de terceiros para 1% de seus usuários por padrão, aumentando para todos os usuários no segundo semestre de 2024.
Como isso afeta você?
Sem cookies de terceiros para identificá-los, os visitantes são considerados novos usuários. No Safari, isso acontece 7 dias após a visita mais recente, e se os cookies estiverem completamente bloqueados, o visitante é considerado um novo usuário a cada visualização de página. As implicações podem ser significativas: um número inflado de usuários, aderência quebrada nas variações dos testes A/B, dados históricos desconectados e mais.
Para superar essa limitação, você deve servir nosso cookie DYID do seu servidor, tornando-o um cookie de primeira parte que não é afetado por essas restrições.
Como servir o cookie DYID do seu servidor
Nota: Esta solução é genérica. Veja a próxima seção para aprender como implementar a solução no Shopify..
A essência da solução é que o cookie DYID deve ser definido pelo aplicativo backend que serve seu site em seu domínio. Cookies definidos dessa forma são considerados cookies de primeira parte e, portanto, não são afetados pelas restrições e podem ter um período de validade mais longo. Isso é algo que seus desenvolvedores devem configurar no código, da seguinte forma:
- Verifique se um visitante chega ao seu site com um cookie DYID (é um usuário que retorna).
- Se sim, duplique o cookie com um novo nome (_dyid_server), e defina sua data de expiração para 1 ano.
Exemplo:
Digamos que o valor do cookie _dyid cookie seja 7237284912004766755. Duplica-se o valor do cookie em um novo cookie, _dyid_server, e define-se a expiração para 1 ano configurando 31556951 o valor do atributo max-age.
O resultado é o seguinte cookie: _dyid_server=7237284912004766755;max-age=31556951
Aqui está o fluxo desta solução:
- Um visitante entra no seu site.
- Seu servidor (aplicativo backend) recebe uma solicitação para retornar uma página da web do navegador. Solicitações de usuários que retornam incluem o cookie _dyid.
- Seu servidor de aplicativos realiza as seguintes etapas:
- Verifica se a solicitação inclui um cookie _dyid.
- Se o cookie _dyid for encontrado, ele o duplica como um novo cookie _dyid_server. 
- Em seguida, retorna o novo cookie como um cabeçalho de resposta com uma expiração de 1 ano.
Isso o configura como um cookie de primeira parte do lado do servidor no navegador do visitante, que não é afetado pela imposição de expiração de cookies.
(Observe que o cookie _dyid continua a ser retornado, isso não deve mudar).
- Agora, nosso script usa o cookie _dyid_server enquanto ele é executado em sua página, e seu visitante vê o conteúdo renderizado do seu site.
Dessa forma, nenhum dado de usuário que retorna é perdido, mesmo se o usuário não tiver visitado seu site por mais de 7 dias.
Observe que se você ativou o modo Consentimento Ativo de Cookies,, é importante aguardar o objeto de consentimento e agir de acordo com seu resultado. Caso contrário, você pode gravar cookies para usuários que optaram por não participar.
Exemplos de código
Aqui estão alguns trechos de código de exemplo para plataformas e linguagens de programação comumente usadas.
>>> curl -v http://yoursite.example.com --cookie "_dyid=-3233584359067736988" 19:55:13
* Trying 172.217.18.4...
* TCP_NODELAY set
* Connected to yoursite.example.com (172.217.18.4) port 80 (#0)
> GET / HTTP/1.1
> Host: yoursite.example.com
> User-Agent: curl/7.64.1
> Accept: */*
> Cookie: _dyid=-3233584359067736988
>
< HTTP/1.1 200 OK
< Date: Mon, 30 Mar 2020 16:55:16 GMT
...
< Content-Type: text/html; charset=UTF-8
...
< Set-Cookie: _dyid_server=-3233584359067736988; expires=Wed, 29-Apr-2021 16:55:16 GMT; path=/; domain=.google.com; Secure
// necessita do middleware cookieParser antes de podermos fazer qualquer coisa com cookies
app.use(express.cookieParser());
app.use((req, res, next) => {
if (req.cookies._dyid) { // se este é um usuário que retorna e o cookie DYID existe
const dyid = req.cookies._dyid;
res.cookie('_dyid_server', dyid, { // armazena um novo cookie do lado do servidor chamado "_dyid_server" com o valor DYID
expires: new Date(Date.now() + 31540000000000), // Define uma expiração de 1 ano para o novo cookie
});
next();
});
...
dyid_cookie = request.COOKIES.get('_dyid')
if dyid_cookie is not None: # se este é um usuário que retorna e o cookie DYID existe
set_cookie(‘_dyid_server’, dyid_cookie, 31557600) # Armazena um novo cookie do lado do servidor chamado "_dyid_server" com o valor DYID...
<?php
if(isset($_COOKIE['_dyid'])) {
$dyid_cookie = $_COOKIE['_dyid']; /* se este é um usuário que retorna e o cookie DYID existe */
setcookie('_dyid_server', $dyid_cookie, time() + 31557600); /* expira em 1 ano */
}
...
Implementando DYID como um cookie de primeira parte no Shopify
O Shopify oferece uma maneira simples de implementar um cookie de primeira parte:
- No seu admin do Shopify, clique em Configurações.
- Clique em Eventos do Cliente.
- Clique em Adicionar Píxel Personalizado.
- Copie e cole o seguinte código:
(async function(){
const max_age = 30240000;
const dyid_server = await browser.cookie.get("_dyid_server");
if (
dyid_server &&
dyid_server !== "" &&
dyid_server !== "null" &&
dyid_server !== null
) {
browser.cookie.set(`_dyid_server=${dyid_server};max-age=${max_age};path=/`);
} else {
const dyid = await browser.localStorage.getItem("_dyid");
if (dyid) {
browser.cookie.set(`_dyid_server=${dyid};max-age=${max_age};path=/`);
}
}
})()
Validação técnica
Este procedimento verifica se um cookie do lado do servidor chamado _dyid_server _dyid_server é criado com o mesmo valor do cookie _dyid, mas com uma expiração de 1 ano. Pode ser feito em qualquer navegador, mas usamos o Chrome neste exemplo:
- Abra uma nova janela do navegador e vá para qualquer página do seu site que tenha o script Dynamic Yield..
- Abra o console de desenvolvedor do Chrome (pressione Command+Option+J (Mac) ou Control+Shift+J (Windows, Linux, Chrome OS).
- Vá para a aba Rede. Selecione Preservar Log e clique em Limpar ⊘.
- Atualize a página. Selecione a primeira solicitação com o URL do seu site (a), (a) e olhe para a aba Cabeçalhos(b).
- Verifique se o valor de _dyid_server é o mesmo que o valor de dyid.
O valor do cookie _dyid_server está no cabeçalho da solicitação. Você também pode encontrar o valor de dyid na seção Cabeçalhos de Solicitação da guia Cabeçalhos sob "cookie:" (o primeiro campo). Se os valores coincidirem, sua solução está verificada.
Nota: Esta validação não pode ser feita na Guia do aplicativo › Armazenamento › Cookies, porque essa região inclui cookies do servidor e do cliente, e alguns deles são automaticamente excluídos pelo Safari.