Corrispondenza dei cookie

A livello generale, la corrispondenza dei cookie è il processo mediante il quale un inserzionista o un fornitore associa i cookie nel proprio dominio a quelli nel dominio di Google. La corrispondenza di questi cookie ti consente di collegare i dati proprietari che possiedi ai dati pubblicitari di Google (monitorati tramite Display & Video 360 e Campaign Manager 360) sullo stesso utente, in modo da poter incorporare i dati CRM e comprendere meglio il suo comportamento. Combinando questi dati tramite join incentrati sulla privacy, puoi:

  • Scegliere come target segmenti di pubblico in base ad articoli specifici abbandonati nei carrelli degli acquisti, se questi utenti hanno interagito con i tuoi annunci e il tuo dominio.
  • Determinare quali annunci generano sessioni più lunghe nel tuo dominio.
  • Analizzare la cronologia acquisti unita ai dati post-campagna.

Limitazioni e privacy dell'utente finale

Sebbene sia molto efficace, la corrispondenza dei cookie presenta alcune limitazioni:

  • I join tra tabelle *_match e non *_match sono vietati.
  • Richiede interventi tecnici da parte sia tua sia di Google.
  • È improbabile che tu riesca a trovare una corrispondenza con tutti i tuoi dati pubblicitari di Google. I tassi di corrispondenza dipendono da una serie di fattori e variano a seconda del caso d'uso e della configurazione lato client. I tassi di corrispondenza sono spesso inferiori a quanto previsto dagli utenti. Gli utenti sono idonei alla corrispondenza dei cookie solo se hanno interagito con il tuo dominio e i tuoi annunci.
  • Google inizia a completare le tabelle delle corrispondenze quando sono configurate. A seconda della frequenza con cui gli utenti visitano il tuo sito e ricevono il pixel corrispondente, potrebbero essere necessari mesi prima che le tabelle delle corrispondenze contengano dati globali e stabili sui tuoi utenti.
  • Non sarai in grado di associare singoli utenti a più dispositivi, a meno che tu non abbia altri modi di collegare gli utenti tra i dispositivi.
  • Non puoi far corrispondere un singolo utente utilizzando più cookie, come accade quando l'utente cancella i cookie.
  • I job eseguiti sulle tabelle delle corrispondenze sono soggetti agli stessi requisiti di aggregazione degli altri job in Ads Data Hub. Un tasso di corrispondenza basso combinato a visite non frequenti al tuo dominio potrebbe causare difficoltà nell'ottenere dati. Ciò è dovuto all'effetto combinato dei tassi di corrispondenza e dei requisiti di aggregazione.1
  • In conformità alle norme di Google sulla privacy dell'utente finale:
    • Non puoi far corrispondere i dati di accesso e uscita di un determinato utente.
    • Non puoi associare i dati agli utenti che hanno disattivato la personalizzazione degli annunci.
  • Per gli eventi iOS, puoi associare i dati provenienti dalle app su iOS 14.5 e versioni successive solo agli utenti che hanno concesso l'autorizzazione nell'ambito del framework dell'App Tracking Transparency (ATT) di Apple.

Per assicurarti di poter utilizzare i tuoi dati proprietari in Ads Data Hub, devi confermare di aver ottenuto dagli utenti finali del SEE l'apposito consenso a condividere i dati con Google ai sensi delle Norme relative al consenso degli utenti dell'UE e delle Norme di Ads Data Hub. Questo requisito si applica a ciascun account Ads Data Hub e deve essere aggiornato ogni volta che vengono caricati nuovi dati proprietari. Questa conferma può essere data da qualsiasi utente per conto dell'intero account.

Tieni presente che le stesse regole per le query dei servizi Google che si applicano alle query di analisi valgono anche per le query di corrispondenza dei cookie. Ad esempio, non puoi eseguire query su più servizi sugli utenti nel SEE quando crei una tabella delle corrispondenze.

Per sapere come confermare il consenso in Ads Data Hub, consulta Requisiti per il consenso per lo Spazio economico europeo (SEE).

Per consentire a Google di completare le tabelle delle corrispondenze, devi pubblicare un tag di corrispondenza su ogni pagina del tuo dominio in cui ti interessa abbinare i dati pubblicitari. Il punto in cui posizioni il pixel dipende dai tuoi obiettivi pubblicitari. Ad esempio, puoi scegliere di provare ad associare tutti gli utenti che visitano il tuo dominio (opzione che richiede pixel in quasi tutte le pagine) oppure gli utenti che effettuano una conversione (opzione che richiede pixel su una pagina di conversione). In genere, un pixel più diffuso comporta tassi di corrispondenza più elevati.

Il tag di corrispondenza è un pixel 1 x 1 trasparente, contenente il tuo ID profilo di corrispondenza dei cookie e un ID cookie o utente codificato:

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

Questo tag di corrispondenza è l'elemento che avvia la comunicazione tra te e i servizi di corrispondenza dei cookie di Google.

Panoramica passo passo

  1. Un utente visita una pagina con un tag di corrispondenza.
  2. Il tag di corrispondenza avvia una serie di reindirizzamenti ai servizi di corrispondenza di Google Marketing Platform, Google Ads e YouTube. Le richieste contengono l'ID o il cookie di quell'utente proveniente dal tuo sito web, oltre al cookie di Google in ciascuno degli spazi ID del servizio di corrispondenza.
  3. Viene restituito al browser un pixel 1 x 1 trasparente per confermare che la richiesta è stata soddisfatta.

Questa procedura è illustrata nel seguente diagramma:

Immagine che mostra una serie di reindirizzamenti tra il browser e i servizi di corrispondenza

Configurazione

Di seguito è descritta la procedura per configurare la corrispondenza dei cookie in Ads Data Hub:

  1. Contatta il rappresentante del tuo account e comunica il tuo interesse per la corrispondenza dei cookie. Ti parlerà dei tuoi obiettivi e ti fornirà ulteriori informazioni sull'implementazione del pixel di monitoraggio nel tuo dominio.
  2. Gli esperti di Ads Data Hub avvieranno un'altra conversazione per discutere dei requisiti tecnici e dei casi d'uso.
  3. Durante il deployment del pixel di monitoraggio e dell'endpoint di errore, Google creerà le tabelle delle corrispondenze.

Una volta completati questi passaggi, non sarà richiesta alcuna azione immediata. Poiché Google completerà quotidianamente le tabelle delle corrispondenze,2 dovrai attendere un determinato periodo di tempo prima che la tua tabella contenga dati sufficienti a fornire corrispondenze significative e soddisfare i requisiti di aggregazione. Questo tempo dipende dalla frequenza con cui gli utenti visitano il tuo sito. Un sito con visitatori giornalieri raggiungerà questo punto molto più velocemente di uno con visitatori mensili. Quando il numero di nuove corrispondenze diminuisce, significa che le tabelle delle corrispondenze contengono dati più completi.

Esecuzione di query sulle tabelle delle corrispondenze

Quando le tabelle delle corrispondenze contengono dati sufficienti a soddisfare i controlli di privacy, puoi eseguire query sulle tabelle.

Ogni tabella nello schema di Ads Data Hub contenente un campo user_id è accompagnata da una tabella *_match. Ad esempio, per la tabella adh.google_ads_impressions, Ads Data Hub genera anche una tabella delle corrispondenze denominata adh.google_ads_impressions_match contenente i tuoi ID utente. Tabelle delle corrispondenze separate vengono create per tabelle isolate in conformità alle norme. Ad esempio, per la tabella adh.google_ads_impressions_policy_isolated_youtube, Ads Data Hub genera anche una tabella delle corrispondenze denominata adh.google_ads_impressions_policy_isolated_youtube_match contenente i tuoi ID utente.

Queste tabelle contengono un sottoinsieme degli utenti disponibili nelle tabelle originali, in cui è presente una corrispondenza con user_id. Ad esempio, se la tabella originale contiene dati per l'utente A e l'utente B, ma presenta una corrispondenza solo con l'utente A, l'utente B non apparirà nella tabella delle corrispondenze.

Le tabelle delle corrispondenze contengono una colonna aggiuntiva denominata external_cookie, che memorizza il cookie come BYTES.

Quando scrivi le query, è importante considerare il tipo di campo. Gli operatori di confronto SQL si aspettano che i valori letterali confrontati siano dello stesso tipo. A seconda di come user_id viene archiviato nella tabella dei dati proprietari, potrebbe essere necessario codificare i valori nella tabella prima di creare corrispondenze tra i dati. Per creare corrispondenze tra i dati, devi trasmettere la tua chiave di join in BYTES:

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

Inoltre, i confronti di stringhe in SQL sono sensibili alle lettere maiuscole, pertanto potresti dover codificare le stringhe su entrambi i lati per poterle confrontare in modo accurato.

Codificare gli ID utente

Codificare gli ID utente sul lato client

Affinché la trasmissione dei vari formati ID tramite URL avvenga in modo sicuro, prima di essere inviati tutti gli ID devono essere codificati in formato Base64 con protezione dell'URL. Poiché l'ID decodificato in formato Base64 con protezione dell'URL verrà reso disponibile in Ads Data Hub nel campo external_cookie, dovrai annullare qualsiasi trasformazione applicata prima della codifica per ricavare l'ID originale.

Se il tuo ID non supera mai i 24 caratteri (o byte), puoi includere in un pixel l'ID codificato in formato Base64 con protezione dell'URL, come mostrato nell'esempio 1. Se il tuo ID supera i 24 caratteri (o byte), dovrai trasformarlo in una rappresentazione di massimo 24 byte. In alcuni casi (come il GUID nell'esempio 2) si tratta di convertire nella rappresentazione in byte. In altri casi, è possibile che tu debba inviare a Google un sottoinsieme (o un hash) del tuo ID. Tieni presente che, in ogni caso, dovrai assicurarti di poter scrivere un JOIN SQL che convertirà l'ID nella tua tabella proprietaria allo stesso modo.

Esempio 1

Il valore dell'ID utente sarà sempre inferiore al limite di 24 byte. Ads Data Hub consiglia di inviare l'ID utente direttamente ad ADH, dopo averlo codificato in formato Base64 con protezione dell'URL per il trasporto degli URL.

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);
Esempio 2

Puoi assegnare un valore UUID (Universal Unique Identifier) come ID utente, ad esempio 123e4567-e89b-12d3-a456-426655440000.

Ads Data Hub consiglia le seguenti trasformazioni durante la corrispondenza:

  1. Formattazione dell'UUID come una stringa di 36 caratteri.
  2. Decodifica dell'UUID in formato esadecimale.
  3. Formattazione dell'UUID come byte.
  4. Codifica dei byte in formato Base64 con protezione dell'URL.
  5. Formattazione dell'UUID come stringa.

Queste trasformazioni possono essere implementate con il seguente codice:

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)

In caso di corrispondenza con un ID utente Google, il campo external_cookie contiene il tuo ID sotto forma di valore di byte. Per ricostruire il tuo ID originale, è necessaria la seguente trasformazione:

  1. Formattazione di external_cookie come byte.
  2. Codifica esadecimale di external_cookie.
  3. Formattazione di external_cookie come stringa.

Codificare gli ID utente in Ads Data Hub

Se memorizzi la stringa UUID in un campo nei tuoi dati proprietari, dovrai convertirla in byte, come nell'esempio sopra, per unire i dati.

L'esempio seguente mostra come codificare l'UUID e unirlo nel campo del cookie esterno:

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

Tieni presente che non puoi convertire un numero intero in byte. Se il tuo ID utente è un numero intero (come nell'esempio 1 riportato sopra), devi prima convertirlo in stringa come segue:

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

Ricorda che la codifica richiesta per la corrispondenza dei tuoi dati dipenderà dal modo in cui li archivi e da come li hai codificati prima di inviarli ad Ads Data Hub.

Scopri di più sulle funzioni stringa in BigQuery SQL.

Esempio di query

Nell'esempio seguente i dati proprietari vengono uniti a google_ads_impressions_match, poi i risultati vengono uniti a adh_google_ads_impressions in una seconda query.

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

Con i risultati della query precedente salvati come previous_results, ora puoi unire google_ads_impressions. In questo modo, i dati sulle campagne con 0 impressioni saranno aggiunti ai risultati.

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. Ad esempio, un tasso di corrispondenza del 20% indica che sono necessari 250 utenti per riga per raggiungere la soglia di aggregazione di 50 utenti (ovvero 50 / 0,2 = 250). 

  2. Le corrispondenze effettuate in un determinato giorno potrebbero subire un ritardo fino a 48 ore prima di comparire nelle tabelle.