
# Integração com GoHighLevel (GHL)

Já usa o GoHighLevel (GHL) para gerenciar seu negócio? Esta integração permite que você adicione o sistema de mensagens com IA do <span data-t="appName">DM Champ</span> sobre sua configuração atual do GHL. As mensagens que chegam ao GHL são encaminhadas para o <span data-t="appName">DM Champ</span> para processamento via IA, e as respostas do <span data-t="appName">DM Champ</span> são enviadas de volta pelo GHL ao cliente no canal original.

> Está usando um CRM diferente? Ele não precisa de uma tela dedicada para funcionar com o <span data-t="appName">DM Champ</span>: consulte [Conectando uma Ferramenta que Não Listamos](connecting-other-tools.md) para funções personalizadas, a API e webhooks.

Isso significa que você pode continuar usando o GHL como seu hub principal enquanto deixa a IA cuidar das conversas automatizadas.

::: note
**Nota:** Esta é uma integração mais técnica que envolve a configuração de fluxos de trabalho automatizados e a conexão de sistemas usando webhooks (notificações automáticas entre aplicativos) e chamadas de API. Se você não se sentir confortável com isso, talvez queira entregar esta página a um desenvolvedor ou a um membro da equipe com conhecimentos técnicos.
:::


---

## Pré-requisitos

- Uma **conta <span data-t="appName">DM Champ</span>** ativa com sua chave de API (encontrada em **Configurações → Integrações → Chave de API**). Uma chave de API é um código exclusivo que permite que o GHL se comunique com segurança com sua conta.
- Uma **conta GoHighLevel** com permissão para criar fluxos de trabalho e gerenciar webhooks (notificações automatizadas entre sistemas).

---

## Como Funciona

| Direção | O que acontece |
|---|---|
| **GHL para <span data-t="appName">DM Champ</span>** | Um cliente envia uma mensagem para você via SMS, e-mail, Messenger, Instagram ou chat ao vivo no GHL. Um fluxo de trabalho encaminha automaticamente essa mensagem para o <span data-t="appName">DM Champ</span>. O <span data-t="appName">DM Champ</span> a processa (resposta de IA, marcação, etc.). |
| **<span data-t="appName">DM Champ</span> para GHL** | Quando o <span data-t="appName">DM Champ</span> envia uma resposta (manualmente ou via IA), ele notifica automaticamente o GHL. Um fluxo de trabalho no GHL localiza o contato e envia a resposta pelo canal correto. |

---

## Fluxo de trabalho 1: GHL para <span data-t="appName">DM Champ</span>

Este fluxo de trabalho encaminha mensagens recebidas do GHL para o <span data-t="appName">DM Champ</span>.

### Passo 1: Criar o fluxo de trabalho

1. No GHL, vá para **Automação > Fluxos de trabalho**.
2. Clique em **Criar novo fluxo de trabalho**.
3. Dê um nome descritivo, como "Enviar mensagem para o <span data-t="appName">DM Champ</span>."

### Passo 2: Adicionar gatilhos

Adicione um gatilho para cada canal que você deseja encaminhar:

- Cliente respondeu - SMS
- Cliente respondeu - E-mail
- Cliente respondeu - Mensagem do Facebook
- Cliente respondeu - DM do Instagram
- Cliente respondeu - Chat ao vivo

Você pode adicionar todos eles ou apenas os canais relevantes para sua configuração.

### Passo 3: Adicionar filtro de tag (Opcional)

Se você quiser encaminhar apenas mensagens de contatos específicos:

1. Clique em **Adicionar Filtro** no gatilho.
2. Defina a condição como "O contato tem a tag".
3. Escolha sua(s) tag(s).
4. Selecione se o contato deve ter **qualquer uma** ou **todas** as tags selecionadas.

### Passo 4: Criar uma Divisão de Canal

Adicione uma ação de **Condição** para rotear cada canal para seu próprio webhook:

| Ramificação | Condição |
|---|---|
| Ramificação 1 | Origem da mensagem é igual a `Email` |
| Ramificação 2 | Origem da mensagem é igual a `SMS` |
| Ramificação 3 | Origem da mensagem é igual a `Messenger` |
| Ramificação 4 | Origem da mensagem é igual a `Instagram` |
| Ramificação 5 | Origem da mensagem é igual a `Live Chat` |

### Passo 5: Configurar Webhooks

Para cada ramificação, adicione uma ação de **Webhook / Requisição HTTP**:

- **Método:** `POST`
- **URL:**
  ```
  https://api.dmchamp.com/v1/incoming_custom_channel_message?apiKey=YOUR_API_KEY
  ```

- **Campos de Dados Personalizados:**

| Campo | Valor | Notas |
|---|---|---|
| `messageSid` | `{{right_now.second}}{{contact.id}}` | Identificador único da mensagem |
| `fromId` | `{{contact.id}}` | ID do contato no GHL |
| `toId` | `{{user.id}}` | Seu ID de usuário no GHL |
| `body` | `{{message.body}}` | O conteúdo da mensagem |
| `channel` | Veja a tabela abaixo | Deve corresponder à ramificação |
| `status` | `created` | Sempre definido como `created` |
| `messageType` | `text` | Tipo de mensagem |

**Valores de canal por ramificação:**

| Ramificação | Valor de `channel` |
|---|---|
| E-mail | `email` |
| SMS | `sms` |
| Messenger | `messenger` |
| Instagram | `ig` |
| Chat ao Vivo | `livechat` |

::: warning
**Importante:** Certifique-se de que o valor `channel` corresponda exatamente — eles diferenciam maiúsculas de minúsculas.
:::


### Passo 6: Habilitar Reentrada

Nas configurações do fluxo de trabalho, certifique-se de que **Permitir Reentrada** esteja ativado. Sem isso, apenas a primeira mensagem de cada contato será encaminhada.

---

## Fluxo de trabalho 2: DM Champ para GHL

Este fluxo de trabalho recebe respostas do DM Champ e as envia ao cliente pelo canal correto do GHL.

### Passo 1: Criar um Webhook de entrada no GHL

1. No GHL, vá para **Configurações > Desenvolvedores / API**.
2. Clique em **Criar novo webhook** (ou "Webhook de entrada").
3. Nomeie-o como "Mensagens".
4. Salve e **copie a URL do webhook** — você precisará dela na próxima etapa.

### Passo 2: Configurar o DM Champ

1. Em DM Champ, clique em **Settings** na barra lateral.
2. Em **Channels**, clique em **Channels**.
3. Role até o cartão **Custom channel** na parte inferior da página.
4. Cole a URL do webhook de entrada do GHL que você acabou de copiar em **Webhook URL** (deve ser um endereço HTTPS público) e clique em **Save**.

> **Esta não é a página Settings → Integrations → Webhooks.** Essa página é para notificações de eventos e envia um payload diferente. O retransmissor de saída do GHL é configurado no cartão **Custom channel** em **Settings → Channels**.

O DM Champ agora enviará automaticamente uma notificação para o GHL toda vez que uma mensagem for enviada a um contato. Os dados enviados têm este formato:

```json
{
  "contactId": "NtL97bwnhITrfIq8lWFi",
  "messageId": "s28dtg13qNuhXLoKpcLs",
  "userId": "wpDZRvaw4Hgh4whUBpwlKPRftOi2",
  "body": "Message content here",
  "toId": "qtpBsc6fiqkXTnSOeze3",
  "channel": "email"
}
```

> **Nota de navegação:** a chave de API que você usa para o Fluxo de Trabalho 1 e o cartão de canal personalizado que você usa aqui ficam em locais diferentes — **Settings → Integrations → API Key** para a chave, e o cartão **Custom channel** na parte inferior de **Settings → Channels** para este retransmissor. A página separada **Settings → Integrations → Webhooks** é para notificações de eventos e envia um payload diferente; consulte [Webhooks](webhooks.md) se for isso que você deseja.

### Passo 3: Criar o fluxo de trabalho de resposta

1. No GHL, vá para **Automação > Fluxos de trabalho**.
2. Crie um novo fluxo de trabalho chamado "Enviar mensagem para contato."
3. Defina o gatilho como **Webhook de entrada** e selecione o webhook que você criou no Passo 1.

### Passo 4: Adicionar uma ação de Encontrar Contato

1. Adicione uma ação **Encontrar Contato**.
2. Defina o campo de pesquisa como **ID do Contato**.
3. Use o valor: `{{inboundWebhookRequest.toId}}`

### Passo 5: Adicionar uma verificação de tag opcional

Se você quiser limitar quais contatos recebem mensagens do DM Champ:

1. Adicione uma ação **Condição**.
2. Verifique se o contato possui uma tag específica.
3. Se a tag estiver ausente, encerre o fluxo de trabalho (adicione uma ação "Parar" no ramo falso).

### Passo 6: Adicionar uma divisão de canal

Adicione uma ação de **Condição** que roteia a mensagem com base em `{{inboundWebhookRequest.channel}}`:

| Ramificação | Condição | Ação |
|---|---|---|
| Ramificação 1 | igual a `email` | Enviar E-mail |
| Ramificação 2 | igual a `sms` | Enviar SMS |
| Ramificação 3 | igual a `messenger` | Enviar Mensagem do Facebook |
| Ramificação 4 | igual a `ig` | Enviar Mensagem do Instagram |
| Ramificação 5 | igual a `livechat` | Enviar Mensagem de Chat |

### Passo 7: Configurar cada ação de envio

Em cada ação de envio, defina o corpo da mensagem como:

```
{{inboundWebhookRequest.body}}
```

### Passo 8: Habilitar reentrada

Assim como no Fluxo de Trabalho 1, certifique-se de que **Permitir reentrada** esteja habilitado nas configurações do fluxo de trabalho.

---

## Testando a integração

### Testar GHL para <span data-t="appName">DM Champ</span> (Fluxo de trabalho 1)

1. Envie uma mensagem para seu número do GHL ou canal conectado (por exemplo, envie um SMS para si mesmo).
2. Abra o <span data-t="appName">DM Champ</span> e verifique se a mensagem aparece em **Chats**.
3. Verifique se o rótulo do canal está correto (SMS, e-mail, etc.).
4. Repita para cada canal que você configurou.

### Testar <span data-t="appName">DM Champ</span> para GHL (Fluxo de trabalho 2)

1. No <span data-t="appName">DM Champ</span>, envie uma resposta para um contato (manualmente ou deixe a IA responder).
2. Abra o GHL e verifique se o contato recebeu a mensagem.
3. Confirme se ela foi enviada pelo canal correto.
4. Verifique se o conteúdo da mensagem corresponde.

---

## Solução de problemas

| Problema | O que verificar |
|---|---|
| Mensagens não chegando ao <span data-t="appName">DM Champ</span> | Verifique se sua chave de API está correta na URL do webhook. Verifique se os gatilhos do fluxo de trabalho estão sendo disparados (logs de fluxo de trabalho do GHL). Confirme se a opção Permitir Reentrada (Allow Re-entry) está ativada. |
| Mensagens não chegando ao GHL | Verifique se a URL do webhook de entrada do GHL foi colada corretamente em **Webhook URL** no cartão **Custom channel** na parte inferior de **Settings → Channels** (não na página Settings → Integrations → Webhooks, que é um recurso diferente). Verifique se o webhook de entrada do GHL está ativo. Revise os logs de execução do fluxo de trabalho do GHL. |
| Contato não encontrado no GHL | O `toId` nos dados do webhook deve corresponder a um ID de contato existente no GHL. Certifique-se de que os contatos existam em ambos os sistemas com IDs correspondentes. |
| Canal incorreto usado para resposta | Verifique novamente os valores de canal em suas ramificações de condição. Eles devem corresponder exatamente: `email`, `sms`, `messenger`, `ig`, `livechat`. |
| Apenas a primeira mensagem é encaminhada | Ative **Allow Re-entry** nas configurações de ambos os fluxos de trabalho. |

---

## Próximos passos

- [Webhooks](webhooks.md) — configure webhooks para outros eventos do <span data-t="appName">DM Champ</span>.
- [Acesso à API](api-access.md) — use a API para integrações personalizadas além do GHL.
- [Canais Personalizados](../messaging-channels/custom-channels.md) — saiba mais sobre mensagens em canais personalizados.
