Skip to main content

Introduction

Connectez Dodo Payments à GoHighLevel (GHL) pour vendre depuis vos tunnels, sites web, e-mails et SMS GHL, et traiter les commandes avec l’automatisation GHL. GHL est une plateforme de CRM et de marketing proposant des tunnels, des sites web, des e-mails et SMS, ainsi que l’automatisation (Workflows). GHL ne répertorie pas Dodo Payments comme processeur de paiement intégré ; vous devez donc connecter les deux services de l’une des trois façons suivantes. Choisissez-en une selon le niveau d’intégration souhaité pour le paiement et votre capacité à écrire du code. Chaque approche traite l’exécution des commandes de la même manière : Dodo Payments envoie des événements webhook à un workflow Inbound Webhook GHL, qui attribue une balise au contact, accorde l’accès et envoie les confirmations.

Choisissez votre approche

Les trois approches diffèrent par le code nécessaire et l’endroit où le client paie :
Si vous découvrez Dodo Payments, commencez par l’approche A (Payment Links). Elle ne nécessite aucun code et fonctionne pour tous les utilisateurs GHL. Les approches B et C nécessitent un backend qui crée des checkout sessions ; elles conviennent donc aux équipes à l’aise avec le code.

Prérequis

Avant de commencer, vous avez besoin de :
  • Un compte Dodo Payments avec au moins un produit.
  • Un compte GoHighLevel avec un tunnel, un site web ou un workflow.
  • Un accès à Developer → Webhooks dans le tableau de bord Dodo Payments, ainsi qu’à Developer → API Keys si vous avez besoin d’une clé API.
  • Pour les approches B et C : un petit backend ou endpoint serverless qui crée des checkout sessions.
GHL exige un domaine connecté pour publier un tunnel. Pendant la création, utilisez la Preview du tunnel pour effectuer vos tests. 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 Preview.

Exécution des commandes avec les Webhooks (toutes les approches)

Le workflow webhook constitue la couche d’automatisation. Configurez-le une seule fois : il fonctionnera avec toutes les approches de checkout.
1

Create the Workflow

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

Add the Inbound Webhook Trigger

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

Register the Webhook in Dodo Payments

Dans le tableau de bord Dodo Payments, accédez à Developer → Webhooks et cliquez sur Add endpoint. Collez l’URL de l’Inbound Webhook GHL dans Endpoint URL, puis cliquez sur Create endpoint. Fournissez ensuite à GHL un exemple de payload permettant d’associer les champs, comme l’e-mail du client, le produit, le montant et le statut. Effectuez un achat de test ou ouvrez l’onglet Testing de l’endpoint, sélectionnez un type d’événement, puis cliquez sur Send example.
4

Add Fulfillment Actions

Dans le workflow GHL, ajoutez des actions pour l’événement, par exemple find/create contact by email, add a tag, grant course/membership access et send a confirmation email. Puis Publish le workflow.
Dodo Payments traite les paiements ; ils n’apparaissent donc pas dans l’onglet Payments de GHL. Enregistrez-les dans GHL avec le workflow webhook ci-dessus. Accordez l’accès depuis le webhook, et non depuis la redirection du navigateur, car un client peut fermer l’onglet avant la fin de la redirection.
Ajoutez un lien de paiement Dodo Payments à n’importe quel bouton GHL, appel à l’action d’un tunnel, bouton de page de commande, e-mail ou SMS. Les clients paient sur le checkout hébergé par Dodo Payments. Pour connaître les fonctionnalités prises en charge par le checkout, consultez Checkout Features.
1

Create a Product and Copy Its Payment Link

Dans le tableau de bord Dodo Payments, accédez à Products et cliquez sur Add Product. Définissez le nom et le prix, choisissez one-time ou subscription, puis enregistrez le produit. Sur la ligne du produit, cliquez sur Share, puis sur Copy payment link. Le lien suit le format https://checkout.dodopayments.com/buy/{product_id}.
2

Add the Link to Your GHL Button

Modifiez votre tunnel ou votre page web et sélectionnez le Buy / Checkout button. Définissez son action sur Open URL / Website, puis collez votre lien de paiement.
3

Set a Success Page (Optional)

Pour ramener les clients vers votre tunnel après leur paiement, saisissez votre page de remerciement GHL dans Redirect URL, dans la feuille Share du produit, avant de copier le lien. Le lien contient alors ce paramètre : redirect_url.
Les paramètres de requête des liens de paiement peuvent préremplir et verrouiller les informations du client, ou ajouter un suivi. Par exemple, transmettez l’identifiant d’un tunnel ou d’une offre comme paramètre metadata_*, puis récupérez-le depuis le webhook. Consultez Static Payment Links pour connaître tous les paramètres.

Approche B : Overlay Checkout (code personnalisé)

L’approche B ouvre le checkout Dodo Payments sous la forme d’une fenêtre modale sur votre page GHL, en utilisant le Checkout SDK depuis un CDN. Elle nécessite un backend qui crée une checkout session et renvoie son checkoutUrl.
1

Create a Backend Endpoint That Calls the Checkout Sessions API

Cette étape est obligatoire. Le SDK a besoin de l’URL d’une checkout session, et la création d’une session nécessite votre clé API secrète. GHL héberge uniquement les pages et ne peut pas effectuer cet appel côté serveur pour vous. N’appelez jamais la Create Checkout Session API depuis le navigateur, car votre clé secrète serait exposée dans le code source de la page. Les checkouts overlay et 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 équivalent), ou un endpoint sur un serveur que vous utilisez déjà. La logique est identique sur toutes les plateformes : recevoir la requête, appeler l’API Dodo Payments avec votre clé secrète et renvoyer checkout_url.Exemple de logique de handler à adapter à votre plateforme :
Stockez votre clé API comme secret dans la variable d’environnement DODO_PAYMENTS_API_KEY sur la plateforme de déploiement, et ne l’intégrez jamais au code. Autorisez les requêtes provenant de votre domaine GHL (CORS) et servez l’endpoint depuis un domaine que vous contrôlez, par exemple https://api.example.com/create-checkout. Lorsque vous passez en mode réel, remplacez l’URL par https://live.dodopayments.com/checkouts.
2

Add a Custom Code Element in the GHL Page Builder

Ouvrez l’étape de votre tunnel ou votre page web dans le générateur de pages GHL, puis :
  1. Cliquez sur l’icône + en haut à gauche du générateur pour ouvrir Quick Add.
  2. Sélectionnez Elements dans la liste des catégories à gauche.
  3. Recherchez 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-le.
3

Publish and Test on Your Domain

Le JavaScript personnalisé s’exécute sur la page publiée de votre domaine connecté et peut ne pas fonctionner dans Preview. Publiez la page, puis cliquez sur Pay Now pour vérifier que l’overlay s’ouvre.

Approche C : Inline (intégré) Checkout

L’approche C intègre le formulaire de checkout dans votre page GHL, sans redirection ni fenêtre popup. Elle utilise le même SDK avec un élément conteneur dans lequel effectuer le 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

Cette étape est obligatoire, comme pour l’overlay checkout. La création d’une session nécessite votre clé API secrète ; elle doit donc avoir lieu sur un serveur, ce que GHL ne peut pas faire seul. Réutilisez l’endpoint backend de la section Overlay Checkout ci-dessus : toute petite fonction serverless ou tout 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 générateur de pages GHL :
  1. Cliquez sur l’icône + en haut à gauche du générateur pour ouvrir Quick Add.
  2. Sélectionnez Elements dans la liste des catégories à gauche.
  3. Recherchez Custom Code (également affiché comme HTML) et faites-le glisser sur la page à l’endroit où le formulaire de checkout doit apparaître.
  4. Collez le code ci-dessous dans l’éditeur de code de l’élément, puis enregistrez-le.
3

Verify Your Domain for Wallets (Apple Pay)

Pour proposer Apple Pay dans le checkout intégré, vérifiez votre domaine. Dans le tableau de bord Dodo Payments, accédez à Settings → Payment Methods et cliquez sur Manage domains dans la ligne Apple Pay. Téléchargez le fichier d’association de domaine, hébergez-le sur votre domaine, puis enregistrez le domaine. Apple Pay n’est pas disponible dans le checkout en superposition (Approach B).Un domaine hébergé par GHL ne peut pas héberger le fichier d’association de domaine. Apple Pay dans le checkout intégré nécessite un domaine que vous contrôlez et qui peut servir /.well-known/apple-developer-merchantid-domain-association. Sur les pages hébergées par GHL, utilisez le checkout hébergé depuis Payment Links (Approach A) ou ignorez Apple Pay.
Le checkout intégré est l’option la plus complexe dans GHL. Il 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é, utilisez plutôt l’Approach A ou B.

Événements à gérer

Abonnez le endpoint GHL aux événements sur lesquels votre workflow agit. Le tableau suggère une action GHL pour chacun d’eux : Les événements de paiement et d’abonnement incluent l’adresse e-mail du client dans data.customer.email. Utilisez l’action GHL find/create contact by email pour associer le paiement au bon contact. Pour chaque événement, consultez le Webhook Event Guide.

Tests et mise en production

1

Test in Test Mode

Laissez le bouton Live Mode de la barre latérale Dodo Payments désactivé afin de travailler en mode test. Effectuez un achat avec la carte de test 4242 4242 4242 4242 (date d’expiration 06/32, CVV 123), puis vérifiez que le workflow GHL s’exécute et applique le tag ou l’accès.
2

Go Live

Activez le bouton Live Mode et ajoutez l’URL GHL Inbound Webhook comme endpoint en mode production. 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) : Pointez votre backend vers https://live.dodopayments.com/checkouts avec votre clé API live, et définissez mode sur "live" dans l’appel Initialize du SDK.
  • Inline checkout (C) : Appliquez les mêmes modifications que pour le checkout en superposition, 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 la configuration.

Conseils

Considérez le webhook comme la source de vérité pour accorder l’accès. Agissez sur payment.succeeded ou subscription.active, et non sur la redirection du navigateur.
Un GHL Inbound Webhook ne peut pas vérifier l’en-tête webhook-signature. Pour que seuls les événements Dodo Payments authentiques déclenchent l’exécution dans GHL, dirigez l’endpoint webhook Dodo Payments vers votre propre backend, vérifiez-y chaque événement (Webhooks), puis transmettez-le à l’URL GHL Inbound Webhook.

Dépannage

Vérifiez que l’endpoint webhook Dodo Payments pointe vers la bonne URL GHL Inbound Webhook, que le workflow est publié et que le déclencheur a capturé un exemple de payload, afin que le mappage des champs existe.
Le JavaScript personnalisé ne s’exécute généralement que sur la page publiée sur un domaine réel, et non dans l’aperçu. Vérifiez que la page est publiée, que le SDK <script> est chargé et que checkoutUrl est une URL de session valide provenant de votre backend.
Vérifiez que votre workflow utilise find/create contact by email et que le champ e-mail est mappé depuis le payload du webhook.
C’est le comportement attendu. Dodo Payments traite les paiements ; enregistrez-les donc dans GHL avec le workflow webhook.
Dernière modification le 28 septembre 2026