Valor por keyword combinando clics GSC y revenue GA4

Asigna un valor monetario a cada keyword cruzando los clics de GSC con el revenue registrado en GA4 para la misma URL. Permite priorizar esfuerzos SEO según el retorno económico real.

valor-por-keyword.sql
-- Valor monetario por keyword: cruce de clics GSC con revenue GA4
-- Requiere que GA4 registre event_value o un parámetro de revenue
WITH gsc_keywords AS (
  SELECT
    query AS keyword,
    url,
    SUM(clicks) AS clics_gsc,
    SUM(impressions) AS impresiones
  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_revenue AS (
  SELECT
    REGEXP_EXTRACT(
      (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location'),
      r'(https?://[^?#]+)'
    ) AS url_normalizada,
    COUNT(*) AS conversiones,
    SUM(
      IFNULL(
        (SELECT value.double_value FROM UNNEST(event_params) WHERE key = 'value'),
        0
      )
    ) AS revenue_total
  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 ('purchase', 'in_app_purchase')
  GROUP BY
    url_normalizada
  HAVING
    revenue_total > 0
)
SELECT
  g.keyword,
  g.url,
  g.clics_gsc,
  g.impresiones,
  r.conversiones,
  ROUND(r.revenue_total, 2) AS revenue,
  ROUND(SAFE_DIVIDE(r.revenue_total, g.clics_gsc), 2) AS valor_por_clic,
  ROUND(SAFE_DIVIDE(r.revenue_total, r.conversiones), 2) AS valor_por_conversion
FROM
  gsc_keywords g
  INNER JOIN ga4_revenue r ON g.url = r.url_normalizada
ORDER BY
  revenue DESC
LIMIT 50

Explicación paso a paso

  • 3 El CTE gsc_keywords obtiene keywords con sus URLs y métricas de clics desde GSC.
  • 20 El CTE ga4_revenue suma el revenue de eventos de compra en sesiones orgánicas por URL.
  • 28 Extrae el valor monetario del parámetro 'value' del evento. Ajustar el nombre del parámetro según la implementación.
  • 51 Calcula el valor por clic dividiendo el revenue total entre los clics de GSC.
  • 52 Calcula el valor por conversión para entender el ticket medio por keyword.
  • 55 INNER JOIN conecta solo URLs con datos en ambas fuentes.

Ejemplo de resultado esperado

keywordurlclics_gscimpresionesconversionesrevenuevalor_por_clicvalor_por_conversion
comprar herramienta seohttps://ejemplo.com/precios2344567232345.0010.02101.96
plan premium analyticshttps://ejemplo.com/planes1873456121456.007.79121.33

Variaciones y adaptaciones

Si el sitio no registra revenue, reemplazar por un valor de conversión estimado y multiplicar por conversiones. Para usar ecommerce_purchase en lugar de event_value, ajustar el parámetro de revenue. Para calcular el ROI potencial de mejorar posiciones, estimar clics adicionales con CTR benchmarks.