PageSpeed hack: defer hubspot formulieren zonder je pagina te bewerken

Weg met die render blocking HubSpot scripts

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2024-11-27

'Defer HubSpot formulieren' in het kort

HubSpot formulieren zijn een geweldige manier om formulieren direct in je HubSpot CRM te integreren. In HubSpot kun je gemakkelijk formulieren maken en ze direct in je website plaatsen met wat JavaScript code

Er is slechts één klein probleem. HubSpot houdt niet van de Core Web Vitals en het HubSpot formulier zal je website vertragen.

HubSpot formulieren zijn standaard render blocking. Het fixen van de PageSpeed vereist een rewrite voor elke pagina waarop een HubSpot formulier verschijnt.

Soms is dat geen onmiddellijke optie. Ik heb een drop-in vervanging gemaakt om je formulieren te versnellen zonder enige code op paginaniveau te hoeven wijzigen.

HubSpot

HubSpot formulier code, de trage methode

De standaard HubSpot code voor het plaatsen van formulieren op een website ziet er zo uit:

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

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

Dit resulteert in een Lighthouse waarschuwing 'Eliminate render blocking resources'. Het HubSpot formulier blokkeert het renderen van de pagina gedurende een volle seconde.

render blocking hubspot formulieren

Je eerste idee is misschien om het HubSpot script uit te stellen. Dit werkt niet en zal een foutmelding geven omdat hbspt.forms.create() verwacht dat het HubSpot script geladen is. Laten we dit oplossen!

HubSpot formulier code, de snelle fix

Soms is er gewoon geen tijd om door honderden pagina's te spitten en de code voor elk HubSpot formulier te herschrijven. Daarom heb ik een drop-in vervanging gemaakt voor snellere, niet-render-blocking HubSpot formulieren:

Het idee is simpel. Formulieren worden aangeroepen door hbspt.forms.create aan te roepen. Laten we de formulieren opvangen, wachten totdat de HubSpot code op de achtergrond laadt en dan het formulier script uitvoeren.

<script>
// override the hbspt functionality while hubspot is loading
var hbspt = {
   //push form to hubcache queue
   forms:{create:function(c){hubspot.forms.push(c)}},
};

// cache hubspot forms here
var hubcache = {
        forms:[],
        letsgo:function(){
            for (var i in hubspot.forms){
              //hubspot is now loaded
              hbspt.forms.create(hubcache.forms[i]);
} } } </script> <script type="text/javascript" defer src="//js.hsforms.net/forms/v2.js" onload="hubcache.letsgo()"> </script>

Vergeet niet wat ruimte te reserveren voor het formulier omdat het het renderen niet meer blokkeert en een grotere Layout Shift (CLS) zal veroorzaken dan wanneer je eerder vergat wat ruimte te reserveren.

HubSpot formulier code, de juiste manier

Ik ben geen grote fan van het implementeren van hacks zoals deze (hoewel ik ze graag schrijf). Soms zijn ze noodzakelijk omdat er gewoon niet genoeg tijd beschikbaar is om een website te herschrijven. Denk daarom altijd na over PageSpeed voordat je je verbindt aan een externe app/plugin enz. die allerlei problemen kan veroorzaken. Als je onzeker bent over de PageSpeed gevolgen, vraag het dan gewoon aan iemand zoals ik. Wij weten het :-)

De juiste manier is om de HubSpot API () voor formulieren te gebruiken. Maak gewoon je eigen formulier zoals je altijd doet en verzend het formulier naar

Performance degrades unless you guard it.

I do not just fix the metrics. I set up the monitoring, the budgets, and the processes so your team keeps them green after I leave.

Start the Engagement
PageSpeed hack: defer hubspot formulieren zonder je pagina te bewerkenCore Web Vitals PageSpeed hack: defer hubspot formulieren zonder je pagina te bewerken