> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flunora.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks

> Receber contatos de qualquer sistema que faça uma requisição HTTP: formulário do site, Typeform, ferramenta de automação ou integração sob medida.

Um webhook é uma URL própria da sua organização que aceita dados e cria um contato. É o
caminho mais direto para ligar o formulário do seu site ao funil, e o que resolve
qualquer integração sob medida sem escrever código do lado de cá.

<Card title="Referência completa da API" href="/api/webhook-de-entrada" horizontal>
  Formatos aceitos, respostas, códigos de erro e exemplos em várias linguagens.
</Card>

## Criar um webhook

<Steps>
  <Step title="Abra Configurações → Integrações → Webhooks">
    A tela lista os webhooks existentes, com o contador de contatos recebidos por cada
    um.
  </Step>

  <Step title="Dê um nome que diga a fonte">
    "Formulário do site", "Landing de black friday". O nome aparece no histórico, e
    daqui a seis meses é ele que vai explicar de onde vieram aqueles contatos.
  </Step>

  <Step title="Escolha o tipo">
    **Genérico** aceita qualquer JSON ou formulário HTML. **Typeform** entende o formato
    que o Typeform envia e mapeia as respostas por tipo de campo.
  </Step>

  <Step title="Ligue uma origem, se quiser">
    O webhook pode ter uma origem fixa. Assim todo contato que entra por ele já nasce
    ligado à origem certa, sem depender do que o sistema de fora manda.
  </Step>

  <Step title="Copie a URL">
    Ela tem esta forma, com um token único de 48 caracteres:

    ```
    https://crm.suaempresa.com/api/webhooks/receive/SEU_TOKEN
    ```
  </Step>
</Steps>

## Enviar dados

O endereço aceita `application/json`, `application/x-www-form-urlencoded` e
`multipart/form-data`, o que significa que um formulário HTML pode apontar direto para
ele, sem nenhum código no meio.

```html Formulário HTML theme={"theme":{"light":"min-light","dark":"min-dark"}}
<form action="https://crm.suaempresa.com/api/webhooks/receive/SEU_TOKEN" method="POST">
  <input type="text" name="nome" placeholder="Nome" required />
  <input type="email" name="email" placeholder="Email" required />
  <input type="tel" name="telefone" placeholder="Telefone" />
  <textarea name="mensagem" placeholder="Mensagem"></textarea>
  <button type="submit">Enviar</button>
</form>
```

Os nomes de campo são reconhecidos em português e em inglês, com as variações mais
comuns. A lista completa está em [Campos aceitos](/api/campos).

## Testar a conexão

Uma requisição `GET` na mesma URL diz se o webhook existe e está ativo, sem criar
contato nenhum:

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
curl https://crm.suaempresa.com/api/webhooks/receive/SEU_TOKEN
```

## Segurança do token

O token identifica a sua organização, então quem o tem pode criar contatos nela.

<Warning>
  Não coloque o token em código que roda no navegador de um site público. Um formulário
  HTML apontando direto para a URL é aceitável, porque o pior que alguém faz é criar
  contatos falsos; um token em JavaScript de página pública é convite para isso
  acontecer em escala.
</Warning>

Duas defesas simples: desligue os webhooks que não estão em uso, e acompanhe o contador
de recebidos. Um salto no contador sem campanha correspondente é o primeiro sinal de
abuso. O token pode ser regerado a qualquer momento na mesma tela.

## O que acontece depois que o contato entra

O email é validado, o contato é criado na etapa de entrada, atribuído ao primeiro
dono ou administrador ativo, ligado à origem quando o nome bate com uma cadastrada, e
uma notificação e uma entrada no histórico são criadas. As automações de contato criado
disparam a partir daí.
