Blog, sitio web y publicación de páginas

Patricia_AS
Member

No perder UTM's en los elementos de una landing

SOLVE

Hola, 

 

Tenemos unas landings específicas hechas en Hubspot que se usan para campañas de Paid. Éstas, tienen el tracking añadido en la plataforma de Google Ads, por lo que cuando llegan los leads a través de las landings, mediante ese tracking, Hubspot las identifica como que vienen de búsqueda de pago. 

 

Sin embargo, hemos detectado que cuando un usuario hace clic en los diferentes elementos de la landing que están anclados (logo, otros botones, etc), antes de rellenar el formulario y enviar la información, la página se recarga y los utm's se pierden. Por lo que cuando ese usuario finalmente se registra, entra en el sistema como tráfico directo y no como búsqueda de pago. 

 

¿Sabéis cómo podemos configurarlo para que esos utm's no se pierdan al clicar en otros elementos de la landing?

 

Gracias,

2 Accepted solutions
JuanGomez0818
Solution
Key Advisor

No perder UTM's en los elementos de una landing

SOLVE

Hola @Patricia_AS creo que hay una solución que te podría funcionar, primero debes ir a tu landing page y seleccionar  Configuración >  Avanzado > HTML del Pie de Página. 

Captura de pantalla 2025-04-24 a la(s) 5.50.07 p.m..png

Aquí el código:

<script>
(function() {
  const params = new URLSearchParams(window.location.search);
  const utmParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
  utmParams.forEach(param => {
    const value = params.get(param);
    if (value) {
      localStorage.setItem(param, value);
    }
  });

  // Reescribir enlaces internos para que conserven los UTM
  document.addEventListener("DOMContentLoaded", function() {
    document.querySelectorAll('a').forEach(link => {
      const href = link.getAttribute('href');
      if (href && !href.startsWith('mailto') && !href.startsWith('tel')) {
        const isSameDomain = href.startsWith('/') || href.includes(window.location.hostname);
        if (isSameDomain) {
          const url = new URL(href, window.location.origin);
          utmParams.forEach(param => {
            const value = localStorage.getItem(param);
            if (value && !url.searchParams.get(param)) {
              url.searchParams.set(param, value);
            }
          });
          link.setAttribute('href', url.toString());
        }
      }
    });
  });
})();
</script>


Esto básicamente lo hace es capturar los enlaces de tu sitio web, en caso de que se recarge el sitio web los reescribe, así no perderías tus UTM's. 

Espero que te funcione, saludos. 




Juan Gómez
Hubspot Consultant | HubSpot Freelancer | Hubspot Solution Provider | TheWhiteHub.io

Contáctame aquí



View solution in original post

Patricia_AS
Solution
Member

No perder UTM's en los elementos de una landing

SOLVE

Hola!! 

 

Pues creo que sí que puede ser la solución! Desafortunadamente estamos usando unas plantillas donde la configuración avanzada no está disponible (adjunto captura del mensaje). image.png

De todas formas, hemos probado otra plantilla y sí que nos deja añadir un código, así que plantearemos el cambio de plantillas para poder usar esta solución. 

 

Muchas gracias por la rapidez. 

 

Un saludo,

View solution in original post

3 Replies 3
JuanGomez0818
Solution
Key Advisor

No perder UTM's en los elementos de una landing

SOLVE

Hola @Patricia_AS creo que hay una solución que te podría funcionar, primero debes ir a tu landing page y seleccionar  Configuración >  Avanzado > HTML del Pie de Página. 

Captura de pantalla 2025-04-24 a la(s) 5.50.07 p.m..png

Aquí el código:

<script>
(function() {
  const params = new URLSearchParams(window.location.search);
  const utmParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content'];
  utmParams.forEach(param => {
    const value = params.get(param);
    if (value) {
      localStorage.setItem(param, value);
    }
  });

  // Reescribir enlaces internos para que conserven los UTM
  document.addEventListener("DOMContentLoaded", function() {
    document.querySelectorAll('a').forEach(link => {
      const href = link.getAttribute('href');
      if (href && !href.startsWith('mailto') && !href.startsWith('tel')) {
        const isSameDomain = href.startsWith('/') || href.includes(window.location.hostname);
        if (isSameDomain) {
          const url = new URL(href, window.location.origin);
          utmParams.forEach(param => {
            const value = localStorage.getItem(param);
            if (value && !url.searchParams.get(param)) {
              url.searchParams.set(param, value);
            }
          });
          link.setAttribute('href', url.toString());
        }
      }
    });
  });
})();
</script>


Esto básicamente lo hace es capturar los enlaces de tu sitio web, en caso de que se recarge el sitio web los reescribe, así no perderías tus UTM's. 

Espero que te funcione, saludos. 




Juan Gómez
Hubspot Consultant | HubSpot Freelancer | Hubspot Solution Provider | TheWhiteHub.io

Contáctame aquí



Patricia_AS
Solution
Member

No perder UTM's en los elementos de una landing

SOLVE

Hola!! 

 

Pues creo que sí que puede ser la solución! Desafortunadamente estamos usando unas plantillas donde la configuración avanzada no está disponible (adjunto captura del mensaje). image.png

De todas formas, hemos probado otra plantilla y sí que nos deja añadir un código, así que plantearemos el cambio de plantillas para poder usar esta solución. 

 

Muchas gracias por la rapidez. 

 

Un saludo,

DianaGomez
Community Manager
Community Manager

No perder UTM's en los elementos de una landing

SOLVE

Hola @Patricia_AS, gracias por tu pregunta.

Consultemos con nuestros expertos si tienen alguna sugerencia para ti.

Hola @Lucila-Andimol , @Gilempert , @JuanGomez0818  tienen de casualidad una idea que pueda ayudar a @Patricia_AS con su objetivo?

Gracias a todos por contribuir.

Saludos,
Diana

0 Upvotes