परिचय
GoHighLevel (GHL) एक all-in-one CRM और marketing platform है, जिसमें funnels, websites, email/SMS और automation (“Workflows”) शामिल हैं। GHL, Dodo Payments को built-in processor के रूप में सूचीबद्ध नहीं करता, इसलिए checkout को कितना embedded रखना है और आप कितना code लिख सकते हैं, इसके आधार पर दोनों को तीन तरीकों में से किसी एक से connect करें।
हर approach में fulfillment एक ही तरह से handle किया जाता है। Dodo webhook events को GHL के Inbound Webhook Workflow में भेजता है, जो contact को tag करता है, access देता है और confirmations भेजता है।
अपना approach चुनें
क्या यह आपके लिए नया है? Approach A (Payment Links) से शुरू करें। इसमें no-code की आवश्यकता है, यह हर GHL user के लिए काम करता है और इसमें कुछ ही मिनट लगते हैं। Approaches B और C को checkout sessions बनाने के लिए backend की आवश्यकता होती है और ये उन teams के लिए हैं जो code के साथ सहज हैं।
आवश्यकताएँ
- कम-से-कम एक product बनाए हुए Dodo Payments account।
- Funnel, website या workflow वाला GoHighLevel account।
- अपने Dodo dashboard में Settings → Webhooks (और API key के लिए Settings → Developer) का access।
- Approaches B और C के लिए: checkout sessions बनाने वाला एक छोटा backend या serverless endpoint।
GHL को funnel publish करने के लिए connected domain की आवश्यकता होती है। निर्माण के दौरान test करने के लिए funnel का Preview उपयोग करें। ध्यान दें कि custom JavaScript (Approaches B और C) आमतौर पर published page on a real domain पर ही चलता है, Preview में नहीं।
webhooks के साथ Fulfillment (सभी approaches)
यह automation layer है। इसे एक बार set up करें और आप चाहे कोई भी checkout approach चुनें, यह काम करेगा।
Create the workflow
अपने GHL sub-account में बाएँ menu से Automation खोलें (यह Workflows tab पर ले जाता है)। Create workflow पर click करें, फिर Start from Scratch चुनें।
Add the Inbound Webhook trigger
Builder में Add new trigger पर click करें। Add trigger panel में webhook खोजें और Inbound webhook चुनें (यह Triggers → Events के अंतर्गत सूचीबद्ध है)। इससे बनने वाला Webhook URL copy करें।
Register the webhook in Dodo
Dodo dashboard में Settings → Webhooks पर जाएँ, एक नया endpoint जोड़ें और GHL Inbound Webhook URL paste करें। एक test purchase करें ताकि GHL sample payload capture कर सके और आप fields (customer email, product, amount, status) map कर सकें।
Add fulfillment actions
GHL workflow में वापस जाकर event के आधार पर actions जोड़ें, जैसे find/create contact by email, add a tag, grant course/membership access और send a confirmation email। फिर workflow को Publish करें।
Payments Dodo पर process किए जाते हैं, इसलिए वे GHL के Payments tab में दिखाई नहीं देंगे। ऊपर दिए गए webhook workflow का उपयोग करके उन्हें GHL में reconcile करें और access देने के लिए webhook को source of truth मानें, browser redirect को नहीं, क्योंकि customer वापस आने से पहले tab बंद कर सकता है।
Approach 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
Dodo dashboard में Products → Add Product पर जाएँ, name और price set करें, one-time या subscription चुनें और Save करें। Product खोलकर उसका Payment Link copy करें (format: https://checkout.dodopayments.com/buy/{product_id})।
Add the link to your GHL button
अपने funnel या website page को edit करें, Buy / Checkout button चुनें, उसका action Open URL / Website set करें और अपना Dodo payment link paste करें।
Set a success page (optional)
Dodo में product का return URL GHL thank-you page पर set करें, ताकि payment के बाद customers आपके funnel में वापस पहुँचें।
Payment-link query parameters का उपयोग करके आप customer details को prefill और lock कर सकते हैं या tracking जोड़ सकते हैं। यह funnel या offer ID को metadata के रूप में pass करने के लिए उपयोगी है, जिसे आप webhook से वापस पढ़ सकते हैं।
Approach B: Overlay Checkout (custom code)
Checkout SDK को CDN के माध्यम से उपयोग करके आपके GHL page पर Dodo checkout को modal overlay के रूप में खोलता है। इसके लिए checkout session बनाने और उसका checkoutUrl लौटाने वाले backend की आवश्यकता होती है।
Create a backend endpoint that calls the Checkout Sessions API
यह step optional नहीं है। SDK को live checkoutUrl की आवश्यकता होती है और इसे बनाने के लिए आपकी secret API key चाहिए। GHL केवल static pages host करता है; यह server-side call आपके लिए नहीं चला सकता। आपको Create Checkout Session API को सीधे browser से कभी call नहीं करना चाहिए, क्योंकि इससे page के source में आपकी secret key expose हो जाएगी। इसलिए overlay और inline checkout केवल GHL के साथ काम नहीं कर सकते: आपको अपने नियंत्रण वाले backend की आवश्यकता है, जो session बनाए और केवल URL वापस दे।कोई भी छोटा backend काम करेगा: एक serverless function (Cloudflare Workers, Vercel Functions, AWS Lambda, Supabase Edge Functions और इसी प्रकार के अन्य), या आपके द्वारा पहले से चलाए जा रहे server पर एक endpoint। Logic हर जगह समान है: request प्राप्त करें, अपनी secret key से Dodo की API call करें और checkout_url लौटाएँ।उदाहरण handler logic (अपनी पसंद के platform के अनुसार adapt करें):जिस platform पर आप deploy करते हैं, वहाँ अपनी Dodo API key को secret के रूप में store करें (इसे code में कभी commit न करें), अपने GHL domain से आने वाली requests की अनुमति दें (CORS) और endpoint को अपने नियंत्रण वाले domain के अंतर्गत route करें, जैसे https://api.example.com/create-checkout। Live mode पर जाने के बाद https://live.dodopayments.com/checkouts पर switch करें। Add a Custom Code element in the GHL page builder
GHL page builder में अपना funnel step या website page खोलें, फिर:
- Quick Add खोलने के लिए builder के top-left में + icon पर click करें।
- बाएँ category list से Elements चुनें।
- Custom Code (जिसे HTML के रूप में भी दिखाया जाता है) खोजें और उसे page पर drag करें।
- नीचे दिया गया code element के code editor में paste करें, फिर save करें।
Publish and test on your domain
Custom JS published page (connected domain) पर चलता है, Preview में हमेशा नहीं। Publish करें, फिर overlay खुलने की पुष्टि करने के लिए Pay Now पर click करें।
Approach C: Inline (embedded) Checkout
उसी SDK और एक mount container का उपयोग करके checkout form को आपके GHL page के अंदर embed करता है (कोई redirect या popup नहीं)। Approach B की तरह, इसे session बनाने के लिए backend की आवश्यकता होती है।
Create a backend endpoint that calls the Checkout Sessions API
Overlay जैसी ही requirement है और यह भी optional नहीं है: session बनाने के लिए आपकी secret API key चाहिए, इसलिए यह server-side होना चाहिए। GHL इसे स्वयं नहीं कर सकता। ऊपर दिए गए Overlay Checkout section में बताए गए उसी backend endpoint का पुनः उपयोग करें (कोई भी छोटा serverless function या आपके नियंत्रण वाला server), जो Create Checkout Session API को call करता है और { checkoutUrl } लौटाता है। Add a container and SDK via Custom Code
GHL page builder में:
- Quick Add खोलने के लिए builder के top-left में + icon पर click करें।
- बाएँ category list से Elements चुनें।
- Custom Code (जिसे HTML के रूप में भी दिखाया जाता है) खोजें और उसे उस page पर drag करें जहाँ checkout form दिखाना है।
- नीचे दिया गया code element के code editor में paste करें, फिर save करें।
Verify your domain for wallets (Apple Pay)
GHL में Inline सबसे अधिक involved option है। इसके लिए custom code, backend, real domain पर published page और (Apple Pay के लिए) domain verification की आवश्यकता होती है। यदि आपको पूरी तरह embedded form की आवश्यकता नहीं है, तो Approach A या B को प्राथमिकता दें।
Handle करने योग्य Events
हर webhook में customer email शामिल होता है। Payment को सही contact से जोड़ने के लिए GHL का find/create contact by email action उपयोग करें। पूरी list के लिए Webhook Event Guide देखें।
Testing और Going Live
Test in test mode
Dodo को Test Mode में रखें, test card 4242 4242 4242 4242 (कोई भी future expiry और कोई भी CVC) उपयोग करें, purchase पूरा करें और पुष्टि करें कि GHL workflow trigger होकर tag या access लागू करता है।
Go live
Dodo को Live Mode पर switch करें और live-mode webhook endpoint update करें। इसके अलावा क्या बदलता है, यह आपके approach पर निर्भर करता है:
- Payment Links (A): product के live payment link का उपयोग करें।
- Overlay checkout (B): अपने backend को
https://live.dodopayments.com/checkouts पर अपनी live API key के साथ point करें और SDK के mode को "live" पर set करें, INLINE_CODE_PLACEHOLDER_f5db7a37f0e5ebbcf_END call में।
- Inline checkout (C): overlay जैसा ही, क्योंकि यह उसी backend endpoint और SDK initialization का उपयोग करता है।
फिर पुष्टि करने के लिए एक real end-to-end purchase करें।
Tips
Access देने के लिए webhook को source of truth मानें। Browser redirect पर नहीं, बल्कि payment.succeeded / subscription.active पर action लें।
webhook-signature header (Standard Webhooks) का उपयोग करके webhook authenticity verify करें, ताकि केवल genuine Dodo events ही GHL में fulfillment trigger करें।
Troubleshooting
Payment succeeded but nothing happened in GHL
जाँचें कि Dodo webhook endpoint सही GHL Inbound Webhook URL पर point करता है, workflow published है और trigger ने sample payload capture किया है, ताकि field mapping मौजूद हो।
Overlay or inline button does nothing
Custom JS आमतौर पर केवल published page (real domain) पर चलता है, Preview में नहीं। पुष्टि करें कि page published है, SDK <script> load हुआ है और checkoutUrl आपके backend से प्राप्त valid session URL है।
Contact not created or not matched
सुनिश्चित करें कि आपका workflow find/create contact by email का उपयोग करता है और email field webhook payload से mapped है।
Payment isn't showing in GHL's Payments tab
यह अपेक्षित है। Payments Dodo पर process किए जाते हैं, इसलिए webhook workflow का उपयोग करके उन्हें GHL में reconcile करें।