Skip to main content

소개

Dodo Payments를 GoHighLevel (GHL)에 연결하면 GHL 퍼널, 웹사이트, 이메일, SMS에서 판매하고 GHL 자동화로 주문을 처리할 수 있습니다. GHL은 퍼널, 웹사이트, 이메일과 SMS, 자동화(Workflows)를 제공하는 CRM 및 마케팅 플랫폼입니다. GHL에는 Dodo Payments가 기본 결제 처리자로 등록되어 있지 않으므로 세 가지 방법 중 하나로 두 서비스를 연결해야 합니다. Checkout을 얼마나 긴밀하게 통합할지와 작성할 수 있는 코드의 양에 따라 방법을 선택하세요. 모든 방법에서 주문 처리는 동일하게 진행됩니다. Dodo Payments가 webhook events를 GHL Inbound Webhook workflow로 전송하면, workflow가 contact에 tag를 추가하고 access를 부여한 뒤 확인 메시지를 보냅니다.

방법 선택

세 가지 방법은 필요한 코드와 고객이 결제하는 위치가 서로 다릅니다.
Dodo Payments를 처음 사용하는 경우 **방법 A (Payment Links)**부터 시작하세요. 코드가 필요 없으며 모든 GHL 사용자에게 적합합니다. 방법 B와 C에는 checkout sessions을 생성하는 backend가 필요하므로 코드 사용에 익숙한 팀에 적합합니다.

사전 요구 사항

시작하기 전에 다음이 필요합니다.
  • 하나 이상의 product가 있는 Dodo Payments account
  • funnel, website 또는 workflow가 있는 GoHighLevel account
  • Dodo Payments dashboard의 Developer → Webhooks에 대한 access 및 API key가 필요한 경우 Developer → API Keys에 대한 access
  • 방법 B와 C의 경우: checkout sessions을 생성하는 소규모 backend 또는 serverless endpoint
GHL에서 funnel을 publish하려면 connected domain이 필요합니다. 구축하는 동안에는 funnel의 Preview를 사용해 테스트하세요. Custom JavaScript(방법 B와 C)는 일반적으로 Preview가 아니라 실제 domain의 published page에서만 실행됩니다.

Webhook을 사용한 주문 처리(모든 방법)

Webhook workflow는 자동화 계층입니다. 한 번 설정하면 모든 checkout 방법에서 사용할 수 있습니다.
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을 검색하고 Triggers → Events 아래에 표시되는 Inbound webhook을 선택합니다. 생성된 Webhook URL을 복사합니다.
3

Register the Webhook in Dodo Payments

Dodo Payments dashboard에서 Developer → Webhooks로 이동하고 Add endpoint를 클릭합니다. GHL Inbound Webhook URL을 Endpoint URL에 붙여 넣고 Create endpoint를 클릭합니다. 그런 다음 customer email, product, amount, status와 같은 field를 매핑할 수 있도록 GHL에 sample payload를 제공합니다. 테스트 구매를 진행하거나 endpoint의 Testing 탭을 열고 event type을 선택한 다음 Send example을 클릭하세요.
4

Add Fulfillment Actions

GHL workflow에서 event에 대한 action을 추가합니다. 예를 들면 find/create contact by email, add a tag, grant course/membership access, send a confirmation email 등이 있습니다. 그런 다음 workflow를 Publish합니다.
Dodo Payments가 payment을 처리하므로 GHL의 Payments 탭에는 payment이 표시되지 않습니다. 위의 webhook workflow를 사용해 GHL에 기록하세요. Browser redirect가 완료되기 전에 고객이 탭을 닫을 수 있으므로 browser redirect가 아니라 webhook에서 access를 부여하세요.
Dodo Payments payment link를 GHL button, funnel call to action, order page button, email 또는 SMS에 추가합니다. 고객은 Dodo Payments hosted checkout에서 결제합니다. Checkout에서 지원하는 기능은 Checkout Features를 참조하세요.
1

Create a Product and Copy Its Payment Link

Dodo Payments dashboard에서 Products로 이동하고 Add Product를 클릭합니다. name과 price를 설정하고 one-time 또는 subscription을 선택한 다음 product를 저장합니다. Product 행에서 Share를 클릭한 다음 Copy payment link를 클릭합니다. Link 형식은 https://checkout.dodopayments.com/buy/{product_id}입니다.
2

Add the Link to Your GHL Button

Funnel 또는 website page를 편집하고 Buy / Checkout button을 선택합니다. Action을 Open URL / Website로 설정하고 payment link를 붙여 넣습니다.
3

Set a Success Page (Optional)

고객이 결제 후 funnel로 돌아오게 하려면 link를 복사하기 전에 product의 Share sheet에서 GHL thank-you page를 Redirect URL에 입력합니다. 그러면 link에 redirect_url parameter가 포함됩니다.
Payment link query parameters를 사용하면 customer details를 미리 입력하고 잠그거나 tracking 정보를 추가할 수 있습니다. 예를 들어 funnel 또는 offer ID를 metadata_* parameter로 전달하고 webhook에서 다시 읽을 수 있습니다. 모든 parameter는 Static Payment Links를 참조하세요.

방법 B: Overlay Checkout(Custom Code)

방법 B는 CDN의 Checkout SDK를 사용해 GHL page에서 Dodo Payments checkout을 modal overlay로 엽니다. checkout session을 생성하고 checkoutUrl을 반환하는 backend가 필요합니다.
1

Create a Backend Endpoint That Calls the Checkout Sessions API

이 단계는 필수입니다. SDK에는 checkout session URL이 필요하고, session을 생성하려면 secret API key가 필요합니다. GHL은 page만 호스팅하므로 이 server-side call을 대신 수행할 수 없습니다. Create Checkout Session API를 browser에서 호출하지 마세요. page source에 secret key가 노출되기 때문입니다. 따라서 overlay 및 inline checkout은 GHL만으로 작동할 수 없습니다. session을 생성하고 URL만 반환하는, 직접 제어하는 backend가 필요합니다.serverless function(Cloudflare Workers, Vercel Functions, AWS Lambda, Supabase Edge Functions 등)이나 이미 운영 중인 server의 endpoint 등 소규모 backend라면 무엇이든 사용할 수 있습니다. 모든 platform에서 logic은 동일합니다. request를 수신하고, secret key로 Dodo Payments API를 호출한 다음 checkout_url을 반환합니다.사용 중인 platform에 맞게 조정할 수 있는 예시 handler logic:
배포하는 platform에서 API key를 DODO_PAYMENTS_API_KEY environment variable의 secret으로 저장하고, 절대 code에 commit하지 마세요. GHL domain에서 오는 request를 허용하고(CORS), endpoint는 직접 제어하는 domain에서 제공하세요. 예: https://api.example.com/create-checkout. Live mode로 전환할 때는 URL을 https://live.dodopayments.com/checkouts로 변경합니다.
2

Add a Custom Code Element in the GHL Page Builder

GHL page builder에서 funnel step 또는 website page를 연 다음 다음을 수행합니다.
  1. Builder의 왼쪽 상단에서 + icon을 클릭해 Quick Add를 엽니다.
  2. 왼쪽 category list에서 Elements를 선택합니다.
  3. Custom Code(HTML로도 표시됨)를 찾아 page로 드래그합니다.
  4. 아래 code를 element의 code editor에 붙여 넣고 저장합니다.
3

Publish and Test on Your Domain

Custom JavaScript는 connected domain의 published page에서 실행되며 Preview에서는 실행되지 않을 수 있습니다. Page를 publish한 다음 Pay Now를 클릭해 overlay가 열리는지 확인합니다.

방법 C: Inline(Embedded) Checkout

방법 C는 redirect나 popup 없이 checkout form을 GHL page 내부에 embed합니다. 동일한 SDK를 사용하며, SDK를 mount할 container element가 필요합니다. 방법 B와 마찬가지로 session을 생성할 backend가 필요합니다.
1

Create a Backend Endpoint That Calls the Checkout Sessions API

이 단계는 overlay checkout과 마찬가지로 필수입니다. Session 생성에는 secret API key가 필요하므로 server에서 수행해야 하며 GHL은 자체적으로 이를 처리할 수 없습니다. 위의 Overlay Checkout section에서 사용한 backend endpoint를 재사용하세요. Create Checkout Session API를 호출하고 { checkoutUrl }을 반환하는, 직접 제어하는 소규모 serverless function 또는 server라면 무엇이든 됩니다.
2

Add a Container and SDK via Custom Code

GHL page builder에서 다음을 수행합니다.
  1. Builder의 왼쪽 상단에서 + icon을 클릭해 Quick Add를 엽니다.
  2. 왼쪽 category list에서 Elements를 선택합니다.
  3. Custom Code(HTML로도 표시됨)를 찾아 checkout form을 표시할 page 위치로 드래그합니다.
  4. 아래 code를 element의 code editor에 붙여 넣고 저장합니다.
3

Verify Your Domain for Wallets (Apple Pay)

inline checkout에서 Apple Pay를 제공하려면 도메인을 인증하세요. Dodo Payments 대시보드에서 Settings → Payment Methods로 이동한 다음 Apple Pay 행에서 Manage domains를 클릭하세요. 도메인 association 파일을 다운로드하여 도메인에서 호스팅하고 도메인을 등록하세요. Apple Pay는 overlay checkout(Approach B)에서 사용할 수 없습니다.GHL에서 호스팅하는 도메인에서는 도메인 association 파일을 호스팅할 수 없습니다. inline checkout에서 Apple Pay를 사용하려면 /.well-known/apple-developer-merchantid-domain-association를 제공할 수 있는, 직접 관리하는 도메인이 필요합니다. GHL에서 호스팅하는 페이지에서는 Payment Links의 hosted checkout(Approach A)을 사용하거나 Apple Pay를 사용하지 마세요.
inline checkout은 GHL에서 가장 복잡한 옵션입니다. custom code, backend, 실제 도메인의 published page가 필요하며, Apple Pay를 사용하려면 도메인 인증도 필요합니다. 완전히 임베드된 form이 필요하지 않다면 Approach A 또는 B를 대신 사용하세요.

처리할 Events

워크플로가 처리하는 events를 GHL endpoint에 subscribe하세요. 다음 표에서는 각 event에 권장되는 GHL action을 제안합니다: Payment 및 subscription events에는 data.customer.email에 customer email이 포함됩니다. GHL의 find/create contact by email action을 사용하여 결제를 올바른 contact와 매칭하세요. 각 event에 대한 자세한 내용은 Webhook Event Guide를 참조하세요.

Testing 및 Going Live

1

Test in Test Mode

Dodo Payments 사이드바의 Live Mode 스위치를 끈 상태로 유지하여 test mode에서 작업하세요. 테스트 카드 4242 4242 4242 4242(만료일 06/32, CVV 123)로 구매를 완료하고, GHL workflow가 실행되어 tag 또는 access를 적용하는지 확인하세요.
2

Go Live

Live Mode 스위치를 켜고 GHL Inbound Webhook URL을 live mode의 endpoint로 추가하세요. 그 밖에 변경할 사항은 approach에 따라 다릅니다:
  • Payment Links (A): link를 product의 live payment link로 교체하세요.
  • Overlay checkout (B): backend가 https://live.dodopayments.com/checkouts를 live API key와 함께 사용하도록 지정하고, SDK의 Initialize 호출에서 mode를 "live"로 설정하세요.
  • Inline checkout (C): 동일한 backend endpoint와 SDK initialization을 사용하므로 overlay checkout과 동일한 변경 사항을 적용하세요.
그런 다음 설정을 확인하기 위해 처음부터 끝까지 실제 구매를 한 번 진행하세요.

Tips

access를 부여할 때는 webhook을 source of truth로 사용하세요. browser redirect가 아니라 payment.succeeded 또는 subscription.active에 따라 처리하세요.
GHL Inbound Webhook은 webhook-signature header를 검증할 수 없습니다. 따라서 실제 Dodo Payments events만 GHL에서 fulfillment를 트리거하도록 하려면, Dodo Payments webhook endpoint를 자체 backend로 지정하고 각 event를 그곳에서 검증한 다음(Webhooks) GHL Inbound Webhook URL로 전달하세요.

Troubleshooting

Dodo Payments webhook endpoint가 올바른 GHL Inbound Webhook URL을 가리키는지, workflow가 published 상태인지, 그리고 trigger가 sample payload를 캡처하여 field mapping이 생성되었는지 확인하세요.
Custom JavaScript는 일반적으로 Preview가 아니라 실제 도메인의 published page에서만 실행됩니다. 페이지가 published 상태인지, SDK <script>가 로드되었는지, checkoutUrl가 backend에서 발급된 유효한 session URL인지 확인하세요.
workflow에서 find/create contact by email을 사용하고 있으며 email field가 webhook payload에서 매핑되었는지 확인하세요.
이는 예상된 동작입니다. Dodo Payments가 payments를 처리하므로 webhook workflow를 사용하여 GHL에 기록하세요.
마지막 수정일 2026년 9월 28일