Por qué la integración nativa no basta

Cuando entras en HubSpot y conectas la cuenta de Google Ads, lo que ganas es visibilidad bidireccional limitada. HubSpot empieza a mostrar coste, clics e impresiones por campaña dentro de su propio dashboard. Google Ads recibe listas de contactos para crear audiencias y similares. Ambas direcciones funcionan correctamente, pero las dos están pensadas para el funnel comercial, no para Smart Bidding.

El gap operativo está en lo que ocurre cuando un contacto pasa a "Customer" en HubSpot con un valor concreto. Esa venta cerrada, que es la métrica que mueve negocio, no se sube por defecto a Google Ads como conversión offline con el GCLID original. HubSpot tiene una feature llamada Conversion Sync que sí lo permite, pero está disponible bajo demanda en planes superiores y requiere configuración propia. La mayoría de cuentas que vemos auditadas no la tienen activa, o la tienen activa pero con la propiedad GCLID mal poblada, lo que resulta en match rate bajo.

Sin esa subida de venta cerrada al canal con valor real, Smart Bidding optimiza por la métrica que tenga delante: número de leads. Si los leads no son uniformes en valor (y nunca lo son), el algoritmo acaba sesgándose hacia el lead barato. La paradoja del CPL bajando mientras la facturación no sube está descrita en otra pieza.

Los 4 sitios donde se pierde el GCLID en HubSpot

En auditorías de cuentas con HubSpot, el patrón se repite. El GCLID llega bien a la primera puerta del CRM en muchos casos. Lo que falla es la propagación dentro del propio HubSpot a lo largo del lifecycle.

1. En el formulario embed sin hidden field configurado

HubSpot Forms permite añadir hidden fields al embed, pero solo si la propiedad ya existe en el portal y el embed la pasa explícitamente. Lo común es que el equipo de marketing haya creado el formulario hace tiempo sin pensar en GCLID, y los campos hidden no estén presentes. Resultado: el formulario llega al CRM con el resto de información del lead, pero la columna gclid_capturado queda vacía.

2. En el flow de creación de contacto con eventos personalizados

Algunos equipos crean los contactos vía Webhooks o vía la HubSpot Forms API en lugar del embed estándar. En esos casos el GCLID se pierde si el desarrollador no lo incluye explícitamente en el payload del POST. Es la causa de muchos casos de "antes funcionaba, ya no funciona": alguien refactorizó el formulario sin saber que había un GCLID viajando dentro.

3. En el lifecycle transition cuando un contacto se duplica con otro email

El comercial llama al lead, descubre que prefiere usar su email corporativo en lugar del personal del formulario, y crea un nuevo contacto manualmente. El GCLID original queda asociado al contacto anterior, que probablemente acabará marcado como duplicado o como "no MQL". El contacto correcto, el que cerrará venta, no tiene GCLID.

4. En la subida a Google Ads cuando el deal se cierra meses después

Si el ciclo de venta es largo, el GCLID puede haber pasado de 90 días entre el clic original y el cierre del deal. Google rechaza esas conversiones con error click_too_old. Sin un proceso intermedio que suba estados (lead cualificado, reunión agendada, oportunidad creada) con valor parcial cuando ocurren, el negocio cerrado queda fuera del periodo válido.

Cada uno de los cuatro casos suma su porcentaje. En cuentas auditadas bien establecidas con HubSpot encontramos match rates del 30-50% en Enhanced Conversions for Leads, cuando lo razonable sería superar el 85%. Esa diferencia es la cantidad de GCLIDs que se pierden por el camino.

¿Tu HubSpot tiene este problema?

En la auditoría gratuita revisamos los cuatro puntos uno a uno y te decimos en qué porcentaje estás perdiendo atribución. 30 minutos por videollamada.

Auditar mi HubSpot → WhatsApp

Capturar el GCLID en el formulario de HubSpot

El primer eslabón es el formulario. Hay tres vías técnicas, y la elección depende de qué control tengas sobre la landing.

Vía nativa con hidden field. Sirve cuando el formulario está embebido directamente en una landing propia y puedes meter un script de JavaScript antes del embed. El script lee el GCLID de la URL, lo guarda en localStorage, y un segundo script lo recupera y rellena el hidden field justo antes del envío. Funciona bien cuando la landing es propia y no hay iframes problemáticos. El detalle no trivial es preservar el GCLID entre sesiones, porque Safari ITP borra localStorage a los siete días sin interacción y hay que tener fallbacks.

Vía GTM con form submit listener. Sirve cuando el formulario está en un site donde no controlas el código directo, pero sí GTM. Un tag escucha el evento hsForm:onFormSubmitted que HubSpot dispara nativamente, lee el GCLID del localStorage previo, y modifica el payload antes del envío. Es la vía más resiliente a cambios de la landing, pero requiere setup de GTM más afinado.

Vía Forms API directa. Sirve cuando ya tienes un backend que orquesta los formularios y el embed nativo de HubSpot no encaja. Usas la HubSpot Forms API para hacer el POST programáticamente, pasando el GCLID como propiedad en el cuerpo. Es la vía más limpia pero la que más desarrollo requiere. Útil en arquitecturas con varios formularios diferentes hacia el mismo portal.

Las tres son válidas. La elección suele depender de quién mantiene la landing (marketing con WordPress, agencia, desarrollo propio), no de la calidad técnica de cada opción.

Dónde y cómo guardar el GCLID en el contacto

Conviene crear una propiedad personalizada con nombre claro y consistente. Recomendaciones de operación:

  • Nombre interno: gclid_capturado o google_click_id. Evitar nombres genéricos tipo external_id o tracking_id que otros sistemas reescriben sin pensar.
  • Tipo: texto de una sola línea, longitud máxima 500 caracteres. Los GCLIDs reales tienen entre 90 y 120 caracteres pero pueden venir con padding extra de tracking templates.
  • Nivel: contacto y deal. La propiedad solo a nivel de contacto se pierde cuando se trabaja directamente sobre el deal. Replicar la propiedad en el objeto deal garantiza que el GCLID viaja con la venta.
  • Workflow de propagación: cuando se crea un deal desde un contacto, copiar el GCLID del contacto al deal automáticamente. HubSpot tiene workflow que lo permite con un par de clics.
  • No sobreescribir. Marcar la propiedad como persistente. Si el contacto vuelve a rellenar un formulario más adelante con otro GCLID, ese segundo GCLID va a otra propiedad (gclid_ultimo_touch) en vez de pisar el original.

El último punto es de los que más debate generan. Para Smart Bidding por valor lo importante es el GCLID que generó el lead originalmente, no el último. Si pisas el campo cada vez que un contacto interactúa, acabas atribuyendo la venta al último touchpoint y eso suele estar sesgado hacia keywords brand. Mantener el first-touch limpio es lo que da señal útil al algoritmo.

Preservar el GCLID a través del lifecycle stage

Esta es la parte que más se rompe en operaciones grandes. Los contactos pasan por etapas (Subscriber, Lead, MQL, SQL, Opportunity, Customer) y en cada transición pueden ocurrir transformaciones de datos: deduplicaciones, fusiones manuales, reasignaciones de propietario, cambios de email. Cada uno de esos eventos es un sitio donde el GCLID puede desaparecer.

Reglas que funcionan:

  • Replicar GCLID en deal: al crear un deal desde un contacto, copiar la propiedad. Si el deal se reasigna a otro contacto después, el GCLID viaja en el deal y no se pierde con la asignación de contacto.
  • Dedup con merge inteligente: cuando HubSpot detecta duplicados, configura la regla de merge para que la propiedad gclid_capturado se quede con el valor más antiguo no nulo. La opción por defecto suele ser quedarse con el más reciente, que suele estar vacío.
  • Webhook a sistema externo al pasar a Customer: cuando lifecycle stage pasa a Customer, disparar un webhook que envía contacto + deal + GCLID + valor del deal a tu pipeline de subida a Google Ads. Si todo el lifecycle se hace dentro de HubSpot, este webhook es el único punto único de fallo a vigilar.
  • Auditoría mensual: contar contactos en lifecycle Customer del último mes que tienen GCLID poblado vs vacío. Si el ratio cae por debajo del 80%, hay un problema en algún eslabón nuevo.

Subir la conversión cuando se cierra la venta

Llegado el momento del cierre, hay dos caminos para subir la conversión a Google Ads:

HubSpot Conversion Sync. Es la feature nativa que HubSpot ofrece para sincronizar deals cerrados con Google Ads. Funciona si tienes plan Marketing Hub Enterprise o Sales Hub Enterprise y la has activado. El sync envía el contacto cerrado con su GCLID a la acción de conversión que configures en Google Ads. Lo bueno es que está mantenido por HubSpot. Lo limitado es que envía valor del deal pero no permite enviar lifetime value proyectado ni valores de cohorte.

Pipeline propio con Conversion Upload API o Data Manager. Si necesitas más control (subir LTV en vez de ticket del primer pago, enviar valor a cohortes específicas, separar acciones de conversión por tipo de producto, mantener un audit trail propio), montas un pequeño servicio que escucha los webhooks de HubSpot al cerrar deal, transforma el payload y llama a la Google Ads Conversion Upload API. Es lo que hacemos con la mayoría de clientes que han crecido más allá de lo que cubre la integración nativa.

La subida con LTV proyectado en lugar de ticket inicial es donde más diferencia se nota a 90 días, especialmente en negocios con suscripción o recurrencia.

Enhanced Conversions for Leads como red de seguridad

Por bueno que sea tu pipeline de GCLID, va a haber pérdidas. Safari ITP, contactos duplicados que se merge sin GCLID, formularios de terceros con embeds raros. Para esos casos, Enhanced Conversions for Leads es el seguro.

En la práctica significa enviar a Google Ads, junto con el GCLID, también el email y el teléfono hasheados con SHA-256 según especificación de Google. Cuando el GCLID se ha perdido en algún eslabón, Google intenta hacer match del usuario por email/teléfono contra los usuarios que hicieron clic en tus anuncios. No recupera el 100% (Google solo conoce a usuarios autenticados de su ecosistema), pero sí entre el 10 y el 30% de las conversiones que de otro modo se perderían.

Tres detalles operativos:

  • El consentimiento del usuario en la política de privacidad del cliente debe cubrir explícitamente este uso. Si no, formalmente no se puede activar.
  • El hasheado tiene que ser SHA-256 con normalización previa: email en minúsculas y sin espacios, teléfono en formato E.164. Si el hasheo no es exacto el match falla silenciosamente.
  • Match rate típico observado: 40-70% en cuentas bien configuradas. Si tu match rate sale por debajo del 30%, hay problemas en la normalización antes del hasheo.

Lo que vemos en cuentas con HubSpot durante 2026

El patrón que más se repite en auditorías de cuentas que combinan HubSpot y Google Ads en 2026 tiene tres componentes.

El primero es la sensación de "ya está integrado" que dan los dashboards de HubSpot mostrando coste y clics. Esa visualización lleva al equipo de marketing a asumir que la integración está completa. Cuando preguntas por la columna GCLID del contacto, en muchos casos la respuesta es "creo que sí" o "habría que mirarlo". La columna existe, pero está poblada en menos del 40% de los contactos creados desde formularios.

El segundo es la operación con dos lifecycles paralelos: el de marketing (Subscriber → Lead → MQL) y el de ventas (SQL → Opportunity → Customer). Las propiedades viajan a veces bien, a veces no, y el equipo de RevOps tiene que reconstruir la trazabilidad mes a mes. El GCLID es la primera víctima cuando hay reasignaciones manuales o cuando los workflows automatizados tienen condiciones distintas en cada lifecycle.

El tercero es la subida a Google Ads con valor incorrecto. Cuando se activa el Conversion Sync de HubSpot, sube el amount del deal. Para muchos negocios, ese amount es el ticket del primer pago (un suscriptor con 25 €/mes sube como 25 €). Cuando lo que queremos para Smart Bidding por valor es el LTV proyectado a 12 meses (300 €), Google Ads recibe el techo artificial y no escala. La solución es interceptar ese sync con un cálculo propio antes de la subida, o reemplazarlo por pipeline propio si HubSpot no permite override.

En las cuentas que hemos consolidado bien con HubSpot, el flujo final tiene siete u ocho piezas en producción. No es complicado de operar una vez está montado. Lo que cuesta es no construirlo de golpe sino iterarlo durante seis u ocho semanas en paralelo con el negocio.

Auditoría gratuita de tu integración HubSpot ↔ Google Ads

En 30 minutos revisamos los 4 puntos críticos: captura de GCLID en el formulario, propiedad en contacto y deal, lifecycle transitions, y subida a Google Ads. Te decimos qué porcentaje estás perdiendo hoy y qué hay que mover. Sin compromiso.

Agendar auditoría → WhatsApp →

Preguntas frecuentes

¿La integración nativa HubSpot ↔ Google Ads sirve para atribuir ventas?

Solo a medias. Sincroniza listas y muestra coste/clics dentro de HubSpot, pero no envía la venta cerrada al GCLID original con valor real. Para eso necesitas Conversion Sync activado (planes Enterprise) o un pipeline propio con Conversion Upload API.

¿Dónde guardo el GCLID dentro del contacto HubSpot?

Propiedad personalizada de tipo texto (500 caracteres máximo) con nombre claro: gclid_capturado o google_click_id. Replícala también a nivel de deal para que sobreviva el lifecycle stage.

¿Cómo paso el GCLID del formulario de HubSpot al contacto?

Tres vías: hidden field nativo del embed, GTM con form submit listener, o HubSpot Forms API directa. Las tres son válidas; la elección depende del control que tengas sobre la landing y de quién la mantenga.

¿Y si el comercial cambia el lifecycle stage manualmente?

El GCLID no se pierde si la propiedad está marcada persistente. Lo que sí cambia es qué evento dispara la subida a Google Ads. Configura workflows que verifiquen explícitamente la presencia de GCLID antes de subir conversión, y revisa que el evento de subida no dependa de un campo que se vacía en la transición.

¿Es mejor usar Enhanced Conversions for Leads en lugar de subir GCLID?

No son alternativas, son complementarias. Subir ambos da el mejor match rate: GCLID como identificador principal, email/teléfono hasheado como red de seguridad para los casos donde el GCLID se perdió. Combinados suelen superar el 90% en cuentas bien instrumentadas.

¿Cuánto tarda en notarse el cambio en Smart Bidding tras montar todo esto?

Semanas 1-2: estás subiendo pero el algoritmo aún no ha aprendido. Semanas 3-6: si migras a Maximize Conversion Value, reaprendizaje, CPL sube 10-20% temporal. Mes 2-3: el CPA real medido contra ventas cerradas en HubSpot empieza a bajar consistentemente.

David Pérez, Founder de VIDIKA MarTech Agency

David Pérez

Founder & CEO · VIDIKA MarTech Agency

Construyo pipelines de atribución end-to-end desde 2015. Fundador de WinTracker, plataforma de atribución y Smart Bidding por valor que procesa más de 100.000 leads al mes para operadores de telco y verticales con alta dependencia de atribución offline.

Sigue leyendo en el cluster de atribución