Sobre míProyectosBlogMi SetupContacto
Tag ManagementGoogle Tag ManagerServer SideAnalytics

Cómo medir el tráfico de LLMs en GA4 con Cloudflare y GTM Server-Side

Si ya tienes GTM Server-Side y te interesa saber si tu web está siendo usada en los razonamientos propios de los LLM no te pierdas este post.

12 de septiembre de 2026·10 min de lectura
Compartir
Cómo medir el tráfico de LLMs en GA4 con Cloudflare y GTM Server-Side

Los modelos de IA ya no son solo una fuente de tráfico de referencia. Cada vez más organizaciones necesitan responder preguntas como:

El problema es que Google Analytics no está diseñado para medir este tipo de interacciones de manera nativa.

En este artículo veremos cómo construir una solución para detectar agentes LLM en Cloudflare, enviarlos a Server-side GTM y analizarlos posteriormente en GA4.

El problema

Cuando un usuario visita una web desde el navegador, GA4 recibe información mediante JavaScript.

El flujo habitual sería:

Usuario
↓
Navegador
↓
gtag.js / GTM
↓
GA4

Sin embargo, cuando accede un agente de IA ocurre algo diferente:

ChatGPT
Claude
Gemini
Perplexity
↓
HTTP Request
↓
Servidor

No existe navegación real ni ejecución de JavaScript.

Por tanto:

y la visita desaparece de la analítica tradicional.

Arquitectura propuesta, la de nuestra web

Para resolverlo hemos utilizado:

Astro
+
Cloudflare Pages Functions
+
Server-side GTM
+
GA4

El flujo resultante es:

LLM
↓
Cloudflare Function
↓
Clasificación del agente
↓
Server-side GTM
↓
GA4

Detectando agentes IA

La primera capa consiste en analizar el User-Agent de cada petición.

Por ejemplo:

{
  regex: /ChatGPT-User/i,
  provider: "OpenAI",
  type: "reasoning"
}

o:

{
  regex: /ClaudeBot/i,
  provider: "Anthropic",
  type: "training"
}

Esto permite diferenciar:

OpenAI
Anthropic
Google
Perplexity
Microsoft
...

e incluso clasificar el propósito del acceso:

reasoning
retrieval
training
search
...

Clasificando el contenido

Además del agente, es importante clasificar las URLs.

Por ejemplo:

function getPageType(path) {

  if (path.startsWith("/blog/")) {
    return "blog";
  }

  if (path.startsWith("/servicios/")) {
    return "service";
  }

  return "other";
}

De esta forma podemos responder preguntas como:

¿Qué contenido se consume más en mi sitio web por los LLM? ¿Documentación o artículos? ¿Qué temas interesan más a Claude, ChatGPT, Gemini,…? ¿Están usando mi site para entrenarse o es usado dentro de razonamientos a preguntas de usuario?

Y así un sin fin de preguntas que pueden venirnos a la cabeza cuando estamos leyendo esto.

Primera versión: Measurement Protocol (sin GTM server side)

Para validar rápidamente la solución utilizamos inicialmente Measurement Protocol.

El payload enviado tenía un formato parecido a este:

{
  "client_id": "OpenAI-ChatGPT-User",
  "events": [
    {
      "name": "llm_request_MP",
      "params": {
        "llm_provider": "OpenAI",
        "llm_agent": "ChatGPT-User",
        "llm_agent_type": "reasoning",
        "page_type": "blog"
      }
    }
  ]
}

El flujo quedaba así:

Cloudflare Function
↓
Measurement Protocol
↓
GA4

Esta opción permitió validar rápidamente:

Integrando GTM Server Side en el camino

Si estas leyendo esto, imagino que sabes que desde ssGTM ya nos ofrece una serie de clientes por defecto y en concreto uno de Measurement Protocol:

Clientes por defecto de ssGTM
Los clientes que nos ofrece GTM server side

Pues bien, lo que hicimos como segundo paso es meter a GTM Server Side en medio, para que desde él se intercepte la petición y se envíe a Measurement Protocol desde aquí. Esto nos permitió ver que nuestro GTM Server Side estaba bien instalado, recordad el post y realizar el envío a Google ya desde aquí, haciéndonos más ágil el trabajo a la hora de mapear, transformar,…

En este paso el payload enviado tenía un formato parecido al anterior, ya que ahora interceptábamos esta información y se la pasábamos al cliente en cuestión:

{
  "client_id": "OpenAI-ChatGPT-User",
  "events": [
    {
      "name": "llm_request",
      "params": {
        "llm_provider": "OpenAI",
        "llm_agent": "ChatGPT-User",
        "llm_agent_type": "reasoning",
        "page_type": "blog"
      }
    }
  ]
}

El flujo pasaba a tener un punto más:

Cloudflare Function
↓
Server-side GTM
↓
Measurement Protocol
↓
GA4

Evolucionando hacia un endpoint propio

Una vez validado el flujo, decidimos evolucionar la arquitectura hacia un endpoint personalizado:

POST /llm

Y que este fuera gestionado por un cliente específico (personalizado) dentro de GTM Server Side.

Cliente personalizado dentro de ssGTM
En ssGTM se pueden crear clientes personalizados

El payload pasó a ser mucho más sencillo, ya no necesitábamos una estructura tan especifica:

{
  "event_name": "llm_request",
  "llm_provider": "OpenAI",
  "llm_agent": "ChatGPT-User",
  "llm_agent_type": "reasoning",
  "page_path": "/blog/google-tag-gateway/",
  "page_type": "blog"
}

Y ahora vienen algunas preguntas que también nos hicimos nosotros…

¿Por qué utilizar un cliente personalizado?

Measurement Protocol funciona correctamente, pero presenta algunas limitaciones, sobre todo el anclaje a la estructura que nos da google y también cuando queremos gestionar eventos propios todo se vuelve más complejo.

Con un cliente personalizado conseguimos:

La nueva arquitectura queda así:

Cloudflare Function
↓
POST /llm
↓
LLM Client (SGTM)
↓
Evento llm_request
↓
GA4

¿Qué información merece la pena almacenar?

Más allá del proveedor de IA, nosotros llegamos a la conclusión de que es suficiente almacenar dimensiones que permitan contextualizar el acceso y estas son las que a nosotros nos ayudaron a entender este tráfico:

llm_provider
llm_agent
llm_agent_type
page_path
page_type
country
colo

Si trabajamos con Cloudflare, además podemos aprovechar información adicional que nos da su módulo de IA Crawler como:

bot_score
verified_bot
asn
asOrganization

Esto permite diferenciar entre pruebas internas, rastreadores genéricos y accesos potencialmente asociados a infraestructuras reales de OpenAI, Google, Anthropic o Microsoft.

Y ahora… ¿Qué análisis podemos construir?

Una vez los datos llegan a GA4 aparecen nuevas posibilidades de análisis.

Proveedores más activos

OpenAI Anthropic Google Perplexity Microsoft …

Tipos de uso de nuestra web

reasoning retrieval training search …

Contenido más consumido por este tráfico

/blog/google-tag-gateway /blog/gtm-server-side /blog/exploraciones-ga4 …

Distribución por categorías de los post

ANALYTICS TAG MANAGMENT FÚTBOL MÉTRICAS …

Consumo por agrupaciones de contenido

blog service guide documentation …

Pruebas con modelos reales

Uno de los descubrimientos más interesantes durante el desarrollo fue comprobar que no todos los modelos acceden a una web de la misma manera.

Mientras algunas plataformas realizan consultas directas a las URLs proporcionadas, otras pueden responder utilizando información previamente indexada o almacenada en caché.

Esto significa que la ausencia de tráfico no siempre implica ausencia de uso del contenido.

Precisamente por eso resulta tan interesante disponer de una capa propia de observabilidad sobre las interacciones de los modelos con nuestros activos digitales.

Conclusiones

La irrupción de los LLM obliga a replantear los modelos tradicionales de medición digital.

Una parte creciente del consumo de contenido ya no genera sesiones, usuarios o eventos web convencionales.

Detectar este tráfico a nivel de infraestructura permite empezar a responder preguntas estratégicas como:

La combinación de un CDN como Cloudflare, Server-side GTM y GA4 ofrece una solución relativamente sencilla para construir una primera capa de medición sobre el consumo de contenidos por parte de modelos generativos.

Y probablemente sea solo el comienzo de una nueva disciplina analítica orientada a entender cómo las inteligencias artificiales descubren, interpretan y utilizan la información publicada en la web.


¿Tienes dudas sobre algún paso del proceso o manejas otro tipo arquitectura de solución? Escríbeme.

También te puede interesar

Errores comunes en implementaciones de GTM que he visto repetirse
Tag ManagementGoogle Tag Manager

Errores comunes en implementaciones de GTM que he visto repetirse

17 de octubre de 2026
GA4: parámetros de campaña y guía de etiquetado UTM
AnalyticsGA4

GA4: parámetros de campaña y guía de etiquetado UTM

19 de septiembre de 2026
Cómo instalar GTM Server Side partiendo de client-side y Google Tag Gateway
Tag ManagementGoogle Tag Manager

Cómo instalar GTM Server Side partiendo de client-side y Google Tag Gateway

22 de agosto de 2026