Différer les formulaires HubSpot : Corriger le blocage du rendu sans modifier les pages

Une solution prête à l'emploi pour les scripts de formulaires HubSpot qui bloquent le rendu

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2026-03-10

'Différer les formulaires HubSpot' en bref

Les formulaires HubSpot sont un excellent moyen d'intégrer des formulaires directement dans votre CRM HubSpot. Dans HubSpot, vous pouvez facilement créer des formulaires et les placer directement sur votre site web avec un peu de code JavaScript.

Dernière révision par Arjen Karel en mars 2026

Il y a juste un petit problème. HubSpot n'aime pas les Core Web Vitals et le formulaire HubSpot va ralentir votre site web.

Les formulaires HubSpot bloquent le rendu par défaut. Le script du formulaire (v2.js) pèse environ 521 Ko non compressé. C'est presque l'intégralité du payload JavaScript médian d'une page mobile selon le Web Almanac 2025 (646 Ko). Tout cela, juste pour un seul formulaire.

Corriger le PageSpeed nécessitera une réécriture pour chaque page où un formulaire HubSpot apparaît. Parfois, ce n'est pas une option immédiate. J'ai créé un remplacement prêt à l'emploi pour accélérer vos formulaires sans avoir à modifier le code au niveau de la page.

HubSpot

Code de formulaire HubSpot, la méthode lente

Le code HubSpot par défaut pour placer des formulaires sur un site web ressemble à ceci :

<script
   type="text/javascript"
   src="//js.hsforms.net/forms/v2.js">
</script>

<script>
  hbspt.forms.create({
    portalId: '123456',
    formId: '123456'
  });
</script>

Cela entraînera un avertissement Lighthouse « Éliminer les ressources qui bloquent le rendu ». Le formulaire HubSpot bloque le rendu de la page pendant une seconde entière. Selon le Web Almanac 2025, 87 % des pages servent encore des ressources qui bloquent le rendu. L'intégration par défaut de HubSpot est l'un des pires coupables car elle se charge de manière synchrone sans attribut defer ou async.

render blocking hubspot forms

Votre première idée pourrait être de différer le script HubSpot. Cela ne fonctionnera pas et renverra une erreur car hbspt.forms.create() s'attend à ce que le script HubSpot soit chargé. Corrigeons cela !

Code de formulaire HubSpot, la solution rapide

Parfois, il n'y a tout simplement pas le temps de passer au crible des centaines de pages et de réécrire le code pour chaque formulaire HubSpot. C'est pourquoi j'ai créé un remplacement prêt à l'emploi pour des formulaires HubSpot plus rapides et qui ne bloquent pas le rendu :

L'idée est simple. Les formulaires sont appelés en invoquant hbspt.forms.create. Interceptons les formulaires, attendons que le code HubSpot se charge en arrière-plan, puis exécutons le script du formulaire.

<script>
// cache hubspot forms here
var hubcache = {
    forms: [],
    letsgo: function() {
        for (var i = 0; i < hubcache.forms.length; i++) {
            // hubspot is now loaded, use the real hbspt
            hbspt.forms.create(hubcache.forms[i]);
        }
    }
};

// override hbspt while hubspot is loading
var hbspt = {
    forms: {
        create: function(c) { hubcache.forms.push(c); }
    }
};
</script>
<script
   type="text/javascript"
   defer
   src="//js.hsforms.net/forms/v2.js"
   onload="hubcache.letsgo()">
</script>

N'oubliez pas de réserver de l'espace pour le formulaire car il ne bloque plus le rendu et causera un layout shift plus important que si vous aviez précédemment oublié de réserver de l'espace. Définissez une min-height sur le conteneur du formulaire qui correspond à la hauteur du formulaire rendu.

Alternative : le modèle hsFormsOnReady

Le v2.js de HubSpot prend également en charge une file d'attente de rappel non documentée appelée hsFormsOnReady. Si vous contrôlez directement le code d'intégration, c'est une option plus propre :

<script defer src="//js.hsforms.net/forms/v2.js"></script>
<script>
  (window.hsFormsOnReady = window.hsFormsOnReady || []).push(function() {
    hbspt.forms.create({
      portalId: '123456',
      formId: '123456'
    });
  });
</script>

L'astuce prête à l'emploi ci-dessus est la meilleure approche lorsque vous ne pouvez pas modifier le code d'intégration existant sur chaque page. Le modèle hsFormsOnReady nécessite de modifier l'extrait d'intégration de chaque formulaire individuellement.

Code de formulaire HubSpot, la bonne méthode

Je ne suis pas un grand fan de l'implémentation d'astuces comme celle-ci (bien que j'aime les écrire). Parfois, elles sont nécessaires car il n'y a tout simplement pas assez de temps disponible pour réécrire un site web. Par conséquent, prenez toujours en compte PageSpeed avant de vous engager avec une application externe / un plugin etc. qui pourrait causer toutes sortes de problèmes. Si vous n'êtes pas sûr des implications sur PageSpeed, il suffit de demander à quelqu'un comme moi. Nous le savons :-)

La bonne méthode consiste à utiliser directement l'API HubSpot Forms API. Créez votre propre formulaire HTML, stylisez-le comme vous le souhaitez, et soumettez les données à HubSpot avec une simple requête POST :

fetch(
  'https://api.hsforms.com/submissions/v3/integration/submit/PORTAL_ID/FORM_ID',
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      fields: [
        { name: 'email', value: email },
        { name: 'firstname', value: firstName }
      ]
    })
  }
);

Zéro JavaScript de HubSpot. Zéro blocage du rendu. Intégration CRM complète. Le formulaire apparaît toujours dans votre tableau de bord HubSpot, déclenche des workflows et alimente votre base de données de contacts. Vous n'avez tout simplement pas besoin de 521 Ko de code HubSpot pour soumettre quelques champs.

Pour confirmer que votre correctif fonctionne réellement pour les vrais visiteurs, configurez le Real User Monitoring. Les scores de laboratoire vous indiquent que le formulaire ne bloque plus, mais les données de terrain vous disent si votre INP et votre LCP se sont réellement améliorés.

About the author

Arjen Karel is a web performance consultant and the creator of CoreDash, a Real User Monitoring platform that tracks Core Web Vitals data across hundreds of sites. He also built the Core Web Vitals Visualizer Chrome extension. He has helped clients achieve passing Core Web Vitals scores on over 925,000 mobile URLs.

The RUM tool I built for my own clients.

CoreDash is what I use to audit enterprise platforms. Under 1KB tracking script, EU hosted, no consent banner. AI with MCP support built in. The same tool, available to everyone.

Create Free Account
Différer les formulaires HubSpot : Corriger le blocage du rendu sans modifier les pagesCore Web Vitals Différer les formulaires HubSpot : Corriger le blocage du rendu sans modifier les pages