Guias

Guias18 min de leitura

Vá além dos formulários do seu criador de sites

Quando os formulários do Webflow, Netlify, Carrd ou Framer batem num limite ou não têm um recurso, mantenha o formulário que você desenhou e aponte para um backend de formulários.

Preet SutharFundador, Ikiform

Mantenha o formulário que o criador desenha e mude só para onde ele envia: uma action personalizada no Webflow, Send to URL no Carrd, um destino de webhook no Framer ou um action simples numa página hospedada na Netlify. O envio então vai para um backend de formulários que valida, filtra, armazena e encaminha cada envio, e os limites de envios e as restrições de plano do criador deixam de valer para ele. Antes, confira o que você perde, como upload de arquivos e a caixa de entrada do próprio criador.

Criadores de sites vêm com formulários porque todo site precisa de um. Eles são feitos para o primeiro formulário de contato, não para o décimo formulário nem para o milésimo envio. Uma hora você bate numa parede: um limite de envios, um recurso que exige um plano de que você não precisaria, um formulário que só funciona enquanto o site fica num único host, ou uma caixa de entrada que é o seu único registro de quem escreveu.

Você não precisa refazer o formulário para passar disso. Todo criador de sites relevante consegue enviar um formulário para outro lugar. Este guia explica o que muda quando isso acontece, como fazer em cada criador sem perder nenhum envio e quando ficar nos formulários do criador é a melhor escolha.

O que muda quando o formulário sai do criador

Um formulário de criador de sites tem duas metades: a parte que você vê, que o criador desenha, e a parte que recebe o envio. Migrar para um backend de formulários troca só a segunda metade. Seu layout, fontes e estilos ficam onde estão.

Um formulário de criador de sites antes e depois de enviar a um backend de formuláriosAntes: o criador cuida do envioDepois: o criador só desenha o formulárioseu formuláriodesenhado nocriadorhandler docriadorconta no limite doplanocaixa docriador oue-mailexportar à mãoo mesmoformuláriomesmo layout eestilosIkiformvalida, filtra spam,armazenae-mail,webhooks, CSVsua equipe e suasferramentasenvioURL da actionUm formulário de criador de sites antes e depois de enviar a um backend de formuláriosAntes: o criador cuida do envioDepois: o criador só desenha o formulárioseu formuláriodesenhado no criadorhandler do criadorconta no limite do planocaixa do criador ou e-mailexportar à mãoo mesmo formuláriomesmo layout e estilosIkiformvalida, filtra spam, armazenae-mail, webhooks, CSVsua equipe e suas ferramentasenvioURL da action
  1. Antes: um visitante envia o formulário, e o handler de formulários do próprio criador recebe o envio.
  2. O criador conta o envio no limite do plano e o guarda na caixa de entrada dele ou o manda por e-mail.
  3. Depois: o mesmo formulário, com o mesmo design, envia ao endpoint do Ikiform.
  4. O Ikiform valida os campos, dá uma pontuação de spam ao envio e o armazena.
  5. O Ikiform avisa sua equipe por e-mail, envia webhooks assinados e mantém cada envio pesquisável e exportável como CSV.
Só o destino muda. O criador nunca vê o envio, então a contagem de envios e os recursos de formulário dele deixam de valer para esse formulário.

Os limites em que as pessoas esbarram

Cada criador traça a linha num lugar diferente. A tabela resume o que cada um diz nas próprias páginas de preços e de ajuda em outubro de 2026. Planos mudam, então confira a página da variante indicada para detalhes e o site do criador antes de decidir.

CriadorO que os formulários dele fazemOnde as pessoas batem na paredeA saída
WebflowArmazena envios, manda notificações por e-mail e exporta CSVO plano gratuito Starter permite 50 envios de formulário por site no total, e a contagem não zera. Sites exportados não têm nenhum tratamento de formuláriosUma action personalizada nas configurações do Form Block. Funciona no Starter também
NetlifyDetecta formulários com data-netlify no deploy e armazena os enviosPlanos legados medem envios por site por mês e sobem o site para um nível pago de Forms quando ele passa do limite. Os formulários só funcionam em sites que a Netlify buildaRemova os atributos da Netlify e defina o action do formulário
CarrdFormulários de contato mandam e-mail para você; formulários de inscrição adicionam pessoas a uma ferramenta de e-mailQualquer formulário exige o Pro Standard. Formulários personalizados, incluindo Send to URL, exigem o Pro PlusSend to URL no Pro Plus, ou um Embed no Pro Standard
FramerEnvia cada envio para e-mail, Google Sheets ou um webhookPraticamente sem limite. As equipes querem um registro armazenado com status de spam, validação, notificações e mais de um destinoAdicione o endpoint como destino de webhook, ou use um code component

Repare na linha do Framer. O Framer já tem webhooks, então sair dos formulários dele é uma escolha sobre o que acontece depois do envio, não um jeito de contornar um limite. A página do Framer é honesta sobre quando você não precisa do Ikiform.

Quatro jeitos de passar do limite

Um backend de formulários não é a única resposta, e às vezes não é a melhor.

AbordagemBom emContras
Fazer upgrade do plano do criadorZero migração. Os planos pagos de site do Webflow listam envios ilimitados; os planos por créditos da Netlify deixam os formulários grátisVocê paga o plano inteiro para tirar um limite. O formulário continua preso àquele criador e àquele host
Incorporar um criador de formulários, como Tally ou TypeformTipos de pergunta ricos, lógica e upload de arquivos sem códigoUm iframe com visual e scripts próprios. O design que você fez no criador se perde, e os limites passam para os planos desse produto
Escrever seu próprio handler, como uma função serverlessControle total, qualquer lógica que você quiserAgora você cuida de filtro de spam, limites de taxa, armazenamento, notificações e novas tentativas, num site para o qual você escolheu um criador justamente para não rodar código
Apontar o formulário para um backend de formulários, como o IkiformMantém seu design. Filtro de spam, armazenamento, e-mail para a equipe, webhooks assinados e exportação CSV, iguais em qualquer criadorAinda sem upload de arquivos, sem caixa de entrada do criador e sem integrações montadas com cliques dentro do criador. Alguns criadores exigem um plano pago para enviar a outro lugar

Faça upgrade quando os formulários do criador já fazem tudo de que você precisa e o plano vale a pena por outros motivos também. Migre para um backend de formulários quando o limite é do próprio formulário: você quer um só lugar para envios de vários sites, talvez troque de criador, ou os envios precisam chegar a outras ferramentas de forma confiável. A comparação com o Netlify Forms analisa essa troca em detalhe para um host.

O que você perde

Quando um formulário envia para outro lugar, o criador o trata como um formulário HTML simples. Os recursos de formulário dele deixam de valer para esse formulário. Conheça a lista antes de trocar:

  • A caixa de entrada do criador. Novos envios aparecem no painel do Ikiform, não no do criador. Os antigos ficam onde estavam.
  • A mensagem de sucesso do criador, às vezes. Os blocos de sucesso e erro do Webflow só rodam quando o Webflow cuida do envio. O modo AJAX do Carrd e o destino de webhook do Framer mantêm os deles.
  • Upload de arquivos. Upload de arquivos ainda não é suportado. Um envio com arquivo recebe 422 files_not_supported. Os formulários personalizados do Webflow, da Netlify e do Carrd aceitam arquivos, então confira isso primeiro.
  • Integrações por cliques. Não há integrações de um clique. Toda ferramenta é alcançada por um webhook assinado, diretamente ou por uma ferramenta de automação como Zapier ou n8n.
  • O filtro de spam do criador. O honeypot, a pontuação de spam, os limites de taxa e a verificação humana opcional do Ikiform assumem. Um elemento de reCAPTCHA adicionado no criador não faz nada com um destino personalizado; remova-o.
Se um formulário precisa de upload de arquivos, mantenha esse formulário no criador e migre o resto. Nada obriga todos os formulários de um site a usar o mesmo backend.

Aponte cada criador para o Ikiform

Crie um formulário no painel do Ikiform e copie o endpoint dele. Depois use a configuração do próprio criador para um destino externo. Os guias da documentação para Webflow, Carrd e Framer têm o caminho completo de cliques; aqui está o que mudar e a única coisa que a maioria das pessoas deixa passar.

Webflow

  1. Selecione o formulário dentro do Form Block e abra Settings.
  2. Em Send to, escolha uma action personalizada, cole o endpoint em Action e defina Method como POST.
  3. Renomeie o Name de cada input para um id em minúsculas, como email. O Webflow preenche os nomes a partir dos rótulos, então senão você ganharia Email e Field 2.
  4. Publique e envie a partir do domínio webflow.io. Actions personalizadas não rodam no Designer.

Fácil de deixar passar: o bloco de sucesso do Webflow para de aparecer, porque o Webflow não vê mais o resultado. Defina Redirect after submit no Ikiform, ou adicione o script da documentação do Webflow. Detalhes e o limite do Starter estão na página do limite do Webflow.

Netlify

  1. Remova data-netlify ou netlify, netlify-honeypot e qualquer input oculto form-name.
  2. Defina o action do formulário como o endpoint e o method como post.
  3. Passe o antigo caminho de agradecimento para Redirect after submit, como uma URL https: completa.
  4. Em formulários com JavaScript, apague a cópia estática oculta que você mantinha para o build da Netlify e envie ao endpoint em vez de ao seu próprio site.

Fácil de deixar passar: os deploy previews ficam nos próprios subdomínios netlify.app, então o seu domínio de produção em Allowed domains não os cobre. A página da Netlify tem o código para cada framework.

Carrd

  1. No Pro Plus, adicione um Form, defina Type como Custom, depois Send to URL, e cole o endpoint.
  2. Defina Method como AJAX e Format como Default, para o Carrd manter o comportamento de On Success e On Failure.
  3. Dê a cada campo um ID ou Submitted ID: name, email, message.
  4. No Pro Standard, cole um formulário HTML num elemento Embed.

Fácil de deixar passar: o formato XML falha com 415, e um campo File falha com 422 files_not_supported. Veja a página do Carrd.

Framer

  1. Dê a cada input um nome em minúsculas. O Framer envia os nomes como chaves JSON.
  2. Selecione o formulário e, ao lado de Send To, escolha Add… > Webhook, depois cole o endpoint.
  3. No Ikiform, deixe Allowed domains vazio e o Spam check desligado, e escolha o limite de taxa Relaxed.

Fácil de deixar passar: o Framer envia dos servidores dele, não do navegador do visitante, então as verificações de origem e os limites de taxa por visitante não funcionam do jeito de sempre. A página do Framer explica a troca e um relay assinado que resolve isso.

Squarespace, Wix, WordPress e os demais

Criadores sem configuração de destino externo costumam aceitar um embed HTML. Cole um formulário como o abaixo num bloco de código ou de embed. Ele envia com fetch para os visitantes ficarem na página, mostra o primeiro erro de campo do Ikiform e volta para um envio normal se o script não rodar.

Bloco de embed ou de código
<form id="enquiry" action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post" target="_top">
  <label>Name <input name="name" autocomplete="name" required maxlength="120"></label>
  <label>Email <input name="email" type="email" autocomplete="email" required></label>
  <label>Budget
    <select name="budget">
      <option value="">Not sure yet</option>
      <option value="under_5k">Under $5k</option>
      <option value="5k_20k">$5k to $20k</option>
      <option value="over_20k">Over $20k</option>
    </select>
  </label>
  <label>What are you planning? <textarea name="message" rows="5" required minlength="20"></textarea></label>
  <input type="hidden" name="source" value="builder-embed">
  <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden>
  <p id="enquiry-status" role="status" hidden></p>
  <button type="submit">Send enquiry</button>
</form>
<script>
  document.getElementById("enquiry").addEventListener("submit", async (event) => {
    event.preventDefault();
    const form = event.currentTarget;
    const status = document.getElementById("enquiry-status");
    const button = form.querySelector("button");
    button.disabled = true;
    try {
      const response = await fetch(form.action, {
        method: "POST",
        headers: { Accept: "application/json" },
        body: new FormData(form),
      });
      const result = await response.json();
      if (result.ok) {
        form.replaceChildren(Object.assign(document.createElement("p"), {
          textContent: "Thanks. We reply within two working days.",
        }));
        return;
      }
      const fields = result.error.fields ?? {};
      const first = Object.keys(fields)[0];
      status.textContent = first ? `${first}: ${fields[first][0]}` : result.error.message;
    } catch {
      status.textContent = "Couldn't send. Check your connection and try again.";
    }
    status.hidden = false;
    button.disabled = false;
  });
</script>
  • target="_top" importa quando o criador coloca os embeds dentro de um iframe. Sem ele, um envio simples carregaria a página de agradecimento dentro do frame.
  • O input oculto _gotcha é o honeypot. As pessoas não o veem; bots que preenchem todo input se marcam como spam.
  • O input oculto source registra de qual criador ou página veio o contato, o que ajuda quando vários sites enviam para um formulário.
  • O script envia com fetch, então deixe o Spam check desligado para este formulário, ou remova o script e deixe o navegador enviar normalmente, o que roda a verificação sem código extra.

Os guias do Squarespace, do Wix e do WordPress mostram onde cada criador deixa você colar código, e o embed para criadores de sites tem uma versão estilizada.

Quem faz o envio em cada criador, e o que isso significa para os domínios permitidosWebflowactionpersonalizadanavegador dovisitanteliste seusdomíniosCarrdSend to URLou Embednavegador dovisitanteliste seusdomíniosNetlifyactionsimplesnavegador dovisitantedomínios epreviewsFramerdestino dewebhookservidoresdo Framerdeixe vaziocriadorconfiguraçãoquem enviadomíniospermitidosQuem faz o envio em cada criador, e o que isso significa para os domínios permitidosWebflowactionpersonalizadanavegadordovisitantelisteseusdomíniosCarrdSendtoURLouEmbednavegadordovisitantelisteseusdomíniosNetlifyactionsimplesnavegadordovisitantedomíniosepreviewsFramerdestinodewebhookservidoresdoFramerdeixevaziocriadorconfiguraçãoquemenviadomíniospermitidos
  1. A action personalizada do Webflow faz o navegador do visitante enviar ao Ikiform, então liste seus domínios em Allowed domains.
  2. O Send to URL e o Embed do Carrd também enviam do navegador, então os domínios permitidos funcionam como sempre.
  3. Um formulário hospedado na Netlify com uma action simples envia do navegador. Liste o domínio de produção e qualquer domínio de preview em que você teste.
  4. O destino de webhook do Framer envia dos servidores do Framer sem header Origin, então deixe Allowed domains vazio, ou todo envio será tratado como vindo do site errado.
Três criadores fazem o envio a partir do navegador do visitante. O webhook do Framer envia a partir do Framer, o que muda como as verificações de spam e os limites de taxa o enxergam.

Os nomes dos campos são a migração de verdade

A maior parte do trabalho ao migrar um formulário de criador de sites é dar nomes. O Ikiform armazena os nomes que o formulário enviar, e cada criador gera nomes do seu próprio jeito:

CriadorDe onde vem o nomeO que você recebe se não definir
WebflowA configuração Name de cada inputO rótulo, como Name, Email ou Field 2
CarrdSubmitted ID, depois IDUm ID gerado a partir do rótulo
FramerO nome de cada inputO nome que o input tinha quando você o adicionou
NetlifyO atributo name no seu HTMLSeus próprios nomes, geralmente já estão bons

Renomeie para ids curtos em minúsculas antes de publicar: name, email, budget, message. Os e-mails de notificação e as colunas do CSV ficam mais legíveis, e um campo email vira o endereço de resposta de cada notificação. Depois que chegar um envio real, adicione campos ao formulário do Ikiform para o servidor exigir tipos e tamanhos. Teste o formulário de contato acima com a definição dele:

Prévia

Roda o validador do Ikiform no seu navegador. Nada é enviado.

Os mesmos campos do embed acima. Cole a definição na aba Fields do formulário, e o Ikiform confere cada envio com ela, não importa como o criador o enviou.
Defina os campos depois de ver um envio real, não antes. Os criadores adicionam campos que você não pediu, como os campos UTM do Carrd, e uma definição que não os lista transforma todo envio num 422 com erro de campo desconhecido.

Domínios de staging e domínios permitidos

Os criadores publicam num endereço de staging antes do seu próprio domínio. Envios de um domínio que não está em Allowed domains do formulário são armazenados como spam, ou recusados com Reject. Liste todo endereço do qual você vai testar:

CriadorEndereço de stagingAdicione
Webflowyour-site.webflow.ioEsse host, mais o seu domínio
Carrdyour-site.carrd.co, ou crd.co no ProEsse host, mais o seu domínio
Netlifyyour-site.netlify.app, e previews como deploy-preview-42--your-site.netlify.appCada host em que você testa. Um preview não é subdomínio de your-site.netlify.app
Framer, webhookNão se aplicaNada. Deixe a lista vazia

Não adicione um host compartilhado inteiro como webflow.io ou netlify.app. Isso deixaria qualquer site desse host enviar ao seu formulário. Subdomínios de um domínio listado já são permitidos, então example.com cobre www.example.com.

Leve seus envios antigos junto

O Ikiform não tem importação, então os envios antigos ficam onde estavam. Exporte-os antes de trocar, e antes que uma mudança de plano possa removê-los:

  • Webflow: baixe os envios de cada formulário como CSV nas configurações de Forms do site.
  • Netlify: baixe os envios de cada formulário como CSV na seção Forms do site.
  • Carrd: formulários de contato e de e-mail personalizados entregam cada mensagem por e-mail, então a sua caixa de entrada é o registro.
  • Framer: a caixa de e-mail ou a planilha do Google Sheets para onde você mandava os envios é o registro.

Para manter um só histórico, coloque a exportação antiga e uma exportação CSV do Ikiform em duas abas de uma mesma planilha do Google Sheets e empilhe as duas. Esta fórmula pega as colunas de data, nome, e-mail e mensagem de cada uma, das mais novas para as mais antigas. Ajuste as letras das colunas para bater com os seus arquivos:

Google Sheets
=SORT({
  Webflow!A2:A, Webflow!C2:C, Webflow!D2:D, Webflow!E2:E;
  Ikiform!B2:B, Ikiform!F2:F, Ikiform!G2:G, Ikiform!H2:H
}, 1, FALSE)

Uma exportação do Ikiform começa com id, created_at, form e status, depois uma coluna por campo, e comporta até 100.000 linhas por arquivo.

Troque sem perder nenhum envio

  1. Crie o formulário no Ikiform, adicione os destinatários das notificações e adicione seus domínios de staging e de produção em Allowed domains.
  2. Mude o destino no site de staging e faça um teste real pelo celular e pelo notebook.
  3. Confira os nomes dos campos do envio no painel. Renomeie o que foi gerado automaticamente, publique o staging de novo e teste outra vez.
  4. Publique no domínio de produção num horário tranquilo e envie mais um teste.
  5. Deixe a notificação do criador ligada por uma semana se ele ainda receber algo, como um segundo formulário que você não migrou, e então desligue.
  6. Exporte os envios antigos do criador e guarde o arquivo junto com o novo histórico.

Na primeira semana, confira o filtro Spam no painel do Ikiform a cada um ou dois dias. Um contato real armazenado como spam recebe a mesma resposta de sucesso que um envio normal, então o visitante nunca fica sabendo. Marque como não spam, e o e-mail e os webhooks dele saem nessa hora. Os e-mails de notificação vão para até 10 destinatários confirmados.

Escolha o seu caso

Cada criador tem o seu limite, a sua configuração de destino externo e as suas pegadinhas. Estas páginas tratam de um criador por vez.

Confira se funciona

Faça isto primeiro no staging, e depois uma vez no site de produção. O Ikiform não tem plano gratuito. Testar é grátis: um workspace sem plano aceita 50 envios de teste por mês vindos de localhost. Para entrar no ar, escolha o Pro a partir de US$ 6/mês para 500 envios, ou pague uma vez: 10.000 envios por US$ 49 ou 50.000 envios por US$ 149, com créditos que nunca expiram. Veja os preços.

  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 no domínio de staging do criador. Destinos personalizados não rodam no editor nem no designer.
  3. Preencha o formulário na sua página e envie. Você cai na sua página de agradecimento, ou na hospedada pelo Ikiform.
  4. Abra Submissions no painel. O novo envio está lá com todos os campos que você enviou.
  5. Leia os nomes dos campos nesse envio. Eles devem ser os seus ids em minúsculas, não rótulos nem nomes gerados.
  6. 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.
  7. Envie com o honeypot preenchido, _gotcha=bot. Ele ainda recebe uma resposta de sucesso, mas o envio é armazenado como spam e não dispara e-mail nem webhook.
  8. Não chegou nada? Mude o filtro de status do painel para Spam. Spam recebe a mesma resposta de sucesso de um envio real.
  9. Envie mais uma vez a partir do seu domínio de produção depois de publicar lá.

Solução de problemas

ProblemaO que fazer
Uma resposta 404 not_found depois de enviar um formulário do WebflowO Method está como GET, então o navegador abriu o endpoint como um link. Defina como POST e publique de novo.
O Carrd mostra On Failure em todo envioO Format está como XML (415), há um campo File (422), ou os IDs dos campos não batem com uma definição de campos. Use Default, remova o campo de arquivo e ajuste os IDs.
O Framer acusa entregas de webhook com falhaO Ikiform recusou o envio. Limpe Allowed domains, desligue o Spam check para esse formulário e faça os nomes dos inputs baterem com os seus campos.
A Netlify ainda mostra o formulário na aba FormsUm deploy antigo ou uma cópia estática do formulário ainda tem data-netlify. Remova em todo lugar e faça o deploy de novo.
403 origin_not_allowed, ou todo envio cai no spamO domínio da página não está em Allowed domains do formulário. Adicione-o, mais localhost para testes locais. Subdomínios de um domínio listado são permitidos.
422 validation_failedO envio não corresponde à definição de campos do formulário. error.fields aponta cada campo e o motivo. Faça o name do input bater com o id do campo.
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.
O envio está no painel, mas nenhum e-mail ou webhook chegouEle foi armazenado como spam. Spam não envia nada. Abra-o no filtro Spam para ver os motivos e marque-o como não spam para enviar o e-mail e os webhooks dele.

Perguntas

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