„Cloudflare Zaraz“ ar savas „Worker“: serverinė GA4 analitika be gtag.js
Įsivaizduokite: potencialus klientas su „iPhone“ sekmadienį skaito Jūsų paslaugų puslapį, o užklausą pateikia tik po aštuonių dienų. „Google Analytics“ ataskaitoje jis jau naujas žmogus, atėjęs „iš niekur“.
Taip nutinka dėl „Apple“ ITP (Intelligent Tracking Prevention) [1], o reklamų blokatoriai dalies lankytojų neparodo visai. Jei svetainė jau eina per „Cloudflare“, yra trys būdai tai spręsti. Šiame straipsnyje juos palyginame – nuo greičiausio iki patikimiausio.
Trumpas atsakymas
- „Google Tag Gateway“ – vienas paspaudimas, bet „Safari“ problemos neišsprendžia. Atmetame.
- „Cloudflare Zaraz“ – geras ir greitas sprendimas be kodo. Įdiegsite patys per 15 minučių.
- Savas „Cloudflare Worker“ – patikimiausias: ilgaamžis slapukas „Safari“, reklamų blokatorių sąrašuose nėra, sutikimas tikrinamas serveryje. Reikia kodo ir priežiūros.
1. Kodėl GA4 „pameta“ lankytojus
„Safari“ ITP riboja slapukus, kuriuos sukuria JavaScript (document.cookie):
jie galioja ne ilgiau kaip 7 dienas [1], o atėjus per dekoruotą reklamos nuorodą
(pvz., ?gclid=) – tik 24 valandas [2]. Standartinis gtag.js
savo _ga slapuką kuria būtent taip. Nuo „Safari 16.4“ 7 dienų riba taikoma ir serverio
nustatytiems slapukams, jei serverio IP nesutampa su svetainės IP [3]. ITP veikia visuose „iPhone“ ir
„iPad“ naršyklėse, nes jos naudoja „WebKit“.
Reklamų blokatoriai blokuoja užklausas į google-analytics.com ir
googletagmanager.com. Techninėje auditorijoje (IT, kūrėjai, saugumo specialistai)
blokatorių dalis didelė, todėl B2B svetainėse nuostolis būna ypač juntamas.
Taisyklė paprasta: ilgaamžis gali būti tik slapukas, kurį HTTP antrašte
Set-Cookie nustato serveris, turintis tą patį IP kaip svetainė, o kad
blokatoriai netrukdytų, užklausos turi eiti į jūsų domeną ir nepatekti į blokavimo sąrašus.
2. „Google Tag Gateway“: greita, bet nepakanka
„Google Tag Gateway“ – nemokama „Cloudflare“ funkcija: gtag.js ir
matavimo užklausos keliauja per jūsų domeno kelią (pvz., /okp0), o „Cloudflare“ jas
persiunčia „Google“ [4]. Įjungiama vienu paspaudimu ir sumažina dalies blokatorių poveikį.
Tačiau gtag.js lieka naršyklėje, o _ga slapuką vis tiek rašo JavaScript.
Vadinasi, „Safari“ 7 dienų riba niekur nedingsta. Patys šį variantą išbandėme ir
atmetėme: jis sprendžia tik pusę problemos.
3. „Cloudflare Zaraz“: geras sprendimas, kurį įdiegsite patys
„Zaraz“ – „Cloudflare“ žymų valdymo įrankis, kuris trečiųjų šalių įrankius (GA4,
„Google Ads“, „Meta“, „LinkedIn“ ir kt. [16]) vykdo „Cloudflare“ serveriuose, o ne lankytojo naršyklėje.
Puslapyje lieka tik nedidelis /cdn-cgi/zaraz/i.js skriptas iš jūsų domeno, o
gtag.js nebekraunamas.
Kodėl „Zaraz“ verta dėmesio
- Greita ir be kodo. Viskas konfigūruojama „Cloudflare“ skydelyje.
- Nemokama. 1 000 000 įvykių per mėnesį kiekvienai paskyrai, toliau – 5 USD už milijoną [5]. Mažai ar vidutinei svetainei to užtenka su kaupu.
- Įvykiai be programuotojo. Paspaudimai, slinkimo gylis, formų pateikimas, elemento matomumas ir laikmačiai nustatomi skydelyje [6].
- Sutikimo valdymas. Integruotas sutikimo langas, IAB TCF palaikymas [7] ir „Google Consent Mode v2“ [8].
- Visi pikseliai vienoje vietoje. Jei reklamuojatės keliose platformose, tai didelis privalumas.
Kaip įdiegti per 15 minučių
- Pašalinkite iš svetainės
gtag.js/ GTM kodą (kitaip duomenys dubliuosis). - „Cloudflare“ skydelyje atidarykite Zaraz → Tools
configuration → Add new tool → Google Analytics
4 ir įrašykite matavimo ID (
G-…). - Zaraz → Consent įjunkite sutikimo langą ir GA4 priskirkite analitikos tikslui.
- Užklausų formai sukurkite Form submission trigerį ir siųskite
generate_leadįvykį (arba kode:zaraz.track('generate_lead')). - Patikrinkite „GA4 Realtime“ ataskaitą.
Ką verta žinoti prieš renkantis
- Reklamų blokatoriai. „EasyPrivacy“ sąraše (2026-10-15 versija) yra taisyklė
/cdn-cgi/zaraz/*[10]. Šį sąrašą pagal nutylėjimą naudoja „uBlock Origin“, todėl tokie lankytojai „Zaraz“ nemato, nors užklausos eina per jūsų domeną. - „Safari“ slapukai. „Cloudflare“ nedokumentuoja, kaip „Zaraz“ nustato savo slapukus
ir ar jiems taikoma ITP riba. Dalis būsenos saugoma
localStorage, kuriai ITP taip pat taiko 7 dienų taisyklę. Jei grįžtantys „Safari“ lankytojai jums svarbūs – patikrinkite patys. - IP adresas. Pagal nutylėjimą „Zaraz“ perduoda „Google“ visą lankytojo IP. Įjungus Hide Originating IP, GA4 vietą nustato pagal „Cloudflare“ serverio IP, kuri gali būti netiksli [9].
- Įsitraukusios sesijos. Atvirajame GA4 komponento kode sesija žymima įsitraukusia tik tada, kai tenkinamos visos trys sąlygos (10 s, užklausa ir 2 peržiūros) [11], nors GA4 apibrėžime pakanka bet kurios [12]. Kiek tai paveikia ataskaitas, nematavome.
- Plėtra. Paskutinis „Zaraz“ pakeitimų žurnalo įrašas – 2025 m. vasaris [14]. Produktas veikia ir yra dokumentuotas, bet naujų funkcijų atsiranda retai.
Išvada: jei norite greitai ir patys, o „Safari“ ar blokatorių nuostoliai nėra
kritiniai, „Zaraz“ – geresnis pasirinkimas nei įprastas gtag.js ar „Tag Gateway“.
4. Spąstai rašant savo sprendimą: Measurement Protocol
Natūralu manyti, kad savam serveriui reikia oficialaus GA4 Measurement Protocol (MP). Taip pradėjome ir mes. Po paros GA4 ataskaitose visos naujos sesijos buvo „Unassigned“, naujų naudotojų – 0, įsitraukusių sesijų – 0.
Priežastis – pačioje „Google“ dokumentacijoje: MP skirtas papildyti
gtag.js duomenis (pvz., serveryje užfiksuotu apmokėjimu), o ne juos pakeisti [13]. Srauto
šaltinį, naujus naudotojus ir įsitraukimą GA4 skaičiuoja tik iš įprastų gtag.js
užklausų. Todėl veikiantis serverinis sprendimas siunčia tokias pat užklausas kaip
gtag.js (į /g/collect) – taip daro ir „Zaraz“, ir serverinis „Google Tag
Manager“.
5. Savas „Cloudflare Worker“: patikimiausias variantas
Idėja: naršyklėje lieka tik keli kilobaitai jūsų pačių JavaScript, kuris siunčia įvykį į jūsų endpoint'ą. Tame pačiame domene veikiantis „Worker“ nustato slapukus ir persiunčia duomenis GA4.
Naršyklė Jūsų domenas (Cloudflare) Google
analytics.js ── POST /api/metrics ──► Worker
(be gtag.js) ├─ sutikimo nėra? ──► 204, nieko nesaugoma
├─ Set-Cookie: __av_cid (400 d., HttpOnly)
├─ Set-Cookie: __av_sid (30 min., HttpOnly)
└─ fetch ───────────────────────────► GA4 /g/collect
- „Safari“ lankytojai atpažįstami iki 400 dienų. Slapuką HTTP antrašte nustato
serveris tame pačiame IP kaip svetainė, todėl ITP riba netaikoma.
HttpOnlyreiškia, kad jo neperrašys joks skriptas. - Blokatorių sąrašuose nėra. Endpoint'o kelią pasirenkate patys. Venkite
bendrinių kelių – „EasyPrivacy“ jau blokuoja, pvz.,
/api/metrics/collect[10]. - Sutikimas tikrinamas serveryje. Be
analyticssutikimo „Worker“ nenustato slapukų ir nieko nesiunčia „Google“, net jei naršyklės kodas suklystų. - IP neperduodamas. „Google“ gauna
0.0.0.0. Jei reikia šalies, galima siųsti sutrumpintą IP (paskutinis oktetas išvalomas). - Įprastos GA4 ataskaitos. Šaltiniai, nauji naudotojai, nukreipimo puslapiai ir įsitraukusios sesijos pagal GA4 apibrėžimą [12].
- Švarus puslapis. Jokių užklausų į
google*domenus, užtenkaconnect-src 'self'CSP taisyklės.
Kaina: tai kodas, kurį reikia prižiūrėti. /g/collect – nedokumentuotas
adresas (juo remiasi pats gtag.js, todėl staigūs pakeitimai mažai tikėtini). Įvykius
(pvz., generate_lead) reikia aprašyti kode, o reklamos pikseliams reikės atskiro
sprendimo.
Savo sprendimą paskelbėme kaip atvirojo kodo projektą avbdar (MIT licencija) [15]: „Worker“, naršyklės klientas, „CookieConsent“ langas (LT ir EN), testai ir dokumentacija. Jį naudojame ir šioje svetainėje.
6. Palyginimas
| „Tag Gateway“ | „Zaraz“ | Savas „Worker“ | |
|---|---|---|---|
| Diegimas | 1 paspaudimas | ~15 min., be kodo | Kodas ir konfigūracija |
gtag.js naršyklėje |
Taip | Ne | Ne |
| „Safari“ slapuko galiojimas | 7 d. (24 val. iš reklamos) | Nedokumentuota | Iki 400 d. |
| „EasyPrivacy“ / „uBlock Origin“ | Iš dalies | Blokuojama | Neblokuojama |
| Lankytojo IP „Google“ | Pagal nustatymą | Pagal nutylėjimą perduodamas | Neperduodamas |
| Sutikimo tikrinimas | Naršyklėje | „Zaraz“ CMP, TCF, Consent Mode | Serveryje |
| Įvykiai be kodo | Per GTM | Taip | Ne |
| Reklamos pikseliai | „Google“ | Daugelis platformų | Tik GA4 |
| Kaina | Nemokama | 1 mln. įvykių/mėn. nemokamai | Nemokama („Workers Free“) |
| Priežiūra | „Google“ / „Cloudflare“ | „Cloudflare“ | Jūs arba partneris |
7. Ką rinktis
- „Zaraz“ – jei norite greitai susitvarkyti patys, neturite programuotojo, reklamuojatės keliose platformose ir galite susitaikyti su dalimi „Safari“ bei blokatorių nuostolių.
- Savas „Worker“ – jei sprendimas pirkti trunka ilgiau nei savaitę (B2B, brangesnės paslaugos), auditorija techninė, svarbu tiksliai matyti, iš kur ateina užklausos, ir norite maksimalios kontrolės dėl privatumo.
- Abu kartu – GA4 per savą „Worker“, o reklamos pikselius per „Zaraz“. Tik neįjunkite GA4 abiejose vietose.
Pasidarykite patys arba deleguokite mums
Kodas ir instrukcijos – avbdar „GitHub“. Jei norite, kad tai padarytume už Jus: įdiegsime „Worker“ Jūsų „Cloudflare“ zonoje, sukonfigūruosime sutikimą ir GA4 (pagrindinius įvykius, užklausų formas), o rezultatą patikrinsime „Safari“ naršyklėje.
Registruotis konsultacijai8. Serverinė analitika nėra sutikimo apėjimas
Dažnas klausimas: „jei duomenys eina per mano serverį, ar galiu rinkti juos be slapukų pranešimo?“ Ne. Pagal BDAR ir Elektroninių ryšių įstatymo 61 straipsnį nebūtinų slapukų ar kitų identifikatorių saugojimui įrenginyje reikia išankstinio, informuoto ir aktyvaus sutikimo, nesvarbu, ar duomenys keliauja per naršyklę, ar per serverį. Tai galioja ir „Zaraz“, ir savam „Worker“. Privatumo politikoje nurodykite slapukus ir aprašykite duomenų perdavimą „Google“.
Dažni klausimai
Ar „Cloudflare Zaraz“ nemokamas?
Kiekviena „Cloudflare“ paskyra kas mėnesį gauna 1 000 000 nemokamų „Zaraz“ įvykių. Viršijus limitą, kiekvienas papildomas milijonas kainuoja 5 USD per mėnesį [5].
Kodėl GA4 rodo „Unassigned“?
Dažniausia priežastis serveriniuose sprendimuose – įvykiai siunčiami tik per Measurement Protocol, kuris
skirtas papildyti gtag.js, o ne jį pakeisti [13]. Žr. 4 skyrių.
Ar galima naudoti „Zaraz“ ir savą „Worker“ kartu?
Taip. GA4 siųskite per savą „Worker“, o reklamos pikselius valdykite per „Zaraz“. Svarbu, kad GA4 nebūtų įjungtas abiejose vietose, kitaip duomenys dubliuosis.
Ar savas „Worker“ kainuoja?
Mažoms ir vidutinėms svetainėms – ne: nemokamas „Cloudflare Workers“ planas leidžia 100 000 užklausų per dieną. Pagrindinė kaina – diegimo ir priežiūros laikas.
Šaltiniai
- WebKit.org — Intelligent Tracking Prevention 2.1 (7 dienų slapukų riba)
- WebKit.org — Intelligent Tracking Prevention 2.2 (24 valandų riba)
- WebKit.org — Tracking Prevention in WebKit
- Cloudflare Docs — Google tag gateway for advertisers
- Cloudflare Docs — Zaraz pricing
- Cloudflare Docs — Zaraz triggers and rules
- Cloudflare Docs — Zaraz consent management
- Cloudflare Docs — Zaraz Google Consent Mode
- Cloudflare Docs — Zaraz FAQ (Hide Originating IP)
- EasyList — EasyPrivacy filtrų sąrašas (versija 202610151533)
- GitHub — Zaraz GA4 managed component, requestBuilder.ts
- Google Analytics Help — Engagement rate and bounce rate
- Google for Developers — Measurement Protocol (Google Analytics 4)
- Cloudflare Docs — Zaraz changelog
- GitHub — avbdar: serverinė GA4 analitika per „Cloudflare Workers“
- Cloudflare Docs — Zaraz supported tools