Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi

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.

KurulumDoğru kullanımKaçınılacak durum
Teşekkür sayfasıBaşarılı sipariş verisiyle tek seferlik istemci tetiklemesiHer yenilemede yeni kimlik üretmek
Sunucu tarafıSipariş kesinleşince tek ana gönderimTarayıcı gönderimine ek olarak ikinci purchase yollamak
Yeniden denemeAynı sipariş ve aynı transaction_idHer denemede UUID veya yeni sipariş kimliği kullanmak

Kontrol listesi​


  1. Sipariş sistemindeki kalıcı ve benzersiz sipariş numarasını belirleyin.
  2. Purchase olayını yalnızca ödeme başarıyla kesinleştiğinde tetikleyin.
  3. transaction_id değerini bu sipariş numarasından üretin; sayfa yüklenirken rastgele değer üretmeyin.
  4. GTM, gtag.js, e-ticaret eklentisi ve sunucu gönderimlerinde aynı siparişin kaç kez işlendiğini kontrol edin.
  5. Test siparişinde DebugView ve ilgili raporlarda olay, değer, para birimi ve ürün bilgilerinin tek gönderimle uyumlu olduğunu inceleyin.
  6. 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.

Sık sorulan sorular​


Teşekkür sayfasını yenileyen kullanıcı için purchase tamamen engellenebilir mi?​

Tekrarlı tetikleme uygulama tarafında sınırlandırılabilir. Ancak siparişin ödeme durumu ile analitik gönderim durumunu ayrı tutun; gönderilmeden tamamlandı işaretlemek eksik ölçüm üretebilir. Kalıcı bir gönderim kaydı/kuyruğuyla bekleyen ve denenmiş işleri izleyin; gerekli yeniden denemelerde aynı sipariş kimliğini koruyun.

transaction_id olarak e-posta adresi kullanılabilir mi?​

Hayır. E-posta bir sipariş kimliği değildir; aynı kişi birden fazla sipariş verebilir. Ayrıca kişisel veriyi analiz olaylarına taşımamak için sipariş sisteminin kişisel olmayan sipariş numarasını kullanın.

DebugView’da tek olay görünüyor ama raporda sayı farklıysa ne kontrol edilmelidir?​

Önce tarih aralığını, rapor filtrelerini ve aynı siparişin farklı entegrasyonlardan gönderilip gönderilmediğini kontrol edin. Ardından GA4 dışındaki sipariş kaynağındaki gerçek başarılı sipariş sayısını karşılaştırın; DebugView tek başına tüm raporlama sorunlarının kanıtı değildir.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.