"Saya sudah setting ecommerce GA4, tapi revenue di laporan Monetization tidak sesuai dengan keranjang belanja saya." Ini salah satu masalah paling umum dalam pengukuran toko online. Pembelian sebenarnya terjadi, tapi jumlahnya hilang, atau tidak satu pun item tercatat. Kebanyakan penyebabnya adalah cacat di dalam event purchase yang dikirim saat checkout.
Apakah ini terdengar familiar?
- Laporan Monetization menunjukkan jumlah pembelian tapi revenue (
value) nol (atau kosong) - "Ecommerce purchases" muncul, tapi daftar
itemskosong - Dashboard keranjang belanja dan GA4 Anda tidak sepakat soal jumlah revenue
- Order yang sama terhitung dua kali, membuat revenue lebih tinggi dari kenyataan
Panduan ini menjelaskan cara memverifikasi event purchase GA4 Anda terkirim dengan benar, parameter demi parameter. Dari sudut pandang praktis: ke mana harus melihat untuk memisahkan "terkirim vs. tidak terkirim."
Pertama, parameter yang dibutuhkan event purchase
Inti dari pengukuran ecommerce GA4 adalah event purchase yang direkomendasikan, dikirim saat pembelian selesai. Untuk mencatat revenue dan produk dengan benar, semua parameter berikut harus ada.
| Parameter | Peran | Kesalahan umum |
|---|---|---|
transaction_id |
Mengidentifikasi order secara unik | Hilang → pembelian yang sama terhitung dua kali |
value |
Total jumlah pembelian | Tidak diset / dikirim sebagai string → revenue muncul 0 |
currency |
Kode mata uang (ISO 4217) | Bukan JPY/USD, atau hilang → jumlahnya tidak teragregasi |
items |
Array produk yang dibeli | Array kosong atau skema salah → produk tidak tercatat |
Poin kuncinya: value dan currency selalu berpasangan. Tanpa currency, GA4 tidak bisa mengagregasi jumlah tersebut sebagai revenue. Dan items adalah array di mana setiap produk membawa field seperti item_id dan item_name. Jika array ini kosong atau strukturnya salah, pembelian tetap terhitung, tapi produk di dalamnya menghilang.
Jebakan array items (produk tidak tercatat)
Ketika "pembelian muncul tapi produk kosong," itu hampir selalu masalah items. Tiga penyebab umum:
- Array items kosong:
purchaseterkirim, tapiitems: []. Data keranjang belanja terpotong di suatu tempat dalam proses handoff. - Skema salah: setiap produk tidak punya
item_idmaupunitem_name. GA4 mensyaratkan minimal salah satu dari keduanya, jadi jika keduanya hilang, entri tersebut tidak dianggap sebagai produk. - Nama field salah: Anda masih mengirim key lama Universal Analytics seperti
idatauname. GA4 mengharapkanitem_id/item_name.
Jebakan umum: jika Anda bisa melihat request
purchaseterkirim di DevTools tapi tidak ada produk tercatat, periksa body request satu per satu item — apakahitemskosong, dan apakah key-nyaitem_id/item_name? "Event-nya terkirim" tidak berarti "produknya masuk dengan benar."
Jebakan value / currency (revenue tidak sesuai)
Cacat seputar jumlah revenue diam-diam merusak laporan revenue Anda.
valuedikirim sebagai string: mengirim"3000"sebagai string dapat mencegah GA4 mengagregasinya sebagai angka, sehingga tidak pernah masuk ke revenue. Kirim sebagai angka (3000).currencyhilang atau bukan ISO: jikacurrencytidak ada, atau ditulis sebagai¥atauyen, itu tidak akan teragregasi. Harus berupa kode ISO 4217 tiga huruf (JPY,USD, dll).- Penanganan pajak/ongkir yang tidak konsisten: apakah
valuemencakup pajak dan ongkir harus sesuai antara keranjang belanja Anda dan GA4, atau akan muncul sebagai selisih jumlah. Pilihan mana pun boleh — yang penting adalah konsisten.
Jebakan umum: jika "jumlah pembelian sesuai tapi hanya revenue yang meleset," curigai dulu apa yang Anda masukkan ke dalam
value(termasuk pajak atau tidak, ongkir atau tidak). Sebagian besar selisih berasal dari sini.
Jebakan transaction_id (double-counting)
transaction_id adalah parameter yang mengidentifikasi order secara unik. Jika hilang, atau berubah setiap kali, GA4 memperlakukan pembelian yang sama sebagai pembelian terpisah dan menghitungnya lebih dari sekali.
- Setiap kali halaman thank-you dimuat ulang,
purchaseterkirim lagi — dan tanpatransaction_id, setiap reload dihitung sebagai revenue baru - Sebaliknya, dengan
transaction_idyang benar, GA4 melakukan de-duplikasi pembelian berulang yang berbagi ID yang sama
Untuk penjelasan lebih lengkap tentang double-counting itu sendiri, lihat Kenapa konversi terhitung dua kali, dan cara memperbaikinya. Aturan dasarnya: masukkan nilai yang unik per order dan tidak pernah berubah — seperti nomor order — ke dalam transaction_id.
Jebakan dataLayer (implementasi GTM)
Jika Anda menggunakan Google Tag Manager untuk mengirim event purchase, datanya mengalir melalui dataLayer. Tiga masalah di sini menyumbang sebagian besar tiket "purchase terkirim tapi datanya salah."
- Tidak membersihkan objek ecommerce sebelum setiap push. GTM menggabungkan push dataLayer secara rekursif. Jika event ecommerce sebelumnya (misalnya
add_to_cart) meninggalkan data produk di objekecommerce, data lama itu bocor ke pushpurchaseAnda. Solusinya: selalu push{ ecommerce: null }tepat sebelum push purchase Anda. - Waktu trigger vs. ketersediaan dataLayer. Jika tag Event GA4 Anda terpicu saat DOM Ready tapi platform keranjang belanja mendorong data transaksi ke dataLayer sedikit lebih lambat, tag terpicu dengan objek
ecommerceyang kosong. Periksa urutannya di mode Preview GTM: push dataLayerpurchaseharus muncul sebelum tag terpicu. - Menggunakan tipe variabel yang salah. GTM punya "Data Layer Variable" bawaan untuk field ecommerce (misalnya
ecommerce.transaction_id). Jika Anda tidak sengaja membuat variabel JavaScript kustom atau hard-code nilainya, pemetaan bisa diam-diam rusak saat format keranjang belanja berubah.
Tes cepat: buka GTM Preview, lakukan pembelian uji coba, dan lihat tab Variables untuk event
purchase. Setiap field ecommerce (transaction_id,value,currency,items) seharusnya terisi. Jika ada yangundefined, push dataLayer entah kehilangan field tersebut atau terpicu setelah tag. Untuk troubleshooting GTM yang lebih luas, lihat Kenapa tag GTM Anda tidak melacak.
Redirect payment gateway dan hilangnya event purchase
Ketika checkout mengarahkan pembeli ke payment gateway eksternal (PayPal, Stripe Checkout, Klarna, dll) lalu kembali ke halaman thank-you Anda, event purchase berisiko tinggi tidak pernah terpicu atau kehilangan datanya.
- Sesi terputus saat kembali. Redirect menciptakan navigasi baru. Jika browser memperlakukan kembalinya pengunjung sebagai sesi baru (umum terjadi dengan Safari ITP dan heuristik ad-blocker), halaman thank-you mungkin dimuat tanpa konteks keranjang belanja yang dibutuhkan untuk mengisi
itemsatauvalue. Untuk lebih lanjut tentang kehilangan data khusus Safari, lihat Safari ITP dan kehilangan konversi. - Penimpaan atribusi. Meski
purchaseterpicu, GA4 mungkin mengaitkan konversi ke domain payment sebagai sumber "referral" alih-alih sumber traffic asli. Tambahkan domain payment gateway ke daftar link cross-domain Anda di pengaturan data stream GA4 untuk menjaga sesi tetap utuh. Lihat Kenapa pelacakan cross-domain rusak untuk setup lengkapnya. - Fallback server-side. Untuk gateway yang secara andal mengirim webhook server-side (misalnya
checkout.session.completeddari Stripe), pertimbangkan untuk memicu eventpurchaselewat GA4 Measurement Protocol di server Anda alih-alih mengandalkan skrip client-side. Ini menghindari masalah redirect sepenuhnya. Untuk pendekatan server-side, lihat Verifikasi server-side GTM.
Urutan event ecommerce juga penting
Event ecommerce GA4 mengikuti sebuah funnel: view_item → add_to_cart → begin_checkout → purchase. Meskipun purchase bisa terpicu secara independen, kerusakan pada event upstream bisa menutupi masalah yang akhirnya muncul di data purchase.
- Jika
add_to_carttidak pernah mengisiecommerce.itemsdataLayer dengan benar, array items yang salah bentuk yang sama kemungkinan terbawa hingga kepurchase. - Beberapa platform keranjang belanja membangun array
itemssecara bertahap di sepanjang langkah funnel. Jikabegin_checkoutdilewati atau terpicu dengan error, array yang diteruskan kepurchasemungkin tidak lengkap. - Memverifikasi seluruh funnel — bukan hanya
purchaseterakhir — menangkap kesalahan skema lebih awal dan membuat debugging lebih cepat.
Empat cara memastikan event terkirim
Anda bisa memastikan event purchase dan isinya terkirim dengan benar, dengan urutan berikut:
- GA4 DebugView: aktifkan mode debug, jalankan pembelian sungguhan (atau uji coba), dan di "Admin → DebugView" amati apakah event
purchasemuncul serta apakahvalue,currency, danitemsada. Kuncinya adalah membuka items dan memeriksa isinya. - DevTools Network: di DevTools browser Anda, filter untuk
collectdan pastikan request ke…/g/collectterpicu saat halaman thank-you dimuat. Di body-nya, periksaen=purchase,transaction_id,value,currency, danitems. - Laporan Monetization GA4: di "Reports → Monetization → Ecommerce purchases," pastikan kuantitas dan revenue per produk terakumulasi (laporan standar punya jeda pemrosesan).
- Periksa duplikasi berdasarkan transaction_id: di laporan exploration, verifikasi order yang sama tidak terhitung dua kali dengan mencari duplikasi di level
transaction_id.
Untuk memastikan apakah tag GA4 itu sendiri terpicu sama sekali, baca Cara memverifikasi tag GA4 Anda berfungsi terlebih dahulu — ini mempercepat proses isolasi masalah.
Apa yang tidak bisa diketahui hanya dengan pengecekan di komputer Anda sendiri
DebugView dan DevTools sangat berguna, tapi menjalankan satu pembelian uji coba di komputer Anda sendiri punya dua keterbatasan struktural.
- Lingkungan Anda bukan lingkungan pengunjung Anda. Status login, ekstensi browser, pengecualian IP kantor, dan ad-blocker berarti
purchasebisa terpicu dengan benar di komputer Anda tapi hilang dalam kondisi pembeli sungguhan. Terutama pada alur yang melewati payment gateway atau redirect, sesi bisa terputus sebelum kembali ke halaman thank-you, membuatitemskosong. - Revenue yang melibatkan klik iklan sulit diverifikasi. Untuk benar-benar melihat "apakah pembelian yang didorong iklan sungguh tercatat sebagai revenue," Anda perlu mengklik iklan yang sedang tayang untuk mereproduksi alurnya — yang membawa risiko pelanggaran kebijakan iklan sebagai self-click.
Menilai "sudah muncul di DebugView, jadi aman" cenderung melewatkan masalah value atau items yang hilang pada alur checkout sungguhan yang dilalui pembeli Anda. Untuk pola pikir yang melampaui sekadar terpicu hingga benar-benar tercatat, lihat Kenapa terpicu tapi tidak tercatat.
Checklist verifikasi
- Apakah event
purchaseterpicu di halaman thank-you (pembelian selesai)? - Apakah
valueberupa angka (bukan string)? - Apakah
currencyberupa kode ISO 4217 (JPY/USD, dll)? - Apakah array
itemstidak kosong, denganitem_id/item_namepada setiap produk? - Apakah
transaction_idada dan unik per order (untuk mencegah double-counting)? - Apakah pajak/ongkir dalam
valuesudah selaras dengan sisi keranjang belanja? - Apakah order yang sama tidak terhitung dua kali (periksa di level
transaction_id)? - Apakah juga tidak hilang dalam kondisi pengguna sungguhan di production (jangan menilai dari satu kali percobaan di komputer Anda)?
Pertanyaan yang sering diajukan
Q. Pembelian muncul, tapi revenue (value) nol. Kenapa?
A. Biasanya value tidak diset atau dikirim sebagai string, atau currency hilang/bukan ISO sehingga tidak bisa teragregasi. Periksa isi value dan currency di request …/g/collect pada DevTools Network.
Q. Kenapa hanya item yang tidak tercatat?
A. Kemungkinan besar array items kosong, atau setiap produk tidak punya item_id / item_name. Periksa juga apakah Anda masih mengirim key lama UA id / name.
Q. Kenapa pembelian yang sama terhitung dua kali?
A. Biasanya transaction_id hilang, atau berubah setiap kali reload. Masukkan nilai unik dan tidak berubah seperti nomor order, dan GA4 akan melakukan de-duplikasi. Lihat artikel duplikasi pelacakan untuk detailnya.
Q. Apakah pajak dan ongkir harus dimasukkan ke value?
A. GA4 tidak punya aturan baku, tapi yang terpenting adalah menyelaraskan definisi revenue keranjang belanja dengan value GA4. Ketidaksesuaian selalu muncul sebagai selisih jumlah.
Q. Jika saya bisa melihat purchase di DebugView, apakah sudah aman? A. Itu hanya memastikan bahwa event tersebut terkirim. Anda baru aman setelah memastikan itu terakumulasi dengan benar di laporan Monetization standar — dan bahwa itu tidak hilang pada alur checkout sungguhan pembeli Anda di production.
Kesimpulan: jangan berhenti di terpicu — periksa isi dan pencatatan di production
Pengukuran purchase ecommerce GA4 hanya berfungsi dengan benar setelah event purchase memiliki transaction_id, value, currency, dan items semuanya lengkap. DebugView dan DevTools memastikan itu "terkirim," tapi yang penting adalah apa yang terjadi setelahnya — apakah jumlah dan produk tercatat tanpa kehilangan, pada alur checkout sungguhan yang dilalui pembeli Anda, di production.
ConversionOK menjalankan halaman live Anda di browser independen dan terisolasi, lalu mencegat event purchase yang sungguh-sungguh terkirim (termasuk value, currency, dan items), kemudian memverifikasinya. Tidak perlu mengklik iklan Anda sendiri, dan tanpa gangguan dari lingkungan kantor Anda. Mulai dengan pengecekan statis gratis untuk memastikan titik masuk pengukuran ecommerce Anda.