소개
GoHighLevel (GHL)은 funnels, websites, email/SMS 및 automation(“Workflows”)을 제공하는 all-in-one CRM 및 marketing 플랫폼입니다. GHL은 Dodo Payments를 기본 processor로 등록하지 않으므로, checkout을 얼마나 자연스럽게 embedded할지와 코딩 가능한 수준에 따라 다음 세 가지 방법 중 하나로 두 서비스를 연결해야 합니다. 모든 접근 방식에서 fulfillment는 동일한 방식으로 처리됩니다. Dodo는 webhook events를 GHL Inbound Webhook Workflow로 전송하고, 이 workflow가 contact에 tag를 추가하고 access를 부여하며 confirmation을 전송합니다.접근 방식 선택
사전 요구 사항
- 하나 이상의 product가 생성된 Dodo Payments account.
- funnel, website 또는 workflow가 있는 GoHighLevel account.
- Dodo dashboard의 Settings → Webhooks(API key에는 Settings → Developer)에 대한 access.
- 접근 방식 B와 C의 경우: checkout sessions를 생성할 소규모 backend 또는 serverless endpoint.
webhooks를 사용한 fulfillment(모든 접근 방식)
이 부분이 automation layer입니다. 한 번 설정하면 어떤 checkout 접근 방식을 선택하든 작동합니다.Create the workflow
Add the Inbound Webhook trigger
Register the webhook in Dodo
Add fulfillment actions
접근 방식 A: Payment Links(no-code)
GHL button, funnel CTA, order-page button, email 또는 SMS에 Dodo payment link를 연결합니다.Create a product and copy its payment link
https://checkout.dodopayments.com/buy/{product_id}).Add the link to your GHL button
Set a success page (optional)
접근 방식 B: Overlay Checkout(custom code)
CDN을 통한 Checkout SDK를 사용하여 GHL page에서 Dodo checkout을 modal overlay로 엽니다. checkout session을 생성하고checkoutUrl을 반환할 backend가 필요합니다.
Create a backend endpoint that calls the Checkout Sessions API
checkoutUrl이 필요하며, 이를 생성하려면 secret API key가 필요합니다. GHL은 static page만 호스팅하므로 이 server-side call을 대신 실행할 수 없습니다. 또한 page source에 secret key가 노출되므로 browser에서 Create Checkout Session API를 직접 호출해서는 안 됩니다. 따라서 overlay 및 inline checkout은 GHL만으로 작동할 수 없으며, session을 생성하고 URL만 반환하는 backend가 필요합니다.어떤 소규모 backend든 사용할 수 있습니다. 예를 들어 serverless function(Cloudflare Workers, Vercel Functions, AWS Lambda, Supabase Edge Functions 등)이나 이미 운영 중인 server의 endpoint를 사용할 수 있습니다. 어디서나 logic은 동일합니다. request를 수신하고, secret key로 Dodo API를 호출한 다음 checkout_url을 반환합니다.사용 중인 platform에 맞게 조정할 수 있는 example handler logic:https://api.example.com/create-checkout). live mode로 전환하면 https://live.dodopayments.com/checkouts로 변경합니다.Add a Custom Code element in the GHL page builder
- Builder의 왼쪽 상단에서 + icon을 클릭하여 Quick Add를 엽니다.
- 왼쪽 category list에서 Elements를 선택합니다.
- Custom Code(HTML로도 표시됨)를 찾아 페이지로 drag합니다.
- 아래 code를 element의 code editor에 붙여넣고 저장합니다.
Publish and test on your domain
접근 방식 C: Inline(embedded) Checkout
동일한 SDK와 mount container를 사용하여 GHL page 내부에 checkout form을 embedded합니다(redirect 없음, popup 없음). 접근 방식 B와 마찬가지로 session을 생성할 backend가 필요합니다.Create a backend endpoint that calls the Checkout Sessions API
{ checkoutUrl }을 반환합니다.Add a container and SDK via Custom Code
- Builder의 왼쪽 상단에서 + icon을 클릭하여 Quick Add를 엽니다.
- 왼쪽 category list에서 Elements를 선택합니다.
- Custom Code(HTML로도 표시됨)를 찾아 checkout form을 표시할 페이지 위치로 drag합니다.
- 아래 code를 element의 code editor에 붙여넣고 저장합니다.
Verify your domain for wallets (Apple Pay)
처리할 Events
Testing 및 Live 전환
Test in test mode
4242 4242 4242 4242(임의의 미래 expiry 및 CVC)을 사용하여 purchase를 완료한 다음 GHL workflow가 실행되고 tag 또는 access를 적용하는지 확인합니다.Go live
- Payment Links(A): product의 live payment link로 교체합니다.
- Overlay checkout(B): backend가
https://live.dodopayments.com/checkouts를 사용하도록 하고 live API key를 설정한 다음,Initializecall에서 SDK의mode를"live"로 설정합니다. - Inline checkout(C): 동일한 backend endpoint와 SDK initialization을 사용하므로 overlay와 동일합니다.
Tips
Troubleshooting
Payment succeeded but nothing happened in GHL
Payment succeeded but nothing happened in GHL
Contact not created or not matched
Contact not created or not matched
Payment isn't showing in GHL's Payments tab
Payment isn't showing in GHL's Payments tab