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.
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.
- Antes: um visitante envia o formulário, e o handler de formulários do próprio criador recebe o envio.
- O criador conta o envio no limite do plano e o guarda na caixa de entrada dele ou o manda por e-mail.
- Depois: o mesmo formulário, com o mesmo design, envia ao endpoint do Ikiform.
- O Ikiform valida os campos, dá uma pontuação de spam ao envio e o armazena.
- O Ikiform avisa sua equipe por e-mail, envia webhooks assinados e mantém cada envio pesquisável e exportável como CSV.
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.
| Criador | O que os formulários dele fazem | Onde as pessoas batem na parede | A saída |
|---|---|---|---|
| Webflow | Armazena envios, manda notificações por e-mail e exporta CSV | O 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ários | Uma action personalizada nas configurações do Form Block. Funciona no Starter também |
| Netlify | Detecta formulários com data-netlify no deploy e armazena os envios | Planos 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 builda | Remova os atributos da Netlify e defina o action do formulário |
| Carrd | Formulários de contato mandam e-mail para você; formulários de inscrição adicionam pessoas a uma ferramenta de e-mail | Qualquer formulário exige o Pro Standard. Formulários personalizados, incluindo Send to URL, exigem o Pro Plus | Send to URL no Pro Plus, ou um Embed no Pro Standard |
| Framer | Envia cada envio para e-mail, Google Sheets ou um webhook | Praticamente sem limite. As equipes querem um registro armazenado com status de spam, validação, notificações e mais de um destino | Adicione 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.
| Abordagem | Bom em | Contras |
|---|---|---|
| Fazer upgrade do plano do criador | Zero migração. Os planos pagos de site do Webflow listam envios ilimitados; os planos por créditos da Netlify deixam os formulários grátis | Você 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 Typeform | Tipos de pergunta ricos, lógica e upload de arquivos sem código | Um 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 serverless | Controle total, qualquer lógica que você quiser | Agora 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 Ikiform | Mantém seu design. Filtro de spam, armazenamento, e-mail para a equipe, webhooks assinados e exportação CSV, iguais em qualquer criador | Ainda 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.
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
- Selecione o formulário dentro do Form Block e abra Settings.
- Em Send to, escolha uma action personalizada, cole o endpoint em Action e defina Method como POST.
- 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ê ganhariaEmaileField 2. - 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
- Remova
data-netlifyounetlify,netlify-honeypote qualquer input ocultoform-name. - Defina o
actiondo formulário como o endpoint e omethodcomopost. - Passe o antigo caminho de agradecimento para Redirect after submit, como uma URL
https:completa. - 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
- No Pro Plus, adicione um Form, defina Type como Custom, depois Send to URL, e cole o endpoint.
- Defina Method como AJAX e Format como Default, para o Carrd manter o comportamento de On Success e On Failure.
- Dê a cada campo um ID ou Submitted ID:
name,email,message. - 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
- Dê a cada input um nome em minúsculas. O Framer envia os nomes como chaves JSON.
- Selecione o formulário e, ao lado de Send To, escolha Add… > Webhook, depois cole o endpoint.
- 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.
<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
sourceregistra 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.
- A action personalizada do Webflow faz o navegador do visitante enviar ao Ikiform, então liste seus domínios em Allowed domains.
- O Send to URL e o Embed do Carrd também enviam do navegador, então os domínios permitidos funcionam como sempre.
- 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.
- 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.
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:
| Criador | De onde vem o nome | O que você recebe se não definir |
|---|---|---|
| Webflow | A configuração Name de cada input | O rótulo, como Name, Email ou Field 2 |
| Carrd | Submitted ID, depois ID | Um ID gerado a partir do rótulo |
| Framer | O nome de cada input | O nome que o input tinha quando você o adicionou |
| Netlify | O atributo name no seu HTML | Seus 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.
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:
| Criador | Endereço de staging | Adicione |
|---|---|---|
| Webflow | your-site.webflow.io | Esse host, mais o seu domínio |
| Carrd | your-site.carrd.co, ou crd.co no Pro | Esse host, mais o seu domínio |
| Netlify | your-site.netlify.app, e previews como deploy-preview-42--your-site.netlify.app | Cada host em que você testa. Um preview não é subdomínio de your-site.netlify.app |
| Framer, webhook | Não se aplica | Nada. 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:
=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
- 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.
- Mude o destino no site de staging e faça um teste real pelo celular e pelo notebook.
- Confira os nomes dos campos do envio no painel. Renomeie o que foi gerado automaticamente, publique o staging de novo e teste outra vez.
- Publique no domínio de produção num horário tranquilo e envie mais um teste.
- 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.
- 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.
- Limite de envios do WebflowO plano gratuito Starter do Webflow para de coletar após 50 envios de formulário por site e sites exportados não coletam nada; aponte o Form Block para o Ikiform.
- Limite do Netlify FormsPlanos 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.
- Formulários do CarrdO formulário de contato do Carrd só manda e-mail e formulários personalizados exigem o Pro Plus: use Send to URL no Plus ou um embed HTML no Standard para guardar cada envio.
- Formulários do FramerOs formulários do Framer já enviam para e-mail, Sheets ou um webhook; adicione o Ikiform como webhook para envios armazenados e filtrados, alertas à equipe e mais destinos.
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.
- Em Allowed domains do formulário, adicione o domínio do seu site, mais
localhostenquanto desenvolve. Deixe vazio para aceitar envios de qualquer lugar. - Publique no domínio de staging do criador. Destinos personalizados não rodam no editor nem no designer.
- Preencha o formulário na sua página e envie. Você cai na sua página de agradecimento, ou na hospedada pelo Ikiform.
- Abra Submissions no painel. O novo envio está lá com todos os campos que você enviou.
- Leia os nomes dos campos nesse envio. Eles devem ser os seus ids em minúsculas, não rótulos nem nomes gerados.
- 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. - 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. - Não chegou nada? Mude o filtro de status do painel para Spam. Spam recebe a mesma resposta de sucesso de um envio real.
- Envie mais uma vez a partir do seu domínio de produção depois de publicar lá.
Solução de problemas
| Problema | O que fazer |
|---|---|
Uma resposta 404 not_found depois de enviar um formulário do Webflow | O 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 envio | O 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 falha | O 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 Forms | Um 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 spam | O 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_failed | O 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_supported | O 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 chegou | Ele 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
Um formulário com action personalizada envia direto para a URL que você definiu, então o Webflow nunca o processa e ele não aparece entre os envios de formulário do Webflow. O limite do Starter vale para os formulários que o próprio Webflow processa.
Sim. Todos os criadores deste guia continuam desenhando o formulário. Você muda só o destino: uma action personalizada no Webflow, Send to URL no Carrd, um webhook no Framer ou o atributo action numa página hospedada na Netlify.
Sim. Cada formulário tem o seu próprio destino. Uma divisão comum é manter no criador um formulário com upload de arquivos e migrar os formulários de contato, de orçamento e de inscrição para o Ikiform.
Não, o Ikiform não tem importação. Exporte os envios antigos como CSV no criador e guarde ao lado da exportação CSV do Ikiform, ou empilhe os dois numa planilha.
No Carrd com AJAX e no webhook do Framer, sim. No Webflow, o bloco de sucesso para de aparecer a menos que você adicione um script curto; caso contrário, defina Redirect after submit para a sua própria página de agradecimento. Um formulário HTML simples cai na página de agradecimento do Ikiform ou no seu redirecionamento.
Ainda não. Um envio que contém um arquivo é recusado com 422 files_not_supported. Peça um link para o arquivo, como a URL de um drive compartilhado.
Não, não há plano gratuito. Testar é grátis: você pode enviar 50 envios de teste por mês a partir de localhost antes de pagar. Para entrar no ar, o Pro começa em US$ 6/mês para 500 envios, ou você pode pagar uma vez 10.000 envios por US$ 49 ou 50.000 envios por US$ 149, com créditos que nunca expiram.
Travou em algum passo ou quer um guia para o seu caso? Envie um e-mail para hello@ikiform.com.