Cómo crear un embudo GA4 con BigQuery y Looker Studio

como crear un embudo ga4 con bigquery y looker studio

La analítica de datos se ha convertido en un pilar fundamental para las empresas que buscan optimizar su rendimiento y mejorar la experiencia del usuario. Utilizar herramientas eficaces como Google Analytics 4 (GA4) en combinación con BigQuery y Looker Studio permite a las organizaciones no solo recopilar datos, sino transformarlos en información valiosa. En este artículo, te guiaremos a través del proceso de construir un embudo en GA4 utilizando BigQuery y luego visualizarlo en Looker Studio. Aprenderás a crear embudos personalizados que superan las limitaciones de GA4, mejorando así tu capacidad para analizar y entender el comportamiento de tus usuarios.

Limitaciones clave de los embudos en GA4

Antes de sumergirnos en la construcción de embudos con BigQuery, es crucial entender las limitaciones que presenta el análisis de embudos en GA4. Aunque GA4 ofrece herramientas incorporadas para la creación de embudos, estas pueden no ser suficientes para todas las necesidades analíticas.

Restricciones temporales

Una de las limitaciones más significativas en GA4 es la forma en que se interpretan los datos temporales. Por defecto, GA4 considera que un usuario ha completado una acción en cualquier momento dentro del período de análisis. Esto puede resultar engañoso: por ejemplo, si un usuario realizó una compra el 1 de junio, esto no garantiza que su decisión de comprar hubiera sido influenciada por una acción realizada el 30 de junio.

Con BigQuery, puedes establecer condiciones más específicas, asegurando que todas las acciones ocurran dentro de la misma sesión o en un solo día, lo que proporciona una visión más precisa del recorrido del usuario.

Función de desglose

GA4 permite el desglose de datos, pero solo de una dimensión a la vez en todos los pasos del embudo. Esto limita tu capacidad para analizar múltiples aspectos a la vez. En contraste, BigQuery permite un desglose mucho más flexible, donde puedes incluir diferentes dimensiones para cada paso del embudo. Por ejemplo, podrías desglosar el primer paso por la campaña de marketing que llevó al usuario al sitio, mientras que el segundo paso podría ser analizado por el tipo de evento que realizó.

Métricas y pasos

Otra restricción en GA4 es que el análisis de embudos solo muestra la cantidad de usuarios, lo que puede resultar insuficiente si deseas calcular métricas más complejas, como tasas de conversión o interacciones específicas. BigQuery te ofrece la posibilidad de profundizar en las métricas de cada paso del embudo y personalizar la información que necesitas para tu análisis, lo que te brinda un control total sobre los datos.

Configurando BigQuery para GA4

Para este artículo, asumimos que ya tienes configurado BigQuery para tu propiedad de GA4. Si no es así, consulta la documentación de Google para obtener instrucciones sobre cómo hacerlo. Además, es beneficioso tener un conocimiento básico sobre cómo funcionan los datos en BigQuery, ya que esto te ayudará a identificar los campos que puedes usar en tus consultas.

Construcción de un embudo de GA4 con BigQuery

Antes de crear el embudo, es fundamental definir los pasos que deseas incluir. Estos pasos pueden basarse en cualquier campo disponible en tus datos de GA4, como el nombre del evento, la URL de la página o los parámetros UTM. Reflexiona sobre las métricas que necesitas para medir el éxito de tu embudo.

A continuación, te mostraremos cómo construir un embudo básico de tres pasos y luego un embudo más complejo de dos pasos con desgloses.

Ejemplo 1: Embudo básico de 3 pasos sin desgloses

Crear un embudo básico que incluya las siguientes etapas: cuando un usuario aterriza en la página de inicio, realiza una búsqueda y luego añade un artículo al carrito. Este embudo se construirá asegurando que todas las acciones ocurran dentro de la misma sesión y sin desgloses para mantenerlo simple.

3 pasos: Añadir todos los campos necesarios

SELECT
   PARSE_DATE('%Y%m%d', event_date) AS date,
   event_timestamp,
   event_name,
   user_pseudo_id,
   (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'session_id'),
   (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location'),
   CONCAT(user_pseudo_id, CAST(event_timestamp AS STRING)) AS unique_event_id
FROM `project.dataset.table.event_*`
WHERE _TABLE_SUFFIX BETWEEN '2025-04-01' AND '2025-04-30'

Las líneas esenciales en esta consulta son:

  • PARSE_DATE(‘%Y%m%d’, event_date): Convierte la fecha del evento en un formato legible.
  • event_timestamp: Registra la fecha y hora exacta en que se registró el evento en GA4, lo que es crucial para mantener el orden de los pasos.
  • user_pseudo_id: Utilizado para contar el número de usuarios en cada paso y unir los pasos de manera efectiva.
  • CONCAT(user_pseudo_id, CAST(event_timestamp AS STRING)): Crea un identificador único para cada evento completado.

3 pasos: Configuración del paso 1

Ahora, adaptamos la consulta para que sea específica para el primer paso del embudo.

SELECT
   PARSE_DATE('%Y%m%d', event_date) AS date,
   event_timestamp AS step1_event_timestamp,
   event_name AS step1_event_name,
   user_pseudo_id AS step1_user_pseudo_id,
   (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'session_id') AS step1_session_id,
   (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location') AS step1_page_location,
   CONCAT(user_pseudo_id, CAST(event_timestamp AS STRING)) AS step1_unique_event_id
FROM `project.dataset.table.event_*`
WHERE _TABLE_SUFFIX BETWEEN '2025-04-01' AND '2025-04-30'
AND REGEXP_CONTAINS((SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location'), r'/homepage')

En esta consulta, hemos añadido un filtro que garantiza que solo se incluyan los eventos donde los usuarios llegan a la página de inicio.

3 pasos: Unir el paso 2 al paso 1

A continuación, realizamos la unión del segundo paso al primero utilizando una unión izquierda, asegurando que todos los usuarios que completaron el primer paso permanezcan en el conjunto de datos, incluso si no completaron el siguiente paso.

SELECT
   ...
   -- campos del paso 1
   step1_event_name,
   ...
   -- nuevos campos del paso 2
   step2_user_pseudo_id,
   step2_unique_event_id
FROM `project.dataset.table.event_*`
LEFT JOIN (
   SELECT
      event_timestamp AS step2_event_timestamp,
      user_pseudo_id AS step2_user_pseudo_id,
      (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'session_id') AS step2_session_id,
      CONCAT(user_pseudo_id, CAST(event_timestamp AS STRING)) AS step2_unique_event_id
   FROM `project.dataset.table.event_*`
   WHERE _TABLE_SUFFIX BETWEEN '2025-04-01' AND '2025-04-30'
   AND event_name = 'view_search_results'
) ON user_pseudo_id = step2_user_pseudo_id
   AND (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'session_id') = step2_session_id
   AND event_timestamp < step2_event_timestamp
WHERE _TABLE_SUFFIX BETWEEN '2025-04-01' AND '2025-04-30'

Al unir, nos aseguramos de que los pasos se conecten correctamente y de que los filtros se establezcan según lo que necesitamos para el embudo.

3 pasos: Unir el paso 3

Finalmente, repetimos el proceso para unir el tercer paso, asegurándonos de que cada acción ocurre en el orden correcto.

SELECT
   ...
   -- campos del paso 2
   step2_user_pseudo_id,
   ...
   -- nuevos campos para el paso 3
   step3_user_pseudo_id,
   step3_unique_event_id
FROM `project.dataset.table.event_*`
LEFT JOIN (
   SELECT
      event_timestamp AS step3_event_timestamp,
      user_pseudo_id AS step3_user_pseudo_id,
      (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'session_id') AS step3_session_id,
      CONCAT(user_pseudo_id, CAST(event_timestamp AS STRING)) AS step3_unique_event_id
   FROM `project.dataset.table.event_*`
   WHERE _TABLE_SUFFIX BETWEEN '2025-04-01' AND '2025-04-30'
   AND event_name = 'add_item_to_cart'
) ON step2_user_pseudo_id = step3_user_pseudo_id
   AND step2_session_id = step3_session_id
   AND step2_event_timestamp < step3_event_timestamp
WHERE _TABLE_SUFFIX BETWEEN '2025-04-01' AND '2025-04-30'

Con esta unión, completamos el embudo, permitiéndonos analizar cada paso del recorrido del usuario.

3 pasos: Guardar los datos en una tabla

Una vez que hayas creado el embudo, es esencial guardar esta consulta en una tabla para su posterior análisis en Looker Studio. Crea un conjunto de datos si aún no tienes uno y guarda la consulta usando la instrucción CREATE TABLE.

CREATE OR REPLACE TABLE `project.dataset.table`
PARTITION BY date
AS
SELECT
   PARSE_DATE('%Y%m%d', event_date) AS date,
   user_pseudo_id AS step1_user_pseudo_id,
   CONCAT(user_pseudo_id, CAST(event_timestamp AS STRING)) AS step1_unique_event_id,
   step2_user_pseudo_id,
   step3_user_pseudo_id
FROM `project.dataset.table.event_*`

Ahora tienes un embudo de tres pasos configurado y guardado en BigQuery, listo para ser visualizado.

Ejemplo 2: Embudo de dos pasos con desgloses

En este ejemplo, vamos a analizar el comportamiento de los usuarios que llegan a través de una de tres campañas de correo electrónico de un catálogo de primavera, y luego añaden un artículo a su carrito o a su lista de deseos. Este embudo incluirá desgloses por campaña UTM en el primer paso y por nombre de evento en el segundo paso.

La gran ventaja de usar BigQuery es que puedes segmentar cada paso de manera más detallada, algo que no puedes hacer en la interfaz de GA4.

2 pasos: Añadir todos los campos necesarios

Comenzamos creando la consulta para el primer paso, asegurándonos de incluir el campo de campaña UTM.

SELECT
   PARSE_DATE('%Y%m%d', event_date) AS date,
   event_timestamp,
   event_name,
   user_pseudo_id,
   (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'session_id'),
   (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location'),
   traffic_source.name AS utm_campaign,
   CONCAT(user_pseudo_id, CAST(event_timestamp AS STRING)) AS unique_event_id
FROM `project.dataset.table.event_*`
WHERE _TABLE_SUFFIX BETWEEN '2025-04-01' AND '2025-04-30'
AND event_name = 'page_view' 
AND traffic_source.name IN ('spring-catalogue-launch', 'spring-catalogue-reminder', 'spring-catalogue-vip')

2 pasos: Unir el paso 2 al paso 1

Ahora unimos el segundo paso, donde los usuarios pueden añadir un artículo al carrito o a la lista de deseos.

SELECT
   ...
   -- campos del paso 1
   utm_campaign,
   ...
   -- nuevos campos del paso 2
   step2_event_name,
   step2_user_pseudo_id,
   step2_unique_event_id
FROM `project.dataset.table.event_*`
LEFT JOIN (
   SELECT
      event_timestamp AS step2_event_timestamp,
      user_pseudo_id AS step2_user_pseudo_id,
      (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'session_id') AS step2_session_id,
      event_name AS step2_event_name,
      CONCAT(user_pseudo_id, CAST(event_timestamp AS STRING)) AS step2_unique_event_id
   FROM `project.dataset.table.event_*`
   WHERE _TABLE_SUFFIX BETWEEN '2025-04-01' AND '2025-04-30'
   AND event_name IN ('add_to_cart', 'add_to_wishlist')
) ON user_pseudo_id = step2_user_pseudo_id
   AND (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'session_id') = step2_session_id
   AND event_timestamp < step2_event_timestamp
WHERE _TABLE_SUFFIX BETWEEN '2025-04-01' AND '2025-04-30'

2 pasos: Guardar los datos en una tabla

Al igual que con el embudo de tres pasos, aseguramos que la consulta se guarde en una tabla para su visualización futura.

CREATE OR REPLACE TABLE `project.dataset.table`
PARTITION BY date
AS
SELECT
   PARSE_DATE('%Y%m%d', event_date) AS date,
   user_pseudo_id AS step1_user_pseudo_id,
   utm_campaign,
   step2_user_pseudo_id,
   step2_event_name
FROM `project.dataset.table.event_*`

Visualizando el embudo de BigQuery con Looker Studio

Una vez que hayas creado tus embudos en BigQuery, el siguiente paso es visualizarlos en Looker Studio, la herramienta de Google para crear paneles personalizados. Para comenzar, asegúrate de tener tus datos guardados en una tabla en BigQuery.

Conectar los datos de BigQuery a Looker Studio

Inicia sesión en Looker Studio y crea un nuevo informe. Selecciona «BigQuery» como fuente de datos y elige la tabla que creaste previamente. Asegúrate de establecer la fecha como dimensión de rango de fecha.

Ejemplo 1: Embudo básico de tres pasos sin desgloses

Comencemos creando un gráfico de barras para visualizar el embudo y, además, incluiremos tarjetas para mostrar las tasas de finalización y abandono.

Crear un gráfico de barras para visualizar el embudo

Dirígete a «Insertar» y selecciona «Gráfico de barras verticales». Configura las dimensiones y métricas necesarias en la pestaña de configuración.

Agregar tasas de finalización y abandono

Para enriquecer tu informe, añade las tasas de finalización y abandono. Esto te permitirá tener una visión rápida del porcentaje de usuarios que completan el embudo y detectar cualquier caída significativa en la tasa de finalización.

Ejemplo 2: Embudo de dos pasos con desgloses

Para visualizar la información del embudo de dos pasos, crearemos una tabla que contenga el rendimiento de cada campaña en términos de adiciones al carrito o lista de deseos.

Recuerda que la visualización puede requerir consultas personalizadas, así que no dudes en experimentar con diferentes configuraciones para obtener la información que necesitas.

Con estos pasos, estás preparado para construir y visualizar embudos personalizados que te ayudarán a comprender mejor el comportamiento de tus usuarios y a optimizar la experiencia en tu sitio web. ¡Es hora de aplicar lo aprendido y comenzar a explorar los datos de tu negocio!