BonicBD
Server-Side GTM · Anti-Adblock · Safari ITP Fix
Live Tracking Active
sGTM Platform v12.7 · Enterprise
🛡️ BonicBD sGTM সেটআপ গাইড
Anti-Adblock লোডার, Safari ITP Fix এবং Facebook EMQ স্কোর বাড়ানোর পূর্ণাঙ্গ গাইড। নিচের ধাপগুলো ক্রমানুযায়ী অনুসরণ করুন।
1Loader Script
2Cookie Extender
3GTM Variable
4GA4 Config
5Server GTM
6Verify
ধাপ ১ — সবচেয়ে গুরুত্বপূর্ণ
ওয়েবসাইটের <head>-এ Anti-Adblock GTM Loader বসানো
সাধারণ GTM snippet ব্যবহার করলে EasyPrivacy / uBlock Origin অ্যাডব্লকার ?id=GTM- প্যাটার্ন দেখে ব্লক করে দেয়। BonicBD-এর /bbd-loader.js?st= পাথ ব্যবহার করলে এই ব্লক এড়ানো যায়।
❌ সাধারণ GTM
gtm.js?id=GTM-XXX → ব্লক হয়
✅ BonicBD Loader
bbd-loader.js?st=GTM-XXX → পাস হয়
Cookie Lifetime
1 বছর (Server-side)
আপনার ওয়েবসাইটের <head> ট্যাগের ঠিক পরেই নিচের কোডটি বসান:
HTML — <head> এর ভেতরে বসান
<!-- BonicBD sGTM Anti-Adblock Loader -->
<script>
(function(w,d,s,l,i){
w[l]=w[l]||[];
w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});
var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),
dl=l!='dataLayer'?'&l='+l:'';
j.async=true;
// ⚠️ নিচে আপনার ট্র্যাকিং ডোমেইন ও GTM ID বসান
j.src='https://ts.yourdomain.com/bbd-loader.js?st='+i+dl;
f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXXX');
</script>
<!-- BonicBD Integrated Tracker (Cookie + Click ID + Dedup + UTM) -->
<script src="https://ts.yourdomain.com/bbd-tracker-integrated.js" async></script>
PHP — functions.php এ যোগ করুন
function bonicbd_head_scripts() {
$sgtm = 'https://ts.yourdomain.com';
$gtmid = 'GTM-XXXXXXX';
?>
<script>
(function(w,d,s,l,i){
w[l]=w[l]||[];
w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});
var f=d.getElementsByTagName(s)[0],j=d.createElement(s),
dl=l!='dataLayer'?'&l='+l:'';
j.async=true;
j.src='<?php echo $sgtm; ?>/bbd-loader.js?st='+i+dl;
f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','<?php echo $gtmid; ?>');
</script>
<script src="<?php echo $sgtm; ?>/bbd-tracker-integrated.js" async></script>
<?php
}
add_action('wp_head', 'bonicbd_head_scripts', 1);
function bonicbd_body_open() { ?>
<noscript><iframe src="https://ts.yourdomain.com/ns.html?id=GTM-XXXXXXX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<?php }
add_action('wp_body_open', 'bonicbd_body_open', 1);
HTML — GDPR Consent Mode V2 সহ
<script>
window.dataLayer=window.dataLayer||[];
function gtag(){dataLayer.push(arguments);}
gtag('consent','default',{
ad_storage:'denied', analytics_storage:'denied',
ad_user_data:'denied', ad_personalization:'denied',
wait_for_update: 500
});
</script>
<script>
(function(w,d,s,l,i){
w[l]=w[l]||[];
w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});
var f=d.getElementsByTagName(s)[0],j=d.createElement(s),
dl=l!='dataLayer'?'&l='+l:'';
j.async=true;
j.src='https://ts.yourdomain.com/bbd-loader.js?st='+i+dl;
f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-XXXXXXX');
</script>
<script src="https://ts.yourdomain.com/bbd-tracker-integrated.js" async></script>
<script>
function onUserConsent(granted) {
gtag('consent','update',{
ad_storage: granted?'granted':'denied',
analytics_storage: granted?'granted':'denied',
ad_user_data: granted?'granted':'denied',
ad_personalization: granted?'granted':'denied'
});
}
</script>
Replace করুন: ts.yourdomain.com → আপনার ট্র্যাকিং সাবডোমেইন | GTM-XXXXXXX → আপনার GTM Web Container ID
ধাপ ২ — Web GTM
Cookie Extender ট্যাগ (Safari ITP Fix)
Safari ITP JavaScript cookie-এর lifetime মাত্র ৭ দিন-এ কমিয়ে দেয়। এই ট্যাগটি সার্ভার ব্যবহার করে bbd_uid cookie ১ বছরের জন্য set করে।
- Web GTM → Tags → New → Custom HTML
- নিচের কোড paste করুন | Trigger: All Pages
- Tag নাম: BonicBD – Cookie Extender → Save
GTM Custom HTML Tag
<script>
(function() {
if (typeof window === 'undefined' || !window.fetch) return;
// ⚠️ ts.yourdomain.com → আপনার ট্র্যাকিং ডোমেইন দিন
var url = 'https://ts.yourdomain.com/ping';
try {
fetch(url, {
method: 'GET', mode: 'cors',
credentials: 'include', // Safari ITP fix এর জন্য জরুরি
keepalive: true,
headers: { 'Cache-Control': 'no-cache', 'Pragma': 'no-cache' }
}).catch(function(){});
} catch(e) {}
})();
</script>
credentials: 'include' অবশ্যই রাখুন — এটা ছাড়া Safari-তে cookie set হবে না।
ধাপ ৩ — Web GTM
Cookie Variable তৈরি করা
সার্ভার থেকে সেট হওয়া bbd_uid কুকিটি GTM Variable হিসেবে রিড করুন।
- GTM → Variables → New → 1st Party Cookie
- Cookie Name:
bbd_uid| URI-decode cookie চেক করুন ✅ - Variable নাম: C – bbd_uid → Save
এই Variable এখন {{C - bbd_uid}} হিসেবে যেকোনো Tag-এ ব্যবহার করা যাবে।
ধাপ ৪ — Web GTM
GA4 Google Tag — সম্পূর্ণ Configuration
server_container_url শুধু sGTM container load করে — কিন্তু GA4 collect request এখনো
/g/collect path ব্যবহার করে যা uBlock Origin ব্লক করে। এই সমস্যা এড়াতে
transport_url আলাদাভাবে সেট করতে হবে।
❌ শুধু server_container_url
- Container JS load → ঠিক আছে
- Collect path →
/g/collect - uBlock দেখে → BLOCK
- GA4 data → miss হয়
✅ দুটো একসাথে
- Container JS load → ঠিক আছে
- Collect path →
/evt(masked) - uBlock চেনে না → PASS
- GA4 data → সব পাচ্ছে
Web GTM → Google Tag (GA4 Config) → Configuration Settings → Fields to Set:
নিচের সবগুলো field একে একে Add করুন:
GTM — Fields to Set (Google Tag)
// ১. sGTM Container URL (আগে থেকে থাকলে আপডেট করুন)
Field Name : server_container_url
Value : https://ts.yourdomain.com
// ২. Anti-Adblock Collect Path — এটা নতুন যোগ করুন
Field Name : transport_url
Value : https://ts.yourdomain.com
// ৩. External ID — Facebook EMQ + Server-side identity
Field Name : external_id
Value : {{C - bbd_uid}}
// ৪. User ID (optional কিন্তু recommended)
Field Name : user_id
Value : {{C - bbd_uid}}
server_container_url
sGTM container থেকে GTM JS load করে। এটা ছাড়া সার্ভার ট্র্যাকিং কাজ করে না।
transport_url ← নতুন
GA4 collect request এর destination। এটা দিলে /g/collect এর বদলে আপনার domain-এ পাঠায় → uBlock block করতে পারে না।
external_id
Facebook EMQ score বাড়ায়। bbd_uid কে server-side identity হিসেবে পাঠায়।
user_id
GA4 cross-device tracking উন্নত করে। Login ছাড়াও bbd_uid দিয়ে কাজ করে।
কীভাবে কাজ করে:
transport_url → GA4 আপনার sGTM-এ collect পাঠায় →
Nginx sub_filter /g/collect কে /evt-এ mask করে →
uBlock Origin /evt চেনে না → ব্লক হয় না ✅
ধাপ ৫ — Server GTM
Server Container-এ External ID ম্যাপ করা
Web থেকে পাঠানো external_id রিসিভ করে Facebook CAPI-তে পাঠানো।
Server GTM Variable তৈরি:
- Server GTM → Variables → New → Event Data
- Key Path:
external_id| Variable নাম: ED – External ID
Facebook CAPI Tag — User Data Mapping
Facebook CAPI Tag → User Data Section:
External ID : {{ED - External ID}}
// EMQ বাড়াতে এগুলোও ম্যাপ করুন (যদি available থাকে):
Email : {{ED - email}}
Phone : {{ED - phone}}
Client IP : {{Request IP}}
Client UA : {{Request Header - User-Agent}}
FBP Cookie : {{ED - _fbp}}
FBC Cookie : {{ED - _fbc}}
কাজ শেষ! প্রতিটি ইভেন্টের সাথে ইউনিক External ID Facebook-এ যাবে → EMQ স্কোর বাড়বে → Conversion Matching উন্নত হবে।
Verification
- Browser F12 → Network Tab খুলুন, uBlock চালু রেখে সাইট reload করুন।
- Filter:
bbd-loader→ Status 200 দেখা যাচ্ছে? - Filter:
ping→ Response Headers-এSet-Cookie: bbd_uid=...আছে? - Filter:
evt→/g/collectনেই, শুধু/evtদেখা যাচ্ছে? ✅ - Application → Cookies-এ
bbd_uidcookie আছে? - Facebook Events Manager → Test Events → Match Quality চেক করুন।
✅ সফল হলে
bbd_uid cookie, /evt requests, Status 200, External ID in events
❌ সমস্যা হলে
CORS error → domain mismatch | /g/collect দেখলে → transport_url দেওয়া হয়নি
সাহায্য প্রয়োজন?
কোনো সমস্যায় পড়লে WhatsApp-এ নক করুন।