Correspondência de cookies

A um nível elevado, a correspondência de cookies é o processo através do qual um anunciante ou um fornecedor associa cookies no respetivo domínio a cookies no domínio da Google. A correspondência com estes cookies permite associar dados originais que lhe pertencem a dados de anúncios Google (acompanhados através do Display & Video 360 e do Campaign Manager 360) nesse mesmo utilizador. Assim, pode incorporar dados do sistema de gestão das relações com clientes (CRM) e compreender melhor o comportamento dos utilizadores. Ao combinar estes dados através de junções centradas na privacidade, pode:

  • Segmentar públicos-alvo com base em artigos específicos abandonados nos carrinhos de compras, se esses utilizadores interagiram com os seus anúncios e domínio.
  • Determinar que anúncios originam sessões mais longas no seu domínio.
  • Analisar o histórico de compras associado aos dados após a campanha.

Limitações e privacidade do utilizador final

Embora seja eficaz, a correspondência de cookies tem algumas limitações:

  • É proibido juntar tabelas *_match e não *_match.
  • Tal requer trabalho de engenharia da sua parte e da Google.
  • É pouco provável que consiga fazer a correspondência de todos os seus dados de anúncios Google. As taxas de correspondência estão sujeitas a vários fatores e variam consoante o exemplo de utilização e a configuração do lado do cliente. Muitas vezes, as taxas de correspondência são inferiores ao esperado pelos utilizadores. Os utilizadores só são elegíveis para a correspondência de cookies se tiverem interagido com o seu domínio e anúncios.
  • A Google começa a preencher as tabelas de correspondência quando estão configuradas. Consoante a frequência com que os utilizadores visitam o seu site e recebem o píxel correspondente, poderá demorar meses até que as tabelas de correspondência contenham dados holísticos e estáveis sobre os utilizadores.
  • Não poderá associar utilizadores individuais a vários dispositivos, a menos que tenha alguma forma de associar os utilizadores entre dispositivos.
  • Não pode fazer a correspondência de um único utilizador através de vários cookies, como acontece quando um utilizador limpa os respetivos cookies.
  • As tarefas executadas em tabelas de correspondência estão sujeitas aos mesmos requisitos de agregação que outras tarefas no Ads Data Hub. Uma taxa de correspondência baixa combinada com visitas pouco frequentes ao domínio pode dificultar a obtenção de dados. Isto deve-se ao efeito combinado das taxas de correspondência e dos requisitos de agregação1.
  • Ao abrigo das políticas da Google relativas à privacidade do utilizador final:
    • É proibido fazer a correspondência dos dados de utilizadores com e sem sessão iniciada.
    • Não pode fazer a correspondência de dados com utilizadores que desativaram a personalização de anúncios.
  • Para eventos do iOS, apenas pode fazer corresponder os dados provenientes de apps com o iOS 14.5 ou posterior de utilizadores que tenham concedido autorização ao abrigo da framework App Tracking Transparency da Apple.

Para garantir que consegue usar os seus dados originais no Ads Data Hub, tem de confirmar que recebeu o consentimento adequado para partilhar dados de utilizadores finais do EEE com a Google em conformidade com a Política de Consentimento de Utilizadores da UE e a política do Ads Data Hub. Este requisito aplica-se a cada conta do Ads Data Hub e tem de ser atualizado sempre que carrega novos dados originais. Qualquer utilizador individual pode dar esta confirmação em nome de toda a conta.

Tenha em atenção que as regras de consulta dos serviços Google aplicáveis a consultas de análise também se aplicam a consultas de correspondência de cookies. Por exemplo, não pode executar consultas em vários serviços sobre utilizadores no EEE quando cria uma tabela de correspondência.

Para saber como confirmar o consentimento no Ads Data Hub, consulte o documento Requisitos para consentimento no Espaço Económico Europeu.

Para que a Google preencha as suas tabelas de correspondência, tem de publicar uma etiqueta de correspondência em todas as páginas do seu domínio onde quer fazer a correspondência de dados de publicidade. O local onde coloca o píxel depende dos seus objetivos publicitários. Por exemplo, é aconselhável tentar fazer a correspondência de todos os utilizadores que visitem o seu domínio (o que requer píxeis em quase todas as páginas) ou pode fazer a correspondência de utilizadores com conversão (o que requer píxeis numa página de conversão). Geralmente, um píxel mais amplo dá origem a taxas de correspondência mais elevadas.

A etiqueta de correspondência é um píxel 1 x 1 transparente, que contém o ID do perfil de correspondência de cookies e o ID do utilizador ou cookie codificado:

<img src="https://cm.g.doubleclick.net/pixel?google_nid=adh_customername&google_hm=Q29va2llIG51bWJlciAxIQ" />

Esta etiqueta de correspondência é o que inicia a comunicação entre si e os serviços de correspondência de cookies da Google.

Vista geral passo a passo

  1. Um utilizador visita uma página com uma etiqueta de correspondência.
  2. A etiqueta de correspondência inicia uma série de redirecionamentos para os serviços de correspondência da Google Marketing Platform, do Google Ads e do YouTube. Os pedidos contêm o ID ou o cookie desse utilizador do seu Website, bem como o cookie da Google em cada um dos espaços de ID do serviço de correspondência.
  3. É devolvido um píxel 1 x 1 transparente ao navegador para confirmar que o pedido foi satisfeito.

Este processo é apresentado no diagrama seguinte:

Imagem que representa uma série de redirecionamentos entre o navegador e os serviços de correspondência

Configuração

O processo de configuração da correspondência de cookies no Ads Data Hub é o seguinte:

  1. Contacte o seu representante da conta e comunique o seu interesse na correspondência de cookies. Aquele irá debater os seus objetivos e fornecer mais informações sobre a implementação do píxel de acompanhamento no seu domínio.
  2. Os especialistas do Ads Data Hub vão iniciar outra conversa para debater os requisitos técnicos e os exemplos de utilização.
  3. Enquanto estiver a implementar o píxel de acompanhamento e o ponto final de erros, a Google cria as suas tabelas de correspondência.

Após concluir estes passos, não é necessária nenhuma ação imediata. A Google vai preencher as tabelas de correspondência diariamente2, por isso, terá de aguardar o tempo necessário para que a sua tabela contenha dados suficientes para oferecer correspondências significativas e cumprir os requisitos de agregação. Isto depende da frequência com que os utilizadores visitam o seu site. Um site com visitantes diários atinge este ponto muito mais rapidamente do que um site com visitantes mensais. À medida que o número de novas correspondências diminui, as tabelas de correspondência irão conter dados mais abrangentes.

Consultar as tabelas de correspondência

Quando as tabelas de correspondência contiverem dados suficientes para satisfazer as verificações de privacidade, tem tudo pronto para executar consultas nas tabelas.

Cada tabela no esquema do Ads Data Hub que contenha um campo user_id é acompanhada por uma tabela *_match. Por exemplo, para a tabela adh.google_ads_impressions, o Ads Data Hub também gera uma tabela de correspondência denominada adh.google_ads_impressions_match que contém os IDs dos utilizadores. São criadas tabelas de correspondência separadas para tabelas isoladas por políticas. Por exemplo, para a tabela adh.google_ads_impressions_policy_isolated_youtube, o Ads Data Hub também gera uma tabela de correspondência denominada adh.google_ads_impressions_policy_isolated_youtube_match que contém os IDs dos utilizadores.

Estas tabelas contêm um subconjunto dos utilizadores disponíveis nas tabelas originais, quando existe uma correspondência do user_id. Por exemplo, se a tabela original contiver dados do Utilizador A e do Utilizador B, mas apenas o Utilizador A tiver correspondência, o Utilizador B não estará na tabela de correspondência.

As tabelas de correspondência contêm uma coluna adicional denominada external_cookie, que armazena o cookie como BYTES.

É importante ter em conta o tipo de campo ao escrever as consultas. Os operadores de comparação de SQL esperam que os literais que está a comparar sejam do mesmo tipo. Consoante a forma como o user_id é armazenado na tabela de dados originais, pode ter de codificar os valores na tabela antes de fazer a correspondência dos dados. Tem de transmitir a sua chave de junção para BYTES para ter correspondências com êxito:

JOIN ON
  adh.google_ads_impressions_match.external_cookie = CAST(my_data.user_id AS BYTES)

Além disso, as comparações de strings em SQL são sensíveis a letras maiúsculas, pelo que poderá ter de codificar as strings em ambos os lados da comparação para garantir que podem ser comparadas com precisão.

Codificar IDs dos utilizadores

Codifique IDs dos utilizadores do lado do cliente

Para garantir que diferentes formatos de ID podem ser transmitidos em segurança através do URL, todos os IDs têm de ser codificados em Base64 e seguros para URL antes de serem enviados. O ID descodificado em Base64 e seguro para URL vai estar disponível no Ads Data Hub no campo external_cookie, por isso, tem de anular quaisquer transformações que tenha aplicado antes da codificação para obter o ID original.

Se o ID tiver sempre um máximo de 24 carateres (ou bytes), pode incluir o ID codificado em Base64 e seguro para URL num píxel, conforme mostrado no exemplo 1. Se o ID tiver mais de 24 carateres (ou bytes), tem de o transformar numa representação com um máximo de 24 bytes. Em alguns casos (como o GUID no exemplo 2), basta fazer a conversão para a representação de bytes. Noutros casos, pode ter de enviar à Google um subconjunto (ou um hash) do seu ID. Tenha em atenção que, em qualquer caso, tem de garantir que pode escrever uma JUNÇÃO SQL que converta o ID na tabela original da mesma forma.

Exemplo 1

O valor do ID do utilizador estará sempre abaixo do limite de 24 bytes. O Ads Data Hub recomenda que envie simplesmente o seu ID do utilizador diretamente para o ADH (depois de o codificar em Base64 seguro para URL a fim de transportar URLs).

var userId = 'abcdef123456789';
// Encode the string (or number) in normal base64.
var userIdBase64 = btoa(userId);

// Ensure that the uploaded user IDs use web-safe Base64 encoding.
userIdBase64 = userIdBase64.replace(/\+/g, '-').replace(/\//g, '_')
    .replace(/=+$/, '');

// After encoding the UUID correctly, you can create the request tag and
// insert it into the DOM.
var imgElement = Document.createElement('img');
imgElement.src =
    'https://cm.g.doubleclick.net/pixel?google_nid=adh_customername&google_hm='
    + userIdBase64;
document.body.appendChild(imgElement);
Exemplo 2

Pode atribuir um valor de identificador único universal (UUID) como um ID do utilizador, por exemplo: 123e4567-e89b-12d3-a456-426655440000.

O Ads Data Hub recomenda as seguintes transformações ao fazer a correspondência:

  1. O UUID está formatado como uma string de 36 carateres.
  2. UUID com descodificação hexadecimal.
  3. O UUID está formatado como bytes.
  4. Bytes com codificação em Base64 seguro para URL.
  5. O UUID está formatado como uma string.

Isto pode ser implementado com o seguinte código:

JavaScript

var userId = '123e4567-e89b-12d3-a456-426655440000';

// A helper function for converting a hex string to a byte array.
function strToBytes(str) {
        for (var bytes = [], i = 0; i < str.length; i += 2) {
          bytes.push(parseInt(str.substr(i, 2), 16));
        }
        return bytes;
}

// Remove the formatting dashes from the UUID.
userId = userId.replace(/-/g, '');

// Encode the hex string as a byte array.
var userIdBytes = strToBytes(userId);

// Encode the byte array in normal base64.
var userIdBase64 = btoa(String.fromCharCode(...new Uint8Array(userIdBytes)));

// Ensure that the uploaded user IDs use web-safe Base64 encoding.
userIdBase64 = userIdBase64.replace(/\+/g, '-').replace(/\//g, '_').replace(
    /=+$/, '');

// After encoding the UUID correctly, you can create the request tag and
// insert it into the DOM.
var imgElement = Document.createElement('img');
imgElement.src =
    'https://cm.g.doubleclick.net/pixel?google_nid=adh_customername&google_hm='
    + userIdBase64;
document.body.appendChild(imgElement);

Python

import base64

user_id = '123e4567-e89b-12d3-a456-426655440000'
user_id_as_bytes = bytes.fromhex(user_id.replace('-', ''))
base64.urlsafe_b64encode(user_id_as_bytes)

Se houver uma correspondência com um ID do utilizador da Google, o campo external_cookie contém o seu ID como um valor em bytes. Para reconstruir o ID original, é necessária a seguinte transformação:

  1. external_cookie está formatado como bytes.
  2. external_cookie com codificação hexadecimal.
  3. external_cookie está formatado como uma string.

Codifique IDs de utilizadores no Ads Data Hub

Se armazenar a string do UUID num campo nos dados originais, tem de a converter em bytes, como no exemplo acima, para conseguir juntar os dados com êxito.

O exemplo seguinte mostra como codificar o UUID e juntá-lo no campo do cookie externo:

JOIN my_data ON imp.external_cookie = FROM_HEX(REPLACE(my_data.uuid, '-', ''))

Tenha em atenção que não pode transmitir um número inteiro para bytes. Se o ID do utilizador for um número inteiro (como no exemplo 1 acima), primeiro tem de o transmitir como uma string:

JOIN my_data ON imp.external_cookie = CAST(CAST(my_data.user_id AS STRING) AS BYTES)

Lembre-se de que a codificação necessária para fazer a correspondência dos seus dados será específica da forma como os armazena e como os codificou antes de os enviar para o Ads Data Hub.

Saiba mais sobre as funções de strings no SQL do BigQuery.

Exemplo de consulta

O exemplo seguinte junta dados originais a google_ads_impressions_match e, em seguida, junta estes resultados a adh_google_ads_impressions numa segunda consulta.

SELECT
  imp.campaign_id as campaign_id,
  sum(my_data.recent_orders) as orders,
  average(my_data.lifetime_value) as ltv
FROM
  adh.google_ads_impressions_match as imp
LEFT JOIN
  my_data ON imp.external_cookie = my_data.company_guest_id_bytes
GROUP BY
  campaign_id

Com os resultados da consulta anterior guardados como previous_results, pode agora juntar google_ads_impressions. Esta ação adiciona dados sobre campanhas com 0 impressões aos resultados.

SELECT
  campaign_id,
  COALESCE(orders, 0) as orders,
  COALESCE(ltv, 0) as ltv,
FROM (SELECT DISTINCT campaign_id
   FROM adh.google_ads_impressions)
LEFT JOIN previous_results USING (campaign_id)

  1. Exemplo: uma taxa de correspondência de 20% significa efetivamente que precisa de 250 utilizadores por linha para atingir o limite da agregação de 50 utilizadores, uma vez que 50 / 0,2 = 250. 

  2. As correspondências feitas num determinado dia podem sofrer um atraso de até 48 horas antes de serem apresentadas nas tabelas.