Saltar al contenido

Solución de problemasGA4

El evento purchase de GA4 se dispara dos veces en Shopify: diagnóstico

¿GA4 cuenta dos compras para un mismo pedido de Shopify? Localiza el segundo emisor —app, píxel, fragmento o hit de servidor— y revisa el transaction_id.

Publicado
Revisado

Diagnóstico

  1. Plataforma GA4
  2. Causa habitual Dos emisores lanzan un purchase para el mismo pedido sin un transaction_id que coincida.
  3. Causas, por orden 6
  4. Cómo diagnosticarlo 7
Ir a las comprobaciones

Primera respuesta gratis, en un día laborable. Describe tu caso

¿Te suena?

El síntoma

Parte del síntoma GA4

Están entrando pedidos reales, pero el informe de ecommerce de GA4 muestra más compras de las que la tienda registró en realidad —a veces cerca del doble. El recuento de pedidos de Shopify no se mueve; el de compras de GA4 sí.

La desviación rara vez es limpia: algunos pedidos se cuentan una vez y otros dos, así que los totales se separan poco a poco. La prueba que lo resuelve es pequeña: agrupa las compras por transaction_id y busca un mismo número de pedido en dos filas. Eso separa la duplicación de cualquier otro motivo por el que un recuento de compras parezca alto.

Un pedido que genera dos eventos de compra idénticos y que llegan al contador como dos en lugar de uno
Marca lo que ves

Marca las líneas que coinciden con tu tienda.

Describir mi caso

La versión corta

Respuesta directa

GA4 cuenta un pedido de Shopify dos veces cuando dos emisores independientes lanzan cada uno un purchase para él y GA4 no puede emparejarlos. El emparejamiento exige el mismo transaction_id no vacío en ambos. La pareja probable es la Google & YouTube app y un píxel web personalizado, pero cualquier segunda ruta tiene el mismo efecto.

GA4 deduplica los eventos purchase que comparten el mismo transaction_id no vacío, y fusiona los que comparten uno vacío. Un ID ausente no es neutro: colapsa pedidos que no tienen relación. Dos emisores que generan su propio ID, o que lo dejan en blanco, cuentan por separado.

Dónde mirar

Causas, por orden

GA4 cuenta pedidos dos veces6 causas

  1. La Google & YouTube app y un píxel web personalizado envían ambos purchase

    Los dos mapean el evento checkout_completed de Shopify a un purchase de GA4, así que un pedido produce dos eventos. Cada uno elige su propio transaction_id, y cuando las cadenas difieren GA4 no puede emparejarlos.
  2. Un segundo emisor con el que no contabas

    Un fragmento plano en un archivo del tema no puede ver el nuevo checkout, pero un bloque de app, una extensión de app del tema o una etiqueta inyectada por una app sí pueden seguir ejecutándose en la página de estado del pedido, y el código anterior a la migración puede seguir vivo. Dos píxeles en Customer Events producen lo mismo.
  3. La página de estado del pedido que se dispara de nuevo al recargar o volver a entrar

    Si el purchase se dispara al cargar la página en lugar de una vez por pedido, refrescar la página o reabrir desde un email el enlace de estado del pedido envía otro evento. Sin un control de «ya enviado», cada visita parece una compra nueva.
  4. transaction_id que no coincide, o que no existe

    Un emisor puede usar el ID del pedido y otro el nombre del pedido o el token del checkout: GA4 empareja por la cadena exacta, así que esos son dos pedidos. Un ID vacío es peor: GA4 deduplica todas las compras que lo comparten.
  5. Dos ID de medición o dos contenedores de GTM

    Una segunda etiqueta de Google o un segundo contenedor pueden enrutar el mismo purchase a la misma propiedad dos veces, o reenviarlo desde dentro del píxel junto con otro del storefront.
  6. Reenvío server-side más el hit del navegador, sin una deduplicación compartida

    Un webhook de pedido reenviado a través de un contenedor de servidor o de Measurement Protocol envía un segundo purchase para pedidos que el navegador ya había reportado: está bien hasta que lleva un transaction_id distinto, o ninguno.

7 pasos

Cómo diagnosticarlo

Trabaja desde el evento hacia atrás, hasta el emisor: cuenta cuántos purchase recibió GA4 para un pedido conocido, lee el transaction_id de cada uno y después localiza todos los sistemas que podrían haber enviado uno. Un pedido de prueba demuestra la duplicación; la lista de emisores te dice qué desactivar.

  1. Enumera todos los píxeles que puedan enviar un purchase. En el administrador de Shopify, abre Settings → Customer events y lee los píxeles registrados. Dos píxeles que se suscriban a checkout_completed y envíen purchase son tu primera respuesta.
  2. Comprueba si la Google & YouTube app es uno de ellos. En Settings → Apps and sales channels, comprueba si el canal Google & YouTube está instalado. Si lo está y un píxel personalizado también envía un purchase, uno de los dos debe desactivarse.
  3. Haz un pedido de prueba en modo debug. En GA4, abre Admin → DebugView y completa un checkout real en un dispositivo en modo debug. Dos filas de purchase para un pedido son la confirmación; abre ambas y anota cada transaction_id. Reports → Realtime muestra esas mismas llegadas sin necesidad del modo debug.
  4. Compara los dos ID y luego recarga la página. Despliega ambos eventos en DebugView y compara transaction_id. Que sean idénticos y no vacíos significa que la deduplicación debería haberlos colapsado y que lo que falla es otra cosa; que sean distintos o vacíos significa que a GA4 le llegaron dos pedidos. Después recarga la página de agradecimiento y vuelve atrás: un purchase nuevo en cada visita apunta a un disparador de carga de página sin control de «ya enviado».
  5. Cuenta las compras por transaction_id en una Exploración. En GA4, abre Explore → Free-form, define la dimensión como Transaction ID y la métrica como Event count, y filtra por nombre de evento igual a purchase. Cualquier ID de transacción con un recuento superior a uno está duplicado.
  6. Busca una segunda etiqueta o un segundo contenedor. Busca en el código fuente del storefront los identificadores de la etiqueta de Google y del contenedor; más de uno merece que lo nombres, y GA4 → Admin → Data Streams muestra el destino legítimo. GTM Preview ve las etiquetas del storefront, pero no puede engancharse dentro del sandbox del píxel, así que juzga el píxel por DebugView.
  7. Concilia un día cerrado de pedidos. Exporta un día desde Shopify → Orders → Export y extrae los datos de GA4 a nivel de evento con el nombre del evento y transaction_id desde una exportación de Exploración o desde BigQuery. Empareja por pedido: unos pocos pedidos duplicados al día son el mismo fallo que una duplicación en toda la tienda.

Señal y solución

Tabla de decisión

Relaciona la señal que veas en DebugView con el emisor que implica y después haz el cambio más pequeño que deje una sola ruta de compra.

CausaSeñal que verásSolución
Google & YouTube app más un píxel personalizadoDos eventos purchase para un pedido, con valores de transaction_id distintosConserva una sola ruta: desactiva el purchase de la app o el del píxel y vuelve a probar
Fragmento heredado o píxel de másMás de un píxel en Customer Events, o una etiqueta inyectada por una app en la página de estado del pedidoElimina el emisor redundante; conserva una sola suscripción que lance purchase
Recarga de la página de estado del pedidoUn purchase nuevo cada vez que se carga la página de agradecimiento o de estado del pedidoLanza una sola vez desde checkout_completed y registra que el pedido ya se reportó
transaction_id que no coincide o vacíoID distintos en los dos eventos, o uno en blancoEnvía el mismo valor no vacío —el ID del pedido de Shopify— en todas las rutas
Dos ID de medición o dos contenedoresMás de una etiqueta de Google o contenedor en el código fuente del storefrontElimina la etiqueta o el contenedor obsoletos; conserva un solo destino por evento
Hit de servidor más hit del navegadorUn purchase de servidor lleva un transaction_id distinto o ausenteReenvía el transaction_id del navegador, o detén el envío duplicado desde el servidor

Una nota de Daniilantes de decidir

¿Deberías arreglarlo tú mismo o pedir ayuda?

Localizar el segundo emisor suele ser trabajo de administrador: la lista de Customer Events más DebugView bastan para nombrar la causa en la mayoría de las tiendas. Eliminarlo es donde empieza el código, y el riesgo de romper la ruta que conservas.

Decidir qué emisor conservar es una cuestión de criterio: normalmente el que tenga los parámetros y el comportamiento de consentimiento en los que confías, desactivado en lugar de borrado para poder restaurarlo. Borrar un píxel redundante, reescribir una suscripción para que no pueda dispararse dos veces o hacer llegar un transaction_id compartido a un contenedor de servidor es trabajo de desarrollo.

Hazlo en ese orden: detén la duplicación, vuelve a ejecutar un pedido de prueba en DebugView para confirmar un solo purchase y después concilia contra Shopify al día siguiente. Si la duplicación continúa después de haber confirmado que se dispara exactamente una ruta, la lógica del ID abarca varios sistemas: eso es trabajo de implementación de GA4, no un interruptor de configuración.

— Daniil

Siguiente paso

Si la comprobación no lo resuelve.

Las comprobaciones anteriores encuentran la causa en la mayoría de las tiendas. Cuando se solapan dos o más, una conciliación a nivel de pedido es más rápida que otra tarde comparando paneles.

Tracking Health Check

Precio
EUR 375
Acceso
Solo lectura
Plazo
veredicto dos días laborables después del kickoff

Lo que muestra la conciliación para este síntoma.

Un Health Check concilia este síntoma pedido por pedido contra tus pedidos de Shopify, así que la causa es un hecho de tus propios datos, no una suposición desde un panel. Todavía no hay cifras reales publicadas para este síntoma — pide el informe de muestra.

Solicitar un Health Check · EUR 375

Sigue el pedido. Después compara las pruebas.

  1. Pedido realID del pedido, importe, moneda
  2. Eventos del navegador / servidorConsentimiento, ID del evento, entrega
  3. GA4 / plataformas publicitariasEventos recibidos e informes
  4. Conciliar los registrosComparar IDs, períodos y definiciones
Un pedido completado y una conversión registrada son registros distintos. Revisa el recorrido y compara criterios equivalentes antes de interpretar una diferencia como datos perdidos.

Preguntas

Preguntas que plantea este síntoma

¿Por qué GA4 muestra más compras que pedidos tiene Shopify?

Porque dos sistemas están reportando el mismo pedido y GA4 no puede saber que son el mismo evento. GA4 deduplica los eventos purchase que comparten el mismo transaction_id no vacío, así que cuando los dos emisores eligen valores distintos —o uno envía una cadena vacía— se cuentan los dos. Comprueba cuántos eventos purchase llegaron para un pedido conocido, no los totales del mes.

¿GA4 no deduplica las compras automáticamente?

Sí, pero solo bajo una condición que debes cumplir: que los eventos purchase lleven el mismo transaction_id no vacío. La deduplicación automática es una red de seguridad para cuando llega dos veces el mismo ID, no una solución para dos sistemas que generan sus ID de forma independiente. Un transaction_id vacío es peor que no tener ningún ID, porque GA4 fusiona compras que no tienen relación y que lo comparten.

¿Puedo dejar los dos emisores activos y confiar en la deduplicación?

Solo si todas las rutas envían exactamente el mismo transaction_id siempre, algo poco frecuente cuando uno de los emisores es una app gestionada por el proveedor cuyo ID no puedes controlar. Ejecutar una sola ruta de compra es la respuesta fiable; una segunda ruta es una oportunidad permanente de que los dos ID se separen tras una actualización.

¿Me mostrarán el duplicado Tag Assistant o GTM Preview?

No de forma fiable. GTM Preview no puede engancharse dentro del sandbox del píxel de Shopify, así que solo muestra las etiquetas que se ejecutan en la página y la ruta del píxel permanece invisible para él. Trata DebugView y el informe Realtime como la evidencia principal, y usa Preview solo para los contenedores que sí puede ver.

Sigue leyendo, o revisa un síntoma vecino.

Todos los síntomas
Daniil Maximkin

Hola, soy Daniil.

Trabajo contigo desde la definición del problema hasta la implementación y la entrega. Hablas con quien hace el trabajo. Trabajo en inglés y ruso.

¿Lo has intentado y sigues atascado?

Describe tu tarea

La primera respuesta es gratis, en un día laborable. O escribe directamente: next@taskfordaniel.com