Skip to content
TrackPilot

Read in English

Server-side GTM (sGTM) সেটআপ

আপনার Google Tag Manager server container আমাদের এখানে host করুন: container তৈরি, নিজের domain যুক্ত করা, GTM configure, loader বসানো, আর double counting ছাড়া GA4 ও Meta Conversions API event পাঠানো।

TrackPilot আপনার জন্য Google-এর official tagging-server চালায়। আপনি আগের মতোই Google Tag Manager-এ tag বানাবেন; আমরা server container host করি, তাকে একটা first-party URL দিই আর তার request গুনি। পুরো setup-এ প্রায় ২০ মিনিট লাগে।

GTM একদম খালি? Data layer, প্রতিটা variable, trigger, tag আর server container বানাতে দেখুন GTM সেটআপ শুরু থেকে।

শুরুর আগে যা লাগবে

  • একটা Google Tag Manager account, যেখানে একটা web container (ID যেমন GTM-ABC1234) আগে থেকেই আপনার site-এ বসানো আছে।
  • একটা TrackPilot account। কয়টা sGTM container চালাতে পারবেন সেটা আপনার plan-এর উপর নির্ভর করে (Billing দেখুন)।
  • আপনার domain-এর DNS-এ access — একটা CNAME record যোগ করার জন্য।

ধাপ ১ — Google Tag Manager-এ server container তৈরি

  1. tagmanager.google.com খুলুন → Admin → Container-এর পাশে +।
  2. একটা নাম দিন (যেমন server-yourshop.com), target platform হিসেবে Server বেছে নিন।
  3. Manually provision tagging server বেছে নিয়ে Container Config copy করুন — একটা লম্বা string, যেটা aWQ9R1RN… দিয়ে শুরু হয়।

আগে থেকেই server container আছে (যেমন অন্য host-এ)? সেটা খুলুন → Admin → Container Settings থেকে একই Container Config copy করুন। আপনার সব tag, trigger আর client সাথেই থাকবে।

ধাপ ২ — TrackPilot-এ container তৈরি

  1. Dashboard → sGTM → New container।
  2. একটা নাম দিন, Container Config paste করুন, তারপর Create container।
  3. ১–২ মিনিটের মধ্যে status requested → deploying → running হবে। দেখতে page reload করুন।

Container page-এ sGTM container ID, built-in URL আর এই মাসের ব্যবহৃত request দেখা যায়। ওখান থেকে যেকোনো সময় container stop, start বা delete করতে পারবেন।

ধাপ ৩ — নিজের domain যুক্ত করুন

আপনার site-এর একটা subdomain ব্যবহার করলে gtm.js আর প্রতিটা hit first-party হয়: cookie বেশি দিন থাকে, আর ad blocker-এ অনেক কম data হারায়।

  1. Container page → Domains → একটা hostname যোগ করুন, যেমন data.yourshop.com। নিরপেক্ষ শব্দ নিন: gtm, analytics, tracking, pixel বা tag এড়িয়ে চলুন — ad blocker এগুলো খোঁজে।
  2. DNS provider-এ dashboard-এ দেখানো CNAME record তৈরি করুন। DNS Cloudflare-এ হলে DNS only (ধূসর মেঘ) রাখুন।
  3. hostname আর SSL দুটোই active হওয়া পর্যন্ত অপেক্ষা করুন (সাধারণত কয়েক মিনিট; page নিজেই refresh হয়)।

নিচে আমরা https://data.yourshop.com লিখছি — যেখানে যেখানে আছে, সেখানে আপনার নিজের hostname বসাবেন।

ধাপ ৪ — GTM-এ server container configure করুন

  1. Server container URL: server container → Admin → Container Settings → https://data.yourshop.com যোগ করুন → Save।
  2. Web Container client (বাধ্যতামূলক): Clients → New → Google Tag Manager: Web Container → Allowed Container IDs = আপনার web container ID (GTM-ABC1234) → Save। এই client না থাকলে tagging server gtm.js আর ns.html-এ 400 Bad Request দেয়।
  3. GA4 client: নতুন server container-এ এটা আগে থেকেই থাকে। রেখে দিন — আপনার website থেকে পাঠানো event এটাই গ্রহণ করে।
  4. Submit → Publish। নতুন version tagging server-এ প্রায় এক মিনিটের মধ্যে চালু হয়।

যাচাই: https://data.yourshop.com/gtm.js?id=GTM-ABC1234 খুললে JavaScript আসবে, আর https://data.yourshop.com/healthz status 200 দেবে।

ধাপ ৫ — website-এ first-party loader বসান

  1. Container page → Install code (Custom Loader) → tagging-server URL বেছে নিন, web container ID দিন → Generate।
  2. প্রথম snippet-টা <head>-এর যত উপরে সম্ভব বসান, আর <noscript> snippet-টা <body> tag খোলার ঠিক পরে।
  3. পুরনো Google Tag Manager snippet সরিয়ে দিন — page-এ GTM একবারই load হতে হবে।

Snippet দেখতে এরকম (নিজেরটা dashboard থেকে generate করুন):

<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://data.yourshop.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-ABC1234');</script>

ধাপ ৬ — GA4 event server-এ পাঠান

  1. Web container → আপনার Google tag (GA4 configuration) → Configuration settings → server_container_url = https://data.yourshop.com যোগ করুন। চাইলে first_party_collection = true-ও দিন।
  2. যে GA4 event tag-গুলো shop-এর data বহন করে (view_item, add_to_cart, add_payment_info, purchase), প্রতিটায়: More settings → Ecommerce → Send Ecommerce data টিক দিন, data source Data Layer। এতে items list server-এ যায়।
  3. এই event parameter-গুলোও যোগ করুন, যাতে server পূর্ণ Meta event বানাতে পারে:
ParameterValue
event_id{{Event ID}} — Meta Pixel tag যেই variable ব্যবহার করে সেটাই (ধাপ ৮)
valueorder বা item-এর মূল্য (number)
currencyযেমন BDT
content_ids, content_type, content_name, num_itemsআপনার data layer থেকে
contents{{JS - FB Contents (String)}} — অবশ্যই JSON string হতে হবে, নিচে দেখুন

GA4 প্রতিটা parameter text হিসেবে পাঠায়, তাই array গেলে সেটা [object Object] হয়ে যায়। দুটো Custom JavaScript variable বানান (এগুলো Data Layer Variable ecommerce.items পড়ে):

JS - FB Contents (String)

function () {
  var items = {{DLV - ecommerce.items}} || [];
  return JSON.stringify(items.map(function (i) {
    return { id: String(i.item_id), quantity: Number(i.quantity) || 1, item_price: Number(i.price) || 0 };
  }));
}

JS - FB Value (data layer-এ order total না থাকলে value-এ এটা ব্যবহার করুন)

function () {
  var items = {{DLV - ecommerce.items}} || [];
  var total = 0;
  for (var k = 0; k < items.length; k++) {
    total += (Number(items[k].price) || 0) * (Number(items[k].quantity) || 1);
  }
  return total;
}

purchase-এর জন্য data layer-এ আসল order total (shipping আর discount সহ) থাকলে সেটাই ব্যবহার করুন।

ধাপ ৭ — server container-এ Meta Conversions API

  1. Server container → Templates → Search Gallery → Conversions API Tag (facebookincubator-এর) যোগ করুন।
  2. Tags → New → Conversions API Tag:
    • Pixel ID — আপনার Meta Pixel / dataset ID।
    • API Access Token — Events Manager → আপনার dataset → Settings → Generate access token।
    • Action Source = Website, Extend Meta Pixel cookies (fbp/fbc) আর Enable Event Enhancement টিক দিন।
    • Test Event Code — শুধু test করার সময় (Events Manager → Test events থেকে copy)। Live করার আগে এটা মুছে দিন, নাহলে Meta সব server event-কে test হিসেবে ধরবে।
  3. Trigger: একটা Custom trigger, যেটা GA4 client থেকে আসা সব event-এ fire করে (যেমন Client Name equals GA4)।
  4. Submit → Publish।

ধাপ ৮ — Deduplication: browser আর server-এর জন্য একটাই Event ID

Browser Pixel আর server একই event পাঠায়। দুটোতে একই event ID থাকলেই Meta একটা রাখে, double count হয় না।

  1. Web container-এ একটা Event ID variable বানান (যেমন Community Gallery-র Event Id variable template)।
  2. Official Meta Pixel tag template ব্যবহার করুন। পুরনো "Facebook Pixel" template-এর update দেখালে accept করুন — পুরনোটায় Event ID field নেই।
  3. প্রতিটা Meta Pixel tag (PageView, ViewContent, AddToCart, AddPaymentInfo, Purchase) → More Settings → Event ID = {{Event ID}}।
  4. মিলে যাওয়া প্রতিটা GA4 event tag → parameter event_id = {{Event ID}} (ধাপ ৬)।

নিজেই server event পাঠাচ্ছেন বলে Meta Pixel tag-এর Meta-enabled Conversions API integration option দরকার নেই; বন্ধ রাখতে পারেন।

Matching কীভাবে কাজ করে: Event deduplication।

ধাপ ৯ — Test

  1. Server container-এ GTM Preview: site খুলে প্রতিটা event-এর Event Data দেখুন — contents একটা JSON list আর value একটা number হতে হবে — আর Conversions API tag-এ graph.facebook.com-এ outgoing request status 200 দেখাবে।
  2. Events Manager → Test events: প্রতিটা action-এ একটা Browser আর একটা Server row আসবে। Server row-এ Deduplicated লেখা থাকবে, আর দুটোর Event ID একই।
  3. Meta Pixel Helper (Chrome extension): event খুললে browser যে Event ID পাঠিয়েছে সেটা দেখায়।

Publish করার পর test page Ctrl+Shift+R দিয়ে reload করুন: browser কয়েক মিনিট পুরনো gtm.js রেখে দেয়।

সমস্যা ও সমাধান

যা দেখছেনকারণসমাধান
gtm.js 400 দেয়Web Container client নেই, বা এখনো publish হয়নিধাপ ৪, publish, এক মিনিট অপেক্ষা
Domain pending-এ আটকে আছেCNAME নেই বা proxiedDashboard-এর CNAME যোগ করুন; Cloudflare-এ DNS only
Container error দেখায়Container Config পুরোটা paste হয়নি, বা plan-এর container limit শেষConfig আবার copy করুন; Billing দেখুন; support-এ যোগাযোগ করুন
Test events-এ server row নেইCAPI tag-এর Test Event Code আজকের code নয়Test events থেকে বর্তমান code tag-এ দিন (live-এর আগে মুছবেন)
contents-এ [object Object]Array সরাসরি GA4 parameter হিসেবে গেছেধাপ ৬-এর JSON string variable ব্যবহার করুন
Server event-এ শুধু value আর currencyitems server-এ যাচ্ছে নাGA4 event tag-এ Send Ecommerce data টিক দিন (ধাপ ৬)
Test events-এ browser row-এ Event ID নেইBrowser row-এ ওই column প্রায়ই খালি থাকে; অথবা page এখনো পুরনো gtm.js load করছেHard reload করে Meta Pixel Helper দিয়ে দেখুন
Event দুবার গোনা হচ্ছেBrowser আর server-এর event ID আলাদাদুই দিকে একই {{Event ID}} variable (ধাপ ৮)

অন্য sGTM host থেকে চলে আসা

  1. TrackPilot-এ একই Container Config দিয়ে container বানান (ধাপ ২) — আপনার সব tag, trigger, client Google Tag Manager-এই থাকে।
  2. আপনার tagging domain-এর DNS আমাদের দিকে point করুন (ধাপ ৩)। active দেখালেই traffic নতুন container-এ আসবে।
  3. পুরনো host নিজের উপায়ে gtm.js দিলে Web Container client যোগ করুন (ধাপ ৪), আর আমাদের loader snippet বসান (ধাপ ৫)।
  4. Test করুন (ধাপ ৯), তারপর পুরনো hosting বাতিল করুন।

ব্যবহার ও limit

আপনার tagging server-এ আসা প্রতিটা request plan-এর মাসিক সীমার মধ্যে গোনা হয়। sGTM page-এ requests this month / limit আর আপনার plan-এ কয়টা container চলবে দেখা যায়; বেশি লাগলে Billing page থেকে upgrade করুন।


Stuck? Ask for setup help — we answer in বাংলা or English.