Search terms internos usados por visitantes orgánicos

Extrae los términos que los usuarios orgánicos buscan dentro del sitio. Revela intenciones de búsqueda no cubiertas por el contenido existente y oportunidades para crear nuevas páginas.

busqueda-interna-organico.sql
-- Términos de búsqueda interna usados por visitantes orgánicos
-- Usa el evento view_search_results de GA4 enhanced measurement
SELECT
  (SELECT value.string_value FROM UNNEST(event_params)
    WHERE key = 'search_term') AS termino_busqueda,
  COUNT(*) AS busquedas,
  COUNT(DISTINCT user_pseudo_id) AS usuarios,
  COUNT(
    DISTINCT CONCAT(
      user_pseudo_id, '.',
      CAST(
        (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')
      AS STRING)
    )
  ) AS sesiones
FROM
  `your-project.analytics_XXXXXXXXX.events_*`
WHERE
  _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY))
    AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())
  AND traffic_source.medium = 'organic'
  AND event_name = 'view_search_results'
GROUP BY
  termino_busqueda
HAVING
  termino_busqueda IS NOT NULL
  AND busquedas >= 3
ORDER BY
  busquedas DESC
LIMIT 50

Explicación paso a paso

  • 4 Extrae el parámetro search_term del evento, que contiene el texto que el usuario escribió en el buscador del sitio.
  • 6 Cuenta cuántas veces se buscó cada término (un usuario puede buscar lo mismo varias veces).
  • 7 Cuenta usuarios únicos para ponderar la demanda real del término.
  • 22 Filtra por view_search_results, el evento que GA4 dispara cuando el usuario ve resultados de búsqueda interna.
  • 26 Excluye valores nulos y términos con menos de 3 búsquedas para filtrar ruido.

Ejemplo de resultado esperado

termino_busquedabusquedasusuariossesiones
bigquery tutorial877682
seo audit544851
keyword research tool433941
analytics dashboard312830

Variaciones y adaptaciones

Para normalizar los términos (lowercase y sin espacios extra), envolver con LOWER(TRIM(search_term)). Para agrupar búsquedas similares, usar APPROX_TOP_COUNT o aplicar funciones de texto para normalización. Para ver qué página generó la búsqueda, añadir page_location al SELECT y GROUP BY.