
# Intégration GoHighLevel (GHL)

Vous utilisez déjà GoHighLevel (GHL) pour gérer votre entreprise ? Cette intégration vous permet d'ajouter la messagerie basée sur l'IA de <span data-t="appName">DM Champ</span> à votre configuration GHL existante. Les messages reçus dans GHL sont transférés à <span data-t="appName">DM Champ</span> pour être traités par l'IA, et les réponses de <span data-t="appName">DM Champ</span> sont renvoyées via GHL au client sur le canal d'origine.

> Vous utilisez un autre CRM ? Il n'a pas besoin d'un écran dédié pour fonctionner avec <span data-t="appName">DM Champ</span> : consultez [Connecter un outil que nous ne listons pas](connecting-other-tools.md) pour les fonctions personnalisées, l'API et les webhooks.

Cela signifie que vous pouvez continuer à utiliser GHL comme centre névralgique tout en laissant l'IA gérer les conversations automatisées.

::: note
**Remarque :** Il s'agit d'une intégration plus technique qui implique la mise en place de flux de travail automatisés et la connexion de systèmes à l'aide de webhooks (notifications automatiques entre applications) et d'appels API. Si vous n'êtes pas à l'aise avec cela, vous voudrez peut-être confier cette page à un développeur ou à un membre de votre équipe compétent en technologie.
:::


---

## Prérequis

- Un **compte <span data-t="appName">DM Champ</span>** actif avec votre clé API (disponible dans **Paramètres → Intégrations → Clé API**). Une clé API est un code unique qui permet à GHL de communiquer en toute sécurité avec votre compte.
- Un **compte GoHighLevel** avec les autorisations nécessaires pour créer des workflows et gérer des webhooks (notifications automatisées entre systèmes).

---

## Comment ça fonctionne

| Direction | Ce qui se passe |
|---|---|
| **GHL vers <span data-t="appName">DM Champ</span>** | Un client vous envoie un message par SMS, e-mail, Messenger, Instagram ou chat en direct dans GHL. Un workflow transfère automatiquement ce message à <span data-t="appName">DM Champ</span>. <span data-t="appName">DM Champ</span> le traite (réponse IA, étiquetage, etc.). |
| **<span data-t="appName">DM Champ</span> vers GHL** | Lorsqu'une réponse est envoyée par <span data-t="appName">DM Champ</span> (manuellement ou via l'IA), elle notifie automatiquement GHL. Un workflow dans GHL trouve le contact et envoie la réponse via le canal approprié. |

---

## Workflow 1 : GHL vers <span data-t="appName">DM Champ</span>

Ce workflow transfère les messages entrants de GHL vers <span data-t="appName">DM Champ</span>.

### Étape 1 : Créer le flux de travail

1. Dans GHL, allez dans **Automatisation > Workflows**.
2. Cliquez sur **Créer un nouveau workflow**.
3. Donnez-lui un nom explicite, tel que "Envoyer message à <span data-t="appName">DM Champ</span>".

### Étape 2 : Ajouter des déclencheurs

Ajoutez un déclencheur pour chaque canal que vous souhaitez transférer :

- Client a répondu - SMS
- Client a répondu - E-mail
- Client a répondu - Message Facebook
- Client a répondu - Message privé Instagram
- Client a répondu - Chat en direct

Vous pouvez tous les ajouter ou seulement les canaux pertinents pour votre configuration.

### Étape 3 : Ajouter un filtre d'étiquette (Optionnel)

Si vous souhaitez uniquement transférer les messages de contacts spécifiques :

1. Cliquez sur **Ajouter un filtre** sur le déclencheur.
2. Définissez la condition sur « Le contact a un tag ».
3. Choisissez votre ou vos tags.
4. Sélectionnez si le contact doit avoir **l'un** ou **tous** les tags sélectionnés.

### Étape 4 : Créer une séparation de canal

Ajoutez une action **Condition** pour acheminer chaque canal vers son propre webhook :

| Branche | Condition |
|---|---|
| Branche 1 | La source du message est égale à `Email` |
| Branche 2 | La source du message est égale à `SMS` |
| Branche 3 | La source du message est égale à `Messenger` |
| Branche 4 | La source du message est égale à `Instagram` |
| Branche 5 | La source du message est égale à `Live Chat` |

### Étape 5 : Configurer les webhooks

Pour chaque branche, ajoutez une action **Webhook / Requête HTTP** :

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

- **Champs de données personnalisés :**

| Champ | Valeur | Notes |
|---|---|---|
| `messageSid` | `{{right_now.second}}{{contact.id}}` | Identifiant unique du message |
| `fromId` | `{{contact.id}}` | ID du contact GHL |
| `toId` | `{{user.id}}` | Votre ID utilisateur GHL |
| `body` | `{{message.body}}` | Le contenu du message |
| `channel` | Voir le tableau ci-dessous | Doit correspondre à la branche |
| `status` | `created` | Toujours défini sur `created` |
| `messageType` | `text` | Type de message |

**Valeurs de canal par branche :**

| Branche | Valeur `channel` |
|---|---|
| E-mail | `email` |
| SMS | `sms` |
| Messenger | `messenger` |
| Instagram | `ig` |
| Chat en direct | `livechat` |

::: warning
**Important :** Assurez-vous que la valeur `channel` correspond exactement — ces éléments sont sensibles à la casse.
:::


### Étape 6 : Activer la réentrée

Dans les paramètres du workflow, assurez-vous que **Autoriser la réentrée** est activé. Sans cela, seul le premier message de chaque contact sera transféré.

---

## Workflow 2 : DM Champ vers GHL

Ce workflow reçoit les réponses de DM Champ et les envoie au client via le canal GHL approprié.

### Étape 1 : Créer un webhook entrant dans GHL

1. Dans GHL, allez dans **Paramètres > Développeurs / API**.
2. Cliquez sur **Créer un nouveau webhook** (ou "Webhook entrant").
3. Nommez-le "Messages".
4. Enregistrez et **copiez l'URL du webhook** — vous en aurez besoin à l'étape suivante.

### Étape 2 : Configurer DM Champ

1. Dans DM Champ, cliquez sur **Settings** dans la barre latérale.
2. Sous **Channels**, cliquez sur **Channels**.
3. Faites défiler jusqu'à la carte **Custom channel** tout en bas de la page.
4. Collez l'URL du webhook entrant GHL que vous venez de copier dans **Webhook URL** (il doit s'agir d'une adresse HTTPS publique) et cliquez sur **Save**.

> **Il ne s'agit pas de la page Settings → Integrations → Webhooks.** Cette page est destinée aux notifications d'événements et envoie une charge utile différente. Le relais sortant GHL est configuré sur la carte **Custom channel** sous **Settings → Channels**.

DM Champ enverra désormais automatiquement une notification à GHL chaque fois qu'un message est envoyé à un contact. Les données envoyées ressemblent à ceci :

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

> **Note de navigation :** la clé API que vous utilisez pour le Workflow 1 et la carte Custom channel que vous utilisez ici se trouvent à des endroits différents — **Settings → Integrations → API Key** pour la clé, et la carte **Custom channel** en bas de **Settings → Channels** pour ce relais. La page séparée **Settings → Integrations → Webhooks** est destinée aux notifications d'événements et envoie une charge utile différente ; consultez [Webhooks](webhooks.md) si c'est ce que vous recherchez à la place.

### Étape 3 : Créer le flux de travail de réponse

1. Dans GHL, accédez à **Automation > Workflows**.
2. Créez un nouveau flux de travail nommé "Send Message to Contact."
3. Définissez le déclencheur sur **Inbound Webhook** et sélectionnez le webhook que vous avez créé à l'étape 1.

### Étape 4 : Ajouter une action de recherche de contact

1. Ajoutez une action **Find Contact**.
2. Définissez le champ de recherche sur **Contact ID**.
3. Utilisez la valeur : `{{inboundWebhookRequest.toId}}`

### Étape 5 : Ajouter une vérification de tag optionnelle

Si vous souhaitez limiter les contacts qui reçoivent des messages de DM Champ :

1. Ajoutez une action **Condition**.
2. Vérifiez si le contact possède un tag spécifique.
3. Si le tag est manquant, terminez le flux de travail (ajoutez une action "Stop" sur la branche false).

### Étape 6 : Ajouter une séparation par canal

Ajoutez une action **Condition** qui achemine le message en fonction de `{{inboundWebhookRequest.channel}}` :

| Branche | Condition | Action |
|---|---|---|
| Branche 1 | égale `email` | Envoyer un e-mail |
| Branche 2 | égale `sms` | Envoyer un SMS |
| Branche 3 | égale `messenger` | Envoyer un message Facebook |
| Branche 4 | égale `ig` | Envoyer un message Instagram |
| Branche 5 | égale `livechat` | Envoyer un message de chat |

### Étape 7 : Configurer chaque action d'envoi

Dans chaque action d'envoi, définissez le corps du message sur :

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

### Étape 8 : Activer la réentrée

Comme pour le workflow 1, assurez-vous que l'option **Autoriser la réentrée** est activée dans les paramètres du workflow.

---

## Tester l'intégration

### Tester GHL vers <span data-t="appName">DM Champ</span> (Workflow 1)

1. Envoyez un message à votre numéro GHL ou à un canal connecté (par exemple, envoyez-vous un SMS).
2. Ouvrez <span data-t="appName">DM Champ</span> et vérifiez que le message apparaît dans **Chats**.
3. Vérifiez que l'étiquette du canal est correcte (SMS, e-mail, etc.).
4. Répétez l'opération pour chaque canal configuré.

### Tester <span data-t="appName">DM Champ</span> vers GHL (Workflow 2)

1. Dans <span data-t="appName">DM Champ</span>, envoyez une réponse à un contact (manuellement ou laissez l'IA répondre).
2. Ouvrez GHL et vérifiez que le contact a bien reçu le message.
3. Confirmez qu'il a été envoyé via le canal approprié.
4. Vérifiez que le contenu du message correspond.

---

## Dépannage

| Problème | À vérifier |
|---|---|
| Les messages n'atteignent pas <span data-t="appName">DM Champ</span> | Vérifiez que votre clé API est correcte dans l'URL du webhook. Vérifiez que les déclencheurs de workflow sont activés (journaux de workflow GHL). Confirmez que l'option Autoriser la réentrée (Allow Re-entry) est activée. |
| Les messages n'atteignent pas GHL | Vérifiez que l'URL du webhook entrant GHL est correctement collée dans **Webhook URL** sur la carte **Custom channel** en bas de **Settings → Channels** (et non sur la page Settings → Integrations → Webhooks, qui est une fonctionnalité différente). Vérifiez que le webhook entrant GHL est actif. Examinez les journaux d'exécution des workflows GHL. |
| Contact introuvable dans GHL | Le `toId` dans les données du webhook doit correspondre à un ID de contact GHL existant. Assurez-vous que les contacts existent dans les deux systèmes avec des ID correspondants. |
| Mauvais canal utilisé pour la réponse | Vérifiez les valeurs de canal dans vos branches de condition. Elles doivent correspondre exactement : `email`, `sms`, `messenger`, `ig`, `livechat`. |
| Seul le premier message est transféré | Activez **Allow Re-entry** dans les paramètres des deux workflows. |

---

## Étapes suivantes

- [Webhooks](webhooks.md) — configurez des webhooks pour d'autres événements <span data-t="appName">DM Champ</span>.
- [Accès API](api-access.md) — utilisez l'API pour des intégrations personnalisées au-delà de GHL.
- [Canaux personnalisés](../messaging-channels/custom-channels.md) — apprenez-en plus sur la messagerie via des canaux personnalisés.
