Top URLs por conversión cruzando GSC + GA4
Clasifica las URLs por su capacidad de convertir tráfico orgánico, combinando datos de visibilidad de GSC con conversiones de GA4. Permite identificar las páginas más rentables del sitio.
-- Top URLs por conversión: métricas GSC + conversiones GA4
WITH gsc_urls AS (
SELECT
url,
SUM(clicks) AS clics_gsc,
SUM(impressions) AS impresiones,
ROUND(SAFE_DIVIDE(SUM(clicks), SUM(impressions)) * 100, 2) AS ctr,
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'
GROUP BY
url
HAVING
clics_gsc >= 10
),
ga4_conv AS (
SELECT
REGEXP_EXTRACT(
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location'),
r'(https?://[^?#]+)'
) AS url_normalizada,
COUNT(
DISTINCT CONCAT(
user_pseudo_id, '.',
CAST(
(SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')
AS STRING)
)
) AS sesiones_organicas,
COUNTIF(
event_name IN ('generate_lead', 'purchase', 'sign_up')
) 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'
GROUP BY
url_normalizada
)
SELECT
g.url,
g.clics_gsc,
g.impresiones,
g.ctr,
g.posicion_media,
IFNULL(c.sesiones_organicas, 0) AS sesiones_ga4,
IFNULL(c.conversiones, 0) AS conversiones,
ROUND(SAFE_DIVIDE(IFNULL(c.conversiones, 0), g.clics_gsc) * 100, 2) AS tasa_conversion
FROM
gsc_urls g
LEFT JOIN ga4_conv c ON g.url = c.url_normalizada
ORDER BY
conversiones DESC
LIMIT 50
Explicación paso a paso
- 2 El CTE gsc_urls obtiene métricas de visibilidad de cada URL en Google Search.
- 19 El CTE ga4_conv cuenta sesiones orgánicas y conversiones por URL desde GA4.
- 21 Normaliza page_location para matching con URLs de GSC eliminando parámetros.
- 33 COUNTIF cuenta solo los eventos de conversión dentro de todas las filas de cada URL.
- 52 Calcula la tasa de conversión dividiendo conversiones GA4 entre clics GSC.
- 55 LEFT JOIN para incluir todas las URLs de GSC aunque no tengan conversiones en GA4.
Ejemplo de resultado esperado
| url | clics_gsc | impresiones | ctr | posicion_media | sesiones_ga4 | conversiones | tasa_conversion |
|---|---|---|---|---|---|---|---|
| https://ejemplo.com/herramientas | 2345 | 34567 | 6.79 | 4.20 | 2187 | 87 | 3.71 |
| https://ejemplo.com/precios | 876 | 12345 | 7.10 | 3.80 | 823 | 45 | 5.14 |
| https://ejemplo.com/guia-sql | 654 | 9876 | 6.62 | 5.10 | 612 | 23 | 3.52 |
Variaciones y adaptaciones
Reemplazar los nombres de eventos de conversión según la configuración del sitio. Para ver solo URLs sin conversiones (oportunidades), filtrar WHERE conversiones = 0 AND clics_gsc >= 50. Para añadir la keyword principal de cada URL, incluir un CTE adicional con la keyword de mayor clics por URL.
Queries relacionadas
Comparativa de posiciones GSC con tasa de conversión GA4
Cruce GA4 + GSC
Avanzado
Eventos clave (conversiones) atribuidos a orgánico
GA4 en BigQuery
Intermedio
URLs con mucho tráfico orgánico pero pocas impresiones
Cruce GA4 + GSC
Avanzado
Valor por keyword combinando clics GSC y revenue GA4
Cruce GA4 + GSC
Avanzado