Cómo conectar GA4 con BigQuery: tutorial paso a paso, tablas y costos reales

Si leíste nuestro artículo sobre atribución en ecommerce, ya sabes el problema: las plataformas borran tu historia. Universal Analytics eliminó 18 años de datos en julio de 2024, y Meta limita su API a 37 meses. La salida es tener tu propia copia de los datos, y para eso GA4 trae una exportación nativa y gratuita a BigQuery.

Hay un detalle que cambia todo: conectar GA4 con BigQuery no es retroactivo. La exportación empieza a guardar datos desde el día que la activas, ni un día antes. Cada semana que pasa sin la conexión es una semana de historia que pierdes para siempre. Por eso este tutorial parte por la configuración y termina con lo que de verdad te va a preguntar tu jefe: cuánto cuesta.

Por qué exportar GA4 a BigQuery

La interfaz de GA4 te muestra datos agregados, con muestreo en informes complejos y umbrales de privacidad que ocultan filas. La exportación a BigQuery te entrega otra cosa: cada evento crudo, uno por uno, con todos sus parámetros.

Con esa data cruda puedes hacer lo que la interfaz ya no permite. Aplicar modelos de atribución propios (lineal, primer clic, decaimiento temporal, los que Google eliminó de GA4 en 2023), cruzar pedidos contra tu backend de forma automática, y armar dashboards en tiempo real. Para un Cyber, eso significa ver hora a hora qué canal está vendiendo, en vez de esperar 24-48 horas a que GA4 consolide.

Requisitos previos

Necesitas tres cosas. Una cuenta en Google Cloud Platform con un proyecto creado (en console.cloud.google.com). Una tarjeta de crédito asociada al proyecto: es requisito de GCP, pero mientras te mantengas dentro de la capa gratuita no genera cobros. Y permisos de editor en la propiedad de GA4.

Si nunca has usado GCP, el proceso completo toma unos 15 minutos.

Tutorial: configurar la exportación en 6 pasos

  1. Crea el proyecto en GCP y verifica que la API de BigQuery esté habilitada (viene activa por defecto en proyectos nuevos).
  2. En GA4, ve a Administrar → Enlaces con productos → Vínculos de BigQuery y presiona «Vincular».
  3. Selecciona tu proyecto de GCP y la región donde se guardarán los datos. Elige con calma: la región no se puede cambiar después sin migrar el dataset completo. Para Chile, us (multirregión) o southamerica-west1 (Santiago) son las opciones razonables.
  4. Elige la frecuencia de exportación. Daily crea una tabla por día con los datos consolidados. Streaming escribe los eventos de forma continua, con segundos de retraso. Puedes activar ambas. Dato relevante para tiendas grandes: el export diario tiene un límite de 1 millón de eventos al día en propiedades estándar; streaming no tiene límite. Existe una tercera opción llamada Fresh Daily, que entrega la tabla diaria en 30-60 minutos, pero es exclusiva de Analytics 360.
  5. Configura qué exportar. Puedes incluir los datos de usuario (tablas pseudonymous_users_ y users_) y excluir eventos de alto volumen y bajo valor analítico, como page_view o scroll, si quieres controlar el tamaño del dataset. Para atribución conviene mantenerlos; para partir liviano, exclúyelos y ajusta después.
  6. Guarda y espera. La primera tabla aparece dentro de las siguientes 24 horas en tu proyecto, bajo un dataset llamado analytics_XXXXXXXX (el número es el ID de tu propiedad).

Las tablas que vas a encontrar

La exportación crea hasta cuatro tipos de tabla, y conviene entender qué hace cada una antes de consultar.

events_YYYYMMDD: una tabla por día con todos los eventos consolidados. Es tu fuente de verdad para reportes. Google puede seguir ajustando los datos hasta 72 horas después, así que los últimos dos o tres días pueden variar levemente.

events_intraday_YYYYMMDD: la tabla del día en curso, poblada por streaming. Sirve para monitoreo en tiempo real, con una advertencia: campos como traffic_source y user_ltv no vienen poblados ahí. Para análisis de atribución, usa siempre las tablas diarias.

pseudonymous_users_YYYYMMDD y users_YYYYMMDD: perfiles de usuario. La primera se basa en el identificador de dispositivo (user_pseudo_id); la segunda en tu user_id propio, si lo implementaste. Traen algo que la interfaz de GA4 no expone con este detalle: membresía de audiencias y métricas predictivas como probabilidad de churn e ingreso proyectado por usuario. Con eso puedes, por ejemplo, exportar tus usuarios de alto valor hacia el CRM o como audiencia de remarketing.

La particularidad del esquema es que es anidado. Cada fila es un evento, pero sus parámetros viven en event_params, un array de pares clave/valor. Eso significa que para extraer cualquier parámetro custom necesitas la función UNNEST de SQL. Se ve raro la primera vez y después se vuelve mecánico.

Tres consultas para partir

Reemplaza tu_proyecto.analytics_XXXXXXXX por tu proyecto y dataset reales, y ajusta las fechas del _TABLE_SUFFIX. Si quieres más ejemplos después de estos, Google mantiene una biblioteca oficial de consultas básicas sobre el esquema de exportación.

1. Ventas e ingresos por día. La base del ritual de conciliación contra tu backend que describimos en el artículo de atribución:

sql

SELECT
  event_date,
  COUNT(DISTINCT ecommerce.transaction_id) AS pedidos,
  ROUND(SUM(ecommerce.purchase_revenue), 0) AS ingresos
FROM `tu_proyecto.analytics_XXXXXXXX.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260601' AND '20260630'
  AND event_name = 'purchase'
GROUP BY event_date
ORDER BY event_date;

2. Compras por fuente y medio. Para ver qué canales están cerrando ventas según la data cruda:

sql

SELECT
  collected_traffic_source.manual_source AS fuente,
  collected_traffic_source.manual_medium AS medio,
  COUNT(DISTINCT ecommerce.transaction_id) AS compras,
  ROUND(SUM(ecommerce.purchase_revenue), 0) AS ingresos
FROM `tu_proyecto.analytics_XXXXXXXX.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260601' AND '20260630'
  AND event_name = 'purchase'
GROUP BY 1, 2
ORDER BY ingresos DESC;

3. IDs de pedido para cruzar contra el backend, con un ejemplo de UNNEST para extraer parámetros:

sql

SELECT
  event_date,
  (SELECT value.string_value
   FROM UNNEST(event_params)
   WHERE key = 'transaction_id') AS id_pedido,
  ecommerce.purchase_revenue AS ingreso
FROM `tu_proyecto.analytics_XXXXXXXX.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260601' AND '20260630'
  AND event_name = 'purchase'
ORDER BY event_date;

Con esta última lista haces el cruce pedido a pedido contra tu ecommerce. Si un ID aparece dos veces, tienes un evento que se dispara duplicado. Y desde aquí, el siguiente paso natural son los modelos de atribución propios: las consultas completas de primer clic, lineal y decaimiento temporal están en los anexos de nuestra presentación del webinar con Multivende. Si quieres profundizar en cómo reconstruir los modelos que Google eliminó, este artículo de mbuzz trae las consultas de primer clic y lineal sobre el mismo esquema de exportación, junto con una buena explicación de cómo funciona el data-driven de Google por dentro (usa valores de Shapley, un concepto de teoría de juegos).

Cuánto cuesta realmente

La respuesta corta: para la mayoría de las tiendas chilenas, cero o casi cero.

BigQuery tiene una capa gratuita permanente de 10 GB de almacenamiento y 1 TB de consultas procesadas al mes. Sobre eso, los precios on-demand son US$6,25 por TB consultado y US$0,02 por GB de almacenamiento activo al mes (baja a la mitad para datos sin modificar hace más de 90 días). El export diario es gratis; el streaming cuesta US$0,05 por GB insertado, equivalente a unos 600.000 eventos por GB.

Aterrizado a casos reales: una tienda con menos de un millón de eventos al mes genera del orden de 1-2 GB mensuales y sus consultas típicas procesan unos pocos GB. Todo dentro de la capa gratuita: US$0. Una tienda media con streaming activo y unos 10 millones de eventos mensuales paga alrededor de US$1 por el streaming y algunos dólares por almacenamiento acumulado y consultas. El orden de magnitud es de US$5 a US$20 al mes, bastante menos que cualquier herramienta de analítica de pago.

El riesgo de costo está en las consultas descuidadas. BigQuery cobra por datos procesados, y un SELECT * sobre todo el histórico escanea cada columna de cada tabla. Dos hábitos lo evitan: selecciona solo las columnas que necesitas y filtra siempre por _TABLE_SUFFIX. El editor de BigQuery te muestra cuántos datos va a procesar la consulta antes de ejecutarla; revísalo hasta que se vuelva costumbre.

Errores comunes al conectar GA4 con BigQuery

Cuatro que vemos seguido. Elegir la región sin pensar y descubrir después que migrar es un proyecto en sí mismo. Esperar data histórica que nunca va a llegar, porque la exportación parte desde la activación. Consultar events_* sin filtro de fechas y procesar todo el dataset en cada consulta. Y usar las tablas intraday para análisis de atribución, donde los campos de fuente de tráfico vienen vacíos.

Conclusión: actívalo hoy, aunque no lo uses todavía

La conexión toma 15 minutos, cuesta cero para la mayoría de las tiendas y empieza a acumular tu historia de datos desde hoy. Aunque no tengas un analista que escriba SQL todavía, el dataset va a estar ahí cuando lo necesites: para auditar tu medición, para correr tus propios modelos de atribución o para el dashboard en vivo del próximo Cyber.

Tu historia de negocio deja de pertenecerle a las plataformas y pasa a ser tuya. Ese es el verdadero retorno de esta configuración.

¿Dudas con la implementación o quieres que revisemos tu medición completa? Conversemos.


Fuentes externas citadas

Compártelo: