Skip to main content

Einführung

GoHighLevel (GHL) ist eine All-in-One-CRM- und Marketingplattform für Funnels, Websites, E-Mail/SMS und Automatisierung („Workflows“). GHL führt Dodo Payments nicht als integrierten Zahlungsdienstleister auf. Daher verbindest du beide Systeme je nach gewünschtem Integrationsgrad und deinen Programmierkenntnissen auf eine von drei Arten. Bei jedem Ansatz wird das Fulfillment auf dieselbe Weise abgewickelt. Dodo sendet Webhook-Ereignisse an einen Inbound Webhook Workflow in GHL, der den Kontakt mit einem Tag versieht, Zugriff gewährt und Bestätigungen versendet.

Wähle deinen Ansatz

Neu dabei? Beginne mit Ansatz A (Payment Links). Er erfordert keinen Code, funktioniert für jeden GHL-Nutzer und ist in wenigen Minuten eingerichtet. Für die Ansätze B und C wird ein Backend zum Erstellen von Checkout-Sitzungen benötigt. Sie richten sich an Teams, die mit Code vertraut sind.

Voraussetzungen

  • Ein Dodo Payments-Konto mit mindestens einem erstellten Produkt.
  • Ein GoHighLevel-Konto mit einem Funnel, einer Website oder einem Workflow.
  • Zugriff auf Settings → Webhooks (und Settings → Developer für einen API-Schlüssel) in deinem Dodo-Dashboard.
  • Für die Ansätze B und C: ein kleines Backend oder serverloser Endpoint zum Erstellen von Checkout-Sitzungen.
GHL benötigt eine verbundene Domain, um einen Funnel zu veröffentlichen. Verwende während der Erstellung die Preview des Funnels zum Testen. Beachte, dass benutzerdefiniertes JavaScript (Ansätze B und C) normalerweise nur auf der veröffentlichten Seite unter einer echten Domain ausgeführt wird, nicht in der Preview.

Fulfillment mit Webhooks (alle Ansätze)

Dies ist die Automatisierungsebene. Richte sie einmal ein, dann funktioniert sie unabhängig davon, welchen Checkout-Ansatz du wählst.
1

Create the workflow

Öffne in deinem GHL-Sub-Account im linken Menü Automation (dadurch wird der Tab Workflows geöffnet). Klicke auf Create workflow und wähle anschließend Start from Scratch.
2

Add the Inbound Webhook trigger

Klicke im Builder auf Add new trigger. Suche im Bereich Add trigger nach webhook und wähle Inbound webhook (unter Triggers → Events) aus. Kopiere die dabei generierte Webhook URL.
3

Register the webhook in Dodo

Gehe im Dodo-Dashboard zu Settings → Webhooks, füge einen neuen Endpoint hinzu und füge die GHL-Inbound-Webhook-URL ein. Führe einen Testkauf durch, damit GHL eine Beispiel-Payload erfasst und du Felder (Kunden-E-Mail, Produkt, Betrag, Status) zuordnen kannst.
4

Add fulfillment actions

Füge im GHL-Workflow abhängig vom Ereignis Aktionen hinzu, z. B. find/create contact by email, add a tag, grant course/membership access und send a confirmation email. Veröffentliche anschließend den Workflow.
Zahlungen werden über Dodo verarbeitet und erscheinen daher nicht im Payments-Tab von GHL. Gleiche sie mithilfe des oben beschriebenen Webhook-Workflows mit GHL ab und behandle den Webhook als maßgebliche Quelle für die Zugriffsgewährung, nicht die Browser-Weiterleitung, da ein Kunde den Tab schließen kann, bevor er zurückkehrt.
Füge einen Dodo-Zahlungslink zu jedem GHL-Button, Funnel-CTA, Button auf einer Bestellseite, E-Mail oder SMS hinzu.
1

Create a product and copy its payment link

Gehe im Dodo-Dashboard zu Products → Add Product, lege name und price fest, wähle one-time oder subscription aus und klicke auf Save. Öffne das Produkt und kopiere den Payment Link (Format: https://checkout.dodopayments.com/buy/{product_id}).
2

Add the link to your GHL button

Bearbeite deine Funnel- oder Website-Seite, wähle den Buy / Checkout button aus, lege die Aktion Open URL / Website fest und füge deinen Dodo-Zahlungslink ein.
3

Set a success page (optional)

Lege in Dodo die return URL des Produkts auf eine GHL-Dankeseite fest, damit Kunden nach der Zahlung wieder in deinen Funnel gelangen.
Du kannst Kundendaten vorausfüllen und sperren oder mithilfe von Query-Parametern für Payment Links Tracking hinzufügen. Das ist nützlich, um eine Funnel- oder Angebots-ID als Metadaten zu übergeben, die du später aus dem Webhook auslesen kannst.

Ansatz B: Overlay Checkout (benutzerdefinierter Code)

Öffnet den Dodo-Checkout mithilfe des Checkout SDK über CDN als Modal-Overlay auf deiner GHL-Seite. Erfordert ein Backend zum Erstellen einer Checkout-Sitzung und zur Rückgabe von checkoutUrl.
1

Create a backend endpoint that calls the Checkout Sessions API

Dieser Schritt ist nicht optional. Das SDK benötigt eine gültige checkoutUrl, und zum Erstellen einer solchen wird dein geheimer API-Schlüssel benötigt. GHL hostet nur statische Seiten und kann diesen serverseitigen Aufruf nicht für dich ausführen. Außerdem darfst du die Create Checkout Session API niemals direkt vom Browser aus aufrufen, da dadurch dein geheimer Schlüssel im Quelltext der Seite offengelegt würde. Overlay- und Inline-Checkout funktionieren daher nicht mit GHL allein: Du benötigst ein Backend unter deiner Kontrolle, das die Sitzung erstellt und nur die URL zurückgibt.Jedes kleine Backend ist geeignet: eine serverlose Funktion (Cloudflare Workers, Vercel Functions, AWS Lambda, Supabase Edge Functions und ähnliche) oder ein Endpoint auf einem bereits von dir betriebenen Server. Die Logik ist überall gleich: Anfrage empfangen, Dodo’s API mit deinem geheimen Schlüssel aufrufen und checkout_url zurückgeben.Beispiel für die Handler-Logik (an deine bevorzugte Plattform anpassen):
Speichere deinen Dodo-API-Schlüssel als Secret auf der Plattform, auf der du deployest (niemals in den Code übernehmen), erlaube Anfragen von deiner GHL-Domain (CORS) und route den Endpoint unter einer von dir kontrollierten Domain, z. B. https://api.example.com/create-checkout. Wechsle zu https://live.dodopayments.com/checkouts, sobald du in den Live-Modus wechselst.
2

Add a Custom Code element in the GHL page builder

Öffne deinen Funnel-Schritt oder deine Website-Seite im GHL Page Builder und gehe dann wie folgt vor:
  1. Klicke oben links im Builder auf das +-Symbol, um Quick Add zu öffnen.
  2. Wähle Elements aus der linken Kategorienliste aus.
  3. Suche Custom Code (wird auch als HTML angezeigt) und ziehe es auf die Seite.
  4. Füge den folgenden Code in den Code-Editor des Elements ein und speichere ihn.
3

Publish and test on your domain

Benutzerdefiniertes JS wird normalerweise nur auf der veröffentlichten Seite (verbundene Domain) ausgeführt, nicht immer in der Preview. Veröffentliche die Seite und klicke anschließend auf Pay Now, um zu bestätigen, dass sich das Overlay öffnet.

Ansatz C: Inline-Checkout (eingebettet)

Bettet das Checkout-Formular mithilfe desselben SDK und eines Mount-Containers in deine GHL-Seite ein (keine Weiterleitung, kein Popup). Wie bei Ansatz B wird ein Backend zum Erstellen der Sitzung benötigt.
1

Create a backend endpoint that calls the Checkout Sessions API

Es gelten dieselben Anforderungen wie beim Overlay, und auch diese sind nicht optional: Zum Erstellen einer Sitzung wird dein geheimer API-Schlüssel benötigt, daher muss dies serverseitig erfolgen. GHL kann dies nicht eigenständig erledigen. Verwende denselben Backend-Endpoint wie im oben beschriebenen Abschnitt Overlay Checkout (jede kleine serverlose Funktion oder jeder Server unter deiner Kontrolle), der die Create Checkout Session API aufruft und { checkoutUrl } zurückgibt.
2

Add a container and SDK via Custom Code

Im GHL Page Builder:
  1. Klicke oben links im Builder auf das +-Symbol, um Quick Add zu öffnen.
  2. Wähle Elements aus der linken Kategorienliste aus.
  3. Suche Custom Code (wird auch als HTML angezeigt) und ziehe es an die Stelle auf der Seite, an der das Checkout-Formular erscheinen soll.
  4. Füge den folgenden Code in den Code-Editor des Elements ein und speichere ihn.
3

Verify your domain for wallets (Apple Pay)

Für Apple Pay beim Inline-Checkout musst du deine Domain verifizieren. Hoste die Zuordnungsdatei und registriere die Domain im Dashboard.
Inline ist die aufwendigste Option in GHL. Sie benötigt benutzerdefinierten Code, ein Backend, eine veröffentlichte Seite unter einer echten Domain und (für Apple Pay) eine Domain-Verifizierung. Wenn du kein vollständig eingebettetes Formular benötigst, solltest du Ansatz A oder B bevorzugen.

Zu behandelnde Ereignisse

Jeder Webhook enthält die Kunden-E-Mail. Verwende die GHL-Aktion find/create contact by email, um die Zahlung dem richtigen Kontakt zuzuordnen. Eine vollständige Liste findest du im Webhook Event Guide.

Testen und Live-Schaltung

1

Test in test mode

Lass Dodo im Test Mode, verwende die Testkarte 4242 4242 4242 4242 (beliebiges zukünftiges Ablaufdatum und beliebiger CVC), schließe einen Kauf ab und bestätige, dass der GHL-Workflow ausgelöst wird und das Tag oder der Zugriff angewendet wird.
2

Go live

Wechsle Dodo in den Live Mode und aktualisiere den Webhook-Endpoint für den Live-Modus. Was sich sonst ändert, hängt von deinem Ansatz ab:
  • Payment Links (A): Ersetze den Link durch den Live-Zahlungslink des Produkts.
  • Overlay Checkout (B): Richte dein Backend auf https://live.dodopayments.com/checkouts mit deinem Live-API-Schlüssel aus und setze mode des SDK im Aufruf INLINE_CODE_PLACEHOLDER_f5db7a37f0e5ebbcf_END auf "live".
  • Inline Checkout (C): Wie beim Overlay, da derselbe Backend-Endpoint und dieselbe SDK-Initialisierung verwendet werden.
Führe anschließend einen echten End-to-End-Kauf durch, um dies zu bestätigen.

Tipps

Behandle den Webhook als maßgebliche Quelle für die Zugriffsgewährung. Reagiere auf payment.succeeded / subscription.active, nicht auf die Browser-Weiterleitung.
Überprüfe die Authentizität des Webhooks mithilfe des Headers webhook-signature (Standard Webhooks), damit nur echte Dodo-Ereignisse das Fulfillment in GHL auslösen.

Fehlerbehebung

Prüfe, ob der Dodo-Webhook-Endpoint auf die richtige GHL-Inbound-Webhook-URL verweist, der Workflow veröffentlicht ist und der Trigger eine Beispiel-Payload erfasst hat, sodass das Feld-Mapping vorhanden ist.
Benutzerdefiniertes JS wird normalerweise nur auf der veröffentlichten Seite (echte Domain) ausgeführt, nicht in der Preview. Bestätige, dass die Seite veröffentlicht ist, das SDK <script> geladen wurde und checkoutUrl eine gültige Sitzungs-URL von deinem Backend ist.
Stelle sicher, dass dein Workflow find/create contact by email verwendet und das E-Mail-Feld aus der Webhook-Payload zugeordnet wird.
Das ist erwartungsgemäß. Zahlungen werden über Dodo verarbeitet. Gleiche sie daher mithilfe des Webhook-Workflows mit GHL ab.
Zuletzt geändert am 6. August 2026