Saltar al contenido

GuíasGoogle Analytics 412 min de lectura

Por qué los ingresos de GA4 no coinciden con los pedidos de Shopify

Por qué pueden diferir los ingresos de GA4 y Shopify, cómo reviso cada pedido y un mes hipotético conciliado por completo.

Publicado
Revisado
Comparar pedidos individuales e investigar las diferencias.

Daniil MaximkinIngeniero de producto y soluciones

Respuesta corta

Comparo la misma métrica, periodo y divisa antes de valorar diferencias. Los ingresos por compras de GA4 suman las compras menos los reembolsos registrados; no cuentan sesiones. Los informes de ventas de Shopify incluyen pedidos pendientes, sin pagar y cancelados, y anotan las anulaciones de ventas en su fecha de procesamiento. El consentimiento, los fallos de recogida y el alcance del informe pueden cambiar la comparación. Concilio cada pedido antes de atribuir causas; ningún porcentaje documentado hace aceptable una diferencia.

— Daniil

Conclusiones clave

  • Una diferencia de ingresos puede deberse a las definiciones, la recogida o los informes. Su tamaño por sí solo no demuestra un fallo de tracking.
  • Los ingresos por compras de GA4 se basan en eventos. La atribución reparte el mérito entre canales; no convierte esos ingresos en sesiones.
  • El modo básico de consentimiento bloquea las etiquetas tras una denegación; el avanzado puede enviar mediciones sin cookies. Los umbrales ocultan filas de informes; los filtros de datos activos excluyen permanentemente los eventos entrantes.
  • Relaciono los pedidos mediante una clave acordada, comparo importes y reembolsos, y marco como desconocida cada causa sin explicar.
  • Revisa fechas, divisas, pedidos de prueba y envío de reembolsos antes de cambiar código. No hay un porcentaje documentado de variación aceptable.
En esta guía

Cuando GA4 y Shopify muestran ingresos distintos, primero pregunto qué incluye cada total. La diferencia puede venir de las definiciones, los límites de fechas o la recogida. Comparo cada pedido y sus ajustes antes de llamarlo fallo de tracking.

¿Por qué pueden diferir los ingresos de GA4 y Shopify?

Distingo las diferencias de alcance de la recogida ausente o incorrecta. Estas comprobaciones pueden explicar una diferencia, pero ninguna establece la causa sin pruebas.

  • Atribución y alcance. La atribución reparte el mérito de una compra entre puntos de contacto. Primero comparo los ingresos por compras de todos los canales, en lugar de un subtotal por canal o un recuento de sesiones. Un reparto distinto del mérito entre canales no cambia por sí solo esa suma de eventos de todos los canales.
  • Zona horaria. Los metadatos del informe de GA4 indican su zona horaria; Shopify tiene un ajuste de zona horaria de la tienda independiente. Con ajustes distintos, una misma marca temporal puede caer en fechas distintas. El ejemplo sintético de abajo muestra ese límite de forma explícita.
  • Configuración del consentimiento. El modo básico de consentimiento bloquea las etiquetas de Google tras una denegación. El modo avanzado puede enviar mediciones sin cookies. Distingo la conciliación de pedidos observados de los totales modelizados de los informes. Esto describe la recogida técnica, no asesoramiento legal.
  • Recogida y controles de privacidad. Compruebo si la solicitud de compra se envió y se recibió, y si un control de privacidad o un fallo de etiqueta lo impidió. Una fila ausente del informe no permite distinguir esas posibilidades por sí sola.
  • Fecha y envío de reembolsos. Shopify registra una anulación de venta como valor negativo en su fecha de procesamiento, que puede ser posterior al pedido. GA4 necesita un refund registrado para ajustar los ingresos por compras. Compruebo el tipo de anulación y su envío; no todos los reembolsos solo de dinero cambian las ventas de Shopify de la misma forma.
  • Conversión de divisas. En tiendas multidivisa, el valor enviado a GA4 puede estar en la divisa de presentación mientras Shopify informa en la de la tienda, o la conversión puede usar otro tipo de cambio. El recuento de pedidos puede coincidir aunque los ingresos no.
  • Filtros de datos y umbrales. Los filtros de exclusión de datos activos excluyen permanentemente los eventos entrantes del procesamiento y de BigQuery. Los umbrales de datos, en cambio, ocultan filas de informes o exploraciones. Compruebo qué mecanismo se aplica; no son el mismo tipo de dato ausente.

¿Cuánta variación de ingresos entre GA4 y Shopify es normal?

La documentación enlazada no establece un porcentaje aceptable. El consentimiento, el alcance del informe y los pedidos del periodo afectan a la comparación. Valoro si cada diferencia está explicada, en lugar de llamar normal a un porcentaje.

Cualquier umbral usado para priorizar una conciliación es una regla de trabajo, no un estándar de las plataformas. La página de síntomas enlazada usa umbrales para priorizar; no los tomo como prueba de que la recogida sea correcta o defectuosa.

Uso tres patrones para decidir dónde investigar:

  • La dirección se mantiene. Revisa las diferencias constantes de alcance, la recogida y el envío de reembolsos.
  • Apareció en una fecha. Compara los cambios de configuración, consentimiento, tema y checkout alrededor de esa fecha. Un cambio de consentimiento también puede modificar la diferencia.
  • Crece. Revisa los cambios en la composición de los pedidos, el alcance y la recogida. El crecimiento por sí solo no identifica un flujo de datos defectuoso.

Después concilio pedidos, comparo ajustes y busco pruebas a nivel de evento. Relacionar registros identifica diferencias; no explica automáticamente por qué falta un evento.

Árbol de decisión de diagnóstico

Usa estos patrones para elegir una comprobación. La columna central enumera posibles explicaciones, no diagnósticos.

Patrón observadoPosible explicaciónCómo verificarlo
GA4 inferior en general, porcentaje estable cada mesAlcance, consentimiento o recogida distintosCompara definiciones y pruebas de recogida por pedido; no deduzcas la causa solo del tráfico Unassigned o de la estabilidad
GA4 inferior solo desde una fecha concretaUn cambio de configuración, consentimiento o checkoutCompara fechas de cambios; prueba el consentimiento, el envío por red y la configuración de depuración
GA4 inferior y la diferencia creceCambios en los pedidos, el alcance o una ruta de checkout defectuosaConcilia los pedidos y prueba las rutas asociadas a los eventos ausentes
GA4 superior a ShopifyPedidos de prueba, envío de reembolsos o envíos repetidosRevisa qué pedidos se incluyen, los reembolsos y los IDs antes de asumir que los ingresos están duplicados
La diferencia oscila a diario pero se compensa en el mesLímite de zona horaria y fecha de reembolsosAlinea ambas exportaciones a la misma zona horaria y ventana de fechas
El recuento de pedidos coincide, pero los ingresos noConversión de divisas o parámetro value incorrectoVerifica currency y value en el evento purchase

¿Cómo concilio GA4 y Shopify pedido a pedido?

Los totales de los paneles muestran una diferencia; relacionar registros identifica los pedidos y ajustes afectados. Este es mi método. Dejo abiertas las causas desconocidas hasta que las pruebas las respalden.

  1. Elige un periodo cerrado. Escojo un mes completo y anoto cuándo se exportó. Reviso los ajustes posteriores por separado, sin asumir que el mes ya no puede cambiar.
  2. Exporta el lado de Shopify. Conservo el nombre o ID del pedido, fecha de creación, total, divisa y estado financiero del CSV de pedidos. Varios artículos pueden generar varias filas; evito contar dos veces un pedido. Acuerdo qué pedidos se incluyen y obtengo por separado las anulaciones de ventas con fecha: el total actual de un pedido no equivale al informe de ventas del periodo.
  3. Exporta el lado de GA4. Uso filas de informes por ID de transacción o eventos recibidos en BigQuery, incluidas compras y reembolsos. Reviso configuración e integridad de la exportación antes de comparar; el streaming puede tener lagunas.
  4. Normaliza ambos lados. Alineo zona horaria, fechas, divisa y componentes de ventas, y acuerdo cómo tratar los reembolsos. Documento cada ajuste sin asumir que la normalización explica todas las diferencias.
  5. Relaciona mediante una clave acordada. Uno el identificador del pedido con el transaction_id de GA4, usando una correspondencia verificada si los formatos difieren. Mantengo separados los registros sin pareja o ambiguos.
  6. Clasifica las diferencias. Separo pedidos solo en Shopify, registros solo en GA4 y registros relacionados con importes distintos. Son observaciones: fechas, alcance, pruebas, falta de envío y divisa son posibilidades que comprobar, no diagnósticos automáticos.
  7. Investiga los grupos. Agrupo las diferencias según las pruebas disponibles de checkout o pago. Una característica compartida indica dónde probar; no demuestra una causa en el código. Marco como desconocido lo que no tiene pruebas.

Esta plantilla SQL sintética busca IDs de transacción repetidos en una exportación diaria. No se ha ejecutado sobre datos de clientes. Los IDs repetidos en datos sin procesar no demuestran ingresos inflados en informes; reviso por separado el usuario, el pedido y el alcance de la deduplicación:

-- IDs de transacción de compras enviados más de una vez en un día (exportación GA4 a BigQuery)
SELECT
  (SELECT value.string_value FROM UNNEST(event_params)
   WHERE key = 'transaction_id') AS transaction_id,
  COUNT(*) AS purchase_events
FROM `project.analytics_XXXXXX.events_20260701`
WHERE event_name = 'purchase'
GROUP BY transaction_id
HAVING purchase_events > 1
ORDER BY purchase_events DESC;

Un ejemplo práctico (hipotético)

Es un periodo completamente sintético, no un resultado de cliente. Comparo septiembre de 2026 en una tienda hipotética de Shopify con America/New_York y USD frente a una propiedad de GA4 con UTC y USD. Todos los importes, etiquetas de pedido y tipos de cambio son inventados.

Las exportaciones iniciales usan el corte de septiembre de cada sistema. Shopify muestra Total sales de $400,60; GA4 muestra Purchase revenue de $318,29. La diferencia, Shopify menos GA4, es $82,31. Uso ingresos por compras de todos los canales, no un subtotal atribuido a un canal. Total sales de Shopify incluye anulaciones y otros componentes de ventas; Purchase revenue de GA4 resta los reembolsos registrados.

En este ejemplo, todos los pedidos reales están pagados. Impuestos, envío, aranceles, cargos y descuentos son cero. No hay suscripciones, ingresos por anuncios, otros pedidos ni otros reembolsos. El único reembolso es una anulación de venta de un artículo ya procesada, no un reembolso personalizado solo de dinero: Shopify documenta que pueden diferir en informes y exportaciones. Las filas de reembolso no crean ni eliminan pedidos de compra.

Cada fila aporta su importe a los totales iniciales de septiembre. Todos los dólares son USD; C se pagó en EUR antes de la conversión. Dif. significa Shopify menos GA4. Las etiquetas de fila permanecen visibles si desplazas la tabla.

FilaShopifyGA4Dif.
A: normal$120,10$120,10$0,00
B: normal$80,20$80,20$0,00
C: EUR 100$110,00$108,00+$2,00
D: sin permiso$50,40$0,00+$50,40
E: corte horario$60,25$0,00+$60,25
F: prueba$0,00$9,99−$9,99
Reembolso B, 20 sep.−$20,35$0,00−$20,35
Total$400,60$318,29+$82,31

Estas son las pruebas que supongo para cada diferencia. En una conciliación real las exigiría antes de atribuir una causa.

  • Divisa, +$2,00. Para C, el equivalente hipotético guardado en Shopify es EUR 100,00 × 1,10 = $110,00. El equivalente hipotético del informe de GA4 es EUR 100,00 × 1,08 = $108,00. Son tipos inventados para el ejemplo, no tipos de septiembre. GA4 convierte divisas locales a la divisa de los informes; uso los valores guardados sin asumir que ambos sistemas eligieron el mismo tipo.
  • Consentimiento, +$50,40. D se completó, pero el modo básico hipotético bloqueó las etiquetas de analítica tras la denegación, sin dejar una compra observada. La recogida básica y avanzada difieren. El ejemplo usa transacciones observadas sin añadidos modelizados; no afirma que todos los pedidos con consentimiento denegado falten en todos los informes de GA4. Trata la implementación técnica, no el asesoramiento legal.
  • Corte horario, +$60,25. E ocurrió el 30 de septiembre a las 23:30 en America/New_York: el 1 de octubre a las 03:30 UTC. Su compra de GA4 existe en octubre; no es un evento perdido. La ventana acordada va del 1 de septiembre a las 04:00 UTC al 1 de octubre a las 04:00 UTC, excluyendo el final. Ningún otro evento del ejemplo cruza esos límites. Vuelvo a seleccionar los eventos por su marca temporal; cambiar la etiqueta del panel no mueve el evento.
  • Inclusión de pruebas, −$9,99. F es un pedido hipotético en modo de prueba de Shopify Payments. Las ventas de Shopify lo excluyen, pero el filtro de pruebas falló en este ejemplo y la compra llegó a GA4. Los informes de ventas excluyen pruebas; las exportaciones de pedidos las incluyen. Retiro F de la comparación e investigo el filtro.
  • Reembolso, −$20,35. La anulación de venta del artículo de B, procesada en septiembre, reduce las ventas de Shopify. El ejemplo no envió un refund a GA4, que conserva los $80,20 originales. GA4 necesita un evento refund ligado a la transacción. Incluyo los $20,35 ausentes y anoto el envío del reembolso como trabajo que investigar; no es automáticamente una variación estructural inocua.

Los pedidos también cuadran: Shopify tiene cinco pedidos reales (A–E). La selección original de septiembre de GA4 tiene cuatro compras (A, B, C y la prueba F). Al excluir F quedan tres; al incluir E en la ventana acordada quedan cuatro compras reales observadas. D explica el único pedido no observado restante. El reembolso es un ajuste monetario aparte, no un sexto pedido.

El puente de conciliación es $318,29 − $9,99 + $60,25 + $2,00 − $20,35 = $350,20. Al incluir los $50,40 de D obtengo $400,60, exactamente el total de Shopify. Son ajustes de conciliación, no cambios en GA4 ni instrucciones para enviar una compra con consentimiento denegado. Los $82,31 iniciales quedan completamente explicados: $2,00 + $50,40 + $60,25 − $9,99 − $20,35 = $82,31.

Investigaría el filtro de pruebas y el envío del reembolso ausente. Documentaría las diferencias de divisa y fechas, y respetaría el consentimiento de D. Que un total explicado cuadre no demuestra que todas las rutas funcionen; solo indica que este ejemplo no deja un importe sin explicar.

Cómo verifico esto en implementaciones reales

Uso la conciliación para localizar diferencias; después pruebo el envío de eventos y la configuración. Son comprobaciones propuestas para una implementación real; no se han hecho sobre un sistema de cliente para este artículo.

  • DebugView y pruebas de red. Con el modo debug activo, reviso los parámetros de purchase en DebugView. Los controles de privacidad o una denegación de consentimiento pueden impedir su visibilidad. Una fila ausente no demuestra por sí sola un fallo de código ni la recepción de una solicitud; reviso el consentimiento, la depuración y las solicitudes de red del navegador.
  • Varias rutas de checkout. Pruebo las rutas reales de tarjeta, cartera, express y post-purchase dentro del alcance acordado. No asumo que un checkout correcto demuestra que todos funcionan.
  • IDs de transacción. Reviso un ID único y no vacío por pedido. GA4 deduplica compras del mismo usuario con un ID compartido en flujos web, no en flujos de apps. Los IDs reutilizados o vacíos pueden ocultar compras distintas; distintos IDs para un pedido pueden impedir la deduplicación.
  • Pruebas de BigQuery. Comparo eventos recibidos sin procesar con los registros de pedidos. No muestran eventos no recibidos ni garantizan una recogida completa; también reviso los límites y la configuración de exportación.

Modos de fallo habituales

Investigaría estas posibilidades de implementación en lugar de deducirlas de un total agregado.

  • Envío incompleto. Una ruta de checkout necesaria no entrega una compra recibida. Pruebo el activador y la solicitud de esa ruta.
  • Envíos repetidos. Dos rutas envían un pedido con IDs distintos o ausentes. Los informes deduplican las compras web del mismo usuario con un ID compartido; dos etiquetas por sí solas no demuestran ingresos duplicados. La guía del evento purchase explica qué rutas revisar.
  • Claves ambiguas. Los identificadores necesitan una correspondencia verificada. Una cadena sin pareja no demuestra por sí sola un defecto de deduplicación.
  • Reembolso no enviado. Una anulación de venta de Shopify no tiene su refund correspondiente en GA4. Reviso tipo, importe y periodo antes de atribuir la diferencia.
  • Valor o divisa incorrectos. Comparo los parámetros recibidos con los importes y componentes previstos.

Limitaciones de la conciliación

La conciliación depende de identificadores utilizables, definiciones comparables y pruebas disponibles. Un total que cuadre puede ocultar errores que se compensan. Las exportaciones sin procesar pueden diferir de los informes modelizados, y ajustes posteriores pueden modificar el periodo comparado.

Si el modo básico o un bloqueador impidieron que un evento llegase a GA4, ese conjunto de eventos recibidos no puede recuperarlo. Necesito pruebas de recogida o consentimiento por pedido para atribuir esa causa; la ausencia por sí sola no basta. El modo avanzado puede enviar mediciones sin cookies: una denegación no implica una ausencia universal. Respeto el consentimiento en lugar de enviar pedidos ausentes para forzar que cuadren.

Alternativas

Si no puedes o no quieres conciliar manualmente, hay opciones más ligeras y más completas. Una auditoría de tracking puntual realiza la conciliación y verificación de eventos y te entrega una lista clasificada de discrepancias.

El etiquetado del lado del servidor traslada el procesamiento a infraestructura que controlas. En el flujo navegador-servidor, el dispositivo sigue teniendo que enviar una solicitud. Acordaría por separado el trabajo server-side, revisando envío y consentimiento; mover el procesamiento no demuestra que se recuperen eventos bloqueados. Para el síntoma recurrente, consulta la discrepancia de ingresos entre GA4 y Shopify y, para el método, la conciliación de pedidos.

Si la guía no lo resolvióEUR 375

Hago esta conciliación en tu tienda en solo lectura, por EUR 375 — veredicto por escrito dos días laborables después del kickoff.

Solicitar un Health Check

Preguntas

Preguntas que responde esta guía

¿Cuánta diferencia entre GA4 y Shopify es aceptable?

La documentación enlazada no establece un porcentaje aceptable. Compruebo si la diferencia se explica por el alcance, la divisa, las fechas o las pruebas de recogida. Una diferencia repentina o creciente merece una investigación; no demuestra que una etiqueta esté rota. Una diferencia pequeña sin explicar también necesita una explicación.

¿Debería confiar en Shopify o en GA4 para los ingresos?

Uso Shopify para pedidos y ventas, y concilio por separado los registros de pagos y liquidaciones del proveedor de pagos para los movimientos de dinero. Los informes de ventas de Shopify no registran pagos. GA4 me ayuda a examinar el comportamiento observado y el mérito atribuido a los canales; eso responde a otra pregunta distinta del dinero cobrado.

¿Por qué los ingresos de GA4 son inferiores a los de Shopify casi todos los meses?

Revisaría primero la métrica y qué pedidos se incluyen; después, el consentimiento y la recogida. El modo básico puede bloquear etiquetas; el avanzado puede enviar mediciones sin cookies. Una solicitud de compra que nunca llega a GA4 no puede aparecer como evento recibido. Son posibilidades que hay que verificar; la dirección de la diferencia no identifica su causa.

¿Puede GA4 mostrar más ingresos que Shopify?

Sí. Reviso pedidos de prueba, reembolsos no enviados y envíos repetidos. En flujos web, GA4 deduplica las compras del mismo usuario que comparten un ID de transacción. Los IDs distintos o ausentes requieren investigación; dos etiquetas por sí solas no demuestran que los ingresos del informe estén duplicados.

¿Necesito BigQuery para conciliar GA4 y Shopify?

No. Puedo comparar las filas de un informe por ID de transacción con una exportación de Shopify. BigQuery da acceso a eventos recibidos sin procesar, sujeto a la configuración y los límites de exportación; no recupera una compra no recibida. Las propiedades estándar tienen un límite diario de un millón de eventos exportados, y la exportación en streaming puede tener lagunas.

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