El píxel de ChatGPT Ads es el camino corto para medir y en muchas webs basta. Pero se queda ciego en un caso muy común: la conversión que no termina en la página donde está instalado.
Nos pasó: nuestro registro se completa en el panel de clientes, no en la web, así que lo mandamos desde el servidor. Esto es lo que aprendimos, trampas incluidas. ¿Aún sin píxel? Empieza por la lección 3 del módulo 12 (Intermedio).
Cuándo el píxel no basta
Pasa a la API de conversiones, que envía los eventos desde tu servidor, cuando:
- La conversión termina en otro dominio sin píxel: una pasarela, un sistema de reservas, un panel de clientes.
- La conversión ocurre en el servidor: un alta que se confirma después, un lead que tu CRM da por bueno.
- Quieres más fiabilidad: OpenAI presenta la API como más fiable que el píxel solo.
Lo normal es combinar ambos y deduplicar.
El hilo que no puedes perder: el oppref
Quien pulsa tu anuncio llega con un identificador del clic en la URL: el
oppref. El píxel lo captura y lo guarda en una cookie de tu dominio,
__oppref. En el servidor nadie lo hace por ti: recógelo y envíalo con
el evento tal cual.
El reto es que viaje hasta la conversión, quizá en otro dominio y días después. Para eso sirven un campo oculto en el formulario, un parámetro en el enlace o tu base de datos. Nosotros lo guardamos en la web al llegar y lo recuperamos en el servidor.
Deduplicación: una conversión, un recuento
Si la misma conversión llega por el píxel y por la API, OpenAI la cuenta una vez cuando coinciden el ID de píxel, el nombre del evento y el identificador del evento.
⚠️ Trampa: el identificador no se llama igual en los dos lados:
event_iden el píxel,iden la API de conversiones. Genera el valor una vez (el número de pedido, por ejemplo) y úsalo en ambos.
El tipo de datos de cada evento
Cada evento estándar exige un tipo de datos y, si no casa, la API
rechaza el lote entero. Nos ocurrió al enviar un registro con el
tipo del ejemplo oficial, que es una compra: el registro exige
customer_action. La tabla completa:
| Evento | Qué mide | Tipo de datos |
|---|---|---|
registration_completed |
Registro completado | customer_action |
lead_created |
Lead creado | customer_action |
appointment_scheduled |
Cita reservada | customer_action |
app_installed |
App instalada | customer_action |
app_opened |
App abierta | customer_action |
order_created |
Pedido creado (compra) | contents |
checkout_started |
Checkout iniciado | contents |
items_added |
Añadir al carrito | contents |
contents_viewed |
Contenido visto | contents |
page_viewed |
Página vista | contents |
subscription_created |
Suscripción creada | plan_enrollment |
trial_started |
Prueba iniciada | plan_enrollment |
custom |
Evento personalizado | custom |
Además, importe y moneda van juntos, y el evento custom lleva un
nombre tuyo de 1 a 64 caracteres (letras, números, guiones o guiones
bajos, que empiece y acabe en letra o número y no coincida con un evento
estándar).
💡 Truco ninja: antes de copiar un ejemplo oficial, mira qué evento usa y ajusta el tipo de datos al tuyo: un solo evento mal tipado tumba el lote.
El email cifrado: mejor atribución, mismo dato personal
Puedes añadir el email del cliente cifrado con SHA-256 para mejorar la atribución. Normalízalo antes (sin espacios sobrantes y en minúsculas): «Ana@Ejemplo.com» y «ana@ejemplo.com» dan hashes distintos.
⚠️ Trampa: cifrar no es anonimizar. Un hash de email sigue siendo un dato personal: nosotros lo declaramos en la política de privacidad antes de enviarlo. Esto no es asesoramiento jurídico; revísalo con quien lleve tu protección de datos.
El emparejamiento avanzado automático del píxel hace algo parecido por su cuenta: detecta datos de cliente en tu web (como los de un formulario) y los cifra con SHA-256 en el navegador. La documentación no explica cómo desactivarlo: cuéntalo también en tu política de privacidad.
Atribución: qué ventana cuenta
- Por clic: se configura en el ajuste de cada evento; los ejemplos oficiales usan 30 días.
- Por visualización (view-through): ventana fija de 1 día y solo para informes. La optimización y la facturación van por clic.
Alinea las ventanas antes de comparar con Google Ads o con tu analítica.
Campañas de conversiones: un único evento estándar
Necesitas exactamente un evento estándar activo como objetivo; los personalizados no sirven para optimizar. Y con volumen: si vendes poco, quizá convenga optimizar hacia el lead o el registro. El objetivo y el evento no se cambian después: tocaría crear otra campaña (lección 3 de este módulo).
Consentimiento, también en el servidor
El píxel arranca con el consentimiento activado: en Europa, llama a
oaiq("consent", false) antes de iniciarlo y actívalo cuando la persona
acepte (lo bloqueado no se reenvía). En el servidor, el filtro es tuyo:
aplica el criterio de consentimiento de tu web antes de reenviar el
oppref o el email, y deja de hacerlo si alguien lo retira.
Dos claves que se confunden
Hay dos claves distintas en el Gestor de anuncios, y nosotros las confundimos:
- La de conversiones, en Conversiones (tras el icono de la llave): para enviar eventos desde tu servidor.
- La de la API, en Settings → API Keys: para gestionar la cuenta por API (lección 8).
Las dos viven en tu servidor, nunca en el código de la web.
Qué debes recordar
- Sin píxel donde termina la conversión, mándala desde el servidor con
el
oppreftal cual. - Deduplica con el mismo píxel, evento e identificador (
event_iden el píxel,iden la API). - Cada evento exige su tipo de datos; si no casa, cae el lote entero.
- El email cifrado mejora la atribución, pero sigue siendo un dato personal.
- La visualización (1 día) solo informa; optimizar y facturar va por clic.
- Campañas de conversiones: un único evento estándar, con volumen y sin vuelta atrás.