> ## 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.

# Receber contatos

> Como um sistema de fora coloca alguém no seu funil, e o que a Flunora faz com o contato depois.

Um webhook de entrada é uma URL sua, com um token dentro, que cria um contato quando
alguém faz um `POST` nela. É por aí que entram landing page, formulário de site, chatbot,
Typeform, automação no Zapier ou no n8n, e o Meta Lead Ads.

O token vive no caminho da URL e só autoriza criar contato. Ele não lê nada, não lista
nada e não altera o que já existe. Como gerá-lo está em [credenciais](/pages/guias/credenciais).

## O caminho mais curto

```bash theme={"theme":{"light":"min-light","dark":"min-dark"}}
curl -X POST https://crm.suaempresa.com/api/webhooks/receive/SEU_TOKEN \
  -H "Content-Type: application/json" \
  -d '{ "name": "Maria Silva", "email": "maria@empresa.com.br", "phone": "11987654321" }'
```

O email é o único campo obrigatório. O resto entra quando vier. A lista completa do que é
reconhecido está em [campos aceitos](/pages/contatos/campos), e ela aceita tanto os nomes em
inglês quanto os em português, porque o sistema do outro lado raramente deixa escolher.

O corpo pode ser JSON, formulário codificado ou multipart, o que permite apontar um
formulário HTML direto para a URL sem nenhum código no meio:

```html theme={"theme":{"light":"min-light","dark":"min-dark"}}
<form action="https://crm.suaempresa.com/api/webhooks/receive/SEU_TOKEN" method="POST">
  <input name="name" />
  <input name="email" type="email" required />
  <button>Enviar</button>
</form>
```

## O que acontece do lado de cá

O contato entra na primeira etapa do funil e é atribuído a um membro ativo da
organização. Se o webhook tem origem padrão, ele nasce marcado com ela, e é isso que
permite medir a campanha depois. As automações de contato criado disparam normalmente.

A entrada **não** é idempotente: duas requisições iguais criam dois contatos. Se o seu
sistema tem retentativa automática, guarde o `leadId` da primeira resposta bem-sucedida e
não repita.

## Verificar antes de culpar a integração

A mesma URL responde a `GET` com o estado do webhook, sem criar nada:

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

Se der `404`, o problema é o token. Se vier `enabled: false`, é o interruptor na tela de
webhooks. Se vier `status: ok`, o problema está no corpo que você envia, e a página de
[erros](/pages/guias/erros) diz qual.

## Typeform e Meta Lead Ads

O webhook tem um tipo, escolhido na criação. O tipo genérico lê o corpo como ele vem e
serve para quase tudo. O tipo Typeform entende o formato aninhado que o Typeform envia,
que é diferente o bastante para precisar de tratamento próprio.

O Meta Lead Ads usa um webhook genérico com o Make no meio, e tem página própria em
[Meta Lead Ads](/pages/contatos/meta-lead-ads).
