Menú de documentación

OpenAI Ads (ChatGPT)

Control del consentimiento del píxel de OpenAI (anuncios en ChatGPT): activación, la cola oaiq, carga del SDK solo tras el consentimiento y verificación.

OpenAI Measurement Pixel (anuncios en ChatGPT)

CookieHug puede controlar el consentimiento del píxel de medición de OpenAI (oaiq), el píxel de conversión de los anuncios mostrados en ChatGPT. Dos propiedades de este píxel hacen que copiar sin más el snippet oficial no sea conforme en el EEE:

  • el píxel arranca con el consentimiento activado: sin oaiq("consent", false) antes de init envía datos de inmediato,
  • los eventos enviados con el consentimiento desactivado se descartan, no se encolan: OpenAI no los repite tras un consentimiento posterior.

La función está desactivada por defecto y se activa por dominio. CookieHug no necesita el ID del píxel: crea la cola de comandos oaiq, se encarga del comando de consentimiento y decide *cuándo* se carga el SDK del píxel (oaiq.min.js).

Activación

  • Abre el dominio en el panel → Avanzado → sección Política de consentimiento.
  • Busca la tarjeta OpenAI Measurement Pixel (anuncios en ChatGPT) y activa el interruptor; se guarda automáticamente.
  • El cambio llega al script del banner en la siguiente descarga (caché del script: hasta 5 minutos).
  • El snippet de CookieHug debe estar en la página antes del snippet del píxel de OpenAI.

Cómo funciona la señal

Al arrancar, el SDK de CookieHug crea un stub de cola window.oaiq y coloca al principio una entrada de consentimiento acorde con la decisión del visitante. El snippet oficial del píxel empieza con if (w.oaiq) return;, así que al ver nuestra cola solo añade sus llamadas init y measure; CookieHug carga el SDK de OpenAI únicamente cuando hay consentimiento para la categoría Marketing:

// inicio sin decisión guardada: no se carga nada de OpenAI:
window.oaiq.q  // → [['consent', false]]

// el snippet del sitio (tras CookieHug) añade:
oaiq('init', { pixelId: '…' });
oaiq('measure', 'page_viewed');

// «Aceptar todo» → CookieHugOnConsentReady:
window.oaiq.q  // → [['consent', true], ['init', …], ['measure', 'page_viewed']]
// y solo ahora entra en la página https://bzrcdn.openai.com/sdk/oaiq.min.js

Así, los eventos encolados antes de la decisión (normalmente page_viewed) salen después del consentimiento en lugar de perderse. Si se rechaza, no se carga nada de OpenAI. En una visita posterior con consentimiento guardado, el SDK se carga al inicio de la página. Con el SDK en marcha, cada nueva decisión le llega como oaiq('consent', true | false): un rechazo en el editor detiene la medición y una retirada recarga la página. La fuente de la señal es la categoría Marketing, la misma que gobierna ad_storage en Google Consent Mode.

Si gestionas el consentimiento por tu cuenta

Con el interruptor activado, no llames a oaiq("consent", …) desde el código del sitio: ese comando pertenece a CookieHug. Si ya tienes tu propia gestión (p. ej. el patrón: consent false → init → en un listener de CookieHugOnConsentReady consent true y reenvío de los eventos de la página actual), deja el interruptor desactivado; tu código funciona bien, porque CookieHugOnConsentReady se dispara tras cada decisión y en visitas posteriores con consentimiento guardado.

Si el snippet del píxel va antes de CookieHug, es el snippet del sitio quien carga el SDK de OpenAI. CookieHug sigue colocando la entrada de consentimiento al principio de la cola aún no procesada, pero ya no puede retrasar la descarga del SDK. Si disparas el píxel desde Google Tag Manager, usa un activador ligado al consentimiento de marketing: el interruptor sigue siendo seguro, pero GTM decide el momento de carga.

Verificación

En DevTools, en una página con la función activada:

// justo al entrar (antes de una decisión):
window.oaiq.q
// → [['consent', false], ['init', {…}], ['measure', 'page_viewed']]
// Pestaña Network: sin peticiones a bzrcdn.openai.com / bzr.openai.com

// tras «Aceptar todo»:
// → ['consent', true] al principio de la cola; aparece <script src="…/oaiq.min.js"> en el DOM
window.oaiq.loaded   // → true cuando el SDK ha sustituido el stub

Si window.oaiq no existe, el interruptor aún no está activo en el script (espera a que se refresque la caché) o la página carga un script antiguo.