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 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
| keyword | url | clics_gsc | impresiones | conversiones | revenue | valor_por_clic | valor_por_conversion |
|---|---|---|---|---|---|---|---|
| comprar herramienta seo | https://ejemplo.com/precios | 234 | 4567 | 23 | 2345.00 | 10.02 | 101.96 |
| plan premium analytics | https://ejemplo.com/planes | 187 | 3456 | 12 | 1456.00 | 7.79 | 121.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.
Queries relacionadas
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
Análisis de páginas zombi: sin clics ni conversiones
Cruce GA4 + GSC
Avanzado
Atribución multicanal con orgánico como primer touch
GA4 en BigQuery
Avanzado