ব্লগে ফিরে যান

ব্লগ

সার্ভার-সাইড ট্যাগিংয়ের সঙ্গে Google Ads: প্রতিটি কনভার্সন কীভাবে তার বিজ্ঞাপনের ক্লিক খুঁজে পায়

প্রকাশিত · আপডেট করা হয়েছে · পড়তে 6 মিনিট

Google Ads-এ কনভার্সন ট্র্যাকিং সেট আপের শেষে দুটি অনুরোধ আসে: আপনার বিদ্যমান Google ট্যাগ লিংক করুন, আর আপনার পারচেজ পেজে একটি ইভেন্ট স্নিপেট পেস্ট করুন। সার্ভার-সাইড ট্যাগিংয়ে প্রথমটি ঠিক আছে, দ্বিতীয়টি ভুল। এই আর্টিকেলে একটি বিজ্ঞাপনের ক্লিককে ল্যান্ডিং পেজ থেকে Google Ads-এর একটি কনভার্সন পর্যন্ত অনুসরণ করা হয়েছে — কী আপনার ট্যাগিং সার্ভারের মধ্য দিয়ে যায়, কী সরাসরি Google-এ যায়, আর পথে SignalHost কী সামলায়। signalhost.io-র জন্য আমরা নিজেরাই Google Ads চালাই, তাই এখানের সবকিছু আমাদের নিজের সাইটে মেপে দেখা।

আপনার Google ট্যাগ লিংক করলে কী বদলায়

আপনি যখন একটি কনভার্সন অ্যাকশন তৈরি করেন, Google Ads আপনার সাইটে একটি Google ট্যাগ খোঁজে এবং সেটি ব্যবহার করার প্রস্তাব দেয়। রাজি হলে আপনার Google ট্যাগ — যেটিতে আপনার G- মেজারমেন্ট ID আছে — দ্বিতীয় ডেস্টিনেশন হিসেবে আপনার Ads অ্যাকাউন্ট (AW-…) পায়। Google সতর্ক করে যে এতে ট্যাগের সেটিংস আপডেট হবে। পরিবর্তনটি হয় Google-এর ট্যাগ সেটিংসে, আপনার Tag Manager কনটেইনারে নয়, তবে তখন থেকে যে পেজেই ট্যাগটি লোড হয়, সেটি Google Ads-এর সঙ্গেও যোগাযোগ করে।

এখন প্রতিটি পেজ ভিউ ভিজিটরের ব্রাউজার থেকে সরাসরি Google-এ, googleads.g.doubleclick.net ও www.google.com-এ, কয়েকটি রিকোয়েস্ট পাঠায় — আপনার রিমার্কেটিং তালিকা আর Google-এর নিজস্ব পরিমাপের জন্য। এগুলো আপনার ট্যাগিং সার্ভারের মধ্য দিয়ে যায় না, আর সেটা ইচ্ছাকৃত: সার্ভারের মাধ্যমে রিলে করা হলে এর প্রতিটি ভিজিটরের ঠিকানার বদলে সার্ভারের ঠিকানা থেকে পৌঁছাত, যা আপনি কোনো বিজ্ঞাপন প্ল্যাটফর্মকে দেখাতে চান না। আপনার GA4 ডেটা আগের মতোই আপনার নিজের ডোমেইনের মধ্য দিয়ে চলতে থাকে।

সার্ভার-সাইড ট্যাগিংয়ে নতুন? সার্ভার-সাইড Google Tag Manager কীভাবে সেট আপ করা হয়, ধাপে ধাপে।

Google-এর কনভার্সন স্নিপেট আপনার পেজ থেকে দূরে রাখুন

এরপর Google Ads আপনার পারচেজ পেজের জন্য একটি ইভেন্ট স্নিপেট দেয়। এটি আপনার ট্যাগিং সার্ভারকে পাশ কাটিয়ে কনভার্সনটি ব্রাউজার থেকে সরাসরি Google Ads-এ পাঠায় — কেউ পূরণ না করলে 1.0 ভ্যালু আর একটি খালি ট্রানজ্যাকশন ID নিয়ে।

// Google's event snippet: not for your page.
// Paste it into the Google Ads card in SignalHost instead.
gtag('event', 'conversion', {
  'send_to': 'AW-123456789/AbC-D_efGh12_34',
  'value': 1.0,
  'currency': 'EUR',
  'transaction_id': ''
});

SignalHost-এ এর বদলে আপনার সার্ভার কনটেইনার কনভার্সনটি পাঠায়। আপনার কনটেইনারে যান, কনভার্সন ডেস্টিনেশন অংশটি খুলুন এবং Google Ads বেছে নিন। যে ইভেন্ট এই কনভার্সন রেকর্ড করে, সেটি বেছে নিন — একটি পারচেজ, একটি লিড, একটি সাইন-আপ, একটি বুকিং, আপনার সাইট পাঠায় এমন যেকোনো ইভেন্ট — আর কার্ডটি দেখিয়ে দেয় Google Ads-এ কনভার্সন অ্যাকশনটি কোন ক্যাটাগরিতে তৈরি করতে হবে। তারপর Conversion ID আর Conversion label লিখুন। তখন থেকে আপনার সাইট যতবার সেই ইভেন্ট পাঠায়, ততবার সেটি সার্ভার থেকে Google Ads-এ যায়, তার ভ্যালু, কারেন্সি আর ট্রানজ্যাকশন ID সহ। আরও চারটি পর্যন্ত কনভার্সন অ্যাকশন যোগ করতে পারেন, প্রতিটির নিজস্ব ইভেন্ট ও label সহ। আপনার Tag Manager-এ কিছুই বদলাতে হয় না।

এর সঙ্গে স্নিপেটটিও যোগ করবেন না। দুটোই থাকলে প্রতিটি পারচেজ দুবার রেকর্ড হয়: Google দুটি কনভার্সনকে একটিতে মেলায় শুধু তখনই, যখন দুটিতে একই ট্রানজ্যাকশন ID থাকে — আর স্নিপেটেরটি সাধারণত খালি থাকে।

স্নিপেট থেকে ID আর label আপনাকে নিজে খুঁজে বের করতে হবে না। পুরো স্নিপেট, বা শুধু এর send_to ভ্যালু, Google Ads কার্ডের পেস্ট বক্সে — অথবা সরাসরি Conversion ID বক্সে — পেস্ট করুন, দুটি ঘরই পূরণ হয়ে যাবে। ID দুইভাবেই কাজ করে, AW-123456789 অথবা 123456789।

বিজ্ঞাপনের ক্লিক কীভাবে পারচেজ পর্যন্ত টিকে থাকে

একটি কনভার্সন Google Ads-এর কাজে আসে শুধু তখনই, যখন সেটিকে যে ক্লিক থেকে এসেছে তার সঙ্গে জোড়া যায়। এই জোড় হলো ক্লিক ID: Google এটি আপনার ল্যান্ডিং পেজের ঠিকানায় gclid=… হিসেবে যোগ করে, আর ভিজিটরের পরের ক্লিকেই এটি ঠিকানা থেকে উধাও হয়ে যায়।

এর জন্য প্রতিটি SignalHost কনটেইনারে একটি সার্ভার-সাইড Conversion Linker আছে। এটি ল্যান্ডিং পেজের হিট থেকে ক্লিক ID পড়ে এবং আপনার ডোমেইনে FPGCLAW নামের একটি ফার্স্ট-পার্টি কুকিতে সংরক্ষণ করে। পারচেজটি যখন আসে — তিন পেজ পরে হোক বা তিন দিন পরে — আপনার সার্ভার কনটেইনারের Google Ads ট্যাগ সেই কুকি পড়ে এবং ক্লিকসহ কনভার্সনটি পাঠায়।

দুটি শর্ত পূরণ হতে হবে। ভিজিটরকে আপনার কুকি ব্যানারে বিজ্ঞাপনের অনুমতি দিতে হবে: সেই সম্মতি ছাড়া লিংকার কিছুই সংরক্ষণ করে না, আর কনভার্সনটি Google Ads-এ পৌঁছায় শুধু মডেলিংয়ের জন্য Consent Mode যে কুকিবিহীন সিগন্যাল পাঠায় সেটি হিসেবে, কখনো কোনো ক্লিকের সঙ্গে জোড়া হয়ে নয়। আর ব্রাউজারকে কুকিটি গ্রহণ করতে হবে, যা নির্ভর করে আপনার ট্যাগিং সার্ভার কোন ঠিকানায় চলে তার ওপর।

Google Ads-এর জন্য কেন আপনার নিজের ডোমেইন দরকার

ক্লিক কুকিটি সেট করে আপনার ট্যাগিং সার্ভার, আর ব্রাউজার এটি গ্রহণ করে শুধু তখনই, যখন সেই সার্ভার আপনার নিজের ওয়েবসাইটের অংশ — metrics.yoursite.com-এর মতো একটি সাবডোমেইন। প্রতিটি কনটেইনার যে ঠিকানা দিয়ে শুরু হয় সেটি signalhost.io-র একটি সাবডোমেইন, যা ব্রাউজারের কাছে অন্য কারও ওয়েবসাইট, তাই সেখানে কুকিটি প্রত্যাখ্যাত হয়।

এই পার্থক্য কোথাও রিপোর্ট হয় না। কনভার্সন তখনও Google Ads-এ পৌঁছায়, কিন্তু ক্লিক ছাড়া, তাই Google Ads সেগুলোকে কোনো ক্যাম্পেইনের কৃতিত্ব হিসেবে ধরতে পারে না — যা দেখতে হুবহু অকার্যকর বিজ্ঞাপনের মতো। কোনো ক্যাম্পেইনকে তার সংখ্যা দিয়ে বিচার করার আগে আপনার নিজের ডোমেইন লিংক করুন: এতে একটিমাত্র CNAME রেকর্ড লাগে, আর সার্টিফিকেট স্বয়ংক্রিয়ভাবে ইস্যু হয়। কোনো ডোমেইন সক্রিয় না হওয়া পর্যন্ত আপনার কনটেইনারের Google Ads সেটিংসে সেটি জানানো থাকে। আপনার নিজের ডোমেইনকে কীভাবে আপনার ট্যাগিং সার্ভারের দিকে নির্দেশ করবেন।

যখন পারচেজ হয় কয়েক দিন পরে

ট্রায়াল আর সাবস্ক্রিপশন চেনা পথটা ভেঙে দেয়: টাকার লেনদেন হয় ভিজিটের কয়েক দিন পরে, যখন আপনার সাইটে কেউ নেই, তাই পারচেজটি আপনার সার্ভার থেকে পাঠাতে হয় — সাধারণত আপনার পেমেন্ট প্রোভাইডারের ওয়েবহুক থেকে, যেমনটা আমাদের কাস্টম চেকআউটের গাইডে বলা আছে।

Google Ads-এর জন্য সেই পারচেজের চেকআউট থেকে আরও দুটি জিনিস লাগে, ভিজিটর যখন সাইটে আছেন তখনই। চেকআউট রিকোয়েস্টের সঙ্গে আসা বিজ্ঞাপন কুকিগুলো সংরক্ষণ করুন — FPGCLAW, FPAU আর Google-এর _gcl_ কুকিগুলো, যেগুলো শুধু ভিজিটর বিজ্ঞাপনের অনুমতি দিলেই তৈরি হয় — এবং পারচেজের সঙ্গে সেগুলো কুকি হিসেবে ফেরত পাঠান, বিজ্ঞাপনের সম্মতি “granted” (অনুমোদিত) হিসেবে চিহ্নিত করে। এগুলো ছাড়া Google Ads কনভার্সনটি গ্রহণও করতে পারে না, কোনো ক্লিককে তার কৃতিত্বও দিতে পারে না।

// At checkout: keep the advertising cookies with the order.
// They only exist once the visitor allowed advertising.
const AD_COOKIES = ['FPGCLAW', 'FPAU', '_gcl_aw', '_gcl_au'];
order.adCookies = pick(req.cookies, AD_COOKIES);

// In the payment webhook: send them back with the purchase.
// gcs=G111 in the params: advertising and analytics consent granted.
await fetch(`https://metrics.yoursite.com/g/collect?${params}`, {
  method: 'POST',
  headers: { cookie: serialize(order.adCookies) },
});

signalhost.io নিজের সাবস্ক্রিপশনগুলো ঠিক এভাবেই রিপোর্ট করে: প্রথম ইনভয়েস পরিশোধ হলে Stripe ওয়েবহুক পারচেজটি পাঠায়, আর তাতে চেকআউটের বিজ্ঞাপন-ক্লিকটিও থাকে।

SignalHost যা সামলায়

আপনি দুটি ভ্যালু লেখেন। বাকি সবকিছু প্রতিটি কনটেইনারের অংশ:

  • Conversion Linker আর Google Ads কনভার্সন ট্যাগ। একটি ID আর একটি label লিখলেই পরের রিকোয়েস্ট থেকে এগুলো চালু হয়ে যায়।
  • প্রতিটি কনভার্সন অ্যাকশন নিজের ইভেন্টে ফায়ার হয় — আপনি অন্য কিছু বেছে না নিলে purchase — আর অন্য কিছুতে নয়। যে ট্যাগ প্রতিটি ইভেন্টে সাড়া দেয়, সেটি প্রতিটি পেজ ভিউকে একটি বিক্রি হিসেবে রেকর্ড করত।
  • সার্ভারে Consent Mode মানা হয়: যে ভিজিটর বিজ্ঞাপন প্রত্যাখ্যান করেছেন, তাঁকে কখনো কোনো বিজ্ঞাপন-ক্লিকের সঙ্গে জোড়া হয় না বা আপনার রিমার্কেটিং তালিকায় যোগ করা হয় না, আর তিনি Google Ads-এ পৌঁছান শুধু সেই কুকিবিহীন সিগন্যাল হিসেবে, যা এর কনভার্সন মডেলিং ব্যবহার করে।
  • আপনার ট্যাগিং সার্ভার যে প্রতিটি কুকি সেট করে, তা ব্রাউজারে পৌঁছায় — ক্লিক ID, ফার্স্ট-পার্টি ভিজিটর ID আর অ্যাড ইউজার ID।
  • Conversion ID ট্যাগ যে রূপে আশা করে সেই রূপেই পাঠানো হয়, আপনি যেভাবেই লিখুন না কেন।
  • Google Ads-এর জন্য আপনার নিজের ডোমেইন না থাকলে আপনার কনটেইনার পেজ তা জানিয়ে দেয়।

signalhost.io আমাদের নিজস্ব Google Ads অ্যাকাউন্ট নিয়ে হুবহু এই সেটআপেই চলে। আমরা যে পরীক্ষার ওপর ভরসা করি তা হলো ক্লিক ID সহ একটি টেস্ট ভিজিট: এর শেষে ব্রাউজারে ক্লিক কুকিটি থাকতেই হবে।

নিজের সেটআপ যাচাই করা

  • ঠিকানার শেষে ?gclid=test যোগ করে আপনার সাইট খুলুন এবং আপনার কুকি ব্যানারে বিজ্ঞাপনের অনুমতি দিন। আপনার ডোমেইনের জন্য ব্রাউজারের কুকিগুলোর মধ্যে এখন FPGCLAW পাওয়ার কথা।
  • Google Ads কার্ডে “টেস্ট কনভার্সন পাঠান” চাপুন। এটি প্রতিটি কনভার্সন অ্যাকশনের জন্য একটি করে কনভার্সন রেকর্ড করে, কোনো বিজ্ঞাপন-ক্লিক ছাড়া, তাই এটি কখনো কোনো ক্যাম্পেইনের কৃতিত্বে যোগ হয় না — আর Google Ads-এ নতুন অ্যাকশনটিকে আর অসম্পূর্ণ দেখায় না।
  • আপনার কনটেইনারের ডেভেলপার টুলস অংশে “প্রিভিউ সেশন শুরু করুন” চাপুন, Tag Manager-এ আপনার সার্ভার কনটেইনারে Preview চাপুন এবং আপনার কনভার্সনটি ঘটান — একটি টেস্ট পারচেজ, বা আপনি যে ইভেন্ট বেছে নিয়েছেন সেটি। এতে Google Ads কনভার্সন ট্যাগ ফায়ার হওয়ার কথা, ইভেন্টটির ভ্যালু, কারেন্সি ও ট্রানজ্যাকশন ID সহ।
  • নিশ্চিত হোন যে Google-এর ইভেন্ট স্নিপেট আপনার পারচেজ পেজে নেই, এবং আপনার ওয়েব কনটেইনারের কোনো Google Ads কনভার্সন ট্যাগ একই পারচেজে ফায়ার হয় না।
  • Google Ads-কে একটা দিন সময় দিন: নতুন কনভার্সন অ্যাকশন সক্রিয় দেখাতে এতটা সময় লাগতে পারে।

কনভার্সন পৌঁছাচ্ছে কিন্তু কখনো কোনো ক্যাম্পেইনের কৃতিত্বে যোগ হচ্ছে না? তাহলে ক্লিকটি পথে হারিয়ে যাচ্ছে: আগে সম্মতির পছন্দ আর আপনার নিজের ডোমেইন পরীক্ষা করুন।

অ্যাড ব্লকারের কারণে আর ডেটা হারাবেন না

বিনামূল্যে শুরু করুন। কয়েক মিনিটে প্রথম কনটেইনার চালু করুন।