Funnel de conversión desde landing orgánica hasta evento clave
Construye un embudo de conversión para sesiones orgánicas: desde la llegada hasta el evento clave. Permite identificar en qué etapa se pierde la mayor cantidad de usuarios.
-- Funnel de conversión en sesiones orgánicas
-- Etapas: session_start > page_view > scroll > evento clave
WITH sesiones_organicas AS (
SELECT
CONCAT(
user_pseudo_id, '.',
CAST(
(SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')
AS STRING)
) AS session_id,
event_name
FROM
`your-project.analytics_XXXXXXXXX.events_*`
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY))
AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
AND traffic_source.medium = 'organic'
)
SELECT
COUNT(DISTINCT IF(event_name = 'session_start', session_id, NULL)) AS paso_1_sesiones,
COUNT(DISTINCT IF(event_name = 'page_view', session_id, NULL)) AS paso_2_page_view,
COUNT(DISTINCT IF(event_name = 'scroll', session_id, NULL)) AS paso_3_scroll,
COUNT(DISTINCT IF(event_name = 'generate_lead', session_id, NULL)) AS paso_4_conversion,
-- Tasas de avance entre pasos
ROUND(SAFE_DIVIDE(
COUNT(DISTINCT IF(event_name = 'page_view', session_id, NULL)),
COUNT(DISTINCT IF(event_name = 'session_start', session_id, NULL))
) * 100, 2) AS tasa_1_a_2,
ROUND(SAFE_DIVIDE(
COUNT(DISTINCT IF(event_name = 'scroll', session_id, NULL)),
COUNT(DISTINCT IF(event_name = 'page_view', session_id, NULL))
) * 100, 2) AS tasa_2_a_3,
ROUND(SAFE_DIVIDE(
COUNT(DISTINCT IF(event_name = 'generate_lead', session_id, NULL)),
COUNT(DISTINCT IF(event_name = 'scroll', session_id, NULL))
) * 100, 2) AS tasa_3_a_4
FROM
sesiones_organicas
Explicación paso a paso
- 3 El CTE recopila todos los eventos de sesiones orgánicas con su session_id y event_name.
- 20 Cuenta sesiones distintas que tuvieron session_start (todas las sesiones orgánicas).
- 21 Cuenta sesiones que generaron al menos un page_view.
- 22 Cuenta sesiones donde el usuario hizo scroll.
- 23 Cuenta sesiones que llegaron al evento clave (generate_lead como ejemplo). Reemplazar por el evento de conversión correspondiente.
- 25 SAFE_DIVIDE calcula la tasa de avance entre pasos consecutivos sin riesgo de división por cero.
Ejemplo de resultado esperado
| paso_1_sesiones | paso_2_page_view | paso_3_scroll | paso_4_conversion | tasa_1_a_2 | tasa_2_a_3 | tasa_3_a_4 |
|---|---|---|---|---|---|---|
| 15200 | 14890 | 8934 | 342 | 97.96 | 60.00 | 3.83 |
Variaciones y adaptaciones
Reemplazar 'generate_lead' por el evento clave específico del sitio (purchase, sign_up, etc.). Para ver el funnel por landing page, añadir la page_location del session_start al CTE y agrupar por ella. Para añadir más pasos intermedios (como click en CTA), incluir eventos personalizados adicionales.
Queries relacionadas
Páginas más vistas por usuarios orgánicos en una sola sesión
GA4 en BigQuery
Intermedio
Search terms internos usados por visitantes orgánicos
GA4 en BigQuery
Intermedio
Velocidad de página percibida por usuarios orgánicos
GA4 en BigQuery
Intermedio
Páginas de salida más frecuentes en sesiones orgánicas
GA4 en BigQuery
Intermedio