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-conversion-organico.sql
-- 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_sesionespaso_2_page_viewpaso_3_scrollpaso_4_conversiontasa_1_a_2tasa_2_a_3tasa_3_a_4
1520014890893434297.9660.003.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.