GHL (GoHighLevel)
Plan Découverte
Sur le plan Découverte, une seule connexion CRM est active à la fois (erreur plan_free_one_crm au-delà).
Ce que ça fait
La connexion native GoHighLevel se fait en un clic (OAuth) sur un sous-compte GHL. Une fois connectée :
- Import initial : contacts, opportunités, rendez-vous et définitions de champs personnalisés du sous-compte sont importés en arrière-plan (reprise automatique tant que l'import n'est pas terminé).
- Temps réel, sans webhook à créer : chaque nouveau contact, chaque rendez-vous et chaque changement de statut d'opportunité arrive automatiquement dans DURUM.ai.
- Classement par nom : vos formulaires, sondages, calendriers et pipelines apparaissent avec leur nom dans la configuration. Vous dites ce que chacun représente : c'est ce qui décide ce que DURUM.ai compte comme lead, application, booking ou vente.
- Vente native : une opportunité passée à Gagné dans un pipeline que vous avez coché compte comme une vente, une seule fois.
| Événement GHL | Type dans DURUM.ai | Condition |
|---|---|---|
| Contact créé | Lead ou Application | Selon le classement du formulaire qui a créé le contact (voir plus bas) |
| Rendez-vous créé ou mis à jour | Booking, annulation ou no-show | Selon le statut du rendez-vous et le classement du calendrier |
| Opportunité passée à Gagné | Vente | Pipeline coché dans Configuration ; les autres statuts et pipelines n'écrivent rien |
Ce qui a changé le 15 septembre 2026
La vente n'est plus un workflow GHL à construire. Vous cochez vos pipelines de vente dans DURUM.ai, et chaque opportunité gagnée devient une vente native, dédoublonnée par opportunité.
Avant de commencer
- Un accès administrateur au sous-compte GHL (location) à connecter.
- Savoir quels formulaires sont des optins (lead) et lesquels sont des formulaires de qualification (application).
- Savoir quels calendriers sont des calendriers de closing (booking) et lesquels doivent être ignorés (onboarding, interne, autobook).
- Savoir dans quel(s) pipeline(s) un deal passe à Gagné quand le client achète, et le montant d'une vente si vous voulez une valeur fixe.
Connexion étape par étape
Depuis DURUM.ai (recommandé)
- Ouvrez Paramètres → Intégrations → carte GoHighLevel → Connecter.
- GHL vous demande de choisir le sous-compte (location) à connecter, puis d'autoriser DURUM.ai.
- Vous revenez dans DURUM.ai : la carte passe à Connecté et l'import initial démarre en arrière-plan.
Permissions demandées (lecture seule) : contacts, opportunités, calendriers et leurs rendez-vous, formulaires, sondages, informations du sous-compte, champs personnalisés.
Depuis la marketplace GHL
Si vous installez l'application DURUM.ai depuis la marketplace GHL, vous êtes redirigé vers une page /connect/ghl de DURUM.ai pour rattacher l'installation à votre compte. Le résultat est identique à une connexion lancée depuis Paramètres.
Ce qui se passe après la connexion
- Import initial : traité par lots toutes les 5 minutes jusqu'à épuisement (un gros CRM est importé en plusieurs passes sans rien perdre).
- Synchro récurrente toutes les 10 minutes : utilisateurs GHL (rattachés à vos reps) et appels enregistrés, quand les permissions de la connexion le permettent. Les noms des champs personnalisés sont rafraîchis dès qu'ils ont plus de 6 heures.
- Champs UTM : à l'enregistrement de la configuration, DURUM.ai crée dans GHL les champs personnalisés UTM manquants pour que l'attribution suive chaque contact.
Configuration
Ouvrez Paramètres → Intégrations → GoHighLevel → Configuration. La fenêtre charge vos formulaires, calendriers et pipelines avec leurs noms.
1. Formulaires et sondages
Pour chaque formulaire ou sondage : À classer, Lead, Application ou Ignorer.
- Lead : optin.
- Application : formulaire de qualification.
- Ignorer : pas compté.
Comment c'est appliqué aux nouveaux contacts : GHL n'indique pas quel formulaire a créé un contact. À chaque contact créé, DURUM.ai interroge GHL (formulaires, puis sondages, autour de la date de création du contact, jusqu'à trois essais) pour retrouver la soumission qui l'a créé, puis applique son classement.
| Résultat de la recherche | Ce que fait DURUM.ai |
|---|---|
| Formulaire trouvé et classé Lead ou Application | Compté avec ce type |
| Formulaire trouvé et classé Ignorer | Contact ignoré (statut « ignoré » dans les Logs) |
| Formulaire trouvé mais encore à classer | Compté comme lead |
| Aucun formulaire trouvé, ou GHL ne répond pas | Compté comme lead (jamais de perte silencieuse) |
Le résultat de la recherche est conservé sur chaque lead pour pouvoir le vérifier.
2. Calendriers
Pour chaque calendrier : À classer, Booking ou Ignorer.
- Booking : call de closing, compté.
- Ignorer : tout le reste (onboarding, interne). Le rendez-vous reste dans le parcours du contact mais ne compte plus comme booking.
- À classer : tant qu'un calendrier n'est pas classé, ses rendez-vous comptent comme des bookings, et Configuration affiche un rappel dès qu'au moins un calendrier a été classé.
Les noms de calendriers sont mémorisés à l'enregistrement : annulations et no-shows suivent le classement du calendrier.
3. Ventes (pipelines)
Cochez les pipelines où un deal passe à Gagné quand le client achète. Pour chaque pipeline coché, indiquez le montant d'une vente ou laissez vide pour reprendre la valeur saisie dans l'opportunité GHL.
Règle appliquée :
- Statut de l'opportunité Gagné (won) et pipeline coché = une vente.
- Une opportunité ne devient une vente qu'une fois, même si elle rebascule plusieurs fois à Gagné.
- Date de la vente = date du passage à Gagné quand GHL la fournit.
- Montant = montant fixe du pipeline, sinon valeur de l'opportunité.
- Tout autre statut, un pipeline non coché ou aucun pipeline coché = rien n'est écrit.
Le contact de la vente est retrouvé dans les contacts importés, sinon demandé à GHL. Sans courriel, la vente est enregistrée mais ne peut pas se rattacher au lead. Une vente déclenche ensuite vos workflows de conversion (Meta, Google) si vous en avez sur l'événement vente.
4. Options supplémentaires
Compter les nouveaux contacts GHL comme des leads : un contact créé sans formulaire (ajout manuel, import, autre source) compte comme lead. Un formulaire mis sur Ignorer reste ignoré.
Cliquez Sauvegarder. Les réglages sont appliqués immédiatement aux prochains événements.
Champs personnalisés
Les champs personnalisés GHL d'un contact s'affichent par nom (pas par identifiant) dans la fiche contact de DURUM.ai. Les définitions sont synchronisées à la connexion et rafraîchies par la synchro récurrente.
Vérifier que ça marche
- Créez un contact de test dans GHL via un formulaire classé Lead (utilisez un courriel reconnaissable).
- Dans DURUM.ai, ouvrez la page Logs (menu principal) : l'événement apparaît avec la source
ghl. - Pour la vente : passez une opportunité de test à Gagné dans un pipeline coché. Le log montre le pipeline, le montant et sa provenance (pipeline ou opportunité).
- Supprimez le contact de test dans GHL après vérification.
Statuts que vous pouvez voir dans les Logs :
| Statut | Signification |
|---|---|
processed | Événement compté |
ignored (status_not_won, pipeline_not_selected) | Changement d'opportunité qui n'est pas une vente |
ignored (ghl_mapping_ignore) | Formulaire classé Ignorer |
ignored (unmapped_ghl_location) | Le sous-compte GHL n'est rattaché à aucun compte DURUM.ai |
deduped | Même opportunité ou même événement déjà compté |
quarantined | Formulaire inconnu reçu par un workflow manuel (voir plus bas) |
Événements captés
| Événement GHL | Type dans DURUM.ai | Détails |
|---|---|---|
ContactCreate | lead ou application | Type selon le classement du formulaire ; contact sans formulaire = lead |
AppointmentCreate, AppointmentUpdate, AppointmentDelete | booking, booking_cancel, no_show | Dérivé du statut du rendez-vous ; calendrier Ignorer = conservé sans compter |
OpportunityStatusUpdate | sale | Seulement statut Gagné dans un pipeline coché ; dédoublonné par opportunité |
Un rendez-vous sans courriel ni téléphone est rejeté (booking fantôme).
Méthode alternative : workflows GHL manuels
Si vous n'utilisez pas la connexion native, les webhooks standard restent valides. Les URLs sont dans Paramètres → Intégrations → section Pour votre développeur, déjà remplies avec votre Business ID. Pour GHL, ajoutez toujours &source=ghl à la fin.
| Événement | Déclencheur du workflow GHL | URL |
|---|---|---|
| Lead | Contact Created | https://app.durum.ai/api/webhook/lead?bid=VOTRE_BUSINESS_ID&source=ghl |
| Application | Form Submitted (formulaires de qualification) | https://app.durum.ai/api/webhook/application?bid=VOTRE_BUSINESS_ID&source=ghl |
| Booking | Appointment Status Changed (Booked ou Confirmed) | https://app.durum.ai/api/webhook/booking?bid=VOTRE_BUSINESS_ID&source=ghl |
| No-show | Appointment Status Changed (No Show) | https://app.durum.ai/api/webhook/no-show?bid=VOTRE_BUSINESS_ID&source=ghl |
| Vente | Opportunity Status Changed (Won) | https://app.durum.ai/api/webhook/sale?bid=VOTRE_BUSINESS_ID&source=ghl |
Dans chaque workflow : action Webhook, méthode POST, corps par défaut (GHL envoie les données du contact). Publiez le workflow.
Formulaires inconnus et quarantaine
Avec un workflow manuel, le formulaire arrive avec son identifiant. S'il est classé dans Configuration, le classement s'applique. Sinon, l'événement est mis en quarantaine jusqu'à ce qu'il soit catégorisé ; les événements suivants du même formulaire sont alors reconnus. Avec la connexion native, ce cas n'existe pas : un formulaire non classé compte comme lead.
Dépannage
| Problème | Solution |
|---|---|
| Le contact n'apparaît pas dans les Logs | Vérifiez que la carte GoHighLevel est Connecté et que le bon sous-compte a été choisi ; reconnectez si la carte affiche une erreur |
| Un contact compte comme lead alors que son formulaire est sur Ignorer | GHL n'a pas retourné la soumission (délai ou formulaire non lié au contact) : le contact est compté par sécurité ; le détail de la recherche est conservé sur le lead |
| Aucune vente GHL | Aucun pipeline coché dans Configuration → Ventes, ou l'opportunité n'est pas au statut Gagné, ou elle est dans un pipeline non coché |
| Vente comptée sans montant | Pipeline coché sans montant fixe et opportunité sans valeur : saisissez un montant dans Configuration ou dans l'opportunité |
| Rendez-vous d'un calendrier interne comptés comme bookings | Classez ce calendrier sur Ignorer |
Statut unmapped_ghl_location | Le sous-compte GHL n'est rattaché à aucun compte : refaites la connexion depuis Paramètres |
Erreur 401 sur un workflow manuel | Vérifiez &source=ghl et le Business ID dans l'URL |
FAQ
Dois-je encore créer des workflows GHL ?
Non, pas avec la connexion native. Les workflows manuels restent possibles pour un compte qui ne peut pas connecter GHL en OAuth.
Puis-je connecter plusieurs sous-comptes GHL ?
Une connexion native correspond à un sous-compte GHL par compte DURUM.ai.
Une opportunité repasse à Gagné après avoir été rouverte : deux ventes ?
Non. La clé de dédoublonnage est l'opportunité : une seule vente par opportunité.
Le montant de la vente vient d'où ?
Du montant fixe du pipeline si vous en avez saisi un, sinon de la valeur monétaire de l'opportunité GHL. Sans l'un ni l'autre, la vente est comptée sans montant.
Que deviennent les rendez-vous d'un calendrier « Ignorer » ?
Ils restent visibles dans le parcours du contact mais ne comptent pas comme bookings, et n'alimentent pas les annulations ni les no-shows comptés.