Adiar Formulários da HubSpot: Corrija o Render Blocking Sem Editar Páginas

Uma correção rápida para scripts de formulário da HubSpot que causam render-blocking

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

'Adiar formulários da HubSpot' em resumo

Os formulários da HubSpot são uma ótima maneira de integrar formulários diretamente ao seu CRM HubSpot. No HubSpot, você pode criar facilmente formulários e colocá-los diretamente em seu site com um pouco de código JavaScript.

Última revisão por Arjen Karel em março de 2026

Há apenas um pequeno problema. O HubSpot não se dá bem com os Core Web Vitals e o formulário da HubSpot deixará seu site mais lento.

Os formulários da HubSpot causam render blocking por padrão. O script do formulário (v2.js) tem cerca de 521 KB não compactado. Isso é quase a carga útil (payload) mediana inteira de JavaScript de uma página móvel, de acordo com o Web Almanac de 2025 (646 KB). Tudo isso apenas para um formulário.

Corrigir o PageSpeed Insights exigirá uma reescrita para cada página em que um formulário da HubSpot for exibido. Às vezes, isso não é uma opção imediata. Eu criei um substituto rápido para acelerar seus formulários sem precisar alterar nenhum código a nível de página.

HubSpot

Código do formulário da HubSpot, o método lento

O código padrão da HubSpot para colocar formulários em um site ficará assim:

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

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

Isso resultará em um aviso no Lighthouse 'Elimine os recursos de render blocking'. O formulário da HubSpot bloqueia a renderização da página por um segundo inteiro. De acordo com o Web Almanac de 2025, 87% das páginas ainda exibem recursos de render-blocking. O embed padrão da HubSpot é um dos piores infratores porque é carregado de forma síncrona sem nenhum atributo defer ou async.

render blocking hubspot forms

Sua primeira ideia pode ser usar defer no script da HubSpot. Isso não funcionará e gerará um erro porque o hbspt.forms.create() espera que o script da HubSpot esteja carregado. Vamos corrigir isso!

Código do formulário da HubSpot, a correção rápida

Às vezes, simplesmente não há tempo para vasculhar centenas de páginas e reescrever o código de cada formulário da HubSpot. É por isso que criei um substituto rápido para formulários da HubSpot mais rápidos e sem render blocking:

A ideia é simples. Os formulários são chamados invocando o hbspt.forms.create. Vamos capturar os formulários, esperar até que o código da HubSpot seja carregado em segundo plano e então executar o script do formulário.

<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ão se esqueça de reservar algum espaço para o formulário, pois ele não bloqueia mais a renderização e causará um Cumulative Layout Shift maior do que se você esquecesse de reservar algum espaço anteriormente. Defina um min-height no contêiner do formulário que corresponda à altura do formulário renderizado.

Alternativa: o padrão hsFormsOnReady

O v2.js da HubSpot também suporta uma fila de callback não documentada chamada hsFormsOnReady. Se você controla o código de embed diretamente, esta é uma opção mais limpa:

<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>

O hack de substituição acima é a melhor abordagem quando você não pode alterar o código de embed existente em todas as páginas. O padrão hsFormsOnReady exige a edição de cada snippet de embed do formulário individualmente.

Código do formulário da HubSpot, a maneira correta

Eu não sou um grande fã de implementar hacks como esse (embora goste de escrevê-los). Às vezes eles são necessários porque simplesmente não há tempo disponível suficiente para reescrever um site. Portanto, sempre leve o PageSpeed Insights em consideração antes de se comprometer com um aplicativo/plugin externo etc que pode causar todos os tipos de problemas. Se você não tem certeza sobre as implicações no PageSpeed Insights, basta perguntar a alguém como eu. Nós sabemos :-)

A maneira correta é usar a API de Formulários da HubSpot diretamente. Crie seu próprio formulário HTML, estilize-o como quiser e envie os dados para a HubSpot com uma simples solicitação 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 }
      ]
    })
  }
);

Zero JavaScript da HubSpot. Zero render blocking. Integração total com o CRM. O formulário ainda aparece em seu dashboard da HubSpot, aciona fluxos de trabalho e alimenta seu banco de dados de contatos. Você simplesmente não precisa de 521 KB de código da HubSpot para enviar alguns campos.

Para confirmar se sua correção realmente funciona para visitantes reais, configure o RUM. As pontuações de laboratório dizem que o formulário não está mais bloqueando, mas os dados de campo informam se seu INP e LCP realmente melhoraram.

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.

Seu site vai passar nos Core Web Vitals.

Mais de 500 mil páginas para grandes publishers europeus e plataformas de e-commerce. Escrevo os fixes e confirmo tudo com dados de campo.

Como eu trabalho
Adiar Formulários da HubSpot: Corrija o Render Blocking Sem Editar PáginasCore Web Vitals Adiar Formulários da HubSpot: Corrija o Render Blocking Sem Editar Páginas