Skip to main content

Pendahuluan

GoHighLevel (GHL) adalah platform CRM dan marketing all-in-one yang mencakup funnels, website, email/SMS, serta automation (“Workflows”). GHL tidak mencantumkan Dodo Payments sebagai processor bawaan, jadi Anda perlu menghubungkan keduanya dengan salah satu dari tiga cara, tergantung seberapa terintegrasi pengalaman checkout yang Anda inginkan dan seberapa banyak kode yang dapat Anda gunakan. Dalam setiap pendekatan, fulfillment ditangani dengan cara yang sama. Dodo mengirimkan webhook events ke Inbound Webhook Workflow GHL, yang menambahkan tag ke contact, memberikan access, dan mengirimkan confirmation.

Pilih pendekatan Anda

Baru mengenal ini? Mulailah dengan Pendekatan A (Payment Links). Pendekatan ini tidak memerlukan kode, berfungsi untuk setiap pengguna GHL, dan dapat disiapkan dalam hitungan menit. Pendekatan B dan C memerlukan backend untuk membuat checkout sessions dan ditujukan bagi tim yang terbiasa menggunakan kode.

Prasyarat

  • Akun Dodo Payments dengan setidaknya satu product yang telah dibuat.
  • Akun GoHighLevel dengan funnel, website, atau workflow.
  • Akses ke Settings → Webhooks (dan Settings → Developer untuk API key) di dashboard Dodo Anda.
  • Untuk Pendekatan B dan C: backend atau serverless endpoint kecil untuk membuat checkout sessions.
GHL memerlukan connected domain untuk publish funnel. Saat melakukan pembuatan, gunakan Preview funnel untuk menguji. Perhatikan bahwa custom JavaScript (Pendekatan B dan C) umumnya hanya berjalan di published page pada domain sungguhan, bukan di Preview.

Fulfillment dengan webhooks (semua pendekatan)

Ini adalah lapisan automation. Siapkan sekali dan fitur ini akan berfungsi terlepas dari pendekatan checkout yang Anda pilih.
1

Create the workflow

Di sub-account GHL Anda, buka Automation di menu sebelah kiri (ini akan membuka tab Workflows). Klik Create workflow, lalu pilih Start from Scratch.
2

Add the Inbound Webhook trigger

Di builder, klik Add new trigger. Di panel Add trigger, cari webhook dan pilih Inbound webhook (tercantum di bawah Triggers → Events). Salin Webhook URL yang dibuat.
3

Register the webhook in Dodo

Di dashboard Dodo, buka Settings → Webhooks, tambahkan endpoint baru, lalu tempel GHL Inbound Webhook URL. Lakukan test purchase agar GHL menangkap sample payload dan Anda dapat memetakan field (customer email, product, amount, status).
4

Add fulfillment actions

Kembali ke workflow GHL, tambahkan actions berdasarkan event, seperti find/create contact by email, add a tag, grant course/membership access, dan send a confirmation email. Kemudian Publish workflow tersebut.
Payment diproses di Dodo, sehingga tidak akan muncul di tab Payments GHL. Rekonsiliasikan payment tersebut ke GHL menggunakan workflow webhook di atas, dan jadikan webhook sebagai source of truth untuk memberikan access, bukan browser redirect, karena customer dapat menutup tab sebelum kembali.
Tambahkan Dodo payment link ke tombol GHL, funnel CTA, tombol order page, email, atau SMS mana pun.
1

Create a product and copy its payment link

Di dashboard Dodo, buka Products → Add Product, tetapkan name dan price, pilih one-time atau subscription, lalu klik Save. Buka product tersebut dan salin Payment Link (format: https://checkout.dodopayments.com/buy/{product_id}).
2

Add the link to your GHL button

Edit funnel atau halaman website Anda, pilih Buy / Checkout button, atur action-nya ke Open URL / Website, lalu tempel Dodo payment link Anda.
3

Set a success page (optional)

Atur return URL product di Dodo ke halaman terima kasih GHL agar customer kembali ke funnel setelah melakukan payment.
Anda dapat melakukan prefill dan mengunci detail customer, atau menambahkan tracking, menggunakan payment-link query parameters. Ini berguna untuk meneruskan funnel atau offer ID sebagai metadata yang dapat Anda baca kembali dari webhook.

Pendekatan B: Overlay Checkout (custom code)

Membuka Dodo checkout sebagai modal overlay di halaman GHL menggunakan Checkout SDK melalui CDN. Memerlukan backend untuk membuat checkout session dan mengembalikan checkoutUrl.
1

Create a backend endpoint that calls the Checkout Sessions API

Langkah ini wajib dilakukan. SDK memerlukan checkoutUrl yang aktif, dan pembuatannya memerlukan secret API key Anda. GHL hanya meng-host static pages dan tidak dapat menjalankan server-side call ini untuk Anda. Anda juga tidak boleh memanggil Create Checkout Session API langsung dari browser, karena secret key Anda akan terekspos di source halaman. Jadi, overlay dan inline checkout tidak dapat berfungsi hanya dengan GHL: Anda memerlukan backend yang Anda kendalikan untuk membuat session dan hanya mengembalikan URL.Backend kecil apa pun dapat digunakan: serverless function (Cloudflare Workers, Vercel Functions, AWS Lambda, Supabase Edge Functions, dan sejenisnya), atau endpoint di server yang sudah Anda jalankan. Logikanya sama di mana pun: menerima request, memanggil API Dodo dengan secret key Anda, lalu mengembalikan checkout_url.Contoh logic handler (sesuaikan dengan platform pilihan Anda):
Simpan Dodo API key Anda sebagai secret di platform tempat Anda melakukan deployment (jangan pernah commit ke code), izinkan request dari domain GHL Anda (CORS), dan tempatkan endpoint di bawah domain yang Anda kendalikan, misalnya https://api.example.com/create-checkout. Beralihlah ke https://live.dodopayments.com/checkouts setelah Anda berpindah ke live mode.
2

Add a Custom Code element in the GHL page builder

Buka funnel step atau halaman website Anda di GHL page builder, lalu:
  1. Klik ikon + di kiri atas builder untuk membuka Quick Add.
  2. Pilih Elements dari daftar kategori di sebelah kiri.
  3. Temukan Custom Code (juga ditampilkan sebagai HTML) dan seret ke halaman.
  4. Tempel kode di bawah ini ke code editor element tersebut, lalu simpan.
3

Publish and test on your domain

Custom JS berjalan di halaman published (connected domain), tidak selalu di Preview. Lakukan publish, lalu klik Pay Now untuk memastikan overlay terbuka.

Pendekatan C: Inline (embedded) Checkout

Menyematkan form checkout di dalam halaman GHL Anda (tanpa redirect dan tanpa popup) menggunakan SDK yang sama dengan mount container. Seperti Pendekatan B, pendekatan ini memerlukan backend untuk membuat session.
1

Create a backend endpoint that calls the Checkout Sessions API

Persyaratannya sama seperti overlay dan juga wajib dilakukan: pembuatan session memerlukan secret API key Anda, sehingga harus dilakukan server-side. GHL tidak dapat melakukannya sendiri. Gunakan kembali backend endpoint yang dijelaskan di bagian Overlay Checkout di atas (serverless function kecil atau server apa pun yang Anda kendalikan) yang memanggil Create Checkout Session API dan mengembalikan { checkoutUrl }.
2

Add a container and SDK via Custom Code

Di GHL page builder:
  1. Klik ikon + di kiri atas builder untuk membuka Quick Add.
  2. Pilih Elements dari daftar kategori di sebelah kiri.
  3. Temukan Custom Code (juga ditampilkan sebagai HTML) dan seret ke halaman tempat form checkout ingin ditampilkan.
  4. Tempel kode di bawah ini ke code editor element tersebut, lalu simpan.
3

Verify your domain for wallets (Apple Pay)

Untuk Apple Pay pada inline checkout, verifikasi domain Anda. Host association file dan daftarkan domain tersebut di dashboard.
Inline adalah opsi yang paling kompleks di GHL. Pendekatan ini memerlukan custom code, backend, published page pada domain sungguhan, dan (untuk Apple Pay) verifikasi domain. Jika Anda tidak memerlukan form yang sepenuhnya tersemat, pilih Pendekatan A atau B.

Event yang Perlu Ditangani

Setiap webhook menyertakan customer email. Gunakan action find/create contact by email milik GHL untuk mengaitkan payment dengan contact yang tepat. Untuk daftar lengkap, lihat Webhook Event Guide.

Pengujian & Go Live

1

Test in test mode

Biarkan Dodo dalam Test Mode, gunakan test card 4242 4242 4242 4242 (expiry apa pun di masa mendatang dan CVC apa pun), selesaikan purchase, lalu pastikan workflow GHL berjalan dan menerapkan tag atau access.
2

Go live

Alihkan Dodo ke Live Mode dan perbarui live-mode webhook endpoint. Perubahan lainnya bergantung pada pendekatan Anda:
  • Payment Links (A): ganti dengan payment link live milik product.
  • Overlay checkout (B): arahkan backend Anda ke https://live.dodopayments.com/checkouts dengan live API key, dan atur mode milik SDK ke "live" dalam pemanggilan Initialize.
  • Inline checkout (C): sama seperti overlay, karena menggunakan backend endpoint dan inisialisasi SDK yang sama.
Kemudian lakukan satu purchase end-to-end sungguhan untuk memastikan semuanya berjalan.

Tips

Jadikan webhook sebagai source of truth untuk memberikan access. Tindak lanjuti payment.succeeded / subscription.active, bukan browser redirect.
Verifikasi authenticity webhook menggunakan header webhook-signature (Standard Webhooks), agar hanya event Dodo yang asli yang memicu fulfillment di GHL.

Troubleshooting

Periksa apakah Dodo webhook endpoint mengarah ke GHL Inbound Webhook URL yang benar, workflow sudah published, dan trigger telah menangkap sample payload sehingga field mapping tersedia.
Custom JS biasanya hanya berjalan di published page (real domain), bukan di Preview. Pastikan halaman sudah dipublish, SDK <script> telah dimuat, dan checkoutUrl adalah session URL valid dari backend Anda.
Pastikan workflow Anda menggunakan find/create contact by email dan email field dipetakan dari webhook payload.
Ini adalah hal yang wajar. Payment diproses di Dodo, jadi rekonsiliasikan ke GHL menggunakan webhook workflow.
Terakhir diubah pada 6 Agustus 2026