formulários

Formulários que funcionam sem backend

Adicione um atributo a um formulário do seu site estático e cada envio cai no seu painel. Sem JavaScript, sem widget incorporado, sem serviço de terceiros e sem nada para quem preenche ter que assinar.

index.html
<form harvis-form="contact">
  <input name="email" type="email" required>
  <textarea name="message"></textarea>
  <button>Send</button>
</form>
how it works

Três passos, e um deles é publicar de novo

Não há construtor de formulários para aprender nem endpoint para copiar. O atributo é toda a configuração.

  1. 01

    Adicione o atributo

    Coloque harvis-form em qualquer formulário do seu HTML. Dê um nome a ele se o site tiver mais de um. Deixe action e method de fora — eles são preenchidos na hora em que a página é servida.

  2. 02

    Publique de novo

    Arraste a pasta outra vez ou rode npx harvis. Nada para configurar, nenhuma chave para colar, nenhum botão para ligar antes no painel.

  3. 03

    Leia o que chegar

    Os envios aparecem embaixo do seu site no painel, os mais recentes primeiro. Abra uma linha para ler tudo, ou leve o conjunto inteiro em CSV.

the markup

A coisa toda são dois atributos

O harvis reescreve o formulário na saída do servidor, então a página que você escreveu continua sendo a página que você escreveu.

o que você escreve
<form harvis-form="contact"
      data-harvis-redirect="/thanks.html">
  <input name="email" type="email" required>
  <button>Send</button>
</form>
o que seus visitantes recebem
<form harvis-form="contact"
      data-harvis-redirect="/thanks.html"
      action="/__harvis/form/contact" method="post">
  <input type="hidden" name="_harvis_redirect" value="/thanks.html">
  <input type="text" name="_harvis_hp" tabindex="-1" aria-hidden="true" style="…">
  <input name="email" type="email" required>
  <button>Send</button>
</form>

Os dois atributos

harvis-form
Marca o formulário como um dos que devem ser coletados. O valor dá nome a ele, para que vários formulários de um mesmo site não se misturem; sem valor, a coleta vai para “default”.
data-harvis-redirect
Opcional. A página do seu site para onde mandar as pessoas depois do envio. Qualquer coisa que aponte para fora do seu site é ignorada.
included

O que você ganha

Tudo aqui embaixo já vem ligado. Não existe página de configurações para nada disso.

  • Sem JavaScript

    O formulário envia do jeito que HTML sempre enviou. Continua funcionando com scripts bloqueados, num celular lento e num navegador que só desenha texto.

  • O spam é filtrado

    Todo formulário é servido com um campo-isca que nenhuma pessoa consegue ver, e o que preencher ele é descartado sem aviso. Limites de taxa controlam quanto um visitante, e um site, podem enviar por hora.

  • Quantos formulários você quiser

    Dê nomes a eles — um formulário de contato e um de cadastro no mesmo site mantêm cada um sua própria lista, e você pode filtrar e exportar separadamente.

  • Sua própria página de obrigado

    Aponte o formulário para uma página que você escreveu e é ali que as pessoas caem depois de enviar. Deixe de fora e elas veem uma página de confirmação simples.

  • Exporte quando quiser

    Um botão te dá um CSV com uma coluna para cada campo que alguém já enviou, então um formulário que ganhou uma pergunta no meio do caminho ainda abre como uma tabela só.

  • Nada fica seguindo ninguém

    Sem script de rastreamento, sem cookie, sem terceiros dentro da página. O endereço do visitante passa por hash antes de ser guardado, e só para que o limite de taxa consiga distinguir dois envios.

limits

Os limites

Generosos para um formulário de contato, apertados o bastante para que um script apontado para o seu site não encha sua caixa de entrada.

Campos por envio
30
Tamanho de um campo
5.000 caracteres
Tamanho de um envio
64 KB
Envios por site
60 por hora
Envios por visitante
20 por hora
Guardados por site
1.000, os mais recentes primeiro
faq

Perguntas

O que as pessoas perguntam antes de colocar um formulário num site estático.

O que é um formulário estático?

Um formulário num site que não tem servidor próprio. Normalmente isso quer dizer que o formulário não tem para onde mandar nada, e é por isso que sites estáticos costumam pegar emprestado um serviço de formulários de terceiros. O harvis já serve todas as páginas do seu site, então dá para receber o envio na passagem.

Preciso saber programar?

Você precisa conseguir adicionar uma palavra a uma linha de HTML. Se foi uma IA que escreveu seu site, peça que ela adicione o atributo harvis-form ao formulário — ela sabe como, porque é isso que dizem as instruções que o harvis publica para assistentes de IA.

Funciona com o JavaScript desligado?

Funciona. É justamente por isso que foi feito assim. O formulário faz um post HTML comum e o navegador segue um redirecionamento depois, exatamente como os formulários funcionavam antes de o JavaScript existir.

Posso continuar usando meu próprio endpoint ou outro serviço de formulários?

Pode — é só não adicionar o atributo. Formulários sem harvis-form são servidos exatamente como você escreveu, action e tudo. Num formulário que tem o atributo, o harvis substitui o action, porque adicionar o atributo é justamente o jeito de dizer para onde o envio deve ir.

As pessoas podem anexar arquivos?

Ainda não. Um campo de arquivo num formulário coletado continua funcionando para o visitante, mas o arquivo não é guardado — só os campos de texto ficam.

O que acontece com os envios se eu excluir o site?

Eles vão junto. Os envios pertencem ao site e não a uma publicação, então publicar de novo mantém tudo e excluir o site apaga de vez. Exporte um CSV antes se quiser guardar.

Coloque um site no ar e teste

Publicar é de graça e leva uns dois segundos. Adicione o atributo a um formulário, publique de novo e mande uma mensagem de teste para você mesmo.

Colocar um site no ar