Atribución multicanal con orgánico como primer touch
Identifica las rutas de conversión donde orgánico fue el primer punto de contacto. Muestra qué canales complementan al SEO en el camino hacia la conversión.
-- Rutas de conversión con orgánico como primer touch
-- Reconstruye el camino de canales por usuario hasta la conversión
WITH sesiones_usuario AS (
SELECT
user_pseudo_id,
PARSE_DATE('%Y%m%d', event_date) AS fecha,
IFNULL(traffic_source.medium, '(none)') AS medio,
event_name,
ROW_NUMBER() OVER(
PARTITION BY user_pseudo_id
ORDER BY event_timestamp ASC
) AS orden_sesion
FROM
`your-project.analytics_XXXXXXXXX.events_*`
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY))
AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
AND event_name IN ('session_start', 'generate_lead', 'purchase')
),
usuarios_primer_touch_organic AS (
SELECT DISTINCT user_pseudo_id
FROM sesiones_usuario
WHERE orden_sesion = 1 AND medio = 'organic'
),
rutas AS (
SELECT
s.user_pseudo_id,
STRING_AGG(
DISTINCT s.medio
ORDER BY s.medio
) AS canales_involucrados,
COUNTIF(s.event_name IN ('generate_lead', 'purchase')) AS conversiones
FROM
sesiones_usuario s
INNER JOIN usuarios_primer_touch_organic u
ON s.user_pseudo_id = u.user_pseudo_id
GROUP BY
s.user_pseudo_id
)
SELECT
canales_involucrados AS ruta_canales,
COUNT(*) AS usuarios,
SUM(conversiones) AS total_conversiones,
ROUND(SUM(conversiones) / COUNT(*) * 100, 2) AS tasa_conversion
FROM
rutas
GROUP BY
ruta_canales
ORDER BY
usuarios DESC
LIMIT 20
Explicación paso a paso
- 3 El CTE sesiones_usuario prepara las sesiones con su canal y orden cronológico por usuario.
- 9 ROW_NUMBER asigna un orden secuencial a las sesiones de cada usuario para identificar el primer touch.
- 18 Filtra session_start (para identificar canales) y eventos de conversión.
- 20 El CTE identifica usuarios cuyo primer punto de contacto fue orgánico.
- 28 STRING_AGG concatena los canales distintos en la ruta del usuario para ver la combinación de canales.
- 32 COUNTIF cuenta las conversiones de cada usuario.
- 43 Calcula la tasa de conversión dividiendo conversiones entre usuarios para cada combinación de canales.
Ejemplo de resultado esperado
| ruta_canales | usuarios | total_conversiones | tasa_conversion |
|---|---|---|---|
| organic | 5432 | 234 | 4.31 |
| (none),organic | 1876 | 123 | 6.56 |
| cpc,organic | 876 | 87 | 9.93 |
| (none),cpc,organic | 432 | 54 | 12.50 |
Variaciones y adaptaciones
Reemplazar 'generate_lead' y 'purchase' por los eventos de conversión del sitio. Para ver la ruta completa ordenada (no solo canales distintos), usar STRING_AGG sin DISTINCT y ORDER BY event_timestamp. Para limitar a los últimos 30 días en lugar de 90, ajustar el INTERVAL.
Queries relacionadas
Usuarios nuevos vs recurrentes desde orgánico
GA4 en BigQuery
Intermedio
Keywords que generan conversiones reales en GA4
Cruce GA4 + GSC
Avanzado
Páginas de salida más frecuentes en sesiones orgánicas
GA4 en BigQuery
Intermedio
Tráfico orgánico segmentado por tipo de contenido
GA4 en BigQuery
Avanzado