Los parámetros UTM y gclid desaparecían tras nuestra redirección 301

Captura de pantalla: cabecera del artículo de SHIFT64 sobre eliminar parámetros UTM en Cloudflare, con la corrección del 7 de octubre de 2026

Los parámetros UTM y gclid desaparecían tras nuestra redirección 301

Última verificación: 11 de octubre de 2026
12 min de lectura
Caso de estudio
SEO técnico

Durante siete meses, quien llegaba a wppoland.com desde un enlace de campaña era redirigido con un 301 a la misma URL sin los parámetros de seguimiento. Del 7 de marzo de 2026 al 10 de octubre de 2026 nuestro middleware en Cloudflare Pages trataba utm_*, gclid, fbclid y msclkid como parámetros de contenido duplicado y los recortaba antes de que el navegador ejecutara un solo script. La analítica no veía las campañas y Google Ads perdía el gclid durante todo ese tiempo. El formulario de contacto empezó a guardar el origen del lead el 13 de julio, y desde ese día hasta la corrección recibió esos campos vacíos en cada entrada de campaña.

No sabemos a cuántos leads afectó. No tenemos una medición que permita calcularlo, así que no damos ninguna cifra. Sí sabemos que los datos de campaña de ese periodo están incompletos y no sirven para sacar conclusiones sobre canales.

#Por qué desaparecen los parámetros UTM después de una redirección

Una redirección 301 es una respuesta del servidor con una cabecera Location. El navegador no le añade nada por su cuenta: va exactamente a la dirección que construyó el servidor. Si la regla que construye esa dirección omite la query string o una parte de ella, los parámetros de campaña dejan de existir antes de que cargue la página.

Esto importa porque casi toda la atribución ocurre en el navegador. El script de analítica lee utm_source de location.href. Un formulario que guarda el origen del lead en campos ocultos los rellena con JavaScript a partir de location.search. El etiquetado automático de Google Ads añade gclid a la URL de destino y espera que ese identificador llegue a la página. Cada uno de estos mecanismos ve solo la dirección en la que el navegador acabó.

De ahí una regla sencilla: cada redirección en el camino entre el anuncio y la página es un punto donde la atribución puede perderse. No solo las redirecciones escritas a mano. También las de normalización del host, de la barra final, de slugs antiguos y de deduplicación de parámetros.

#Cómo comprobar si una redirección elimina gclid

La prueba ocupa una línea. Un valor único del parámetro evita la caché, así que la respuesta sale de la lógica actual:

curl -sI "https://wppoland.com/pl/?utm_source=t$(date +%s)"

Tras la corrección devuelve HTTP/2 200, y lo mismo ocurre con ?gclid=. Como control, un parámetro que sí debe seguir redirigiéndose:

curl -sI "https://wppoland.com/pl/?lang=en"

Este devuelve 301. Volvimos a comprobar los tres resultados en producción el 11 de octubre de 2026.

En tu propio sitio cambia el dominio y el parámetro. Comprueba utm_source, gclid, fbclid y msclkid por separado, porque las reglas a menudo los tratan de forma distinta. Si recibes un 301 o un 302, lee la cabecera Location: el parámetro tiene que estar ahí. Después repite la prueba con URL que redirigen por otro motivo: sin barra final, en el otro host (con www y sin él), con un slug antiguo. Una página que responde 200 puede pasar la prueba mientras la redirección de al lado pierde los parámetros igualmente.

#Cómo el middleware de Cloudflare Pages eliminaba gclid y utm_source

Un commit del 7 de marzo de 2026, descrito como una mejora del manejo de URL en el middleware y las cabeceras, añadió a functions/_middleware.ts una lista de parámetros considerados de contenido duplicado. La función hasDuplicateContentQuery comprobaba si la URL contenía alguno. Si era así, filteredQueryString construía la query string sin esos parámetros y el middleware devolvía un 301 al resultado.

En la lista había parámetros que de verdad generan variantes innecesarias, como lang, amp, nonamp y s. También estaban utm_source, utm_medium, utm_campaign, utm_content, utm_term, gclid, fbclid y msclkid. El objetivo sonaba razonable: una URL por página. El resultado fue que el enlace /es/?utm_source=newsletter terminaba en /es/ antes de que ningún código del navegador viera la palabra “newsletter”.

El middleware de Pages Functions se ejecuta antes que el resto del enrutado, en cada petición. Eso lo convierte en un lugar cómodo para normalizar URL, y en un lugar igual de cómodo para un error que toca cada visita procedente de una campaña.

#Por qué los campos ocultos UTM del formulario llegan vacíos

Nuestro formulario de contacto tiene desde el 13 de julio de 2026 los campos ocultos utm_source, utm_medium, utm_campaign y utm_term. Antes de esa fecha no registraba el origen del lead de ninguna forma, así que de marzo a julio el formulario no tenía nada que perder. JavaScript rellena los campos desde location.search al cargar la página. Después de la redirección location.search estaba vacío, y los campos también, en cada entrada desde un enlace de campaña entre el 13 de julio y el 10 de octubre.

Las consecuencias se reparten en tres sitios:

  • Formulario. Desde el 13 de julio el lead llegaba al buzón sin información sobre su origen. Una entrada desde un enlace del boletín y una entrada sin ninguna etiqueta parecían idénticas.
  • Analítica. Durante los siete meses la herramienta de analítica no recibió los parámetros de campaña, así que el tráfico de enlaces etiquetados con UTM acababa en canales genéricos o como tráfico directo.
  • Google Ads. El etiquetado automático añade gclid y nuestro 301 lo recortaba. Sin gclid en la página de destino, Google Ads no tiene con qué vincular el clic a una conversión posterior.

Ninguno de estos síntomas parece un error de redirección. Parece una campaña que no funciona, o un canal que no aporta nada.

#Redirección 301 de parámetros UTM y contenido duplicado

La redirección no protegía de nada. Cada página de wppoland.com declara un canonical sin parámetros, y así fue desde el primer día del error, de modo que Google ya sabía cuál era la URL correcta. Del 7 de marzo al 11 de abril esa fue la única capa. El 12 de abril de 2026 se sumó una segunda: el archivo public/_headers empezó a enviar esta cabecera:

No-Vary-Search: key-order, params=("utm_source" "utm_medium" "utm_campaign" "utm_content" "utm_term" "ref" "fbclid" "gclid" "msclkid")

No-Vary-Search le indica al navegador que esos parámetros no cambian la respuesta, de modo que la versión con ellos y sin ellos puede usar la misma entrada de caché. Primero el canonical solo, después el canonical junto con No-Vary-Search: en ambos tramos el contenido duplicado estaba resuelto sin tocar la URL de la barra de direcciones. La redirección no añadía protección y se llevaba la atribución.

La corrección del 10 de octubre de 2026 deja pasar los parámetros de seguimiento sin redirección. lang, amp, nonamp y s siguen recibiendo un 301, porque son los que crean variantes reales. En el código quedó este comentario:

// Tracking params (utm_*, gclid, fbclid, msclkid) pass through: the page
// canonical is already clean, and stripping them killed lead attribution.

#Cómo eliminar parámetros UTM en Cloudflare sin perder gclid

SHIFT64 describió el mismo síntoma por otro camino. Su artículo sobre eliminar parámetros de seguimiento en Cloudflare se publicó el 31 de agosto de 2026 y recibió una corrección el 7 de octubre de 2026. La versión original recomendaba una Transform Rule que reescribía la URL en el edge (sin redirección), para que la caché viera una sola URL por página. El navegador conservaba la dirección completa, así que la atribución debía sobrevivir.

Solo sobrevivía cuando el servidor respondía con un 200. Cuando el servidor respondía con una redirección (del dominio sin www al de www, por la barra final que faltaba, por la redirección canónica de WordPress), construía la nueva dirección a partir de lo que había recibido, es decir, de la URL ya recortada. El navegador seguía la redirección y gclid, fbclid y gad_source desaparecían de la barra de direcciones. El autor lo reconoce sin rodeos:

“Llegué a esa afirmación razonando, en lugar de comprobarla con redirecciones reales.”

Mateusz Zadorożny, SHIFT64, Strip UTM Parameters at Cloudflare Without Losing Attribution (Corrected), corrección del 7 de octubre de 2026, traducción propia

La corrección incluye dos detalles más. regex_replace() en Cloudflare sustituye solo la primera coincidencia, así que los parámetros de seguimiento no contiguos se eliminaban solo en parte. Y la dirección ?fbclid=x&color=red llegaba al servidor como ?&color=red, a lo que WordPress respondía con un 301. Según SHIFT64, en una tienda con Google Ads el error se vio en los registros como 21 entradas de pago en unas tres semanas, sin contar las entradas por un host no canónico, que esos registros no permiten contar. La regla se sustituyó por un Worker que vuelve a añadir los parámetros eliminados a las redirecciones dentro del mismo sitio. SHIFT64 también aconseja, si el plugin Super Page Cache creó una regla [DO NOT EDIT] con la misma expresión regular, desactivar en el plugin la opción de eliminar parámetros de seguimiento. Ese plugin no lo hemos comprobado nosotros.

Las fechas son estas: corrección de SHIFT64 el 7 de octubre, nuestra corrección el 10 de octubre. La diferencia está en el mecanismo. SHIFT64 perdió los parámetros por una redirección del servidor que llegó después de reescribir la URL en el edge. Nosotros los perdimos por una redirección de deduplicación propia y deliberada.

#Por qué el tráfico de chatbots de IA aparece como directo en GA4

El 1 de octubre de 2026 Roger Montti contó en Search Engine Journal que Gemini parece añadir parámetros UTM a algunos enlaces hacia sitios web. La fuente es un usuario de Reddit que lo había notado apenas un día antes. Google no lo ha documentado, y no se sabe qué parámetros ni qué valores usa, en qué enlaces aparecen ni en qué condiciones. John Mueller solo respondió que pasaría el aviso al equipo, lo que no es una confirmación. El mismo artículo recuerda por qué importa: el tráfico desde chatbots de IA puede aparecer en GA4 como “direct”, el canal al que va una visita cuando no trae referrer ni datos UTM.

El mismo día DemandSphere (Ray Grieselhuber) publicó la cuota de palabras clave de marca que devuelven un AI Overview en su seguimiento: 26,12 % el 1 de septiembre, 82,06 % el 29 de septiembre (último dato) y un máximo de 90,48 % el 27 de septiembre. Los límites del método pesan: los datos salen de su propia plataforma (DemandMetrics), mezclan todos los mercados y dispositivos, el tamaño de la muestra no se publica y el AI Overview cuenta tanto si cita la marca como si no. Google no anunció ningún cambio.

Lo que sigue es nuestra inferencia, no una medición. Si los asistentes de IA empiezan a etiquetar sus enlaces, esas etiquetas llegan en la misma query string que nuestro middleware recortaba. Una redirección que elimina utm_* las elimina también, y la visita acaba en “direct”. Y si cada vez más clics de marca pasan antes por un AI Overview, los clics que todavía llegan etiquetados valen más. No tenemos ningún dato de que tráfico de Gemini llegara a wppoland.com ni de que lo perdiéramos. En nuestro caso hay un motivo más para cuidar la query string: nuestro propio seguimiento de eventos no recoge el referrer, y la atribución de búsqueda la sacamos de Google Search Console.

#Qué reglas de redirección eliminan los parámetros UTM

La conclusión no se limita a Cloudflare Pages. Cualquier regla que “ordena” la query string y responde con una redirección tiene el mismo perfil de riesgo:

  • middleware en Pages Functions o en un Worker,
  • reglas de Cloudflare: Transform Rules, Redirect Rules, Page Rules,
  • rewrite y return 301 en la configuración de nginx,
  • plugins de redirección de WordPress que normalizan URL o eliminan parámetros “sobrantes”,
  • las redirecciones canónicas del propio WordPress, cuando algo recortó la URL antes.

La regla que adoptamos: la deduplicación de parámetros deja en paz los parámetros de seguimiento. Del contenido duplicado se encarga el canonical, y de la caché se encarga No-Vary-Search o una clave de caché sin esos parámetros. Para eso no hace falta una redirección. Y el segundo consejo, el que SHIFT64 sacó de su propia corrección: prueba las redirecciones, no solo las páginas.

Si tu sitio está detrás de Cloudflare y quieres que alguien revise las reglas del edge con este criterio, eso forma parte de nuestro servicio de Cloudflare edge.

#Qué hacer con los datos de origen de leads de ese periodo

Los datos de campaña de la analítica entre el 7 de marzo y el 10 de octubre de 2026 están incompletos, y los del formulario de contacto entre el 13 de julio y el 10 de octubre. Antes del 13 de julio el formulario no guardaba ningún origen, así que esa parte no se puede reconstruir desde él. Eso no significa que todos los datos sean erróneos: las entradas sin parámetros de campaña, por ejemplo desde los resultados de búsqueda, no pasaban por esa redirección. Significa que todo lo que llegó desde enlaces etiquetados se atribuyó a otro sitio o a ninguno.

En la práctica:

  • no comparamos el rendimiento de los canales que dependen de UTM en ese periodo con el periodo posterior al 10 de octubre,
  • no desactivamos campañas basándonos en una atribución nula de esos meses,
  • los primeros datos fiables de origen de leads empiezan el 10 de octubre de 2026.

La capa de enrutado de este sitio ya había roto algo en silencio antes, mientras todo lo demás parecía sano: Cloudflare Pages descartaba las reglas de _redirects por encima de 100KB. El contexto más amplio de esta arquitectura está en el resumen de doce meses migrando de WordPress a Astro. Las reglas para un canonical limpio con enlaces que llevan parámetros están en la guía técnica de SEO para afiliados.

Siguiente paso

Transforma el artículo en una implementación real

Este bloque refuerza el enlazado interno y lleva al lector al siguiente paso más útil dentro de la arquitectura del sitio.

¿Quieres implementar esto en tu sitio?

Si la visibilidad en Google y en sistemas de IA importa, puedo estructurar contenido, FAQ, schema y enlazado interno para SEO, GEO y AEO.

Cluster relacionado

Explora otros servicios WordPress y base de conocimiento

Refuerza tu negocio con soporte técnico profesional en áreas clave del ecosistema WordPress.

¿Por qué desaparecen los parámetros UTM después de una redirección?#
Una redirección 301 envía al navegador a una URL nueva construida por el servidor. Si la regla que la construye omite la query string o una parte de ella, el navegador llega a una dirección sin utm_source, utm_medium, utm_campaign ni gclid. Los scripts de analítica y los campos ocultos del formulario se ejecutan solo en la página de destino, así que leen un location.search ya vacío.
¿Cómo comprobar si una redirección elimina gclid o utm_source?#
Pide la página con un parámetro único y lee las cabeceras, por ejemplo curl -sI "https://tu-dominio/?utm_source=t$(date +%s)". Una respuesta 200 significa que el parámetro pasa. Una respuesta 301 o 302 con una cabecera Location sin ese parámetro significa que la redirección lo pierde. Prueba también las URL que redirigen de todos modos: sin barra final, con otro host o con un slug antiguo.
¿Los parámetros UTM en la URL generan contenido duplicado en Google?#
No, si la página declara un canonical limpio sin parámetros. Así era en wppoland.com desde el primer día del error. Desde el 12 de abril de 2026 el archivo public/_headers envía además la cabecera No-Vary-Search con la lista de parámetros de seguimiento; antes de esa fecha el canonical era la única protección. La redirección 301 no añadía ninguna protección y destruía la atribución.
¿Cuántos leads perdimos por esa redirección?#
No lo sabemos y no lo estimamos. No existe una medición que permita calcularlo. La analítica y el gclid de Google Ads están incompletos del 7 de marzo al 10 de octubre de 2026. El formulario de contacto solo registra el origen del lead desde el 13 de julio de 2026, así que en su caso los datos perdidos van del 13 de julio al 10 de octubre; antes no guardaba ningún origen.
¿Por qué el tráfico de chatbots de IA aparece como directo?#
GA4 clasifica una visita como directa cuando no trae ni referrer ni datos UTM, y según Search Engine Journal ahí suele acabar el tráfico de los chatbots de IA. El mismo medio informó el 1 de octubre de 2026 de que Gemini parece añadir parámetros UTM a algunos enlaces, algo que Google no ha documentado. Esas etiquetas solo sirven si ninguna redirección de tu sitio las elimina.

¿Necesitas un FAQ adaptado a tu sector y mercado? Preparamos una versión alineada con tus objetivos de negocio.

Hablemos

Artículos Relacionados