En Hydrogen, Web Pixels y la API de Conversiones suelen disparar eventos de compra con event_id distintos, y Meta cuenta los dos. En Cyclewear eso infló el ROAS de un 2.9x real a un 4.2x reportado. Cómo diagnosticarlo y cómo lo corregimos.
Si tienes una tienda Shopify headless en Hydrogen y usas la API de Conversiones de Meta, casi con seguridad tienes un problema de deduplicación. No lo sabes todavía porque tu ROAS se ve excelente. La causa es que el evento del navegador y el del servidor llegan a Meta con event_id distintos, así que Meta cuenta ambos, y la corrección toma un día cuando sabes dónde mirar.
Esta es una Nota de Operador de nuestro trabajo en Cyclewear, un storefront Shopify Hydrogen headless para una marca de ciclismo de rendimiento. La tienda reportaba un ROAS de 4.2x en campañas de Meta. Cuando revisamos los datos crudos, el ROAS real estaba cerca de 2.9x. La brecha, una inflación de entre 30 y 40%, se explicaba por completo por un bug silencioso de deduplicación en la forma en que Web Pixels y la API de Conversiones disparaban cada uno sus eventos de compra.
¿En qué consiste el bug?
La deduplicación de CAPI de Meta funciona comparando eventos por su event_id. Cuando un evento del navegador (del Pixel de Meta) y uno del servidor (de CAPI) comparten el mismo event_id, Meta los deduplica y cuenta uno. Cuando no coinciden, Meta cuenta ambos, duplica el volumen de conversiones reportado e infla el ROAS.
En un tema estándar de Shopify, el Pixel dispara desde el navegador con un event_id generado del lado del cliente y CAPI dispara desde el backend de Shopify con el mismo ID. La deduplicación funciona. En una build headless con Hydrogen el flujo se rompe. La extensión Web Pixels de Shopify corre en un iframe aislado, y la cookie fbq, que contiene el click ID del navegador (_fbc) y el browser ID (_fbp), con frecuencia no es accesible desde ese sandbox. Cuando el evento de CAPI dispara desde el servidor, envía un event_id distinto o datos de _fbc faltantes. Meta lo trata como un evento aparte.
¿Cómo diagnosticarlo?
- Abre el Administrador de Eventos de Meta y revisa la puntuación de Calidad de Coincidencia de Eventos para los eventos de Compra
- Revisa la pestaña de Deduplicación; tasas de duplicados superiores al 5% confirman el problema
- Compara el volumen de eventos del navegador con el del servidor; si los del servidor superan de forma consistente a los del navegador en más del 10%, algo está mal
- En tu app Hydrogen, registra el event_id que generas del lado del cliente y confirma que coincide con el que envías a CAPI
- Verifica si las cookies _fbc y _fbp se pueden leer desde el sandbox de Web Pixels (en Hydrogen muchas veces no)
¿Cómo lo corregimos en Cyclewear?
La corrección requirió tres cambios. Primero, sacamos la lectura de las cookies fbq del sandbox de Web Pixels: construimos un endpoint liviano de primera parte que lee _fbc y _fbp del lado del servidor desde el contexto del loader de Remix. Segundo, estandarizamos la generación del event_id como un hash determinístico del ID de la orden más la marca de tiempo, generado una sola vez en el servidor y pasado tanto a la llamada de CAPI como al payload del evento de Web Pixels. Tercero, agregamos un paso de validación de deduplicación a nuestro checklist de despliegue.
Después de la corrección, el ROAS reportado bajó de 4.2x a 2.9x. No fue una conversación cómoda con el cliente, pero sí necesaria. Las campañas funcionaban bien. El problema eran las decisiones de presupuesto que se estaban tomando con el número inflado.
¿Por qué importa más allá del ROAS?
Un ROAS inflado distorsiona la asignación de toda tu mezcla de canales. Si tienes Shopify headless y no has auditado la deduplicación de CAPI, debería ser el primer punto de tu checklist de marketing técnico. La corrección toma un día. El costo acumulado de decidir presupuestos con datos malos puede correr por años.
- Shopify Hydrogen
- Meta CAPI
- tracking
- headless