- Konu sahibi
- #1
İlk sayfa etiketinin ihtiyaç duyduğu ve sunucuda zaten bilinen verileri, Google Tag Manager kapsayıcı kodundan önce
DataLayer, sayfadaki uygulama ile GTM arasındaki veri kuyruğudur. Sayfa açılırken eklenen nesneler GTM yüklenmeden önce bekler; kapsayıcı yüklendiğinde GTM bu nesneleri sırayla işler.
Etikette kullanılacak alanları sade ve kararlı adlarla gönderin. Örneğin
Aşağıdaki kod, GTM kapsayıcı kodundan önce sayfa şablonuna veya ilgili sayfanın HTML bölümüne yerleştirilmelidir:
GTM içinde bu yapı için şu eşleştirmeyi yapın:
Özel Etkinlik tetikleyicisinin olay adını
Başarı durumu, önizlemede olayın görünmesi ve ilgili değişkenlerin doğru değerleri göstermesidir. Olay görünür fakat etiket çalışmıyorsa sorun genellikle tetikleyicinin olay adıyla eşleşmemesi veya etiket koşullarının olayı filtrelemesidir. Değer boşsa değişken adı, kodun çalışma sırası veya uygulamanın veriyi henüz üretmemiş olması kontrol edilmelidir.
API yanıtının 500 milisaniyede geleceğini varsayıp bir zamanlayıcıyla etiketi çalıştırmak güvenilir değildir. Uygulamanın başarılı veri yanıtını işlediği noktada alanları ve olayı aynı mesajda gönderin:
Bu etiketi hem All Pages hem de
Tek sayfalı uygulamalarda sayfa değiştiğinde ilk yükleme koduna güvenmek yerine rota değişimi tamamlandıktan sonra yeni
Evet; her olayı ayrı bir
Kodun gerçekten çalıştığı sayfayı kontrol edin, ardından kapsayıcıdan önce ve sonra
Olay adı, tetikleyici türü, değişken koşulları ve etiketin izin/engelleme kuralları birlikte kontrol edilmelidir. DataLayer'a veri eklemek tek başına her etiketi çalıştırmaz; etiketin bu olaya bağlanmış olması gerekir.
window.dataLayer dizisine ekleyin. Veriler API yanıtıyla daha sonra oluşacaksa kapsayıcıyı bekletmek yerine ilgili etiketi veriyle birlikte gönderilen hazır olayına bağlayın. Dizi yoksa oluşturun, veriyi push() ile gönderin ve etiketin ne zaman çalışacağını belirlemek için nesneye bir event adı koyun. Böylece GTM kapsayıcıyı yüklediğinde kuyruğa alınmış veriyi okuyabilir.DataLayer nasıl çalışır?
DataLayer, sayfadaki uygulama ile GTM arasındaki veri kuyruğudur. Sayfa açılırken eklenen nesneler GTM yüklenmeden önce bekler; kapsayıcı yüklendiğinde GTM bu nesneleri sırayla işler.
event alanı, belirli bir olay için tetikleyici kurulmasını sağlar.Etikette kullanılacak alanları sade ve kararlı adlarla gönderin. Örneğin
productId, pageType veya userType gibi alanlar seçilebilir. Aynı olayı birden fazla kez göndermek, eski değerleri yanlış zamanda kullanmak veya dataLayer dizisini yeniden atamak beklenmeyen sonuçlara yol açabilir.Çalışan en küçük örnek
Aşağıdaki kod, GTM kapsayıcı kodundan önce sayfa şablonuna veya ilgili sayfanın HTML bölümüne yerleştirilmelidir:
Kod:
<script>
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'product_view_ready',
pageType: 'product',
productId: 'example-123',
userType: 'guest'
});
</script>
<!-- Bu noktadan sonra Google Tag Manager kapsayıcı kodu gelir. -->
GTM içinde bu yapı için şu eşleştirmeyi yapın:
| DataLayer alanı | GTM karşılığı | Kullanım |
|---|---|---|
event | Özel Etkinlik tetikleyicisi | Etiketin ne zaman çalışacağını belirler |
productId | Data Layer Değişkeni | Etikete ürün kimliğini aktarır |
pageType | Data Layer Değişkeni | Sayfa türünü belirtir |
Özel Etkinlik tetikleyicisinin olay adını
product_view_ready olarak girin. productId, pageType ve userType için aynı isimlerle Data Layer Değişkenleri oluşturun. Etiketi bu tetikleyiciye bağladığınızda, olay işlendiğinde değişkenler o olayın verileriyle okunur.Uygulama ve kontrol adımları
- GTM kapsayıcı kodunun çalışmasından önce
window.dataLayer = window.dataLayer || [];satırını çalıştırın. Daha önce oluşturulmuş diziyi yeniden oluşturmayın. - Etiketin ihtiyaç duyduğu tüm değerleri tek bir
push()nesnesinde gönderin ve olay adını açıkça yazın. - GTM'de her veri alanı için Data Layer Değişkeni, olay için Özel Etkinlik tetikleyicisi oluşturun.
- GTM Önizleme modunda sayfayı açın ve
product_view_readyolayını seçin. Değişkenler bölümünde beklenen değerleri kontrol edin. - Olay görünmüyorsa kodun kapsayıcıdan önce çalışıp çalışmadığını, olay adının büyük-küçük harf bakımından aynı olduğunu ve
dataLayeryerine yanlış bir dizi adı kullanılmadığını inceleyin.
Başarı durumu, önizlemede olayın görünmesi ve ilgili değişkenlerin doğru değerleri göstermesidir. Olay görünür fakat etiket çalışmıyorsa sorun genellikle tetikleyicinin olay adıyla eşleşmemesi veya etiket koşullarının olayı filtrelemesidir. Değer boşsa değişken adı, kodun çalışma sırası veya uygulamanın veriyi henüz üretmemiş olması kontrol edilmelidir.
Veri asenkron geliyorsa süre tahmin etmeyin
API yanıtının 500 milisaniyede geleceğini varsayıp bir zamanlayıcıyla etiketi çalıştırmak güvenilir değildir. Uygulamanın başarılı veri yanıtını işlediği noktada alanları ve olayı aynı mesajda gönderin:
JavaScript:
function reportProductReady(product) {
window.dataLayer = window.dataLayer || [];
window.dataLayer.push({
event: 'product_view_ready',
pageType: 'product',
productId: String(product.id)
});
}
// Başarılı API yanıtını doğruladıktan sonra:
// reportProductReady(product);
Bu etiketi hem All Pages hem de
product_view_ready ile tetiklemeyin; aksi halde ilk boş veriyle ve sonra doğru veriyle iki kez çalışabilir. Kuyruğun sırayla işlenmesi, ağ yanıtlarının veya eşzamanlı etiketlerin de aynı sırayla tamamlanacağını garanti etmez. Önizlemede özellikle hazır olayını seçip o andaki değişkenlere bakın. SPA’da önceki ürünün alanlarını yanlışlıkla yeniden kullanmamak için her yeni olaydaki gerekli alanları açıkça gönderin; alanın kullanılmadığı durumlar için sıfırlama politikanızı belirleyin.Sık yapılan hatalar
- DataLayer'ı yeniden atamak: Daha sonra
window.dataLayer = []yazmak, önceki kuyruğu koparabilir. Başlangıçta yalnızcawindow.dataLayer = window.dataLayer || [];kullanın. - Olay adı göndermemek: Alanlar dataLayer'a eklenmiş olsa bile olay adı yoksa o veriye bağlı özel etkinlik tetikleyicisi çalışmaz.
- Kapsayıcıdan sonra veri göndermek: Bu durumda olay yine işlenebilir; ancak etiketin yalnızca ilk sayfa yüklenmesinde çalışması isteniyorsa veri geç kalmış olabilir. İhtiyaca göre olay bazlı tetikleyici kullanın.
- Alan adlarını tutarsız yazmak:
productIdileproduct_idfarklı değişkenlerdir. Uygulama, GTM değişkeni ve etiket aynı adlandırmayı kullanmalıdır. - Gereksiz kişisel veri göndermek: Etiket için gerekli olmayan ad, e-posta veya benzeri ham bilgileri dataLayer'a koymayın. İhtiyaç varsa uygun izin ve veri işleme tasarımını ayrıca değerlendirin.
Tek sayfalı uygulamalarda sayfa değiştiğinde ilk yükleme koduna güvenmek yerine rota değişimi tamamlandıktan sonra yeni
event ile push() yapın. Böylece sanal sayfa görüntüleme veya ilgili etiket, yeni içerik hazır olduktan sonra çalışır.Kaynaklar
Sık sorulan sorular
Birden fazla dataLayer olayı aynı anda gönderilebilir mi?
Evet; her olayı ayrı bir
push() çağrısıyla ve anlamlı bir sırayla gönderin. GTM kuyruktaki mesajları sırayla işlese de etiketlerin ağ işlemleri farklı zamanlarda tamamlanabilir; bu nedenle aynı bilgiyi farklı olaylara gereksiz yere kopyalamayın.DataLayer verisini tarayıcı konsolunda göremiyorsam ne yapmalıyım?
Kodun gerçekten çalıştığı sayfayı kontrol edin, ardından kapsayıcıdan önce ve sonra
window.dataLayer değerini inceleyin. GTM Önizleme olayında veri görünüyorsa konsoldaki son durum yerine ilgili olayın değişken değerlerini esas alın.Veri gönderildiği halde etiket neden çalışmayabilir?
Olay adı, tetikleyici türü, değişken koşulları ve etiketin izin/engelleme kuralları birlikte kontrol edilmelidir. DataLayer'a veri eklemek tek başına her etiketi çalıştırmaz; etiketin bu olaya bağlanmış olması gerekir.