← Semua artikel

Blog

Cara Memverifikasi Event Purchase Ecommerce GA4 Anda Terkirim dengan Benar

event purchase ga4 tidak berfungsipelacakan ecommerce ga4parameter items ga4verifikasi purchase ga4

"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 items kosong
  • 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:

  1. Array items kosong: purchase terkirim, tapi items: []. Data keranjang belanja terpotong di suatu tempat dalam proses handoff.
  2. Skema salah: setiap produk tidak punya item_id maupun item_name. GA4 mensyaratkan minimal salah satu dari keduanya, jadi jika keduanya hilang, entri tersebut tidak dianggap sebagai produk.
  3. Nama field salah: Anda masih mengirim key lama Universal Analytics seperti id atau name. GA4 mengharapkan item_id / item_name.

Jebakan umum: jika Anda bisa melihat request purchase terkirim di DevTools tapi tidak ada produk tercatat, periksa body request satu per satu item — apakah items kosong, dan apakah key-nya item_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.

  • value dikirim sebagai string: mengirim "3000" sebagai string dapat mencegah GA4 mengagregasinya sebagai angka, sehingga tidak pernah masuk ke revenue. Kirim sebagai angka (3000).
  • currency hilang atau bukan ISO: jika currency tidak ada, atau ditulis sebagai ¥ atau yen, itu tidak akan teragregasi. Harus berupa kode ISO 4217 tiga huruf (JPY, USD, dll).
  • Penanganan pajak/ongkir yang tidak konsisten: apakah value mencakup 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, purchase terkirim lagi — dan tanpa transaction_id, setiap reload dihitung sebagai revenue baru
  • Sebaliknya, dengan transaction_id yang 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."

  1. 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 objek ecommerce, data lama itu bocor ke push purchase Anda. Solusinya: selalu push { ecommerce: null } tepat sebelum push purchase Anda.
  2. 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 ecommerce yang kosong. Periksa urutannya di mode Preview GTM: push dataLayer purchase harus muncul sebelum tag terpicu.
  3. 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 yang undefined, 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 items atau value. Untuk lebih lanjut tentang kehilangan data khusus Safari, lihat Safari ITP dan kehilangan konversi.
  • Penimpaan atribusi. Meski purchase terpicu, 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.completed dari Stripe), pertimbangkan untuk memicu event purchase lewat 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_itemadd_to_cartbegin_checkoutpurchase. Meskipun purchase bisa terpicu secara independen, kerusakan pada event upstream bisa menutupi masalah yang akhirnya muncul di data purchase.

  • Jika add_to_cart tidak pernah mengisi ecommerce.items dataLayer dengan benar, array items yang salah bentuk yang sama kemungkinan terbawa hingga ke purchase.
  • Beberapa platform keranjang belanja membangun array items secara bertahap di sepanjang langkah funnel. Jika begin_checkout dilewati atau terpicu dengan error, array yang diteruskan ke purchase mungkin tidak lengkap.
  • Memverifikasi seluruh funnel — bukan hanya purchase terakhir — 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:

  1. GA4 DebugView: aktifkan mode debug, jalankan pembelian sungguhan (atau uji coba), dan di "Admin → DebugView" amati apakah event purchase muncul serta apakah value, currency, dan items ada. Kuncinya adalah membuka items dan memeriksa isinya.
  2. DevTools Network: di DevTools browser Anda, filter untuk collect dan pastikan request ke …/g/collect terpicu saat halaman thank-you dimuat. Di body-nya, periksa en=purchase, transaction_id, value, currency, dan items.
  3. Laporan Monetization GA4: di "Reports → Monetization → Ecommerce purchases," pastikan kuantitas dan revenue per produk terakumulasi (laporan standar punya jeda pemrosesan).
  4. 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.

  1. Lingkungan Anda bukan lingkungan pengunjung Anda. Status login, ekstensi browser, pengecualian IP kantor, dan ad-blocker berarti purchase bisa 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, membuat items kosong.
  2. 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 purchase terpicu di halaman thank-you (pembelian selesai)?
  • Apakah value berupa angka (bukan string)?
  • Apakah currency berupa kode ISO 4217 (JPY / USD, dll)?
  • Apakah array items tidak kosong, dengan item_id / item_name pada setiap produk?
  • Apakah transaction_id ada dan unik per order (untuk mencegah double-counting)?
  • Apakah pajak/ongkir dalam value sudah 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.