- Konu sahibi
- #1
GA4 purchase olayında mükerrer işlem nasıl önlenir?
GA4’te mükerrer purchase işlemini önlemenin temel yolu, her sipariş için değişmeyen ve yalnızca o siparişe ait bir
transaction_id göndermek ve purchase olayını yalnızca ödeme başarıyla tamamlandığında bir kez tetiklemektir. Teşekkür sayfasının her yenilenmesinde yeni sipariş numarası üretmeyin; aynı sipariş için istemci ve sunucu tarafından iki ayrı purchase olayı da göndermeyin.Mükerrer işlem neden oluşur?
En yaygın nedenler şunlardır:
- Purchase kodunun teşekkür sayfası her açıldığında veya yenilendiğinde çalışması.
- Sipariş numarası yerine her sayfa açılışında oluşturulan rastgele bir değer kullanılması.
- Google Tag Manager ile doğrudan gtag.js kodunun aynı sipariş için birlikte tetiklenmesi.
- Tarayıcıdan gönderilen purchase olayına ek olarak, aynı siparişin sunucudan yeni bir işlem kimliğiyle gönderilmesi.
- Ödeme başarısızken veya sipariş henüz kesinleşmemişken purchase gönderilmesi.
transaction_id, ziyaretçiyi veya oturumu değil, ticari siparişi tanımlamalıdır. Örneğin ORD-8F31K bir sipariş numarası olabilir. Aynı sipariş için ödeme sağlayıcısının geri dönüşü, teşekkür sayfasının yenilenmesi veya gönderimin yeniden denenmesi gerektiğinde bu değer değiştirilmemelidir.Uygulanabilir en küçük örnek
Bu web/GTM örneğindeki sipariş numarası, ürün ve tutar kurgudur. Olay yalnızca sunucunun başarılı satış olarak doğruladığı sipariş için oluşturulmalıdır; gerçek bir ödeme veya gönderim yapılmış değildir. Değerleri her siparişte uygulamanızın gerçek sipariş verileriyle doldurun.
Kod:
<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({ ecommerce: null });
window.dataLayer.push({
event: 'purchase',
ecommerce: {
transaction_id: 'ORD-8F31K',
value: 149.90,
currency: 'TRY',
items: [{
item_id: 'SKU-42',
item_name: 'Örnek ürün',
price: 149.90,
quantity: 1
}]
}
});
</script>
Bu kod, tek başına GA4’e gönderim yapmaz; Google Tag Manager’da
purchase özel olayını dinleyen bir GA4 Event etiketi kurmanız gerekir. Etikette olay adını purchase yapın; transaction_id, value, currency ve items alanlarını veri katmanındaki ecommerce nesnesinden eşleyin veya etiketteki e-ticaret veri katmanı gönderimini yapılandırın. GTM önizlemesinde bu alanları tek tek doğrulayın. Zaten doğrudan GA4 etiketi veya gtag.js kullanıyorsanız aynı sipariş için ayrıca bu dataLayer akışını göndermeyin.Yetkili test ortamında veya mağazanın test ödeme akışında tek bir test siparişi oluşturun; gerçek ödeme yapmayı doğrulama önkoşulu saymayın. Test cihazında Tag Assistant/önizleme ile debug modunu açın. Beklenen sonuç, DebugView’da tek bir
purchase olayı ve ona bağlı olarak doğru transaction_id görülmesidir. İki olay görünüyorsa önce tetikleyicileri ve sayfada bulunan GA4/GTM kurulumlarını karşılaştırın. Bir olay görünmüyorsa ödeme başarı koşulunun, etiket tetikleyicisinin ve gerekli ecommerce parametrelerinin gerçekten oluştuğunu kontrol edin.Karar vermeyi kolaylaştıran kurulum seçimi
Aynı siparişi iki farklı kanaldan göndermek yerine, tek bir ana gönderim yöntemi seçin. Yeniden deneme gerekiyorsa yeni transaction_id üretmek yerine aynı değeri kullanın.
| Kurulum | Doğru kullanım | Kaçınılacak durum |
|---|---|---|
| Teşekkür sayfası | Başarılı sipariş verisiyle tek seferlik istemci tetiklemesi | Her yenilemede yeni kimlik üretmek |
| Sunucu tarafı | Sipariş kesinleşince tek ana gönderim | Tarayıcı gönderimine ek olarak ikinci purchase yollamak |
| Yeniden deneme | Aynı sipariş ve aynı transaction_id | Her denemede UUID veya yeni sipariş kimliği kullanmak |
Kontrol listesi
- Sipariş sistemindeki kalıcı ve benzersiz sipariş numarasını belirleyin.
- Purchase olayını yalnızca ödeme başarıyla kesinleştiğinde tetikleyin.
- transaction_id değerini bu sipariş numarasından üretin; sayfa yüklenirken rastgele değer üretmeyin.
- GTM, gtag.js, e-ticaret eklentisi ve sunucu gönderimlerinde aynı siparişin kaç kez işlendiğini kontrol edin.
- Test siparişinde DebugView ve ilgili raporlarda olay, değer, para birimi ve ürün bilgilerinin tek gönderimle uyumlu olduğunu inceleyin.
- Gerçek siparişlerde eksik veya fazla dönüşüm varsa GA4’ten önce sipariş sisteminin kayıtlarını ve gönderim loglarını karşılaştırın.
GA4 aynı kullanıcı için aynı transaction_id ile kaydedilen purchase olaylarını tekilleştirir. Farklı kullanıcılar/siparişler arasında aynı kimliği kullanmayın; boş dize göndermek de farklı satışların tekilleştirilmesine ve eksik sayıma neden olabilir. Bu mekanizma, uygulama tarafındaki her gönderim yolunun doğru olduğunu veya olayın mutlaka teslim edildiğini kanıtlamaz. Asıl çözüm, olayın gereksiz yere yeniden tetiklenmesini engellemek ve tek bir güvenilir gönderim kaynağı seçmektir. Ayrıca iptal veya iade işlemleri, yeni bir purchase göndererek değil, kullandığınız iade akışına uygun biçimde ele alınmalıdır.