Bir səhnə var, agentlik tərəfində işləyən hər kəs onu dəfələrlə görür. Sahibkar deyir ki, Google Ads hesabında bu ay 40 satış görünür. Sonra mühasibatlıqdan gələn rəqəmə baxırıq: 25. Aradakı 15 satış nə itmiş, nə də uydurulmuşdur. Sadəcə iki dəfə sayılıb, ya da heç vaxt doğru sayılmayıb.
Bu, reklamın problemi deyil. Ölçmənin problemidir. Və Google Ads-in alqoritmi bunu bilmir: ona hansı data verilirsə, o dataya görə optimallaşdırır. Yanlış data ilə mükəmməl işləyir, sizi isə yanlış istiqamətə aparır.
Bu bələdçi saytınızda baş verən satışın GA4 hesabatına və oradan Google Ads-ə necə çatdığını addım-addım göstərir. Hər addımda həm nə etmək lazım olduğunu, həm də bunu necə yoxlayacağınızı yazdıq. Yoxlanmamış qurulum, qurulmamış qurulumdur.
Zəncir dörd halqadan ibarətdir
Ölçmə tək bir alət deyil. Bir-birinə bağlı dörd hissədir və hər hansı biri qırılanda sonrakı hər şey səhv olur.
- 1 · Saytistifadəçi hərəkəti baş verir
- 2 · dataLayerhərəkət strukturlu dataya çevrilir
- 3 · GTMdata teqlərə paylanır
- 4 · GA4 + Adshesabat və optimallaşdırma
Diqqət yetirin: dördüncü halqa sonuncudur. İnsanlar adətən oradan başlayır. GA4 hesabı açılır, ölçmə kodu sayta yapışdırılır, hesabata baxılır və rəqəm görünmür. Səbəb demək olar həmişə birinci və ikinci halqadadır.
Addım 0: GA4 hesabının özünü düzgün qurmaq
Bu bölmə demək olar həmişə buraxılır, çünki GA4 quraşdırıldıqdan sonra "işləyir" kimi görünür. Halbuki defolt ayarların bir neçəsi sizin üçün səhvdir və bunu altı ay sonra, data lazım olanda fərq edirsiniz.
Data saxlama müddətini dəyişin. GA4-də istifadəçi səviyyəli data defolt olaraq 2 ay saxlanır. Bu, ən uzun icazə verilən müddət deyil, ən qısasıdır. Admin bölməsində "Data Retention" ayarını 14 aya qaldırın. Bu ayar geriyə işləmir: bu gün dəyişsəniz, keçən ilin datası geri qayıtmır.
Daxili trafiki filtrləyin. Öz komandanız, veb studiyanız və sizin hər gün saytı yoxlamağınız hesabata qarışır. Kiçik saytlarda bu, ciddi təhrifdir. Admin bölməsində "Data Streams", sonra "Configure tag settings", sonra "Define internal traffic" bölməsində ofis IP ünvanınızı əlavə edin. Sonra "Data Filters" bölməsində filtri Active vəziyyətinə keçirin, çünki o, defolt olaraq "Testing" rejimində yaradılır və heç nə filtrləmir.
İstənilməyən yönləndirmələri siyahıya salın. Bu, Azərbaycanda xüsusilə vacibdir. Ödəniş zamanı istifadəçi bank və ya ödəniş sisteminin səhifəsinə keçir, sonra sayta qayıdır. GA4 bu qayıdışı yeni bir istifadəçi və yeni bir mənbə kimi qeyd edir. Nəticədə bütün satışlar "referral" kimi görünür və Google Ads-in payı hesabatdan yox olur.
Həll sadədir: "Configure tag settings", sonra "List unwanted referrals" bölməsinə ödəniş sisteminizin domenini əlavə edin.
- odenis-sistemi.azsiyahıda
- bank-3ds.azsiyahıda
- paypal.comsiyahıda
- Digər ödəniş domenləriəlavə edilməyib
Bir neçə domeniniz varsa cross-domain ölçməsini qurun. Mağaza
sirket.az, ödəniş pay.sirket.az ünvanındadırsa GA4 bunları iki ayrı
sayt sayır. "Configure your domains" bölməsində hər ikisini əlavə edin.
Ölçmə ID-sini bir yerdə saxlayın. GA4-də hər data stream-in G- ilə
başlayan ID-si var. GTM-də bu ID sabit dəyər kimi deyil, dəyişən kimi
saxlanmalıdır. Sonradan dəyişdirmək lazım gələndə bir yerdən dəyişirsiniz,
on teqdən yox.
Addım 1: dataLayer nədir və nə üçün lazımdır
dataLayer saytınızla ölçmə alətləri arasındakı ortaq dildir. Saytınız
"istifadəçi 249 manatlıq sifariş verdi" deyir, dataLayer bunu hər alətin
oxuya biləcəyi bir strukturda saxlayır.
Onsuz da olur, amma pis olur. dataLayer olmadan GTM səhifədəki mətnə, düymənin CSS sinfinə və ya URL-ə baxaraq təxmin etməyə çalışır. Dizayner düyməni dəyişəndə ölçmə susur və heç kim xəbər tutmur.
Sadə bir nümunə. İstifadəçi məhsul səhifəsinə girəndə saytınız bunu göndərir:
window.dataLayer = window.dataLayer || []
window.dataLayer.push({
event: 'view_item',
ecommerce: {
currency: 'AZN',
value: 249.00,
items: [{
item_id: 'SKU-4471',
item_name: 'Qadın dəri çanta',
item_category: 'Aksesuar',
item_brand: 'brend adı',
price: 249.00,
quantity: 1
}]
}
})
Diqqət edilməli üç şey var.
ecommerce obyekti hər push-dan əvvəl təmizlənməlidir. Əks halda
əvvəlki məhsulun məlumatı yenisinə qarışır. GA4-də bunun üçün standart
üsul var:
window.dataLayer.push({ ecommerce: null })
window.dataLayer.push({ event: 'view_item', ecommerce: { /* ... */ } })
Valyuta həmişə yazılır. currency olmadan GA4 dəyəri hesabat valyutasına
çevirə bilmir və gəlir sütunu boş qalır. Azərbaycanda AZN, ancaq beynəlxalq
satış varsa hər sifariş öz valyutası ilə göndərilir.
Qiymət string deyil, rəqəm olur. '249.00' yox, 249.00. Bu, ən çox
rast gəlinən səhvlərdən biridir və hesabatda gəliri sıfır göstərir.
dataLayer push-u səhifə yükləndikdən sonra deyil, GTM konteynerindən əvvəl işə düşməlidir. Əks halda GTM hadisəni gec görür və teq boş parametrlərlə işə düşür.
Addım 2: hansı hadisələri ölçməlisiniz
GA4-ün hazır e-ticarət sxemi var və ondan kənara çıxmağa ehtiyac yoxdur. Standart hadisə adlarını istifadə edin, çünki GA4 hesabatları və Google Ads inteqrasiyası məhz o adları gözləyir.
| Hadisə | Nə vaxt işə düşür |
|---|---|
view_item_list | Kateqoriya və ya axtarış nəticəsi göstəriləndə |
select_item | Siyahıdan bir məhsula klikləndə |
view_item | Məhsul səhifəsi açılanda |
add_to_cart | Səbətə əlavə ediləndə |
view_cart | Səbət səhifəsi açılanda |
begin_checkout | Sifarişi rəsmiləşdirmə başlayanda |
add_payment_info | Ödəniş üsulu seçiləndə |
purchase | Sifariş uğurla tamamlananda |
Minimum dəst: view_item, add_to_cart, begin_checkout, purchase.
Qalanları huninin harada sındığını görmək üçün lazımdır, amma onlarsız da
başlaya bilərsiniz.
Sizin biznesiniz e-ticarət deyilsə
Bu, ən çox buraxılan məqamdır. GA4 sənədləri hər şeyi mağaza dili ilə izah edir, halbuki otelin səbəti yoxdur, avtomobil kirayəsində "məhsul kartı" yoxdur.
Hər sahə üçün eyni məntiq işləyir, sadəcə adlar dəyişir:
| Sahə | Axın |
|---|---|
| E-ticarət | view_item → add_to_cart → begin_checkout → add_payment_info → purchase |
| Otel | search_availability → view_room_type → select_rate → begin_booking → booking_confirmed |
| Avtomobil kirayəsi | search_vehicle → view_vehicle → select_extras → begin_reservation → reservation_confirmed |
| Lead-gen | form_start → form_step → generate_lead → qualified_lead → closed_won |
Otel üçün push belə görünür:
window.dataLayer.push({ ecommerce: null })
window.dataLayer.push({
event: 'select_rate',
ecommerce: {
currency: 'AZN',
value: 540.00,
nights: 3,
guests: 2,
check_in: '2026-09-14',
items: [{
item_id: 'ROOM-DLX',
item_name: 'Deluxe, şəhər mənzərəli',
item_category: 'Otaq tipi',
price: 180.00,
quantity: 3
}]
}
})
nights və room_type kimi parametrlər yalnız GA4 üçün deyil. Eyni
sahələr Google Hotels kampaniyalarında qiymət feed-i üçün də istifadə
olunur. Avtomobil tərəfində rental_days və one_way eyni işi görür.
Ona görə ölçmə və feed qurulumunun eyni əldən çıxması vacibdir: bir dəfə
düzgün qurulan sxem iki yerə xidmət edir.
Lead-gen sahəsində qualified_lead və closed_won saytda baş vermir.
Onlar CRM-dən offline import ilə gəlir. Bunun işləməsi üçün istifadəçi
sayta girəndə gclid parametrini saxlamaq və satış bağlananda onu geri
göndərmək lazımdır. GCLID saxlanmayıbsa CRM-dəki satışı reklam klikinə
bağlamağın yolu yoxdur.
Addım 3: parametrlər və items massivi
items massivi GA4 e-ticarət ölçməsinin ürəyidir. Boş və ya yarımçıq
gələndə hesabatda məhsul adları görünmür, Merchant Center ilə əlaqə
qurulmur, remarketinq kitlələri işləmir.
Minimum tələb olunan sahələr:
{
item_id: 'SKU-4471', // Merchant Center-dəki id ilə eyni olmalıdır
item_name: 'Qadın dəri çanta',
price: 249.00,
quantity: 1
}
Tövsiyə olunan əlavələr: item_category, item_brand, item_variant,
index, discount, coupon, affiliation.
item_id Merchant Center feed-indəki id sahəsi ilə hərfbəhərf eyni
olmalıdır. Fərqli olanda Shopping kampaniyaları məhsulu tanımır və
dinamik remarketinq işləmir. Bu, feed və ölçmə arasındakı ən vacib
əlaqədir.
purchase hadisəsinin əlavə iki tələbi var:
{
event: 'purchase',
ecommerce: {
transaction_id: 'ORD-2026-8841', // təkrarlanmamalıdır
value: 249.00,
tax: 0,
shipping: 5.00,
currency: 'AZN',
items: [ /* ... */ ]
}
}
transaction_id unikal olmalıdır. GA4 eyni transaction_id ilə gələn
ikinci hadisəni təkrar sayır və bu, gəlirin iki dəfə görünməsinin ən
geniş yayılmış səbəbidir. Xüsusən "təşəkkür" səhifəsi yenidən yüklənə
bilən saytlarda.
value sahəsinə nə daxil edəcəyinizi bir dəfə qərara alın və dəyişməyin.
Çatdırılma daxildir, yoxsa yox? Vergi daxildir, yoxsa yox? İki fərqli
qərar iki fərqli rəqəm deməkdir və altı ay sonra heç kim hansının doğru
olduğunu xatırlamır. Qərarı sənədləşdirin.
Addım 4: GTM tərəfi
dataLayer hazır olandan sonra GTM işi asandır. Hər hadisə üçün üç element lazımdır.
Data Layer Variable. ecommerce obyektini oxumaq üçün. GA4-ün
e-ticarət teqləri ecommerce adlı dəyişəni gözləyir, ona görə adı
dəyişməyin.
Custom Event Trigger. Hadisə adı ilə eyni: view_item, purchase
və s.
GA4 Event Tag. Hadisə adı yenə eynidir. "Send Ecommerce Data" seçimi aktiv edilir və mənbə olaraq Data Layer göstərilir.
Qurulmuş konteyner belə görünür:
- GA4 Configurationbütün səhifələr
- GA4 · view_itemCustom Event
- GA4 · add_to_cartCustom Event
- GA4 · begin_checkoutCustom Event
- GA4 · purchaseCustom Event
- Ads · Conversiondayandırılıb
Sonuncu sətir təsadüfən yazılmadı. Ən çox rast gəlinən hallardan biri budur: GA4 tərəfi qurulub işləyir, amma Google Ads konversiya teqi ya dayandırılıb, ya heç yaradılmayıb. Nəticədə GA4 hesabatında satış görünür, Ads hesabında sıfır görünür və reklam alqoritmi optimallaşdıracaq heç nə tapmır.
Cloudflare istifadə edirsinizsə Rocket Loader mütləq söndürülməlidir. O, skriptlərin yüklənmə sırasını dəyişir və GTM-in hadisəni gec görməsinə səbəb olur. Bu, saatlarla axtarılan və bir keçidlə həll olunan problemdir.
Addım 5: yoxlama (bu addımı buraxmayın)
Qurulum bitdi demək, ölçmə işləyir demək deyil. Üç alət var və üçünü də işlədin.
GTM Preview rejimi. Konteyneri dərc etməzdən əvvəl. Saytda addım-addım
gəzin və hər hadisədə teqin işə düşdüyünü, parametrlərin dolu gəldiyini
yoxlayın. items massivi boşdursa problemi burada tutursunuz, hesabatda
üç gün sonra yox.
GA4 DebugView. GTM Preview açıq olanda GA4 hadisələri DebugView-də
canlı görünür. Hadisəyə klikləyin, sağ tərəfdə bütün parametrlər açılır.
value, currency, transaction_id və items sahələrini bir-bir yoxlayın.
Zəncirin hər halqasında hansı məlumatın keçdiyini aşağıdakı diaqramda görə bilərsiniz. Sağ üstdəki açarı bağlayın: dataLayer olmayanda eyni axının nəyə döndüyü göstərilir.
- data axını
- boş və ya kəsilmiş axın
- GTM konteyner
Hər halqada məlumat dolu keçir. Satışın dəyəri, valyutası və sifariş nömrəsi GA4-ə, oradan Google Ads-ə çatır.
Diqqət yetirin: açar bağlı olanda qutular yox olmur, içləri boşalır. GA4 hesabı işləyir, GTM konteyner işləyir, teqlər işə düşür. Problem tək bir yerdədir və sonrakı hər şeyi boşa çıxarır.
Üçüncü bir ehtimal da var və onu qarışdırmayın: GTM konteyneri
ümumiyyətlə qurulmayıbsa DebugView tamamilə boş qalır, "No events yet"
yazısı görünür. Boş ekran GTM problemidir, parametrsiz page_view axını
isə dataLayer problemidir. Həlləri fərqlidir.
Realtime hesabatı. Dərc etdikdən sonra 24 saat ərzində real trafikdə hadisələrin gəldiyini təsdiqləyin. Test mühitində işləyən qurulum canlıda işləməyə bilər, çünki consent banner-i, reklam bloklayıcılar və fərqli brauzerlər real şəraitdə işə qarışır.
Zəncir qırılanda hesabatda nə görünür
Ən çox rast gəlinən mənzərə budur:
- view_item8 412
- add_to_cart3 104
- begin_checkout1 286
- add_payment_info412
- purchase0teq işə düşmür
Huninin son addımına qədər hər şey normal görünür, sonra sıfır. Bu, satışın
olmadığı demək deyil. Bu, purchase hadisəsinin ölçülmədiyi deməkdir.
Ən çox görülən üç səbəb:
- Ödəniş sistemi istifadəçini xarici səhifəyə aparır və geri qayıdanda
purchasepush-u işə düşmür. - "Təşəkkür" səhifəsi tək səhifəli tətbiqdə (SPA) URL dəyişmədən açılır, səhifə yüklənməsi tetikleyicisi işə düşmür.
- Consent banner-i rədd edilib və ölçmə teqləri heç yüklənməyib.
Üçüncü halda problem qurulumda deyil, razılıq idarəçiliyindədir. Consent Mode v2 düzgün qurulanda GA4 razılıq verilməyən istifadəçiləri modelləşdirir və hesabat tamamilə boş qalmır.
Addım 6: GA4 hesabatını oxumaq
Data düzgün gələndə iki hesabat gündəlik işinizi görür.
Monetizasiya, sonra E-ticarət alışları. Məhsul səviyyəsində baxış, səbətə əlavə və satış sayları. Burada "baxılıb, amma satılmayıb" məhsulları tapırsınız. Çox vaxt problem qiymətdə deyil, məhsul şəklində və ya təsvirdədir.
Kəşf etmə, sonra Huni tədqiqi. Hansı addımda neçə nəfərin çıxdığını göstərir. Ödəniş üsulu seçimində böyük itki varsa problem çox vaxt texnikidir: ödəniş üsulu işləmir, kart forması mobildə pozulur.
İki məsləhət.
Hesabata 28 gün gözləyin. GA4 dataları emal etməyə 24 ilə 48 saat sərf edir və ilk günlərdə rəqəmlər dəyişməyə davam edir. İlk gün gördüyünüz rəqəmə əsaslanaraq qərar verməyin.
Standart hesabatlar hansı kanalın işlədiyini göstərmir. GA4-ün defolt əlaqələndirmə modeli son klikə əsaslanır və yuxarı hunidə işləyən kanalları görünməz edir. Bu, ayrı bir mövzudur və Performance Max kampaniyalarında xüsusilə vacibdir.
Addım 7: konversiyanı Google Ads-ə ötürmək
GA4-də ölçmək kifayət deyil. Google Ads öz konversiya siqnalını gözləyir.
İki yol var və hər birinin öz yeri var.
GA4 konversiyasını Ads-ə import etmək. GA4-də purchase hadisəsini
"əsas hadisə" kimi işarələyirsiniz, sonra Ads-də import edirsiniz. Sadə
yoldur, amma data GA4-ün emal gecikməsi qədər gec çatır.
Ads-in öz konversiya teqini qurmaq. GTM vasitəsilə birbaşa. Daha sürətlidir və Enhanced Conversions dəstəkləyir.
Hansını seçsəniz də bir qaydaya riayət edin: eyni satışı iki dəfə saymayın. Həm GA4 importu, həm Ads teqi eyni anda aktivdirsə hər satış iki konversiya kimi görünür. Bu, hesabatı iki dəfə şişirdir və alqoritmi yanlış istiqamətə aparır.
- Purchase (GTM)birincili
- Purchase (GA4 import)dublikat
- Lead formuikincili
- Zəngikincili
Dublikatı tapmaq üçün Ads-də "Konversiyalar" bölməsinə baxın. Eyni işi təsvir edən iki sətir varsa birini "İkincili" statusuna keçirin. İkincili konversiyalar hesabatda görünür, amma təklif strategiyasına təsir etmir.
Enhanced Conversions
Brauzer kukiləri getdikcə daha çox bloklanır və klik ilə satış arasındakı əlaqə qopur. Enhanced Conversions bu boşluğu doldurur: satış anında istifadəçinin e-poçt ünvanı və ya telefonu brauzerdə hash-lənir və Google-a şifrələnmiş şəkildə göndərilir. Google bunu öz hesab datası ilə tutuşdurur və klikin sahibini tapır.
Vacib olan iki nöqtə var. Birincisi, açıq e-poçt heç vaxt göndərilmir, yalnız SHA-256 hash-i. İkincisi, bu, razılıq tələb edir: Consent Mode razılıq verilməyibsə göndərmə baş vermir.
Qurulum üçün konversiya səhifəsində dəyəri dataLayer-ə əlavə edin:
window.dataLayer.push({
event: 'purchase',
user_data: {
email: 'istifadəçinin e-poçtu',
phone_number: '+994 formatında telefon'
},
ecommerce: { /* ... */ }
})
GTM tərəfində Google Ads Conversion teqində "Include user-provided data" seçimini aktiv edib bu sahələri göstərirsiniz. Hash-ləmə GTM tərəfində avtomatik baş verir.
Telefon nömrəsi E.164 formatında olmalıdır: +994501234567. Boşluqlu
və ya 0 ilə başlayan format uyğunlaşmır və Enhanced Conversions işə
düşmür. Bu, Azərbaycanda ən çox rast gəlinən qurulum səhvlərindən biridir.
Ən çox rast gəlinən altı səhv
Gəlir iki dəfə görünür. Səbəb ya təkrarlanan transaction_id, ya da
eyni anda aktiv olan iki konversiya mənbəyi. Yoxlama: GA4-də eyni
transaction_id ilə birdən çox hadisə axtarın.
items massivi boşdur. Adətən ecommerce: null təmizlənməsi
unudulanda və ya massiv səhv formatda göndəriləndə. Yoxlama: DebugView-də
hadisəyə klikləyib items sahəsinə baxın.
Gəlir sıfır görünür, satış sayı düzgündür. value string kimi
göndərilir və ya currency yoxdur.
Hesabatda "(not set)" çox görünür. Parametr adı səhv yazılıb və ya GTM-də dəyişən boş qayıdır.
Consent rədd ediləndə hesabat tamamilə boşalır. Consent Mode v2 qurulmayıb. Düzgün qurulanda razılıq verilməyən trafik modelləşdirilir.
Mobil tətbiqdəki satış heç yerdə görünmür. Veb GTM ilə mobil GTM fərqli məhsullardır. Tətbiq tərəfi Firebase SDK ilə ayrıca qurulur.
Consent Mode v2 olmadan bu qurulum yarımçıqdır
Yuxarıdakı hər şey düzgün qurulsa belə, ziyarətçi kuki banner-ində "imtina" seçəndə ölçmə teqləri yüklənmirsə data itir. Consent Mode v2 bunun üçün var: razılıq statusunu Google-a bildirir və razılıq verilməyən hallarda modelləşdirmə işə düşür.
Bu, ayrıca qurulum tələb edir və qurulumu bu bələdçidəki addımlarla paralel aparmaq lazımdır, sonradan yamaq kimi deyil. Addım-addım qurulum burada: Consent Mode v2 nədir və saytınıza necə qurulur.
Nə etməli
Qısa siyahı. Ardıcıllığı dəyişməyin, çünki hər addım əvvəlkinə söykənir.
dataLayersxemini yazın: hansı hadisə, hansı parametrlər, hansı valyuta. Sənəd halında saxlayın.- Minimum dörd hadisəni qurun:
view_item,add_to_cart,begin_checkout,purchase. item_iddəyərlərini Merchant Center feed-i ilə uyğunlaşdırın.- GTM Preview və GA4 DebugView ilə hər hadisəni bir-bir yoxlayın.
- Google Ads konversiyasını qurun və dublikat olmadığını təsdiqləyin.
- Consent Mode v2-ni qurun və "imtina" düyməsinin həqiqətən skriptləri dayandırdığını yoxlayın.
- 28 gün sonra hesabatı real satış rəqəmi ilə tutuşdurun.
Yeddinci addım ən vacibidir. Ölçmənin işlədiyini yalnız bir şey sübut edir: hesabatdakı rəqəmin bankdakı rəqəmlə uyğun gəlməsi.
Tez-tez verilən suallar
Bəli. GA4 səhifədə nə baş verdiyini özü bilmir: məhsulun adını, qiymətini və sifariş nömrəsini ona sayt verməlidir. Bu məlumatın ötürüldüyü yer dataLayer-dir. Onsuz yalnız səhifə baxışı ölçülür, satış ölçülmür.
Ən çox rast gəlinən üç səbəb var: purchase hadisəsi təşəkkür səhifəsi yenilənəndə iki dəfə göndərilir, ödəniş səhifəsi başqa domendədir və sessiya qırılır, ya da razılıq verilmədiyi üçün hadisə heç göndərilmir. Fərqin istiqaməti səbəbi göstərir: GA4 çoxdursa təkrar, azdırsa itki axtarın.
Xeyr. Hadisə adları və parametr quruluşu dəyişib: UA-da `productClick` və `impressions` vardı, GA4-də `select_item` və `items` massivi var. Köhnə dataLayer kodunu olduğu kimi köçürmək işləmir, yenidən yazılmalıdır.
GA4-də Realtime bölməsində eyni `transaction_id` ilə iki purchase görünür. Daha dəqiq yol: DebugView-i açıb təşəkkür səhifəsini yeniləyin. Hadisə hər yeniləmədə təkrar düşürsə problem təsdiqlənir.
İşləyir, amma yarımçıq. Razılıq verməyən istifadəçidə hadisə ümumiyyətlə getmir və o satışlar hesabatda görünmür. Consent Mode v2 qurulanda həmin istifadəçidən kukisiz siqnal gedir, Google isə itən hissəni modelləşdirir.