Menu della documentazione

OpenAI Ads (ChatGPT)

Controllo del consenso del pixel OpenAI (annunci in ChatGPT): attivazione, coda oaiq, caricamento dell'SDK solo dopo il consenso e verifica.

OpenAI Measurement Pixel (annunci in ChatGPT)

CookieHug può controllare il consenso del pixel di misurazione OpenAI (oaiq), il pixel di conversione degli annunci mostrati in ChatGPT. Due caratteristiche di questo pixel rendono la semplice copia dello snippet ufficiale non conforme nel SEE:

  • il pixel parte con il consenso attivo: senza oaiq("consent", false) prima di init invia dati subito,
  • gli eventi inviati con il consenso disattivato vengono scartati, non messi in coda: OpenAI non li ripete dopo un consenso successivo.

La funzione è disattivata per impostazione predefinita e si attiva per dominio. CookieHug non ha bisogno dell'ID del pixel: crea la coda di comandi oaiq, prende in carico il comando di consenso e decide *quando* caricare l'SDK del pixel (oaiq.min.js).

Attivazione

  • Apri il dominio nel pannello → Avanzate → sezione Politica del consenso.
  • Trova la scheda OpenAI Measurement Pixel (annunci in ChatGPT) e attiva l'interruttore: il salvataggio è automatico.
  • La modifica arriva nello script del banner al prossimo download (cache dello script: fino a 5 minuti).
  • Lo snippet CookieHug deve stare nella pagina prima dello snippet del pixel OpenAI.

Come funziona il segnale

All'avvio l'SDK CookieHug crea uno stub della coda window.oaiq e inserisce in testa una voce di consenso coerente con la decisione del visitatore. Lo snippet ufficiale del pixel inizia con if (w.oaiq) return;: vedendo la nostra coda, aggiunge solo le sue chiamate init e measure, e CookieHug carica l'SDK OpenAI solo quando c'è il consenso per la categoria Marketing:

// avvio senza decisione salvata: non si carica nulla di OpenAI:
window.oaiq.q  // → [['consent', false]]

// lo snippet del sito (dopo CookieHug) aggiunge:
oaiq('init', { pixelId: '…' });
oaiq('measure', 'page_viewed');

// «Accetta tutto» → CookieHugOnConsentReady:
window.oaiq.q  // → [['consent', true], ['init', …], ['measure', 'page_viewed']]
// e solo ora https://bzrcdn.openai.com/sdk/oaiq.min.js entra nella pagina

In questo modo gli eventi messi in coda prima della decisione (di solito page_viewed) partono dopo il consenso invece di andare persi. In caso di rifiuto non si carica nulla di OpenAI. In una visita successiva con consenso salvato l'SDK si carica all'avvio della pagina. Quando l'SDK è attivo, ogni nuova decisione gli arriva come oaiq('consent', true | false): un rifiuto nell'editor ferma la misurazione, una revoca ricarica la pagina. La fonte del segnale è la categoria Marketing, la stessa che governa ad_storage in Google Consent Mode.

Se gestisci il consenso da solo

Con l'interruttore attivo non chiamare oaiq("consent", …) dal codice del sito: quel comando appartiene a CookieHug. Se hai già una gestione tua (es. lo schema: consent false → init → in un listener CookieHugOnConsentReady consent true e reinvio degli eventi della pagina corrente), lascia l'interruttore disattivato: il tuo codice funziona, perché CookieHugOnConsentReady scatta dopo ogni decisione e nelle visite successive con consenso salvato.

Se lo snippet del pixel sta prima di CookieHug, è lo snippet del sito a caricare l'SDK OpenAI. CookieHug inserisce comunque la voce di consenso in testa alla coda non ancora elaborata, ma non può più ritardare il download dell'SDK. Se il pixel viene attivato tramite Google Tag Manager, usa un trigger legato al consenso marketing: l'interruttore resta sicuro, ma è GTM a decidere il momento del caricamento.

Verifica

In DevTools, su una pagina con la funzione attiva:

// subito dopo l'arrivo (prima di una decisione):
window.oaiq.q
// → [['consent', false], ['init', {…}], ['measure', 'page_viewed']]
// Scheda Network: nessuna richiesta a bzrcdn.openai.com / bzr.openai.com

// dopo «Accetta tutto»:
// → ['consent', true] in testa alla coda; nel DOM compare <script src="…/oaiq.min.js">
window.oaiq.loaded   // → true quando l'SDK ha sostituito lo stub

Se window.oaiq non esiste, l'interruttore non è ancora attivo nello script (attendi l'aggiornamento della cache) oppure la pagina carica uno script più vecchio.