Vá além dos formulários do criador

Vá além dos formulários do criador8 min de leitura

Limite do Netlify Forms: o que acontece nos 100 envios, e a saída

Planos legados da Netlify medem envios de formulário por site e fazem upgrade automático, e planos por créditos podem pausar o site; leve o formulário para um backend.

Preet SutharFundador, Ikiform

Nos planos legados da Netlify, cada site inclui 100 envios de formulário por mês, e passar disso sobe o site automaticamente para um nível pago de Forms. Nos planos por créditos, para contas criadas desde setembro de 2025, os formulários são grátis, mas um time gratuito que fica sem créditos tem todos os sites pausados, formulários incluídos. Levar o formulário para o Ikiform significa remover os atributos da Netlify e definir o action, em HTML simples ou em qualquer framework.

O que muda na Netlify

A Netlify não é um criador de sites; é um host com formulários embutidos. Isso define tanto o limite quanto a saída. Qual limite vale depende de quando a sua conta foi criada:

ContaO que a documentação da Netlify dizO que isso significa para um formulário movimentado
Planos legados, criados antes de 4 de setembro de 2025O Forms Level 0 inclui 100 envios e 10 MB de uploads por site por mês. Passar disso sobe o site para o Forms Level 1, com 1.000 envios, cobrado no fim do ciclo de cobrança. Além disso, pacotes de uso extra adicionam 500 por vezUma onda de spam pode levar um site a um nível pago sem ninguém decidir isso. No plano legado gratuito, atingir um limite pausa todos os sites da conta
Planos por créditos, criados desde entãoEnvios de formulário são grátis e ilimitados, sem níveisO formulário em si não custa nada. Mas quando um time gratuito usa os créditos mensais, a Netlify pausa todos os projetos dele, e projetos pausados não recebem envios de formulário

A própria documentação da Netlify deixa claro que o upgrade legado é automático e que você não pode voltar para baixo enquanto o uso estiver acima do nível inferior. Confira o tipo de plano do seu time e o uso de formulários do site no painel da Netlify antes de decidir qualquer coisa.

O segundo motivo pelo qual as pessoas migram não tem nada a ver com números. O Netlify Forms funciona lendo o seu HTML publicado:

  • Os formulários são encontrados no deploy. Um formulário renderizado por React, Vue ou Svelte não existe nesse HTML, então você mantém uma cópia estática oculta para o build encontrar e envia para ela com um campo form-name.
  • Com Next.js, o adapter OpenNext precisa dessa cópia como arquivo estático em public/, e o envio precisa ir para esse arquivo estático, não para uma página do Next.js. O build falha se data-netlify aparecer no código React sem essa cópia.
  • Os envios precisam ser urlencoded ou multipart. JSON não é aceito.
  • O formulário só funciona enquanto o site está publicado na Netlify. Trocar de host significa trocar de formulários.
Como o uso de formulários de um site legado da Netlify sobe num mês, e o que muda ao enviar ao IkiformPlano legado, um site, um mêsFormulário enviando ao IkiformLevel0100enviosincluídosenvio101spamcontatambémLevel11.000por mês,cobradopacotesextrasmais 500cadamesmapáginanaNetlifyendpointdoIkiformURL deactionsimplesNetlifyFormsnadaparacontarupgrade automáticoenvioComo o uso de formulários de um site legado da Netlify sobe num mês, e o que muda ao enviar ao IkiformPlano legado, um site, um mêsFormulário enviando ao IkiformLevel 0100 envios incluídosenvio 101spam conta tambémLevel 11.000 por mês, cobradopacotes extrasmais 500 cadamesma página na Netlifyendpoint do IkiformURL de action simplesNetlify Formsnada para contarupgrade automáticoenvio
  1. Num plano legado, um site começa o mês no Forms Level 0 com 100 envios incluídos.
  2. Chega o envio 101. A documentação de uso da Netlify descreve o uso do site, então uma rajada de spam pode ser o que o faz passar do limite.
  3. A Netlify sobe o site para o Forms Level 1, com 1.000 envios, e cobra no fim do ciclo.
  4. Além do Level 1, pacotes de uso extra adicionam 500 envios por vez.
  5. Com o formulário enviando ao Ikiform, a página continua na Netlify, mas o envio vai para o endpoint do Ikiform.
  6. O Netlify Forms nunca recebe o envio, então não há nada para contar nem para fazer upgrade.
A hospedagem continua na Netlify. Só o destino do formulário muda, e com ele a medição.

Migre o formulário, stack por stack

Antes de mudar qualquer código, crie um formulário no Ikiform para cada nome de formulário da Netlify e defina o Honeypot field dele como bot-field. Assim o input oculto que você já tem continua funcionando como honeypot, sem renomear nada. Escolha sua stack:

HTML simples na Netlify é o que exige menos mudança. Apague os atributos da Netlify e o input form-name, aponte o action para o endpoint e passe o caminho de agradecimento para _redirect como URL completa. O input bot-field continua como seu honeypot.

<form name="contact" method="POST" action="/thanks" data-netlify="true" netlify-honeypot="bot-field">
  <input type="hidden" name="form-name" value="contact" />
  <p hidden><input name="bot-field" /></p>
  <label>Email <input type="email" name="email" required /></label>
  <label>Topic
    <select name="topic">
      <option value="question">A question</option>
      <option value="bug">Something is broken</option>
      <option value="work">Working together</option>
    </select>
  </label>
  <label>Message <textarea name="message" required></textarea></label>
  <button type="submit">Send</button>
</form>
As versões TanStack Start e React Router enviam a partir do seu servidor. As versões do lado do servidor enviam com uma chave secreta, então o Ikiform ignora Allowed domains e a verificação humana. Todo envio passa a vir do IP do seu servidor, e o limite Standard de 5 por minuto por visitante conta todos os seus visitantes juntos. Escolha o limite de taxa Relaxed ou Custom para um formulário que você envia por um servidor, e mantenha IKIFORM_SECRET_KEY em variáveis de ambiente só do servidor.

Todas as versões mantêm os mesmos nomes de campo que a Netlify tinha, então os e-mails de notificação e as colunas do CSV parecem familiares. A comparação com o Netlify Forms tem o mapeamento completo de atributos, incluindo data-netlify-recaptcha e inputs de arquivo.

Deploy previews e domínios permitidos

A Netlify dá a cada pull request um endereço próprio, como deploy-preview-42--your-site.netlify.app. Isso não é subdomínio de your-site.netlify.app, então listar o endereço do seu site em Allowed domains não cobre os previews, e os envios dos previews caem no spam com origin_mismatch.

  • Adicione your-site.netlify.app e o seu domínio personalizado para produção.
  • Adicione um host de preview específico enquanto o testa, e depois remova.
  • Não adicione netlify.app sozinho. Qualquer site na Netlify poderia enviar ao seu formulário.
  • Ou aponte os previews para um segundo formulário do Ikiform sem domínios permitidos, por uma variável de ambiente, e mantenha a produção restrita.

Faça a virada sem perder envios

  1. Baixe os envios antigos de cada formulário como CSV na seção Forms do site. O Ikiform não tem importação.
  2. Publique o novo formulário num preview e envie um teste. Confira os nomes dos campos no painel do Ikiform.
  3. Faça o merge para produção e envie outro teste a partir do domínio de produção.
  4. Troque qualquer webhook de saída da Netlify por um webhook do Ikiform. A Netlify assina com um token JWS; o Ikiform usa headers do Standard Webhooks, então o seu verificador também muda.
  5. Quando nenhum envio tiver chegado à Netlify por alguns dias, desligue a detecção de formulários nas configurações de Forms do site.
A Netlify aceita upload de arquivos e roda o Akismet em todo envio. Upload de arquivos ainda não é suportado. Um envio com arquivo recebe 422 files_not_supported. Se um formulário precisa de arquivos, mantenha esse formulário no Netlify Forms e migre o resto.

Confira se funciona na Netlify

  1. Em Allowed domains do formulário, adicione o domínio do seu site, mais localhost enquanto desenvolve. Deixe vazio para aceitar envios de qualquer lugar.
  2. Publique um preview, adicione o host dele e envie o formulário a partir dele.
  3. Abra Submissions no painel. O novo envio está lá com todos os campos que você enviou.
  4. Confirme que os campos são email, topic e message, sem form-name e sem bot-field.
  5. Abra a aba Forms do site na Netlify e confirme que o teste não está lá.
  6. Envie uma vez com bot-field preenchido. Ele é armazenado como spam e não dispara nada.
  7. Confira a caixa de entrada de cada destinatário das notificações. Cada um recebe um e-mail com os campos, e Reply vai para quem enviou quando o formulário tem um campo email.

Pegadinhas

ProblemaO que fazer
Um campo form-name aparece no IkiformO input oculto form-name ainda está no formulário, ou o seu código ainda o define. Remova; o Ikiform identifica o formulário pela URL.
O build do Next.js falha mencionando formuláriosAinda há um atributo netlify ou data-netlify no seu código React. Remova junto com public/__forms.html.
Os previews enviam para o spamO host do preview não está em Allowed domains. Adicione enquanto testa, ou use um segundo formulário para os previews.
Todo envio é marcado como spam, até os reaisO Honeypot field ainda está como _gotcha enquanto o seu input é bot-field, ou o contrário. Faça os dois baterem.
422 files_not_supportedO formulário tem um <input type="file"> com um arquivo escolhido. Upload de arquivos ainda não é suportado; remova o input ou peça um link.
429 rate_limitedUm visitante enviou mais do que o limite de taxa do formulário permite. O Standard permite 5 por minuto por visitante. Espere o Retry-After, ou escolha Relaxed ou Custom para formulários que enviam a partir de um único IP compartilhado.

Perguntas

Travou em algum passo ou quer um guia para o seu caso? Envie um e-mail para hello@ikiform.com.