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.