GEA

Tracking HubSpot via Google Tag Manager : guide complet pour faire remonter vos conversions

Tracking HubSpot via Google Tag Manager : guide pas à pas pour faire remonter envois de formulaires et prises de rendez-vous vers Google Ads, Meta et GA4. Méthode testée sur +120 comptes Bricks, scripts prêts à copier, erreurs à éviter et checklist gratuite.

Anne Duperrier

Content Marketing manager
Tous les articles

Tracking HubSpot via Google Tag Manager : guide complet pour faire remonter vos conversions

Tracking HubSpot via Google Tag Manager : guide pas à pas pour faire remonter envois de formulaires et prises de rendez-vous vers Google Ads, Meta et GA4. Méthode testée sur +120 comptes Bricks, scripts prêts à copier, erreurs à éviter et checklist gratuite.

Sommaire
On gère votre acquisition payante de A à Z.
Agence SEA
Agence Social Ads
Creative Studio
Nous contacter

Sur la majorité des comptes HubSpot que nous auditons chez Bricks, plus de 80% sous-déclarent leurs conversions vers Google Ads ou Meta. Le résultat est mécanique : les algorithmes de Smart Bidding optimisent sur des données partielles, le CAC dérive, et l’équipe paid prend des décisions sur du vide. Le coupable est presque toujours le même, un tracking HubSpot GTM mal câblé, ou pas câblé du tout.

Le tracking HubSpot via Google Tag Manager n’est pas compliqué techniquement. Il est mal documenté, c’est tout. La documentation HubSpot officielle couvre la moitié du sujet, la doc Google Tag Manager l’autre moitié, et personne n’écrit la jonction des deux en français.

Ce guide est notre méthodologie complète, testée sur plus de 120 comptes clients B2B et B2C : deux events HubSpot remontés (envoi de formulaire et prise de rendez-vous), trois plateformes connectées (Google Ads, Meta, GA4), et une checklist d’erreurs à éviter. Vous trouverez 4 captures d’écran dans cet article qui illustrent les deux étapes clés à reproduire pour chaque événement (la balise listener et le déclencheur). Vous repartez avec un setup propre, dupliquable sur tous vos comptes.

Pourquoi tracker HubSpot via Google Tag Manager (et pas autrement) ?

Les 3 limites du tracking HubSpot natif côté ads

HubSpot dispose d’un tracking natif puissant en interne : attribution multi-touch, scoring, propriétés de contact. Mais ce tracking ne remonte pas tel quel vers les plateformes publicitaires. Trois limites bloquent le passage :

  • HubSpot ne pousse pas d’événement standardisé dans le dataLayer du site sans intégration manuelle
  • Les conversions HubSpot natives n’alimentent pas le pixel Meta ni le tag Google Ads sans connecteur tiers
  • Le rapprochement entre une visite payante et un lead HubSpot reste partiel sans GTM jouant le rôle d’orchestrateur

Concrètement, si vous laissez HubSpot tracker dans son coin, vos campagnes Google Ads optimisent sur des conversions web (clics, vues de page) au lieu d’optimiser sur des leads qualifiés réels.

Ce que GTM apporte de plus

Google Tag Manager joue le rôle de chef d’orchestre. Il intercepte les événements HubSpot dès qu’ils se produisent dans le navigateur, les transforme en événements dataLayer standardisés, puis les relaie en parallèle à toutes vos plateformes. Un seul setup, plusieurs sorties.

Concrètement, un même envoi de formulaire HubSpot peut déclencher en simultané :

  • Une conversion Google Ads avec ID et label
  • Un event Lead côté Meta Pixel ou Conversions API
  • Un event generate_lead côté GA4
  • Un event personnalisé pour LinkedIn Insight Tag, TikTok Pixel ou Microsoft UET

C’est ce que nous appelons un setup tracking centralisé. Il prend 2 heures à construire, et économise des semaines de debug ensuite.

Quand passer en server-side ?

Pour les comptes avec un volume de leads élevé ou des contraintes RGPD strictes, on recommande d’ajouter un container GTM server-side. Il ne remplace pas la méthode décrite dans cet article, il la complète, en relayant les événements via votre propre serveur plutôt que via le navigateur. Mais commencez toujours par un setup client-side propre. Le server-side amplifie un bon setup, il ne corrige pas un mauvais.

Prérequis avant de commencer

Les accès et outils nécessaires

Avant de toucher à GTM, vérifiez que vous avez tous les accès :

  • Accès admin à votre compte HubSpot (au minimum aux Settings et aux Forms)
  • Accès admin à votre container Google Tag Manager
  • Accès aux comptes publicitaires sur lesquels vous voulez remonter les conversions (Google Ads, Meta Business Manager, GA4)
  • Accès au CMS du site pour publier le container GTM si pas encore fait

Vérifier que le HubSpot Tracking Code est bien installé

Le HubSpot Tracking Code est le script de base qui permet à HubSpot d’identifier les visiteurs sur votre site. Il doit être installé sur toutes les pages avant que GTM ne puisse écouter quoi que ce soit. Récupérez votre Hub ID dans Settings puis Tracking Code, et copiez le snippet.

Si votre site n’a pas encore le HubSpot Tracking Code, vous pouvez l’installer via GTM en créant une balise HTML personnalisée nommée cHTML - HubSpot Tracking Code qui pousse le snippet ci-dessous, déclenchée sur All Pages :

<script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/VOTRE-HUB-ID.js"></script>

Remplacez VOTRE-HUB-ID par votre Hub ID HubSpot. Si vous l’avez déjà installé en dur dans le <head> du site via votre CMS, ne le doublez pas, vous risquez de compter chaque visite deux fois.

Les 2 cas particuliers à connaître

Avant de plonger dans les scripts, deux cas particuliers à anticiper :

  1. Les nouveaux formulaires HubSpot embedded. Si vous utilisez les nouveaux formulaires HubSpot intégrés directement dans votre site (et pas via le script v2), il faut impérativement utiliser le code “Developer code (Advanced)” disponible dans HubSpot. C’est ce code qui pousse nativement l’événement hubspot_form_success dans le dataLayer. Sans ça, le listener GTM ne capture rien.
  2. Le calendar HubSpot doit être embedded. Pour tracker les prises de rendez-vous, le widget calendar HubSpot doit être intégré dans une page du site (pas un simple lien externe vers meetings.hubspot.com). C’est la seule configuration où GTM peut écouter le message d’événement renvoyé par HubSpot.

Comment tracker un envoi de formulaire HubSpot via GTM ?

C’est le tracking le plus demandé. Il se monte en 3 étapes propres dans GTM, plus une étape de test.

Étape 1 : créer le Form Success Listener

C’est la balise qui écoute les événements de soumission de formulaire HubSpot et les pousse dans le dataLayer. Dans votre espace de travail GTM, créez une nouvelle balise :

  • Type de balise : HTML personnalisé
  • Nom : cHTML - Hubspot form Success Listener V4 (le nom exact peut varier selon votre convention interne)
  • Contenu :

<script type="text/javascript">
 window.addEventListener("hs-form-event:on-submission:success", function(event) {
   window.dataLayer.push({
     'event': 'hubspot_form_success',
     'hs-form-guid': HubSpotFormsV4.getFormFromEvent(event).getFormId(),
   });
 });
</script>

  • Déclenchement : All Pages
  • Tag firing priority : 10 (recommandé pour s’assurer que le listener est chargé avant les balises de conversion)

Ce script écoute l’événement hs-form-event:on-submission:success que HubSpot émet à chaque envoi de formulaire réussi, et le réémet sous forme d’événement personnalisé hubspot_form_success dans le dataLayer. Le hs-form-guid est l’identifiant unique du formulaire, vous pouvez l’utiliser plus tard pour différencier vos formulaires entre eux (formulaire contact vs formulaire devis vs formulaire newsletter, par exemple).

Étape 2 : configurer le déclencheur événement personnalisé

Dans GTM, allez dans Déclencheurs puis Nouveau :

  • Type de déclencheur : Custom Event (Événement personnalisé)
  • Nom : Trigger - CE - hubspot_form_success
  • Event name : hubspot_form_success
  • This trigger fires on : All Custom Events

Enregistrez. C’est ce déclencheur que vous attacherez à toutes vos balises de conversion ensuite (Google Ads, Meta, GA4, LinkedIn).

Étape 3 : tester en mode Aperçu GTM

Activez le mode Aperçu GTM (Espace de travail puis Aperçu), puis allez sur une page de votre site qui contient un formulaire HubSpot. Soumettez le formulaire avec un email de test.

Dans la fenêtre Tag Assistant qui s’ouvre, vérifiez :

  • L’événement hubspot_form_success apparaît dans la chronologie d’événements
  • Le dataLayer contient bien la variable hs-form-guid
  • Vos balises de conversion (configurées dans la section suivante) se déclenchent toutes

Le piège des nouveaux formulaires embedded HubSpot

C’est l’erreur la plus fréquente que nous croisons sur les comptes que nous auditons. Si vous utilisez les nouveaux formulaires HubSpot intégrés via le builder visuel et pas le script V2 historique, le listener décrit ci-dessus ne suffit pas.

Pour ces formulaires, vous devez impérativement utiliser le code “Developer code (Advanced)” généré par HubSpot dans l’éditeur de formulaire. Ce code pousse nativement hubspot_form_success dans le dataLayer, sans avoir besoin du listener. Si vous gardez le code “embed standard”, le listener ne capturera rien et vos conversions ne remonteront jamais.

Règle simple : sur un site avec un mix de formulaires anciens et nouveaux, gardez le listener pour les anciens, et utilisez le code Advanced pour les nouveaux. Les deux peuvent cohabiter sans conflit dans le même container GTM.

Comment tracker une prise de rendez-vous via le Calendar HubSpot ?

Le tracking des meetings est plus rare en agence, beaucoup l’oublient. Pourtant, c’est souvent l’événement de conversion le plus qualifié de votre funnel B2B. Sans lui, vous optimisez sur des envois de formulaire qui ne deviennent jamais des deals. La logique est exactement la même que pour le formulaire : une balise listener, un déclencheur Custom Event, des balises de conversion attachées.

Étape 1 : embed obligatoire du calendar sur votre site

Première condition non-négociable : le widget Calendar HubSpot doit être intégré dans une page de votre site, pas en lien externe. Si vos prospects cliquent sur “Réserver un appel” et atterrissent sur meetings.hubspot.com, GTM ne peut rien tracker, le visiteur a quitté votre domaine.

Récupérez le code embed dans Calendar HubSpot puis Embed, et collez-le sur la page de votre choix (page contact, page d’accueil, page produit). Le tracking ne fonctionne que sur cet embed.

Étape 2 : créer le Meeting Listener dans GTM

Créez une nouvelle balise HTML personnalisée :

  • Type de balise : HTML personnalisé
  • Nom : cHTML - Hubspot meeting listener
  • Contenu :

<script>
 window.addEventListener("message", function(event) {
   if (event.data.meetingBookSucceeded == true) {
     window.dataLayer.push({
       'event': 'hubspot_meeting_success',
       'hs-form-guid': event.data.meetingsPayload.formGuid,
       'hs-organizer': event.data.meetingsPayload.bookingResponse.postResponse.organizer.name,
       'hs-is-meeting-paid': event.data.meetingsPayload.isPaidMeeting,
       'hs-meeting-date': event.data.meetingsPayload.bookingResponse.event.dateString,
       'hs-duration-minutes': event.data.meetingsPayload.bookingResponse.event.duration / 60000
     });
   }
 });
</script>

  • Déclenchement : All Pages

Ce script écoute les messages postés par l’iframe HubSpot (le calendar est intégré en iframe). Quand HubSpot confirme qu’un rendez-vous a bien été pris (meetingBookSucceeded == true), il pousse l’événement hubspot_meeting_success dans le dataLayer avec 5 variables enrichies décrites ci-dessous.

Étape 3 : configurer le déclencheur

Comme pour le formulaire, créez un déclencheur Custom Event :

  • Type de déclencheur : Custom Event (Événement personnalisé)
  • Nom : Trigger - CE - hubspot_meeting_success
  • Event name : hubspot_meeting_success
  • This trigger fires on : All Custom Events

Étape 4 : exploiter les 5 variables remontées

Le listener pousse 5 variables que vous pouvez ensuite remonter à vos plateformes ou utiliser pour segmenter vos conversions :

  1. hs-form-guid : identifiant du calendrier qui a généré le RDV
  2. hs-organizer : nom du commercial qui prendra le RDV (utile pour analyser la conversion par commercial)
  3. hs-is-meeting-paid : booléen indiquant si le RDV est payant ou gratuit (utile en consulting)
  4. hs-meeting-date : date et heure exactes du rendez-vous
  5. hs-duration-minutes : durée du créneau réservé en minutes

Ces variables peuvent être passées en event_parameters dans GA4, en custom_data dans la Conversions API Meta, ou en paramètres personnalisés Google Ads pour des analyses fines (taux de show selon le commercial, par exemple).

Étape 5 : tester et publier votre container

Activez le mode Aperçu GTM, allez sur la page qui contient votre Calendar HubSpot, et réservez un créneau de test. Vérifiez dans Tag Assistant que l’événement hubspot_meeting_success remonte avec ses 5 variables. Si c’est le cas, publiez votre container GTM (Soumettre puis Publier).

Créer les balises de conversion Google Ads, Meta et GA4

Vos events HubSpot sont maintenant disponibles dans le dataLayer. Reste à les transformer en conversions effectives sur chaque plateforme. Le principe est identique à chaque fois : créer une balise dédiée, l’attacher à Trigger - CE - hubspot_form_success ou Trigger - CE - hubspot_meeting_success, tester. Sur un compte mature, vous retrouverez généralement 4 à 6 balises connectées au même trigger (GA4, Google Ads, Google Ads User-provided Data, Meta, parfois LinkedIn et TikTok).

Balise de conversion Google Ads

Pour chaque event (form submit et meeting), créez une balise Google Ads :

  • Type de balise : Suivi des conversions Google Ads
  • Nom : Gads - form_submit (puis une seconde pour Gads - meeting_success)
  • ID de conversion : à récupérer dans Google Ads, dans Outils puis Conversions puis votre action de conversion
  • Libellé de conversion : à récupérer au même endroit
  • Valeur de conversion : optionnelle, à remplir si vous avez une valeur de lead estimée
  • Déclenchement : Trigger - CE - hubspot_form_success ou Trigger - CE - hubspot_meeting_success

Ajoutez idéalement en parallèle une balise Google Ads User-provided Data Event qui envoie l’email hashé du lead pour activer l’Enhanced Conversions, ce qui améliore significativement la précision d’attribution sur Safari et Firefox.

Une fois la balise créée et testée, retournez dans Google Ads et marquez cette conversion comme conversion principale (Inclure dans "Conversions" activé). Sans ça, le Smart Bidding ne l’optimise pas. Pour tracker tout ça côté media buying, vous pouvez vous appuyer sur une agence Google Ads experte en tracking qui vérifiera la cohérence entre conversions GTM et conversions Google Ads.

Balise Meta Ads (Pixel ou Conversions API)

Pour Meta, deux options :

  1. Via le Pixel Meta classique. Créez une balise HTML personnalisée nommée html - facebook - form_submit qui pousse fbq('track', 'Lead'); au déclenchement du trigger. Solution la plus simple, mais soumise à l’ITP de Safari et à AdBlock, donc partiellement déperditive.
  2. Via la Conversions API (CAPI). Créez une balise dédiée Meta Conversions API dans GTM, ou via votre container server-side. Solution plus robuste, recommandée dès que vous avez un volume significatif. Voir la documentation officielle de la Conversions API Meta.

Dans les deux cas, l’événement standard à utiliser est Lead pour les form submits, et Schedule pour les meeting bookings. Si vous voulez segmenter, utilisez les paramètres custom_data.content_name ou custom_data.lead_type pour différencier les types de formulaires ou les niveaux de qualification.

Balise GA4

Pour Google Analytics 4, créez une balise événement GA4 par déclencheur, nommée par exemple GA4 - form_submit et GA4 - meeting_success :

  • Type de balise : Événement Google Analytics : GA4
  • ID de mesure : votre ID GA4
  • Nom de l’événement : generate_lead pour le form submit, schedule pour le meeting
  • Paramètres de l’événement : passez les variables dataLayer (form_id, meeting_organizer, etc.) en custom parameters

Dans GA4, marquez ensuite ces événements comme conversions (Admin puis Événements puis Marquer comme conversion). C’est ce qui les rendra disponibles pour l’import vers Google Ads via la liaison GA4 et Google Ads.

Marquer les conversions comme principales dans vos plateformes

Cette étape est oubliée par 7 comptes sur 10 que nous auditons. Une balise déclenchée n’est pas automatiquement une conversion d’optimisation. Vérifiez sur chaque plateforme :

  • Google Ads : la conversion doit être marquée “Conversion principale” et Inclure dans Conversions doit être activé
  • Meta : l’événement doit être prioritaire dans Events Manager puis Aggregated Event Measurement
  • GA4 : l’événement doit être marqué comme conversion dans Admin puis Événements

Sans ça, le Smart Bidding et les algorithmes Meta optimisent dans le vide. Vos conversions remontent en reporting mais n’alimentent pas les enchères.

Les erreurs les plus fréquentes (et comment les éviter)

Sur les +120 comptes que nous gérons en stratégie d’acquisition payante data-driven, voici les 4 erreurs que l’on retrouve dans presque chaque audit tracking HubSpot GTM.

Le double comptage

Vous avez configuré le tracking GTM, et en parallèle votre site redirige vers une thank you page après le formulaire, sur laquelle une seconde balise de conversion se déclenche. Résultat : chaque lead compte pour 2. Vos coûts par conversion s’effondrent en apparence, vos algos optimisent sur du faux.

Solution : choisissez une seule méthode. Soit le déclencheur basé sur l’événement hubspot_form_success, soit le déclencheur basé sur l’URL de la thank you page. Jamais les deux. En général, on privilégie l’événement hubspot_form_success car il est plus fiable que la redirection (qui peut échouer en cas de bloqueur ou d’erreur réseau).

Les UTM qui ne remontent pas dans HubSpot

Vous avez beau tracker l’envoi du formulaire, si vous ne remontez pas les UTM associés à la session, vous ne pouvez pas attribuer le lead à la bonne campagne. La bonne nouvelle : HubSpot le fait automatiquement, à condition que vous ayez créé les bons champs.

Dans Settings puis Properties de HubSpot, créez les propriétés contact suivantes en type “Single line text” :

  • utm_source
  • utm_medium
  • utm_campaign
  • utm_content
  • utm_term
  • placement (utile pour Meta Ads notamment)

Ajoutez ensuite ces champs dans tous vos formulaires HubSpot et masquez-les. HubSpot les remplit automatiquement à partir des paramètres URL au moment de la soumission. Aucun script GTM supplémentaire nécessaire pour cette partie.

Le déclencheur qui se tire sur toutes les pages

Si votre déclencheur GTM est mal configuré et se déclenche sur toutes les pages (et pas uniquement sur l’événement personnalisé), votre balise de conversion remonte un lead à chaque page vue. C’est rare mais on le voit, surtout chez les équipes qui ont copié-collé un déclencheur générique sans changer le type.

Vérifiez systématiquement que le type de déclencheur est bien Custom Event et que l’event name correspond exactement à hubspot_form_success ou hubspot_meeting_success. Pas d’espace en trop, pas de majuscule.

Le calendar HubSpot intégré en lien externe

Comme expliqué plus haut, GTM ne peut tracker un meeting HubSpot que si le widget calendar est embedded sur votre site. Si vos boutons “Réserver un RDV” pointent vers meetings.hubspot.com/votre-nom, vous perdez l’événement de conversion le plus qualifié de votre funnel.

Solution : créez une page dédiée /reservation ou /contact-calendrier sur votre site, puis vous pouvez intégrer le code du formulaire HubSpot et rediriger tous vos CTA vers cette page. Le gain en données de conversion vaut largement les 30 minutes de mise en place.

Conclusion

Un tracking HubSpot GTM propre, c’est 3 étapes par événement, 2 events à câbler, 1 stack centralisée. Une fois en place, il alimente proprement vos campagnes Google Ads, Meta et GA4 sans intervention manuelle. C’est la base d’un Smart Bidding qui fonctionne, d’un attribution model fiable, et d’un reporting paid sur lequel votre direction peut prendre des décisions.

Sur les comptes que nous prenons en gestion complète de l’acquisition payante, ce setup est livré dans la première semaine du démarrage, avant même le lancement des campagnes. Sans tracking propre, on ne lance pas. Si vous voulez vérifier que votre propre setup est bon, on a compilé toutes les vérifications dans une checklist gratuite.

Des questions ?

FAQ

Nous avons rassemblé les questions les plus fréquentes. Si vous ne trouvez pas ce que vous cherchez, contactez-nous.

Faut-il un développeur pour installer ce tracking ?

Non. L’installation se fait à 100% dans Google Tag Manager via des balises HTML personnalisées, sans toucher au code source du site. Un Head of Growth ou un Ops marketing avec des notions GTM peut le faire en 2 à 3 heures. La seule étape qui peut nécessiter un développeur, c’est l’installation initiale du container GTM dans le <head> du site, si ce n’est pas déjà fait.

Le tracking HubSpot fonctionne-t-il avec le consent mode v2 ?

Oui, à condition de configurer le consent mode v2 correctement dans GTM. Les balises HubSpot, Google Ads, Meta et GA4 doivent toutes être attachées à un déclencheur conditionnel basé sur le statut du consentement (granted ou denied). En denied, vous pouvez activer le mode “modeled conversions” côté Google et Meta, qui modélise les conversions perdues. Le setup décrit dans cet article est compatible, il faut juste y greffer la couche consent management.

Peut-on tracker les formulaires HubSpot sans GTM ?

Techniquement oui, via les intégrations natives HubSpot avec Google Ads et Meta Ads (Marketing Hub). Mais ces intégrations sont moins flexibles : pas de centralisation, pas de variables custom, pas d’envoi parallèle vers GA4 ou LinkedIn. Sur un compte qui fait du paid sérieux, le passage par GTM reste la norme du marché.

Quelle différence entre les events HubSpot natifs et les events GTM ?

Les events HubSpot natifs vivent à l’intérieur de HubSpot : workflows, scoring, attribution multi-touch dans les rapports HubSpot. Les events GTM vivent côté navigateur et plateformes pub : ils alimentent les algos Google Ads, Meta, GA4. Les deux sont complémentaires, pas concurrents. Vous voulez les deux activés en parallèle.

Comment vérifier que les conversions remontent vraiment dans Google Ads ?

Trois vérifications à faire après publication du container : 1. Dans GTM Preview, soumettre un formulaire de test et vérifier que la balise Google Ads se déclenche 2. Dans Google Ads, aller dans `Outils` puis `Conversions` et vérifier que la conversion remonte avec un statut `Enregistrement des conversions` (compte vert) sous 24 à 48h 3. Comparer le volume de conversions Google Ads avec le volume de leads HubSpot sur la même période. Un écart de 5 à 15% est normal (cookies bloqués, ITP). Au-delà de 30%, il y a un problème de tracking à creuser

Prêts à accélérer ?

Développez votre chiffre d'affaires maintenant

Contactez-nous pour échanger autour de votre problématique d'acquisition clients.
Le setup GTM qui vous évite de perdre des leads et de gaspiller votre budget Google Ads.

Téléchargez notre guide complet pour configurer votre tracking HubSpot via GTM et faire remonter vos conversions fiables dans vos campagnes.