> For the complete documentation index, see [llms.txt](https://ajuda.livechat360.com.br/crm/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ajuda.livechat360.com.br/crm/administracao/webhook.md).

# Webhook

Um webhook para escuta de requisições é como uma caixa de correio inteligente que recebe notificações de outros sistemas. Ao invés de você ir buscar as informações, elas são entregues diretamente na sua "porta".

**Exemplo:**

Imagine que você tem um sistema de atendimento ao cliente. Você pode configurar um webhook para receber notificações de um sistema de pagamentos. Quando um pagamento for realizado, o sistema de pagamento envia uma notificação para o seu sistema de atendimento, permitindo que seus atendentes saibam, por exemplo, que o cliente realizou o pagamento.

## Modo de Teste / Modo de Produção

<figure><img src="/files/TKpLDa3QLhhcVsBswboy" alt=""><figcaption></figcaption></figure>

Na parte superior direita da página existe um botão de alternância com as seguintes configurações: se azul, o modo de produção do webhook estará ativado; se cinza, o modo de teste do webhook estará ativado.

Em modo de teste, as requisições processadas e mapeadas não serão registradas no servidor. Esse modo serve justamente para testar as requisições e ajudar a configurar o webhook de escuta.&#x20;

## **Link do Webhook**

<figure><img src="/files/iKtFSlnV9HcexdI79NOM" alt=""><figcaption></figcaption></figure>

O **link do webhook** é como o endereço da sua casa. É para esse endereço que outros mensageiros (sistemas) irão enviar informações ou pacotes. Esse link é exclusivo e precisa ser compartilhado com os sistemas que vão enviar dados para você. Pense nele como a referência para o entregador saber onde deixar o pacote.

#### Copiando o link do webhook:

Para copiar o link do webhook e disponibilizá-lo para que seja usado na configuração do webhook de envio de requisição de outros sistemas, basta clicar no botão "*Copiar*".

Alternativamente, outra opção seria, na página inicial do gerenciamento, clicar no botão "*Copiar link*".

<figure><img src="/files/1UQcfoJCLgqThHUo8MM4" alt="" width="187"><figcaption></figcaption></figure>

## **Sua Requisição de Teste**

<figure><img src="/files/f3tgCujtvodz1TexkvMq" alt=""><figcaption></figcaption></figure>

Esse campo é como uma caixa de entrada de pacotes em modo de teste. Imagine que você queira ver os pacotes que chegam antes de abri-los ou processá-los. Quando o sistema está em modo de teste, qualquer requisição enviada para o link do webhook será exibida aqui para visualização. Ele mostra exatamente o que está dentro do pacote (a estrutura dos dados) sem que o sistema processe a informação.

{% hint style="info" %}
**Importante**: Quando o sistema **não está no modo de teste**, quando está em modo de produção, ele processará automaticamente as requisições recebidas, sem exibi-las nessa caixa de teste.
{% endhint %}

### Selecionando uma requisição:

Cada requisição realizada pelo outro sistema ao webhook de escuta é listada na caixa de seleção de requisições de teste com uma numeração crescente a partir do número um, sendo o 1 a primeira requisição, o 2 a segunda, o 3 a terceira e assim sucessivamente:

<figure><img src="/files/wAmzsrnqXHIVbI9qicVR" alt=""><figcaption><p>Nesse exemplo, foram feitas ao <em>webhook de escuta</em> 3 requisições.</p></figcaption></figure>

Ao selecionar uma das requisições, será mostrada a requisição selecionada com suas chaves e valores:

<figure><img src="/files/Iy3hc6U8dfyuEIKfOTCx" alt=""><figcaption></figcaption></figure>

Uma vez selecionada a requisição desejada, o mapeamento das requisições, que será os passos seguintes, irá apresentar as propriedades da requisição selecionada.

## **Tipo de Webhook**

<figure><img src="/files/0tFCySzUvm7KkeYH6sbX" alt=""><figcaption></figcaption></figure>

Este campo define o "tipo" de pacote que você aceita e processa, dependendo do que ele deve manipular.

* **Contato**: Esse tipo de webhook é para pacotes que manipulam **informações dos contatos**, a saber: variáveis de *campos customizáveis* e de *campos de sistema (telefone, e-mail ...)*. Imagine que ele lida com dados de clientes ou leads, como quando você recebe o cadastro de um novo cliente.
* **Sistema**: Este é como um pacote de ferramentas que vai manipular variáveis globais, como variáveis de banco de dados.

### Selecionando um tipo de webhook:

Há duas opções para serem selecionadas: Contato e Sistema.

Ao selecionar o tipo de webhook **Contato**, haverá a opção, em seguida, de Buscar ou Criar um Contato, além de realizar o mapeamento das propriedades. Em ambos os casos, as caixas de seleção de *Campos* apresentarão a listagem de *Campos Customizáveis* e de *Campos de Sistema*.

Ao selecionar o tipo de webhook **Sistema**, haverá a opção, em seguida, de realizar o mapeamento das propriedades. A caixa de seleção de *Campos* apresentará a listagem de variáveis do *Banco de Dados*.

{% hint style="warning" %}
Quando selecionada a opção **Contato**, na busca ou criação de contato, haverá duas configurações adicionais: *Lógica do filtro* (E / OU) e configuração para *caso encontre múltiplos contatos, mas o telefone não esteja duplicado*.&#x20;

Essas duas configurações não estarão disponíveis quando a opção selecionada for **Sistema**, sendo que a lógica do filtro nesse caso será automaticamente a da opção "[**E - Contato precisa atender a todas as regra**](#e-contato-precisa-atender-a-todas-as-regras)".
{% endhint %}

## **Buscar ou Criar um Contato**

<figure><img src="/files/xRQnqX3wXqrlkcvVdCtj" alt=""><figcaption></figcaption></figure>

Esse campo é como uma rotina de identificação ou busca no seu sistema. É como se você tivesse uma lista de contatos e, quando chega um novo pacote (requisição), o sistema verifica a lista para ver se aquele contato já está registrado ou precisa ser criado.

* **Como funciona**: O sistema usa as informações da requisição (como telefone, e-mail etc.) para procurar o contato certo. Se ele encontrar uma correspondência, usará aquele contato.&#x20;

{% hint style="info" %}
Será feita uma busca pelo *valor da propriedade da requisição* no campo que tiver sido selecionado. Essa busca será em relação a propriedade informada. Se não for encontrada uma correspondência, ao menos o campo 'Telefone' – mesmo que retornar um valor vazio posteriormente – terá que ter sido adicionado como condição na busca **para que um contato seja criado**.
{% endhint %}

* **Exemplo de uso**: Se você está recebendo uma requisição que inclui o telefone de um cliente, o sistema pode buscar por esse telefone. Se o telefone não existe no sistema, ele cria um novo contato automaticamente.

### Lógica de filtro: E e OU

Se o tipo de webhook selecionado for o de **Contato**, então será preciso selecionar a lógica de filtro desejada, que possui duas opções:

* **E** - Contato precisa atender a todas as regra
* **OU** - Contato precisa atender pelo menos uma regra

Se o tipo de webhook selecionado for o de **Sistema**, então automaticamente o sistema aplicará a lógica do filtro E.

#### **E** - Contato precisa atender a todas as regras:

<figure><img src="/files/c3Lf4QbBE8DEVo5l7uQr" alt=""><figcaption></figcaption></figure>

A análise ocorre em ordem de importância, ou seja, na sequência em que as condições foram cadastradas, além disso, a análise de múltiplas condições leva em consideração a filtragem da condição anterior. O processo segue a seguinte lógica:

1. A primeira condição é analisada:
   * Se **nenhum contato único** for encontrado e o campo de telefone estiver sendo buscado, um novo contato será criado. Caso contrário, um erro será retornado.
   * Se for encontrado **um único contato**, ele será selecionado.
   * Se forem encontrados **vários contatos**, a análise segue para a segunda condição. Se não houver uma segunda condição, será retornado erro.
2. A segunda condição é analisada:
   * **Dentre os vários contatos encontrados anteriormente**, se **nenhum contato único** for encontrado e o campo de telefone estiver sendo buscado, um novo contato será criado. Caso contrário, um erro será retornado.
   * **Dentre os vários contatos encontrados anteriormente,** se for encontrado **um único contato**, ele será selecionado.
   * **Dentre os vários contatos encontrados anteriormente,** se forem encontrados novamente **vários contatos**, a análise segue para a terceira condição. Se não houver uma terceira condição, será retornado erro.
3. O processo continua seguindo essa lógica até que um único contato seja identificado ou um erro, ao fim das condições cadastradas, seja retornado por não ter sido possível individualizar o contato.

**Exemplo:**\
Se a primeira condição for o **e-mail** e forem encontrados cinco contatos, a segunda condição (por exemplo, **telefone**) será aplicada para filtrar entre esses cinco quais possuem o telefone informado. Esse processo continua até que reste apenas um contato ou até que um erro seja retornado.

#### **OU** - Contato precisa atender pelo menos uma regra:

<figure><img src="/files/bUgtiNj4rcn33jIzuFRL" alt=""><figcaption></figcaption></figure>

A análise ocorre em ordem de importância, ou seja, na sequência em que as condições foram cadastradas, além disso, a análise de múltiplas condições leva em consideração todos os contatos do sistema, e não apenas os contatos filtrados na condição anterior. O processo segue a seguinte lógica:

1. A primeira condição é analisada:
   * Se **nenhum contato único** for encontrado, a execução seguirá para a próxima condição. Mas se não houver uma próxima condição, um novo contato será criado, desde que o telefone esteja sendo buscado; do contrário, nesse caso, um erro será retornado.
   * Se for encontrado **um único contato**, ele será selecionado.
   * Se forem encontrados **vários contatos**, a análise segue para a segunda condição. Se não houver uma próxima condição, o sistema verificará a opção escolhida no campo '[**Caso encontre múltiplos contatos, mas o telefone não esteja duplicado**](#caso-encontre-multiplos-contatos-mas-o-telefone-nao-esteja-duplicado)'.
2. A segunda condição é analisada:
   * **Analisando&#x20;*****todos*****&#x20;os contatos novamente**, se **nenhum contato único** for encontrado, a execução seguirá para a próxima condição. Mas se não houver uma próxima condição, um novo contato será criado, desde que o telefone tenha sido buscado em algum momento (ou seja, esteja elencado dentre as condições de busca); do contrário, nesse caso, um erro será retornado.
   * **Analisando&#x20;*****todos*****&#x20;os contatos novamente**, se for encontrado **um único contato**, ele será selecionado.
   * **Analisando&#x20;*****todos*****&#x20;os contatos novamente**, se forem encontrados **vários contatos**, a análise segue para a segunda condição. Se não houver uma próxima condição, o sistema verificará a opção escolhida no campo '[**Caso encontre múltiplos contatos, mas o telefone não esteja duplicado**'](#caso-encontre-multiplos-contato-mas-o-telefone-nao-esteja-duplicado).
3. O processo continua seguindo essa lógica até que um único contato seja identifica, criado ou um erro seja retornado por não ter sido possível individualizar ou criar um contato.

#### **Exemplo prático:**

Suponha que a ordem das condições seja:

* E-mail
* Telefone

O sistema começa verificando todos os contatos com o e-mail fornecido. Se encontrar **cinco contatos**, ele **não restringe** a análise aos cinco encontrados. Em vez disso, ele parte para a **segunda condição (telefone)** e procura, novamente em **todos os contatos do sistema**, quais possuem o telefone informado. Se nessa nova análise for encontrado **um único contato**, ele será selecionado. Se ainda houver múltiplos contatos ou nenhum contato encontrado, o sistema seguirá a lógica descrita anteriormente.

### **Caso encontre múltiplos contatos, mas o telefone não esteja duplicado**

<figure><img src="/files/D9XNS3Zny4weNeTwux4j" alt=""><figcaption></figcaption></figure>

Quando a opção OU é selecionada, será necessário configurar também o campo '**Caso encontre múltiplos contato, mas o telefone não esteja duplicado**'. Há duas opções:

* ***Criar novo contato***: se forem encontrados **vários contatos**, não houver uma próxima condição e não existir um contato cadastrado com aquele telefone no sistema, o sistema irá criar um novo contato.
* ***Retornar erro de múltiplos contatos encontrados***: se forem encontrados **vários contatos**, não houver uma próxima condição e não existir um contato cadastrado com aquele telefone no sistema, o sistema irá retornar erro.

### Buscando ou criando um contato:

Selecione um *campo customizável* ou de *sistema* que será buscado.

Depois, dentre as opções listadas decorrentes da [requisição anteriormente selecionada](#selecionando-uma-requisicao), selecione a propriedade que possua o valor que deseja buscar dentro do campo selecionado.&#x20;

O sistema irá varrer esse campo nos contatos a fim de encontrar uma correspondência com a propriedade selecionada.

{% hint style="info" %}
Lembre-se que para a criação de um novo contato no sistema, o campo de telefone terá que ser uma condição buscada.
{% endhint %}

## **Contato Existe**

<figure><img src="/files/Q6oQiwXrWHJgM47O4pST" alt=""><figcaption></figcaption></figure>

Esse campo controla o que o sistema faz se o contato já estiver registrado.

Se marcado "*Pausar a automação*", é como colocar uma "trava" no processamento da requisição. O sistema não fará o mapeamento das propriedades, nem executará o fluxo de automação. É útil, por exemplo, para casos em que você quer atualizar apenas se o contato for novo (não existente).

## **Mapeamento de Propriedades**

<figure><img src="/files/xhMMPgXEymUNkS0SGPaX" alt=""><figcaption></figcaption></figure>

Esse campo define quais informações do pacote (requisição) correspondem a campos no seu sistema. Imagine que você tem pacotes com informações de clientes (como nome, telefone, e-mail). O mapeamento instrui o sistema a qual campo deve guardar cada uma dessas informações para que sejam corretamente registradas.

### Realizando um Mapeamento:

Para mapear uma propriedade, na caixa de seleção de campo, selecione o campo de sistema onde serão salvos os valores das propriedades.&#x20;

{% hint style="info" %}
As opções a serem selecionadas dependerão da configuração do tipo de webhook realizada anteriormente. Se o tipo de webhook selecionado for o de "*Contato*", então aparecerão para serem selecionados os *campos de sistema* e os *campos customizáveis*; se for o de "*Sistema*", então aparecerão as variáveis de banco de dados.
{% endhint %}

Feito isso, selecione qual será a propriedade salva no campo selecionado.

{% hint style="warning" %}

O campo de sistema do lead será atualizado apenas se o campo não for telefone, OU se for telefone e estiver vazio, OU se o lead acabou de ser criado, OU se a conversa não é do canal WhatsApp. Isso para não atualizar o telefone em leads já existentes.
{% endhint %}

Por fim, clique em "*Salvar propriedade*".

## **Fluxo de Automação**

<figure><img src="/files/eTe4vJIy5c6sQm3JhYCT" alt=""><figcaption></figcaption></figure>

O **Fluxo de Automação** é como uma sequência de ações que acontece automaticamente após o recebimento da requisição. É como se, após o pacote ser aberto e registrado, um sistema de notificação fosse acionado para realizar algumas tarefas.

### Definindo um fluxo de automação:

Na caixa de seleção de fluxo, selecione um *fluxo de automação*.

Se um fluxo de automação não for selecionado, nada irá acontecer após o recebimento e processamento das requisições; se for selecionado, será executado o que foi configurado no fluxo.

{% hint style="warning" %}
Na caixa de seleção de Fluxo não aparecerão os fluxos da página *Fluxos de Conversa*, mas, sim, os fluxos de automação configurados na página *Fluxos de automação*.
{% endhint %}

* **Exemplo de uso**: Imagine que você recebeu uma requisição de um pagamento realizado. O fluxo de automação pode ser configurado para enviar automaticamente uma mensagem ao cliente confirmando o pagamento.

**O potencial de uso do fluxo de automação é infinito.** Você pode, por exemplo, configurar automações para várias situações, como atualizações de dados, notificações de compra, envio de mensagens de boas-vindas, entre outros.
