Problema: listele de ad-blockere (EasyPrivacy, uBlock) blochează googletagmanager.com, /gtm.js și /gtag/js. Pe 10–30 % din vizite containerul web nu se încarcă deloc, deci nici tag-ul Bigconvert, nici consimțământul, nici server-side-ul nu văd nimic. Soluția, aceeași ca power-up-ul „Custom Loader” de la Stape: site-ul încarcă gtm.js de pe host-ul de tracking al clientului, sub o cale secretă per client, iar în JS-ul servit toate referințele către Google sunt rescrise către aceeași cale.
site <head>: https://<host>/bc/<key>/w.js ──► Edge ──► https://www.googletagmanager.com/gtm.js?id=<GTM-ID> gtm.js rescris: www.googletagmanager.com/gtag/js ──► <host>/bc/<key>/g.js ──► Edge ──► googletagmanager.com/gtag/js?id=… SDK-ul Bigconvert (Google Ads din browser): gtagSrc = https://<host>/bc/<key>/g.js
w.js folosește containerul din config (loader.gtmId); acceptă ?id= pentru containere imbricate. Id-urile sunt validate (GTM-, G-, AW-, DC-, GT-, UA-, MC-).gtm_auth, gtm_preview, gtm_debug) trec mai departe și răspunsul nu se cache-uiește: Tag Assistant / Preview merg în continuare. debug/…, gtag/destination, a, td sunt passthrough (doar GET) pentru badge-ul de preview.
Cache-Control: public, max-age=300, gzip.google-analytics.com), ca să nu dublăm conversiile Google Ads din containerul server.GA4 server-side vine oricum prin Edge → containerul server.
GTM-…), Save.<script>-ul GTM din <head>. <noscript>-ul rămâne.w.js cu 200 și tag-urile trag. În Tag Assistant, Preview funcționează ca înainte.