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-conversion-cruce.sql
-- 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

urlclics_gscimpresionesctrposicion_mediasesiones_ga4conversionestasa_conversion
https://ejemplo.com/herramientas2345345676.794.202187873.71
https://ejemplo.com/precios876123457.103.80823455.14
https://ejemplo.com/guia-sql65498766.625.10612233.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.