> For the complete documentation index, see [llms.txt](https://sejasuri.gitbook.io/manual-de-integracao/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://sejasuri.gitbook.io/manual-de-integracao/flow/gatilhos/webhooks.md).

# Webhooks

Sistemas externos chamam webhook da Suri Shop by Totvs para iniciar um fluxo

É comum ERPs e outros sistemas possuírem o conceito de webhooks para notificar outros sistemas sobre algum acontecimento, por exemplo, um novo usuário cadastrou-se ou completou um funil de vendas. Com a Suri Shop by Totvs você também consegue receber tais webhooks e fazer com que o contato siga um fluxo desejado.

<figure><img src="https://1837340083-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5E34bepJuSf1ssBFTTtX%2Fuploads%2FzDgyCPWl6YRB5ty4FL1W%2Fimage.png?alt=media&amp;token=35812df6-c75f-464a-90e5-99a1e6c6b2d3" alt=""><figcaption><p>Na mesma tela de configuração de gatilhos, basta adicionar webhook</p></figcaption></figure>

Webhooks de gatilho da Suri Shop by Totvs aceitam requisições POST com alguns modelos pré-definidos no BODY. Basta adicionar webhook na tela de configuração do fluxo, escolher um canal desejado e copiar a URL mostrada, este é o link do webhook que você usará em seu ERP ou outro sistema externo: ele que será chamado e ativará o fluxo.

<figure><img src="https://1837340083-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5E34bepJuSf1ssBFTTtX%2Fuploads%2FclfDlcaFGTE79tnXK7FK%2Fimage.png?alt=media&amp;token=09bb3871-4e01-45f7-8738-2662c02e8077" alt=""><figcaption></figcaption></figure>

Importante ressaltar que, como a Suri Shop by Totvs trabalha dentro de canais de mensageria, deve respeitar o **identificador** do canal em questão, **telefone, no caso do WhatsApp**. Então por isso devemos escolher o canal desejado para executar o fluxo. Além disso, o sistema que chama o webhook Suri Shop by Totvs deve, no mínimo, fornecer o telefone do contato contendo **DDD e número** (e DDI, caso seja um número internacional). Exemplos de números aceitos:

* 55 85 9 8877-6655 (DDI do Brasil - 55, DDD - 85 e número)
* 11 9 8877-6655 (DDD - 11 e número, consideramos como número brasileiro)
* 11.8877.6655 (também aceitamos números sem ou com as mais diversas formatações)

### Funcionamento durante atendimento/espera

> O que acontece quando um fluxo é engatilhado pelo webhook, mas o contato em questão já existe na Suri Shop by Totvs e **está na fila Esperando ou Atendimento**, ou seja, ele já foi transferido para atendimento humano em algum momento?

Como observado na imagem mais acima, existe um checkbox "Funcionar durante atendimento" que permite exatamente essa configuração. Por padrão ele está desmarcado, o que indica que se o contato já existir e estiver na fila Espera/Atendimento, o fluxo não será executado. Esta flag é útil para ser utilizada dependendo do contexto do seu webhook. Por exemplo:

* Alguns leads converteram em um evento no RD Marketing e o fluxo foi engatilhado, transferindo os contatos em questão para Esperando
* No outro dia, realizamos uma ação que tinha por objetivo enviar um E-book para todos que converteram no dia anterior. Note que, como os contatos serão exatamente os mesmos, eles tendem a estar no Esperando ou em Atendimento, por isso, é importante nesse fluxo a ser engatilhado deixar o checkbox marcado, garantindo o envio independente da fila.

{% hint style="info" %}
Detalhe importante: se o fluxo possui gatilho de webhook com "Funcionar durante atendimento" marcado, mas **contém ações de botões ou listas** (que envolvem interação do contato), estas ações **podem não ser realizadas em sua totalidade**, pois a regra geral da Suri Shop by Totvs é **não funcionar botões de fluxo** nas filas Esperando/Atendimento. Em resumo: a ação de clicar nos botões não irá prosseguir com a execução do fluxo de conversa caso a pessoa esteja no Esperando/Atendimento.
{% endhint %}

### Sessão da conversa

Caso o contato não exista no chatbot, ao receber o webhook, ele será importado utilizando o telefone recebido no BODY. Nesses casos, obviamente, o contato estará com a sessão de conversa fechada, só sendo possível enviar mensagens template.

Então caso tenha ciência de que a base de contatos que será ativada pode ter sessão fechada, faz-se necessário utilizar uma ou mais ações de envio de template no fluxo, como mostrado abaixo

<figure><img src="https://1837340083-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F5E34bepJuSf1ssBFTTtX%2Fuploads%2F5u08b1rBSErxvpBNiHNM%2Fimage.png?alt=media&amp;token=73bab3df-cc16-482a-a56a-77818a0bf4e3" alt=""><figcaption></figcaption></figure>

### Tipos aceitos

Pela imagem acima, além de ser necessário informar o canal WhatsApp que deverá receber o novo contato, vê-se que também é preciso escolher o TIPO de webhook, que basicamente diz respeito ao tipo de dado que será recebido no BODY da requisição. Fazemos essa distrinção para que seja possível estruturar os dados e poder utilizá-los posteriormente através de [macros](/manual-de-integracao/flow/utilizando-dados-do-contato.md).

Estamos constantemente trabalhando para avançar os tipos de webhooks de gatilho existentes no fluxo, atualmente temos as seguintes possibilidades:

* [RD Marketing](/manual-de-integracao/flow/gatilhos/webhooks/rd-marketing.md), que permite realizar uma integração poderosa entre a Suri e a plataforma de automação de marketing mais usada no Brasil e
* [Customizado](/manual-de-integracao/flow/gatilhos/webhooks/customizado.md), que permite **integrar qualquer sistema externo com a Suri** com uma simples chamada de Webhook. Esse é o tipo ideal caso seu CRM, ERP ou qualquer outro tipo de sistema que irá fazer as chamadas não esteja dentre as integrações nativas de webhook.
