Skip to main content

简介

GoHighLevel (GHL) 是一个一体化 CRM 和 marketing 平台,涵盖漏斗、网站、email/SMS 以及自动化(“Workflows”)。GHL 未将 Dodo Payments 列为内置 processor,因此你可以根据希望结账体验嵌入的程度以及可编写代码的能力,通过以下三种方式之一连接两者。 无论采用哪种方式,履约处理方式都相同。Dodo 会将 webhook events 发送到 GHL 的 Inbound Webhook Workflow,用于为联系人添加标签、授予访问权限并发送确认通知。

选择适合你的方式

如果你刚开始接触,请从 方式 A(Payment Links) 开始。它无需代码,适用于所有 GHL 用户,只需几分钟即可完成。方式 B 和 C 需要 backend 来创建 checkout sessions,适合熟悉代码的团队。

前置条件

  • 一个至少创建了一个 product 的 Dodo Payments 账户。
  • 一个拥有漏斗、网站或 workflow 的 GoHighLevel 账户。
  • 在 Dodo dashboard 中拥有 Settings → Webhooks 的访问权限(以及用于获取 API key 的 Settings → Developer 访问权限)。
  • 对于方式 B 和 C:一个用于创建 checkout sessions 的小型 backend 或 serverless endpoint
GHL 要求拥有一个 connected domain 才能发布漏斗。在构建期间,请使用漏斗的 Preview 进行测试。请注意,自定义 JavaScript(方式 B 和 C)通常只会在真实域名上的已发布页面运行,而不会在 Preview 中运行。

使用 webhooks 处理履约(所有方式)

这是自动化层。只需设置一次,无论选择哪种结账方式都可以正常工作。
1

Create the workflow

在 GHL 的 sub-account 中,从左侧菜单打开 Automation(此时会进入 Workflows 标签页)。点击 Create workflow,然后选择 Start from Scratch
2

Add the Inbound Webhook trigger

在 builder 中,点击 Add new trigger。在 Add trigger 面板中搜索 webhook,然后选择 Inbound webhook(位于 Triggers → Events 下)。复制它生成的 Webhook URL
3

Register the webhook in Dodo

在 Dodo dashboard 中,前往 Settings → Webhooks,添加新的 endpoint,然后粘贴 GHL Inbound Webhook URL。完成一次测试购买,让 GHL 捕获示例 payload,以便你映射字段(customer email、product、amount、status)。
4

Add fulfillment actions

返回 GHL workflow,根据 event 添加操作,例如 find/create contact by emailadd a taggrant course/membership access 以及 send a confirmation email。然后 Publish workflow。
支付在 Dodo 上处理,因此不会出现在 GHL 的 Payments 标签页中。使用上述 webhook workflow 将支付记录同步到 GHL,并将 webhook 视为授予访问权限的事实来源,而不是浏览器重定向,因为客户可能会在返回之前关闭标签页。

方式 A:Payment Links(无代码)

将 Dodo payment link 添加到任意 GHL button、漏斗 CTA、order-page button、email 或 SMS 中。
1

Create a product and copy its payment link

在 Dodo dashboard 中,前往 Products → Add Product,设置 nameprice,选择 one-timesubscription,然后点击 Save。打开该 product 并复制其 Payment Link(格式:https://checkout.dodopayments.com/buy/{product_id})。
2

Add the link to your GHL button

编辑你的漏斗或网站页面,选择 Buy / Checkout button,将其操作设置为 Open URL / Website,然后粘贴你的 Dodo payment link。
3

Set a success page (optional)

在 Dodo 中将 product 的 return URL 设置为 GHL thank-you page,让客户付款后返回漏斗。
你可以使用 payment-link query parameters 预填并锁定客户信息,或添加 tracking。这对于将漏斗或 offer ID 作为 metadata 传递很有用,你可以通过 webhook 读取这些 metadata。

方式 B:Overlay Checkout(自定义代码)

通过 CDN 使用 Checkout SDK,在 GHL 页面上以 modal overlay 的形式打开 Dodo checkout。需要一个 backend 来创建 checkout session,并返回其 checkoutUrl
1

Create a backend endpoint that calls the Checkout Sessions API

此步骤不可省略。SDK 需要一个有效的 checkoutUrl,而创建它需要你的 secret API key。GHL 只托管静态页面,无法替你执行此 server-side 调用;你也绝不能直接从浏览器调用 Create Checkout Session API,因为这样会将 secret key 暴露在页面源代码中。因此,overlay 和 inline checkout 无法仅依靠 GHL 工作:你需要一个由你控制的 backend 来创建 session,并仅返回 URL。任何小型 backend 都可以:serverless function(Cloudflare Workers、Vercel Functions、AWS Lambda、Supabase Edge Functions 等),或者你已有服务器上的 endpoint。无论使用哪种平台,逻辑都相同:接收请求,使用 secret key 调用 Dodo API,返回 checkout_url示例 handler 逻辑(根据你选择的平台进行调整):
将 Dodo API key 作为 secret 存储在你部署所使用的平台上(绝不要将其提交到代码仓库),允许来自 GHL domain 的请求(CORS),并将 endpoint 部署在你控制的 domain 下,例如 https://api.example.com/create-checkout。迁移到 live mode 后,切换为 https://live.dodopayments.com/checkouts
2

Add a Custom Code element in the GHL page builder

在 GHL page builder 中打开漏斗步骤或网站页面,然后:
  1. 点击 builder 左上角的 + 图标,打开 Quick Add
  2. 从左侧 category list 中选择 Elements
  3. 找到 Custom Code(也显示为 HTML),并将其拖到页面上。
  4. 将下面的代码粘贴到该元素的 code editor 中,然后保存。
3

Publish and test on your domain

Custom JS 通常只会在已发布页面(connected domain)上运行,不一定会在 Preview 中运行。发布后点击 Pay Now,确认 overlay 是否打开。

方式 C:Inline(嵌入式)Checkout

使用同一个 SDK 和 mount container,将 checkout form 嵌入 GHL 页面内部(无重定向、无 popup)。与方式 B 一样,它需要一个 backend 来创建 session。
1

Create a backend endpoint that calls the Checkout Sessions API

它与 overlay 的要求相同,同样不可省略:创建 session 需要你的 secret API key,因此必须在 server-side 执行。GHL 无法独立完成此操作。复用上方 Overlay Checkout 部分中说明的同一个 backend endpoint(任意由你控制的小型 serverless function 或服务器),该 endpoint 调用 Create Checkout Session API 并返回 { checkoutUrl }
2

Add a container and SDK via Custom Code

在 GHL page builder 中:
  1. 点击 builder 左上角的 + 图标,打开 Quick Add
  2. 从左侧 category list 中选择 Elements
  3. 找到 Custom Code(也显示为 HTML),并将其拖到你希望显示 checkout form 的位置。
  4. 将下面的代码粘贴到该元素的 code editor 中,然后保存。
3

Verify your domain for wallets (Apple Pay)

要在 inline checkout 中使用 Apple Pay,请验证你的 domain。托管 association file,并在 dashboard 中注册该 domain。
Inline 是 GHL 中参与度最高的选项。它需要自定义代码、backend、真实 domain 上的已发布页面,以及(对于 Apple Pay)domain verification。如果你不需要完全嵌入式的表单,请优先选择方式 A 或 B。

需要处理的 Events

每个 webhook 都包含 customer email。使用 GHL 的 find/create contact by email action,将支付关联到正确的联系人。完整列表请参阅 Webhook Event Guide

测试与上线

1

Test in test mode

让 Dodo 保持在 Test Mode,使用测试卡 4242 4242 4242 4242(任意未来日期的有效期和任意 CVC),完成一次购买,并确认 GHL workflow 已触发且应用了标签或访问权限。
2

Go live

将 Dodo 切换到 Live Mode,并更新 live-mode webhook endpoint。其他需要更改的内容取决于你采用的方式:
  • Payment Links (A): 换用 product 的 live payment link。
  • Overlay checkout (B): 让 backend 使用 https://live.dodopayments.com/checkouts 和你的 live API key,并在 Initialize 调用中,将 SDK 的 mode 设置为 "live"
  • Inline checkout (C): 与 overlay 相同,因为它使用相同的 backend endpoint 和 SDK initialization。
然后执行一次真实的端到端购买,以确认一切正常。

提示

webhook 视为授予访问权限的事实来源。根据 payment.succeeded / subscription.active 执行操作,而不是根据浏览器重定向执行。
使用 webhook-signature header 验证 webhook 的真实性(Standard Webhooks),确保只有真实的 Dodo events 才会在 GHL 中触发履约。

故障排除

检查 Dodo webhook endpoint 是否指向正确的 GHL Inbound Webhook URL,workflow 是否已发布,以及 trigger 是否已捕获示例 payload,从而建立字段映射。
Custom JS 通常只会在**已发布页面(真实 domain)**上运行,而不会在 Preview 中运行。确认页面已发布、SDK <script> 已加载,并且 checkoutUrl 是 backend 返回的有效 session URL。
确保 workflow 使用 find/create contact by email,并且 email 字段已从 webhook payload 中完成映射。
这是预期行为。支付在 Dodo 上处理,因此请使用 webhook workflow 将其同步到 GHL。
最后修改于 2026年8月6日