Introduction
Dub adalah platform atribusi link untuk short link, pelacakan konversi, dan program afiliasi. Dengan integrasi ini, Dub mencatat event konversi penjualan setiap kali pelanggan membayar melalui Dodo Payments, sehingga Anda dapat mengukur hasil kampanye pemasaran dan program referral Anda. Dub mencatat penjualan saat pelanggan:- Menyelesaikan pembayaran satu kali
- Berlangganan paket berbayar
- Melakukan pembayaran langganan berulang
Integrasi ini memerlukan akun Dub dengan pelacakan konversi yang diaktifkan pada link Anda. Pelacakan konversi Dub memerlukan paket Business atau lebih tinggi.
How It Works
Saat pengunjung mengeklik salah satu short link Dub Anda, Dub menyimpan ID klik unik dalam cookiedub_id. Untuk mengatribusikan penjualan ke link Anda:
- Ambil ID klik Dub dari cookie
dub_idsaat Anda membuat checkout. - Simpan ID klik di
metadatapembayaran, bersama ID pelanggan Anda di sistem (external ID). - Kirim penjualan ke Dub melalui Track API saat pembayaran berhasil.
Prerequisites
Sebelum menyiapkan integrasi ini, Anda memerlukan:- Akun Dub dengan workspace.
- Pelacakan konversi yang diaktifkan untuk link Anda.
- API key Dub, yang dibuat di dashboard Dub Anda melalui Settings → API Keys.
Getting Started
1
Enable Conversion Tracking in Dub
Di dashboard Dub, aktifkan pelacakan konversi untuk link yang ingin Anda gunakan untuk melacak penjualan. Dub kemudian mencatat event penjualan untuk pelanggan yang datang melalui link tersebut.
Untuk mengaktifkan pelacakan konversi, lihat dokumentasi Dub.
2
Get Your Dub API Key
Di dashboard Dub, buka Settings → API Keys dan buat API key dengan scope
conversions.write.3
Capture Click ID in Checkout
Saat membuat checkout, baca ID klik Dub dari cookie dan tambahkan ke
metadata pembayaran. Lihat Langkah 1.4
Send Sale Data via Webhook
Buat endpoint webhook yang mengirim setiap penjualan ke Track API Dub saat pembayaran berhasil. Lihat Langkah 2.
5
Done
Event konversi penjualan muncul di dashboard analitik Dub Anda, diatribusikan ke link Anda.
Implementation Guide
Step 1: Add Click ID and Customer ID to Checkout Metadata
Saat membuat checkout, baca ID klik Dub dari cookie dan sertakan dalammetadata pembayaran, bersama external ID pelanggan Anda.
Contoh di bawah menggunakan
POST /payments, yang sudah deprecated. Ini masih berfungsi untuk integrasi yang sudah ada, tetapi integrasi baru sebaiknya menggunakan Checkout Sessions (POST /checkouts), yang menerima metadata dengan cara yang sama.Langkah 2: Kirim Data Penjualan ke Dub
Buat endpoint webhook yang mengirim data penjualan ke Track API Dub saat pembayaran berhasil.1
Open the Webhook Section
Di dashboard Dodo Payments, buka Developer → Webhooks lalu klik Add endpoint.

2
Select Dub
Di Integration, pilih Dub.co.
3
Enter API Key
Di API key, tempel API key Dub Anda. Dodo Payments mengirimkannya di header 
Authorization pada setiap pengiriman.
4
Check the URL and Events
Jika Endpoint URL kosong, masukkan
https://api.dub.co/track/sale. Di Subscribed events, pilih event yang ditangani oleh transformasi Anda, seperti payment.succeeded.5
Configure Transformation
Di bawah Transformation code, edit handler untuk memformat data pembayaran untuk Track Sale API milik Dub. Mulai dari contoh.
6
Test & Create
Di bawah Test this code, klik Simulate untuk menjalankan handler terhadap payload contoh. Kemudian klik Create endpoint.
Contoh Kode Transformasi
Setiap handler hanya mengirim penjualan ke Dub jikametadata memiliki click ID. Untuk traffic organik tanpa click ID, handler menetapkan webhook.cancel = true, sehingga tidak ada request yang dikirim ke Dub; pengiriman yang dibatalkan tetap ditampilkan sebagai berhasil di log webhook.
Body request mengikuti Track Sale API milik Dub: customerExternalId dan amount wajib diisi, sedangkan paymentProcessor adalah custom karena daftar pemroses pembayaran Dub tidak memiliki nilai Dodo Payments. Dub menggunakan amount dalam unit yang sama seperti jumlah Dodo Payments: sen untuk mata uang dengan dua angka desimal, dan bilangan bulat penuh untuk mata uang tanpa angka desimal seperti JPY. Contoh-contoh tersebut meneruskan jumlah tanpa perubahan.
Pelacakan Penjualan Dasar
Lacak penjualan saat pembayaran berhasil:basic_sale.js
Melacak Penjualan Langganan
Lacak langganan awal dan pembayaran berulang. Gunakan handler ini untuk langganan, bukan handlerpayment.succeeded, dan jangan gunakan keduanya secara bersamaan: setiap pembayaran langganan juga memicu payment.succeeded, sehingga menangani kedua event akan mencatat setiap penjualan dua kali. Lihat Panduan Integrasi Langganan.
Handler membaca click ID dari metadata milik langganan, jadi teruskan metadata yang sama saat membuat langganan. Untuk perpanjangan, invoiceId menggabungkan ID langganan dengan previous_billing_date, yaitu awal periode penagihan saat ini, sehingga pengiriman yang dicoba ulang menggunakan kembali invoiceId yang sama.
subscription_sale.js
Melacak Penjualan Tanpa Pajak
Kirim hanya jumlah sebelum pajak ke Dub agar pendapatan di Dub tidak mencakup pajak:sale_without_tax.js
Melacak Penjualan dengan Nama Event Kustom
Gunakan nama event kustom untuk mengategorikan berbagai jenis penjualan. Contoh ini membaca flagis_upgrade yang Anda tetapkan di metadata pembayaran:
custom_events.js
Alternatif: Implementasi Sisi Klien
Untuk melacak penjualan dari server Anda sendiri, bukan melalui transformasi webhook, panggil Track API Dub secara langsung setelah pembayaran berhasil, misalnya dari handler webhookpayment.succeeded Anda. Kode ini menggunakan API key Dub Anda, jadi jalankan di server Anda, jangan pernah di browser.
Praktik Terbaik
- Sertakan click ID dalam metadata: Tanpa click ID, Dub tidak dapat mengatribusikan pendapatan ke link Anda.
- Gunakan external ID secara konsisten: Teruskan customer ID yang sama dari sistem Anda sebagai
customerExternalIdsetiap kali untuk analitik tingkat pelanggan yang akurat. - Tangani traffic organik: Tetapkan
webhook.cancel = truejika tidak ada click ID untuk menghindari panggilan API yang tidak perlu. - Uji dengan pembayaran contoh: Jalankan handler dengan Test this code, lalu pastikan integrasi berfungsi sebelum Anda mulai menggunakannya secara live.
- Pantau dashboard Dub Anda: Periksa apakah penjualan muncul dengan atribusi yang diharapkan.
Catatan Penting
- Format jumlah: Dub mengharapkan jumlah dalam sen untuk mata uang dengan dua angka desimal (misalnya, $10.00 adalah
1000) dan bilangan bulat penuh untuk mata uang tanpa angka desimal seperti JPY. - Mata uang: Gunakan kode mata uang ISO 4217, seperti USD, EUR, dan GBP. Dub mengonversi setiap penjualan ke USD berdasarkan nilai tukar terbaru.
- Uji coba gratis: Track Sale API Dub menerima
amountsebesar0, dan contoh-contohnya tidak melewati pembayaran $0, sehingga setiap pembayaran $0 diteruskan ke Dub sebagai penjualan. Untuk melewati pembayaran $0, tetapkanwebhook.cancel = truesaattotal_amountadalah0. - Pengembalian dana: Jika Anda memerlukan pelaporan pendapatan yang akurat, lacak pengembalian dana secara terpisah.
Pemecahan Masalah
Sales Not Appearing in Dub
Sales Not Appearing in Dub
- Pastikan API key Dub Anda benar dan memiliki cakupan
conversions.write. - Periksa apakah
dub_click_idtelah diambil dan disimpan dalam metadata pembayaran. - Periksa apakah transformasi webhook memformat payload dengan benar.
- Pastikan endpoint berlangganan ke
payment.succeeded. - Pastikan conversion tracking diaktifkan untuk link Dub Anda.
- Buka upaya pengiriman endpoint di tab Logs pada Developer → Webhooks untuk melihat respons Dub. Pembayaran tanpa click ID dibatalkan dan ditampilkan sebagai berhasil.
Revenue Attribution Not Working
Revenue Attribution Not Working
- Pastikan pelanggan mengeklik short link Dub Anda sebelum checkout.
- Pastikan cookie
dub_idditetapkan di domain Anda. - Periksa apakah click ID dalam metadata pembayaran cocok dengan klik yang dilakukan pelanggan.
- Ambil click ID sebelum membuat checkout.
Transformation Errors
Transformation Errors
- Periksa apakah payload sesuai dengan format Track Sale API Dub.
- Periksa apakah field wajib,
customerExternalIddanamount, tersedia, danclickIdditetapkan untuk atribusi. - Periksa apakah jumlah berupa bilangan bulat dalam unit mata uang terkecil, bukan desimal.
- Pastikan URL endpoint adalah
https://api.dub.co/track/sale. - Uji transformasi dengan payload webhook contoh.
Duplicate Sales Being Tracked
Duplicate Sales Being Tracked
- Lacak penjualan hanya pada event
payment.succeeded, bukan padapayment.processing. - Gunakan
invoiceIdyang unik untuk setiap penjualan. Dub hanya mencatat satu penjualan untuk setiapinvoiceId. - Untuk perpanjangan, buat
invoiceIddari ID langganan dan periode penagihan, seperti pada Melacak Penjualan Langganan. Nilai yang berubah pada setiap pengiriman, seperti waktu saat ini, akan mencatat penjualan duplikat saat pengiriman dicoba ulang.
Sumber Daya Tambahan
Dub Conversions Documentation
Pelajari conversion tracking dan fitur analitik Dub.
Dub Track Sale API
Lihat referensi API lengkap untuk endpoint Track Sale Dub.
Dub Dashboard
Lihat analitik konversi dan data atribusi di dashboard Dub Anda.
Webhook Events Guide
Telusuri semua event webhook Dodo Payments.
Untuk bantuan terkait integrasi ini, hubungi dukungan Dodo Payments di support@dodopayments.com.