Shopify: GA4 y Meta CAPI sin apps de pago
Cómo montar GA4 y la Conversions API de Meta en Shopify con los canales nativos y Customer Events, y cómo verificar que funciona.
En este artículo
Casi todas las tiendas Shopify que audito registran menos compras en el pixel de Meta que pedidos en su propio panel. Es lo primero que miro cuando alguien me dice que su ROAS se ha hundido sin motivo aparente, y la diferencia casi nunca es de atribución: una parte de los eventos ni siquiera sale del navegador. Bloqueadores, consentimiento rechazado, pestañas cerradas antes de que dispare la etiqueta. Shopify trae una respuesta nativa para eso y no cuesta nada extra.
Este post es cómo dejo GA4 y la Conversions API de Meta funcionando usando solo lo que ya trae la plataforma: los canales de venta nativos y Customer Events. Sin app de tracking de cuarenta euros al mes. Y sobre todo, cómo compruebo después que funciona, que es donde se cae la mayoría de las guías.
En 30 segundos:
- El canal de Facebook e Instagram activa la Conversions API en Enhanced y Maximum, y Shopify documenta que ahí el evento de compra viaja de servidor a servidor.
- GA4 se conecta instalando el canal de Google & YouTube. No hace falta Merchant Center.
- Los píxeles personalizados corren en un Lax sandbox: no pintan interfaz, no leen el DOM y ni siquiera ven la URL real de la ventana principal.
- Meta deduplica solo si coinciden
event_idyevent_name, dentro de 48 horas.- En la UE y Reino Unido los píxeles se ejecutan únicamente si el visitante concedió los permisos que pide su configuración.
¿Qué te dan de verdad los canales nativos de Google y Meta?
Te dan la instalación y el evento de compra. No te dan la verificación ni ninguna garantía de que el panel de anuncios cuadre con tu panel de pedidos.
Del lado de Google todo pasa por el canal de venta: instala el canal Google & YouTube y sigue los pasos para las etiquetas. La misma página añade dos avisos que ahorran horas: no hace falta conectar Merchant Center, y Google Analytics no puede hacer seguimiento de eventos hasta que desactives el modo privado de la tienda. He visto depurar una tarde entera una tienda que seguía con contraseña puesta.
Del lado de Meta hay tres niveles de compartición de datos. En Enhanced y Maximum, Shopify documenta que la Conversions API envía el evento de compra entre los servidores de Shopify y de Facebook, y que esos datos no los bloquean los bloqueadores del navegador. Media guerra ganada con un desplegable.
| Pieza | Qué te da el canal nativo | Qué sigue siendo tuyo |
|---|---|---|
| Propiedad de GA4 | Conexión desde el canal de Google & YouTube | Qué eventos llegan y con qué parámetros |
| Compra en Meta | Evento por servidor en Enhanced y Maximum | Que no se duplique con el del navegador |
| Eventos previos al pedido | Recogida desde el navegador | Lo que se comen bloqueadores y consentimiento |
| Datos de emparejamiento | Nombre, email y teléfono en Enhanced y Maximum | Que tu política de privacidad lo refleje |
| Consentimiento | Banner de cookies y permisos por píxel | Qué permisos exige cada píxel |
| Checkout | Cobertura vía Customer Events | Asumir que ahí no van scripts sueltos |
La columna de la derecha es el trabajo real. La izquierda son quince minutos.
¿Por qué el checkout no funciona como el resto de la tienda?
Porque el checkout no es tu tema y Shopify no deja meter código arbitrario en él. La vía admitida son los píxeles personalizados, que según la documentación recopilan eventos del cliente en más páginas, como la página de pago y las posventa, y que se cargan en un Lax sandbox diseñado para mejorar la seguridad y el control sobre los datos que envías a terceros.
Sandbox significa restricciones concretas, no una advertencia genérica. Shopify enumera las limitaciones: los entornos sandbox no pueden renderizar elementos de interfaz como botones, formularios, banners o ventanas modales. Adiós a los pop-ups montados desde ahí. Tampoco hay detección automática de eventos del DOM ni datos para mapas de calor.
Hay además una trampa que cuesta descubrir: la detección automática de URLs en el Lax sandbox incluye una versión de sandbox y puede no reflejar exactamente la URL de la ventana principal. Si dejas que GA4 recoja page_location por su cuenta desde un píxel personalizado, es probable que tus informes de páginas de destino no se parezcan a tus URLs reales. ¿Cuánta gente revisa eso antes de sacar conclusiones? Casi nadie. Lo que hago yo es pasar la URL de forma explícita desde el evento. Una línea más de código, un informe entero salvado.
¿Navegador o servidor? Así se deduplica de verdad
Los dos, con un identificador compartido. Solo navegador te deja a merced de los bloqueadores. Solo servidor te quita señal de comportamiento. Manda ambos y deja que Meta descarte el duplicado.
La regla está documentada y es literal. Meta indica que el eventID del pixel debe coincidir con el event_id de la Conversions API, que el event debe coincidir con el event_name, y que los eventos solo se deduplican si se reciben dentro de las 48 horas siguientes al primero con ese event_id. Describe además un método alternativo con fbp o external_id, con una salvedad: solo funciona para eventos enviados primero desde el navegador y después desde el servidor.
Dos conclusiones prácticas. Si tu evento de servidor puede llegar antes que el del navegador, el método del fbp no te sirve y necesitas un event_id real. Y una compra reintentada desde el backend dos días después ya no se deduplica contra nada.
El fallo que más veces me encuentro no es un dedup mal hecho. Es alguien que ha dejado el nivel Enhanced activo y además ha añadido un píxel personalizado propio que vuelve a disparar Purchase con su propia lógica. Dos caminos independientes, sin event_id compartido, y un ROAS que de repente parece estupendo. Antes de añadir cualquier envío propio de compra, mira qué manda ya el canal nativo. Suele mandar más de lo que la gente cree.
¿Cómo gestiono el consentimiento sin cargarme la medición?
Aceptando que el consentimiento manda y configurando los permisos a conciencia. Shopify es explícito: los píxeles web solo se ejecutan cuando las personas visitantes han otorgado los permisos requeridos en su configuración, y de forma predeterminada los píxeles nuevos exigen Marketing e Informes y estadísticas.
Esto tiene una consecuencia que a los clientes les cuesta digerir. Si tu banner está bien puesto y parte del tráfico europeo rechaza, esos usuarios no aparecen. No es un error. Es la implementación funcionando: la caída que ves al activar el banner suele ser la diferencia entre lo que medías y lo que tenías derecho a medir.
La pieza que conviene conocer es la Customer Privacy API de Shopify, que sirve para verificar permisos de procesamiento o construir un banner propio. Publica el evento visitorConsentCollected cuando el consentimiento cambia, y el banner nativo lo alimenta solo. Si usas una app de terceros, comprueba que la integra bien. No todas lo hacen.
Un detalle que la documentación subraya y que veo incumplido a menudo: el consentimiento debe registrarse a partir de una interacción del visitante, nunca de forma automática en su nombre. Preaceptar por defecto para «no perder datos» es un problema legal con forma de línea de código.
¿Cómo verifico que el seguimiento funciona de verdad?
Con una secuencia fija, siempre en el mismo orden, porque cada paso descarta una causa distinta. Es lo único que separa «lo he instalado» de «funciona».
- Desactiva el modo privado de la tienda. Sin eso, Google Analytics no hace seguimiento de eventos y vas a depurar un fantasma.
- Crea un píxel personalizado de prueba que se suscriba a
all_standard_eventsy vuelque cada evento a consola. Shopify publica el fragmento exacto en su documentación. Es tu red de seguridad: te dice qué está emitiendo la plataforma, antes de que ningún proveedor lo toque. - Recorre la tienda con el Shopify Pixel Helper abierto. La documentación de pruebas explica que un punto verde indica que la suscripción al evento se realizó correctamente y que la función de devolución de llamada se ejecutó correctamente, mientras que un punto rojo señala que la suscripción funcionó pero la callback falló. El rojo es código tuyo roto, no ausencia de evento.
- Abre DebugView en GA4 mientras navegas. Google explica que DebugView muestra los eventos y las propiedades de usuario que Analytics recoge de un usuario en tiempo real, con un flujo por segundos. Comprueba nombres de evento,
value,currencyeitems, uno a uno. - Compara el
page_locationque llega a GA4 con la URL real del navegador. Si no coinciden, ya sabes por qué. - Haz un pedido real de prueba y ábrelo en Events Manager de Meta. Mira el método de conexión de cada evento y si aparece marcado como deduplicado. Una compra con tarjeta real responde preguntas que ninguna simulación responde.
- Cierra el círculo contando. Pedidos en Shopify frente a compras en GA4 frente a compras en Meta, misma ventana, mismo huso horario. No vas a cuadrar al 100% y no hace falta: buscas que la brecha sea estable y explicable.
- Repite el recorrido rechazando el consentimiento. Lo que sigue apareciendo cuando dices que no es lo que tienes que revisar con un abogado.
Ese último paso lo añadí tras encontrarme una tienda cuyo banner era decorativo. Los eventos salían igual. Nadie prueba el «rechazar».
¿Cuándo sí merece la pena pagar una app?
Cuando tu problema deja de ser instalar y pasa a ser mantener. Las apps serias venden tres cosas que el montaje nativo no da: capa de servidor propia con reintentos, enriquecimiento de datos de cliente, y alguien a quien escribir cuando Shopify o Meta cambian algo. Lo último vale más de lo que parece: esta superficie cambia a menudo.
No las recomiendo por defecto. Con un catálogo normal, un solo mercado y anuncios de Google y Meta, el canal nativo más un píxel personalizado verificado cubre lo que necesitas. Depende del volumen: por debajo de cierta facturación, la app se come el margen que promete recuperar. Y una app mal configurada mide igual de mal, solo que con factura mensual.
Mi criterio: si nadie va a revisar la medición en seis meses, paga el mantenimiento. Si hay alguien que sabe abrir DebugView, quédate con lo nativo y gasta ese dinero en mejorar la conversión del checkout.
Preguntas frecuentes
¿Necesito una app de pago para tener Meta CAPI en Shopify?
No. El canal de Facebook e Instagram incluye la Conversions API en Enhanced y Maximum, y Shopify documenta que ahí el evento de compra viaja de servidor a servidor sin que lo bloqueen los bloqueadores del navegador. Una app aporta reintentos y soporte, no es un requisito para tener CAPI.
¿Shopify envía todos los eventos por servidor o solo la compra?
La documentación de Shopify menciona expresamente el evento de compra al describir la Conversions API en Enhanced y Maximum. El resto de la señal se recoge desde el navegador. Por eso conviene revisar en Events Manager el método de conexión evento por evento, en vez de dar por hecho que todo va por servidor.
¿Por qué GA4 registra menos compras que Shopify?
Suele ser una suma de causas, no una sola: consentimiento rechazado, bloqueadores, sesiones que se cierran antes de que dispare la etiqueta y diferencias de huso horario entre las dos plataformas. Una brecha estable y explicable es normal. Una brecha que cambia de tamaño cada semana sí indica un problema de implementación.
¿Puedo usar Google Tag Manager dentro de Shopify?
Sí, mediante un píxel personalizado, y Shopify publica un tutorial para ello. Ten presente que hereda las limitaciones del Lax sandbox: nada de renderizar interfaz, ni de leer el DOM, ni de fiarte de la URL detectada automáticamente. Muchas etiquetas que funcionaban en una web normal no se comportan igual ahí.
¿El consentimiento va a destrozar mis datos?
Va a reducir el volumen medido, y eso es lo esperable. En la UE y Reino Unido los píxeles solo se ejecutan cuando el visitante concede los permisos que exige su configuración. Lo que puedes hacer es cuidar el banner, revisar qué permisos pide cada píxel y trabajar con tasas relativas en lugar de volúmenes absolutos.
Lo que no verificas, no lo estás midiendo
Montar GA4 y Meta CAPI en Shopify sin apps de pago es factible y rápido. Dos canales de venta, un desplegable de compartición de datos y un píxel personalizado para lo que falte. Eso lo hace cualquiera en una tarde, y por eso tantas guías terminan justo ahí.
El trabajo de verdad empieza después. Abrir el Pixel Helper y ver un punto rojo, mirar DebugView y descubrir que el value llega sin IVA, contar pedidos contra compras y encontrar una brecha que nadie sabe explicar. Nada de eso aparece solo. Mientras no lo hagas no tienes medición, tienes una instalación con buena pinta, y la diferencia se paga cuando alguien reparte presupuesto con esos números.
Si quieres una segunda opinión, revisa tu propiedad con mi auditoría de Google Analytics en 45 pasos, y si el hueco está en Meta, mira los modelos de atribución en Facebook Ads antes de culpar al pixel. Para contexto de tienda tengo una auditoría SEO de Shopify con Claude, una guía de Facebook Ads para ecommerce y otra de Google Ads para ecommerce. Y si llevas meses decidiendo con métricas de vanidad, empieza por ahí.
Si quieres que audite tu implementación y te diga qué eventos están mintiendo, reserva 30 minutos de consultoría y lo miramos juntos.
¿Tu cuenta de ads podría
rendir mejor?
30 minutos para revisar tu situación y decirte exactamente qué cambiaría. Sin pitch, sin propuesta de venta.