Skip to main content

Introduction

GoHighLevel (GHL) est une plateforme CRM et marketing tout-en-un qui couvre les funnels, les sites web, les e-mails/SMS et l’automatisation (“Workflows”). GHL ne répertorie pas Dodo Payments comme processeur intégré. Vous devez donc connecter les deux de l’une des trois façons suivantes, selon le degré d’intégration souhaité pour le checkout et vos capacités en matière de code. Quelle que soit l’approche, l’exécution est gérée de la même manière. Dodo envoie des événements webhook vers un Inbound Webhook Workflow de GHL, qui ajoute un tag au contact, accorde l’accès et envoie les confirmations.

Choisissez votre approche

Vous débutez ? Commencez par l’approche A (Payment Links). Elle ne nécessite aucun code, fonctionne pour tous les utilisateurs de GHL et peut être mise en place en quelques minutes. Les approches B et C nécessitent un backend pour créer des checkout sessions et s’adressent aux équipes à l’aise avec le code.

Prérequis

  • Un compte Dodo Payments avec au moins un produit créé.
  • Un compte GoHighLevel avec un funnel, un site web ou un workflow.
  • L’accès à Settings → Webhooks (et à Settings → Developer pour une clé API) dans votre tableau de bord Dodo.
  • Pour les approches B et C : un petit backend ou endpoint serverless pour créer des checkout sessions.
GHL exige un domaine connecté pour publier un funnel. Pendant la création, utilisez la Preview du funnel pour effectuer vos tests. Notez que le JavaScript personnalisé (approches B et C) s’exécute généralement uniquement sur la page publiée sur un domaine réel, et non dans la Preview.

Exécution avec des webhooks (toutes les approches)

Il s’agit de la couche d’automatisation. Configurez-la une seule fois : elle fonctionnera quelle que soit l’approche de checkout choisie.
1

Create the workflow

Dans votre sous-compte GHL, ouvrez Automation dans le menu de gauche (l’onglet Workflows s’affiche alors). Cliquez sur Create workflow, puis choisissez Start from Scratch.
2

Add the Inbound Webhook trigger

Dans le builder, cliquez sur Add new trigger. Dans le panneau Add trigger, recherchez webhook, puis sélectionnez Inbound webhook (répertorié sous Triggers → Events). Copiez l’URL du webhook générée.
3

Register the webhook in Dodo

Dans le tableau de bord Dodo, accédez à Settings → Webhooks, ajoutez un nouvel endpoint et collez l’URL de l’Inbound Webhook de GHL. Effectuez un achat de test afin que GHL capture un exemple de payload et vous permette de mapper les champs (e-mail du client, produit, montant, statut).
4

Add fulfillment actions

De retour dans le workflow GHL, ajoutez des actions basées sur l’événement, comme find/create contact by email, add a tag, grant course/membership access et send a confirmation email. Puis Publish le workflow.
Les paiements sont traités sur Dodo et n’apparaîtront donc pas dans l’onglet Payments de GHL. Réconciliez-les dans GHL à l’aide du workflow webhook ci-dessus et considérez le webhook comme la source de vérité pour accorder l’accès, et non la redirection du navigateur, car un client peut fermer l’onglet avant de revenir.
Associez un lien de paiement Dodo à n’importe quel bouton GHL, CTA de funnel, bouton de page de commande, e-mail ou SMS.
1

Create a product and copy its payment link

Dans le tableau de bord Dodo, accédez à Products → Add Product, définissez le nom et le prix, choisissez one-time ou subscription, puis cliquez sur Save. Ouvrez le produit et copiez son Payment Link (format : https://checkout.dodopayments.com/buy/{product_id}).
2

Add the link to your GHL button

Modifiez votre funnel ou votre page web, sélectionnez le bouton Buy / Checkout, définissez son action sur Open URL / Website, puis collez votre lien de paiement Dodo.
3

Set a success page (optional)

Définissez l’URL de retour du produit dans Dodo sur une page de remerciement GHL afin que les clients retournent dans votre funnel après leur paiement.
Vous pouvez préremplir et verrouiller les informations du client, ou ajouter un suivi, à l’aide des paramètres de requête des payment links. Cela est utile pour transmettre un ID de funnel ou d’offre en tant que métadonnées que vous pourrez relire depuis le webhook.

Approche B : Overlay Checkout (code personnalisé)

Ouvre le checkout Dodo sous la forme d’une fenêtre modale en overlay sur votre page GHL, à l’aide du Checkout SDK via CDN. Nécessite un backend pour créer une checkout session et renvoyer checkoutUrl.
1

Create a backend endpoint that calls the Checkout Sessions API

Cette étape est obligatoire. Le SDK a besoin d’un checkoutUrl actif, et sa création nécessite votre clé API secrète. GHL héberge uniquement des pages statiques : il ne peut pas exécuter cet appel côté serveur pour vous. Vous ne devez jamais appeler directement la Create Checkout Session API depuis le navigateur, car votre clé secrète serait alors exposée dans le code source de la page. Le checkout overlay et le checkout inline ne peuvent donc pas fonctionner avec GHL seul : vous avez besoin d’un backend que vous contrôlez, qui crée la session et renvoie uniquement l’URL.N’importe quel petit backend convient : une fonction serverless (Cloudflare Workers, Vercel Functions, AWS Lambda, Supabase Edge Functions, ou solution similaire) ou un endpoint sur un serveur que vous administrez déjà. La logique est la même partout : recevoir la requête, appeler l’API Dodo avec votre clé secrète et renvoyer checkout_url.Exemple de logique de handler (à adapter à la plateforme de votre choix) :
Stockez votre clé API Dodo comme secret sur la plateforme où vous déployez (ne la commitez jamais dans le code), autorisez les requêtes provenant de votre domaine GHL (CORS) et exposez l’endpoint sous un domaine que vous contrôlez, par exemple https://api.example.com/create-checkout. Passez à https://live.dodopayments.com/checkouts lorsque vous passez en mode live.
2

Add a Custom Code element in the GHL page builder

Ouvrez l’étape de votre funnel ou votre page web dans le page builder GHL, puis :
  1. Cliquez sur l’icône + en haut à gauche du builder pour ouvrir Quick Add.
  2. Sélectionnez Elements dans la liste des catégories à gauche.
  3. Repérez Custom Code (également affiché comme HTML) et faites-le glisser sur la page.
  4. Collez le code ci-dessous dans l’éditeur de code de l’élément, puis enregistrez.
3

Publish and test on your domain

Le JS personnalisé s’exécute sur la page publiée (domaine connecté), mais pas toujours dans la Preview. Publiez, puis cliquez sur Pay Now pour vérifier que l’overlay s’ouvre.

Approche C : Inline Checkout (intégré)

Intègre le formulaire de checkout dans votre page GHL (sans redirection ni popup) à l’aide du même SDK et d’un conteneur de montage. Comme l’approche B, elle nécessite un backend pour créer la session.
1

Create a backend endpoint that calls the Checkout Sessions API

La même exigence que pour l’overlay s’applique, et elle est tout aussi obligatoire : la création d’une session nécessite votre clé API secrète et doit donc avoir lieu côté serveur. GHL ne peut pas le faire seul. Réutilisez le même endpoint backend décrit dans la section Overlay Checkout ci-dessus (une petite fonction serverless ou un serveur que vous contrôlez) qui appelle la Create Checkout Session API et renvoie { checkoutUrl }.
2

Add a container and SDK via Custom Code

Dans le page builder GHL :
  1. Cliquez sur l’icône + en haut à gauche du builder pour ouvrir Quick Add.
  2. Sélectionnez Elements dans la liste des catégories à gauche.
  3. Repérez Custom Code (également affiché comme HTML) et faites-le glisser sur la page à l’endroit où vous souhaitez afficher le formulaire de checkout.
  4. Collez le code ci-dessous dans l’éditeur de code de l’élément, puis enregistrez.
3

Verify your domain for wallets (Apple Pay)

Pour utiliser Apple Pay avec le checkout inline, vérifiez votre domaine. Hébergez le fichier d’association et enregistrez le domaine dans le tableau de bord.
L’option inline est la plus complexe dans GHL. Elle nécessite du code personnalisé, un backend, une page publiée sur un domaine réel et, pour Apple Pay, une vérification du domaine. Si vous n’avez pas besoin d’un formulaire entièrement intégré, préférez l’approche A ou B.

Événements à gérer

Chaque webhook inclut l’e-mail du client. Utilisez l’action find/create contact by email de GHL pour associer le paiement au bon contact. Pour obtenir la liste complète, consultez le Guide des événements webhook.

Tests et mise en production

1

Test in test mode

Laissez Dodo en Test Mode, utilisez la carte de test 4242 4242 4242 4242 (n’importe quelle date d’expiration future et n’importe quel CVC), effectuez un achat et vérifiez que le workflow GHL se déclenche et applique le tag ou l’accès.
2

Go live

Passez Dodo en Live Mode et mettez à jour l’endpoint webhook du mode live. Les autres changements dépendent de votre approche :
  • Payment Links (A) : remplacez le lien par le lien de paiement live du produit.
  • Overlay checkout (B) : configurez votre backend pour utiliser https://live.dodopayments.com/checkouts avec votre clé API live, et définissez le mode du SDK sur "live" dans l’appel Initialize.
  • Inline checkout (C) : même procédure que pour l’overlay, puisqu’il utilise le même endpoint backend et la même initialisation du SDK.
Effectuez ensuite un achat réel de bout en bout pour confirmer le fonctionnement.

Conseils

Considérez le webhook comme la source de vérité pour accorder l’accès. Agissez sur payment.succeeded / subscription.active, et non sur la redirection du navigateur.
Vérifiez l’authenticité des webhooks à l’aide de l’en-tête webhook-signature (Standard Webhooks), afin que seuls les événements Dodo authentiques déclenchent l’exécution dans GHL.

Résolution des problèmes

Vérifiez que l’endpoint webhook Dodo pointe vers la bonne URL d’Inbound Webhook GHL, que le workflow est publié et que le déclencheur a capturé un exemple de payload afin que le mappage des champs soit disponible.
Le JS personnalisé s’exécute généralement uniquement sur la page publiée (domaine réel), et non dans la Preview. Vérifiez que la page est publiée, que le SDK <script> est chargé et que checkoutUrl est une URL de session valide renvoyée par votre backend.
Assurez-vous que votre workflow utilise find/create contact by email et que le champ d’e-mail est mappé à partir du payload webhook.
C’est normal. Les paiements sont traités sur Dodo ; réconciliez-les dans GHL à l’aide du workflow webhook.
Dernière modification le 6 août 2026