Feito com Chinaski

Adicionar um Formulário de Contato

Um formulário de contato no Chinaski começa com um item de formulário e um bloco. Este guia cobre criar o formulário, colocá-lo numa página e o que acontece depois que um visitante envia.

1. Crie o formulário

Em Forms na sidebar de admin, crie um formulário novo: um nome legível por humanos mais um slug que as referências de embed e da API usam. Adicione campos ao formulário, em qualquer mistura de:

  • text, email, tel, textarea
  • select, radio, checkboxes, checkbox
  • address (um campo composto com sub-entradas de rua, cidade, estado, postal/país)
  • upload de arquivo

Cada campo tem um label (mostrado aos visitantes), uma largura de exibição editável (full ou half da linha) e exibição condicional opcional: visível apenas quando o valor de outro campo corresponde. Os nomes de campo são sanitizados automaticamente para letras minúsculas/dígitos/underscores. Campos obrigatórios, placeholders e as opções separadas por linha nova de um dropdown são configurações por campo.

2. Ponha-o numa página

Solte um bloco de formulário em qualquer corpo de página ou post e aponte-o ao slug do seu formulário. O bloco renderiza o formulário real: os posts entregam os dados ao endpoint de submissão /forms/<slug> do CMS, automaticamente encaminhado na config de servidor padrão (o único caminho dinâmico, como descrito na discussão da arquitetura de site estático).

3. Configure as notificações

  • notify_email: endereços de e-mail separados por vírgula que recebem cada submissão. O e-mail de notificação de admin lista o valor de cada campo, com endereço IP incluído, a menos que a opção de privacidade o desligue.
  • reply_to_field: nomeie o campo de e-mail cujo valor se torna o Reply-To da notificação, para que os respondentes respondam diretamente ao visitante.
  • thank_you_url: redirecionamento externo seguro opcional após a submissão; quando não definido, vale o conteúdo de resposta fornecido no formulário. O texto de resposta padrão é "Thank you. Your submission has been received."

Ajuste também o label do botão de envio, o portão antispam Turnstile por formulário, os países bloqueados separados por vírgula e/ou a chave de privacidade store_ip (que não armazena nenhum endereço IP se desabilitada).

4. Antispam e limites

  • Rate limiting por IP: no máximo cinco submissões por formulário por IP por hora; 30 por IP entre todos os formulários combinados. Violá-lo rende "Too many submissions, please try again later" após um pequeno atraso, com um 429 do servidor.
  • Verificação do Cloudflare Turnstile quando uma chave de Turnstile do site está presente e o formulário aderiu (o padrão); vem ligado por padrão, então use turnstile_enabled=0 em testes sem captcha.
  • Bloqueio por país: com os códigos que você digitar, enviar de regiões bloqueadas retorna "Submissions from your region are not accepted".
  • Sinais de privacidade: visitantes enviando headers DNT ou "Do Not Sell" não recebem armazenamento de IP nem atribuição de cliques de anúncio, conforme as configurações de DNT e GPC, respeitadas automaticamente.

5. O que chega depois que alguém envia

  • os valores armazenados para cada campo (incluindo os vazios, tipados por tipo)
  • um webhook, se a configuração de webhook do próprio formulário estiver estabelecida, com o id do formulário, slug do formulário, id da submissão, dados enviados e timestamp
  • o e-mail de notificação aos seus destinatários configurados, mais um e-mail de confirmação opcional ao remetente (entregue de forma assíncrona; exige SMTP configurado nas configurações, e nunca é enviado no modo air-gap)
  • opcionalmente um redirecionamento no navegador para a thank_you_url do formulário

Cada submissão é registrada uma vez: uma ressubmissão com a mesma identidade responde o thank-you e não registra os dados em duplicidade.

6. Onde as submissões vivem

Veja ou exporte as submissões por formulário em Forms → <nome do formulário> → Submissions, um por vez ou em exportações CSV/JSON.

7. Entrando no ar com segurança

Lembre-se de que os blocos de formulário injetam o formulário no site estático, então os servidores respondem submissões POST diretamente ao CMS. Formulários inativos retornam um 404 e falham na submissão.

Quando uma mudança de formulário vem junto com mudanças de copy, vigie o deployment: desativar um formulário faz com que ele rejeite POSTs, e um formulário deixado "ligado" dentro de uma página não publicada só aparece naquela página após um rebuild.

Leia este site em