Bir e-ticaret projesinde ürün fiyatlarını kontrol ederken şöyle bir durumla karşılaştım: Ürün sayfasında fiyat doğru görünüyordu. Katalog tarafındaki değer de düzeltilmişti. Ürün sayfasının dataLayer’ını açtığımda ise farklı bir değer görüyordum.
Feed güncellenmişti ama dataLayer’daki sorun devam ediyordu. Burada tekrar aynı noktaya döndüm: Hangi veriyi düzelttik, hangi veriyi henüz kontrol etmedik?
Reklam ve ölçüm tarafında bu ayrım işin uzamasına neden olabiliyor. Ürüne bakıyoruz, fiyat doğru. Kataloğa bakıyoruz, o da doğru. Buna rağmen etkinlikteki tutar hâlâ hatalı olabiliyor. Ben böyle bir durumda aynı ürünün bilgisini, çıktığı yerden gönderildiği yere kadar takip ediyorum.
Feed düzeldiğinde dataLayer da düzelmiş olmuyor
Feed dediğimiz şey, ürün bilgilerini kataloğa taşıyan veri kaynağı. DataLayer ise site üzerindeki ürün ve işlem bilgilerini ölçüm etiketlerine aktarabilmek için kullanılan yapı. Aynı ürünün fiyatını içerseler de bu iki çıktıyı ayrı ayrı kontrol etmek gerekiyor.
Karşılaştığım örnekte feed tarafında yapılan değişikliği katalogda görebiliyorduk. DataLayer’ı yeniden açınca önceki tutarın devam ettiğini gördüm. Bu, incelemeye dataLayer’ın üretildiği yerden devam etmemiz gerektiğini gösteriyordu. Tüm ölçüm akışının düzeldiğini söylemek için henüz erkendi.
Ürün bilgisi → Feed → Katalogdaki ürün kaydı
Ürün bilgisi → dataLayer → GTM → GA4’e gönderilen etkinlik
Bu şema basitleştirilmiş bir anlatım. Kullanılan altyapıya göre araya uygulamalar, farklı veri kaynakları veya sunucu tarafındaki işlemler girebilir.
GTM, dataLayer’daki bilgileri değişkenler üzerinden kullanabiliyor. Ben de kontrolde önce o anda hangi verinin bulunduğuna bakıyorum. Google’ın dataLayer açıklaması, bu aktarımın ve olayların işlenme sırasının nasıl çalıştığını anlatıyor.
Önce aynı ürünü ve aynı işlemi karşılaştırıyorum
Ürün adı üzerinden kontrol etmek bazen yeterli olmuyor. Aynı ürünün farklı varyantları, farklı paketleri veya adet seçenekleri bulunabiliyor. Bu yüzden ürün ya da varyant kimliğini de not alıyorum.
Kontrolü mümkün olduğunca aynı koşullarda yapıyorum: Aynı ürün, aynı varyant, aynı adet ve aynı indirim durumu. Vergi dahil fiyatla vergi hariç tutarı ya da tek ürünle çoklu paketi karşılaştırmadığımdan emin oluyorum.
Ardından şu sırayla ilerliyorum:
- Ürün sayfası: Kullanıcının gördüğü fiyat ve seçili varyant ne?
- Feed ve katalog: Aynı ürün kaydında hangi fiyat var, son güncelleme yansımış mı?
- DataLayer: İlgili işlemde hangi ürün, fiyat, adet ve para birimi oluşmuş?
- GTM: Etiket bu olayda hangi değişkeni okumuş, değişkenin değeri ne olmuş?
- Gönderim: GA4’e gerçekten hangi parametreler gitmiş?
Bu sırayı takip edince, farkın ilk ortaya çıktığı yeri daha net görebiliyorum. DataLayer’da doğru olan bir tutar GTM’de farklı okunuyorsa değişken eşlemesine bakıyorum. Tutar dataLayer’da zaten hatalıysa onu üreten kodun veya entegrasyonun kontrol edilmesini istiyorum.
price, quantity ve value alanlarını birlikte okuyorum
Burada tek başına
value
alanına bakmak da yanıltabiliyor.
price
ürünün birim fiyatını,
quantity
adedini gösteriyor. Olayın
value
değeri ise ilgili ürünlerin fiyat ve adetleriyle tutarlı olmalı.
- Birim fiyat
-
price: 900 - Eklenen adet
-
quantity: 2 - İşlemin tutarı
-
value: 1800 - Para birimi
-
currency: "TRY"
Bu tutarlar anlatım için hazırlanmış örneklerdir; gerçek bir markanın verisi değildir. Örnekte kargo ve vergi hesabı bulunmuyor.
Sepete bir adet ürün eklendiyse
add_to_cart
olayında o işlemde eklenen ürüne bakıyorum.
view_cart
olayında ise görüntülenen sepetin içeriğine bakıyorum. Sepette önceden ürün varsa bu iki olayın tutarı farklı olabilir.
Bir başka kontrol de sayı biçimi. Ekranda gördüğümüz “1.800,00 TL” bir gösterim biçimi. Ölçüm parametresinde tutarı para birimi metni ve binlik ayırıcıyla taşımak yerine sayısal olarak
1800
, para birimini ayrı olarak
TRY
göndermek gerekiyor.
purchase
için de ürün tutarını, kargo ve vergiyi ayrı değerlendiriyorum. Google’ın satın alma etkinliği tanımında
value
, ürünlerin
price × quantity
toplamı olarak açıklanıyor; kargo ve vergi bu toplamın dışında tutuluyor. Bu yüzden paneldeki genel toplamı doğrudan tek bir alana bağlamadan önce kapsamını netleştiriyorum.
GTM’de etiketin hangi değeri okuduğuna bakıyorum
Önizlemede etiketin tetiklendiğini görmek kontrolün bir aşaması. Ben sonra etiketin içine girip değişkenlerin aldığı değerlere bakıyorum. Örneğin
currency
gerçekten dolu mu,
items
içinde beklediğim ürün var mı,
value
doğru alandan mı okunuyor?
Değişkenin adını da tek başına yeterli bulmuyorum. GTM’de bir değişkene fiyatı çağrıştıran bir isim verilmiş olabilir. Önemli olan, içindeki tanımın hangi veri yolunu okuduğu ve test sırasında ne döndürdüğü.
Kontrolü, Tag Assistant’ta ilgili olayı seçerek yapıyorum. Böylece ürün görüntüleme anındaki değerle sepete ekleme anındaki değeri birbirine karıştırmıyorum. Google, dataLayer mesajlarının sırayla işlendiğini belirtiyor. Veriyle olayın hangi sırada oluştuğu, bu yüzden incelemenin bir parçası.
Ardından GA4’ün aldığı kaydı DebugView’da açıyorum. Olay adının yanında parametreleri ve ürün bilgilerini de inceliyorum. GA4 e-ticaret doğrulama rehberi de bu kontrolü öneriyor.
Yazılım ekibine farkın görüldüğü yeri iletiyorum
Teknik ekibe bulguyu iletirken ürün bağlantısını, seçtiğim varyantı, yaptığım işlemi, beklediğim değeri ve gördüğüm değeri birlikte paylaşıyorum. Hangi alanın kontrol edilmesini istediğimi de açıkça yazıyorum.
Örneğin katalogdaki tutar güncellenmiş ama ürün sayfasındaki
ecommerce.value
eski kalmışsa, talebi bu ayrım üzerinden anlatıyorum. Aynı kontrolde ürünün
price
ve
quantity
değerlerini de ekliyorum. Böylece ekibin aynı durumu kendi tarafında tekrar etmesi kolaylaşıyor.
Fiyatla ilgili bir değişiklik yapıldığında ürün görüntüleme, sepete ekleme, sepet, ödeme ve satın alma adımlarının nasıl etkilendiğini de soruyorum. Kontrolün kapsamını baştan yazmak, sonradan başka bir olayda aynı sorunla karşılaşma ihtimalini azaltıyor.
Düzeltmeden sonra aynı senaryoyu yeniden çalıştırıyorum
Benim için işin kapanacağı yer, düzeltmeden sonra yapılan test. İlk bulguyu aldığım üründe aynı işlemi yeniden yapıyorum. Sonra farklı bir ürün, indirimli bir ürün ve birden fazla adetle kontrolü genişletiyorum.
Yeni bir satın alma testi varsa ona ait benzersiz sipariş kimliğini kullanıyorum. GA4, aynı işlem kimliğiyle yeniden gönderilen satın alma olaylarını tekilleştirdiği için, eski test siparişini tekrar kullanmak kontrolü yanıltabilir.
Sayfada görünen bilgi, dataLayer, etiketin okuduğu değişken ve GA4’ün aldığı kayıt birlikte tutarlı olduğunda o test için daha net konuşabiliyorum. Feed tarafında yaptığımız düzeltmeyi de kendi kapsamı içinde değerlendiriyorum. Ölçüm akışının geri kalanı ayrıca doğrulanmalı.
Bu projedeki incelemenin bana tekrar hatırlattığı şey buydu: Aynı ürünün farklı sistemlerdeki kaydını yan yana açmak gerekiyor. Bir yerdeki fiyatın doğru olması, kontrolü orada bitirmek için yeterli gelmiyor.
Bu tür farklar toplam gelire de yansıyorsa, daha önce paylaştığım GA4 ile e-ticaret paneli arasındaki ciro farkı yazısındaki karşılaştırma sırasını da kullanıyorum. Önce aynı kapsamı karşılaştırıp sonra farkın nerede oluştuğunu araştırıyorum.
Sitenizde de benzer bir tutarsızlık varsa birlikte kontrol edebiliriz. GA4 ve GTM ölçüm kurulumu kapsamında veri akışını inceleyip hangi alanın düzeltilmesi gerektiğini belirleyebiliriz.



