Eventos personalizados disparados en sesiones orgánicas

Lista todos los eventos personalizados (excluyendo los automáticos de GA4) disparados durante sesiones orgánicas. Permite entender cómo interactúan los usuarios orgánicos con elementos específicos del sitio.

eventos-personalizados-organico.sql
-- Eventos personalizados en sesiones orgánicas
-- Excluye eventos automáticos y de enhanced measurement de GA4
SELECT
  event_name AS evento,
  COUNT(*) AS total_disparos,
  COUNT(DISTINCT user_pseudo_id) AS usuarios_unicos,
  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'
  -- Excluir eventos estándar de GA4
  AND event_name NOT IN (
    'session_start', 'first_visit', 'page_view',
    'scroll', 'click', 'view_search_results',
    'file_download', 'video_start', 'video_progress',
    'video_complete', 'user_engagement'
  )
GROUP BY
  evento
ORDER BY
  total_disparos DESC
LIMIT 30

Explicación paso a paso

  • 4 Muestra el nombre del evento personalizado.
  • 5 Cuenta el número total de veces que se disparó el evento.
  • 6 Cuenta usuarios únicos para entender el alcance del evento.
  • 22 La lista NOT IN excluye los eventos automáticos y de enhanced measurement que GA4 registra por defecto.
  • 30 Ordena por frecuencia para identificar los eventos personalizados más usados.

Ejemplo de resultado esperado

eventototal_disparosusuarios_unicossesiones
cta_click234118762012
form_submit456423445
download_pdf312287298
share_article189165178

Variaciones y adaptaciones

Para ver los parámetros de un evento específico, añadir UNNEST(event_params) y filtrar WHERE event_name = 'cta_click'. Para ver la evolución diaria de un evento, añadir PARSE_DATE('%Y%m%d', event_date) AS fecha y agrupar por fecha. Para ver en qué páginas se dispara más cada evento, añadir page_location al SELECT y GROUP BY.