Keywords que generan conversiones reales en GA4
Cruza las keywords de GSC con las conversiones registradas en GA4 para la misma URL. Permite identificar qué términos de búsqueda realmente generan acciones de valor en el sitio.
-- Keywords que generan conversiones reales: cruce GSC + GA4
-- El matching se realiza por URL (GSC) vs page_location (GA4)
WITH gsc_data AS (
SELECT
query AS keyword,
url,
SUM(clicks) AS clics_gsc,
SUM(impressions) AS impresiones,
ROUND(SUM(sum_top_position + impressions) / SUM(impressions), 2) AS posicion_media
FROM
`your-project.searchconsole.searchdata_url_impression`
WHERE
data_date BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 28 DAY) AND CURRENT_DATE()
AND search_type = 'WEB'
AND is_anonymized_query = FALSE
GROUP BY
keyword, url
HAVING
clics_gsc >= 5
),
ga4_conversiones AS (
SELECT
-- Normalizar page_location: extraer solo scheme + host + path sin parámetros
REGEXP_EXTRACT(
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location'),
r'(https?://[^?#]+)'
) AS url_normalizada,
COUNT(*) AS conversiones
FROM
`your-project.analytics_XXXXXXXXX.events_*`
WHERE
_TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 28 DAY))
AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
AND traffic_source.medium = 'organic'
AND event_name IN ('generate_lead', 'purchase', 'sign_up')
GROUP BY
url_normalizada
)
SELECT
g.keyword,
g.url,
g.clics_gsc,
g.impresiones,
g.posicion_media,
c.conversiones,
ROUND(SAFE_DIVIDE(c.conversiones, g.clics_gsc) * 100, 2) AS tasa_conversion
FROM
gsc_data g
INNER JOIN ga4_conversiones c ON g.url = c.url_normalizada
WHERE
c.conversiones > 0
ORDER BY
c.conversiones DESC
LIMIT 50
Explicación paso a paso
- 3 El CTE gsc_data obtiene keywords y URLs con sus métricas de GSC.
- 21 El CTE ga4_conversiones cuenta conversiones por URL desde GA4, filtrando tráfico orgánico.
- 24 REGEXP_EXTRACT normaliza page_location eliminando parámetros de query string y fragmentos para que coincida con las URLs de GSC.
- 35 Reemplazar los nombres de eventos por los eventos clave configurados en el sitio.
- 46 Calcula la tasa de conversión dividiendo conversiones GA4 entre clics GSC por keyword.
- 49 INNER JOIN cruza solo URLs que existen en ambas fuentes.
Ejemplo de resultado esperado
| keyword | url | clics_gsc | impresiones | posicion_media | conversiones | tasa_conversion |
|---|---|---|---|---|---|---|
| herramienta seo gratis | https://ejemplo.com/herramientas | 876 | 12345 | 3.20 | 45 | 5.14 |
| consultas sql para analytics | https://ejemplo.com/guia-sql | 432 | 6789 | 4.10 | 23 | 5.32 |
| bigquery ga4 tutorial | https://ejemplo.com/tutorial | 234 | 4567 | 5.50 | 12 | 5.13 |
Variaciones y adaptaciones
Reemplazar los eventos de conversión en el CTE ga4_conversiones según los eventos clave del sitio. Para ver keywords que llevan tráfico pero no convierten, cambiar INNER JOIN por LEFT JOIN y filtrar WHERE c.conversiones IS NULL. Para ponderar por valor monetario, añadir SUM(event_value) en el CTE de GA4.
Queries relacionadas
Keywords que llevan tráfico a URLs sin conversión
Cruce GA4 + GSC
Avanzado
Top URLs por conversión cruzando GSC + GA4
Cruce GA4 + GSC
Avanzado
Comparativa de posiciones GSC con tasa de conversión GA4
Cruce GA4 + GSC
Avanzado
URLs con mucho tráfico orgánico pero pocas impresiones
Cruce GA4 + GSC
Avanzado