সংক্ষেপে উত্তর
এই লেখায় যা আছে (13)
- Conversion API কীভাবে Pixel-এর সাথে কাজ করে
- সমস্যা ১: Purchase দ্বিগুণ আসছে (deduplication কাজ করছে না)
- লক্ষণ
- কারণ ও সমাধান
- সমস্যা ২: Server event আসছেই না বা মাঝে মাঝে হারাচ্ছে
- লক্ষণ
- কী check করবেন, এই ক্রমে
- সমস্যা ৩: Event Match Quality কম
- কোন তথ্য পাঠাবেন
- ধাপে ধাপে যাচাই করার পদ্ধতি
- কাজ হলো কি না কীভাবে মাপবেন
- সাধারণ ভুল
- শেষ কথা
Conversion API (CAPI) চালু করার পর অনেকেই তিন রকম সমস্যায় পড়েন: Purchase হঠাৎ দ্বিগুণ হয়ে গেছে, server event একদমই আসছে না, অথবা Events Manager-এ Event Match Quality দেখাচ্ছে "Poor"। তিনটারই কারণ নির্দিষ্ট, আর তিনটাই ঠিক করা যায়।
এই লেখায় প্রতিটা সমস্যার লক্ষণ, কোথায় দেখবেন, কী কারণে হয় আর কীভাবে ঠিক করবেন — সেটা ধাপে ধাপে দেওয়া হলো। কিছু অংশ developer-এর কাজ; সেখানে তাকে ঠিক কী বলবেন সেটাও লিখে দেওয়া আছে।
Conversion API কীভাবে Pixel-এর সাথে কাজ করে
Pixel চলে customer-এর browser-এ। Ad blocker, browser-এর tracking protection বা দুর্বল network-এ কিছু event হারিয়ে যায়। Conversion API একই event আপনার server থেকে সরাসরি Meta-কে পাঠায়, তাই এই ক্ষতি অনেকটা পূরণ হয়।
Meta-র পরামর্শ হলো দুটোই একসাথে চালানো — browser Pixel এবং server CAPI। কিন্তু তখন একই order-এর জন্য Meta দুইটা Purchase পায়। Meta-কে বুঝিয়ে দিতে হয় যে এই দুটো আসলে একই ঘটনা — এটাকেই বলে deduplication। CAPI কেন দরকার আর প্রথমবার কীভাবে চালু করবেন, সেটা আছে Meta Conversion API setup গাইডে।
সমস্যা ১: Purchase দ্বিগুণ আসছে (deduplication কাজ করছে না)
লক্ষণ
CAPI চালুর পর থেকে Events Manager-এ Purchase সংখ্যা আপনার আসল order-এর প্রায় দ্বিগুণ। Ads Manager-এ ROAS হঠাৎ অস্বাভাবিক ভালো দেখাচ্ছে। Events Manager-এ event-এ click করলে deduplication নিয়ে warning দেখাতে পারে।
কারণ ও সমাধান
Meta দুইটা event-কে একই ধরে তখনই, যখন দুটোর event_name এক এবং event_id এক। আর Meta-র developer docs অনুযায়ী একই event_id-এর প্রথম event পৌঁছানোর ৪৮ ঘণ্টার মধ্যে দ্বিতীয়টা পৌঁছালে তবেই deduplication হয়। সাধারণ ভুলগুলো:
- Browser event-এ event_id পাঠানোই হচ্ছে না। Pixel-এ এটা যায় চতুর্থ parameter হিসেবে:
fbq('track', 'Purchase', {value: 1450, currency: 'BDT'}, {eventID: 'ORD-10234'})। Server event-এ একই মানevent_idfield-এ যেতে হবে। - দুই দিকে আলাদা ID তৈরি হচ্ছে। browser-এ random number, server-এ order number — তাহলে কখনো মিলবে না। সবচেয়ে সহজ নিয়ম: Purchase-এর জন্য দুই দিকেই order ID ব্যবহার করুন।
- Event নাম মিলছে না। browser-এ
Purchase, server-এpurchaseবাOrder— এগুলো আলাদা event হিসেবে গণনা হয়। - একাধিক integration একসাথে চলছে। একটা plugin CAPI পাঠাচ্ছে, আবার custom code-ও পাঠাচ্ছে। তখন server event নিজেই দুইবার যায়।
সমস্যা ২: Server event আসছেই না বা মাঝে মাঝে হারাচ্ছে
লক্ষণ
Events Manager-এ event-এর connection method শুধু "Browser" দেখায়, "Server" নেই। অথবা কিছু দিন server event আসার পর হঠাৎ বন্ধ।
কী check করবেন, এই ক্রমে
- Access token: token বাতিল হয়ে গেলে সব request ফেরত আসে। যে ব্যক্তির account দিয়ে token তৈরি হয়েছিল, তিনি Business থেকে সরে গেলে বা permission বদলালে এমন হতে পারে। Events Manager-এর settings থেকে নতুন token তৈরি করুন, আর সম্ভব হলে Business Manager-এর system user দিয়ে তৈরি করুন।
- Pixel/dataset ID: server code-এ যে ID আছে, সেটা browser Pixel-এর ID-র সাথে মেলে কি না।
- Error log: Meta-র API ভুল request পেলে error message ফেরত দেয়। developer-কে বলুন এই response log করতে — এক নজরে কারণ বোঝা যায়।
- event_time: এটা Unix time, সেকেন্ডে। অনেকে millisecond পাঠিয়ে ফেলেন, তখন সময়টা অনেক দূর ভবিষ্যতের হয়ে যায় এবং event বাতিল হতে পারে। আবার event_time ৭ দিনের বেশি পুরনো হলে Meta error দেয় — আর একটা request-এর মধ্যে একটা event-ও এমন হলে পুরো request-এর কোনো event গৃহীত হয় না। তাই queue-তে আটকে থাকা পুরনো event একসাথে পাঠানোর সময় সাবধান।
- action_source: website-এর event-এর জন্য
websiteদিতে হয়, সাথেevent_source_url। - Background job বা queue: অনেক system CAPI event queue-তে রেখে পরে পাঠায়। queue worker বা cron বন্ধ থাকলে event জমে থাকে, যায় না। server restart-এর পর এটা প্রায়ই ঘটে।
- test_event_code রয়ে গেছে: Meta-র docs অনুযায়ী test code সহ পাঠানো event বাদ পড়ে না — সেগুলোও Events Manager-এ যায় এবং measurement-এ ব্যবহার হয়। কিন্তু Meta স্পষ্ট বলে এই field শুধু পরীক্ষার জন্য, live payload থেকে সরিয়ে দিতে হবে। Live code-এ এটা থেকে গেলে প্রতিটা আসল order Test Events-এ ভরে যায় আর আসল সমস্যা আলাদা করা কঠিন হয়। পরীক্ষা শেষে সরিয়ে দিন।
সমস্যা ৩: Event Match Quality কম
Event Match Quality (EMQ) হলো Meta-র দেওয়া একটা স্কোর (০ থেকে ১০, সাথে Poor/OK/Good/Great ধরনের লেবেল), যা বলে আপনার server event-এর সাথে পাঠানো তথ্য দিয়ে Meta কতটা ভালোভাবে সেটা একজন Facebook/Instagram user-এর সাথে মেলাতে পারছে। Events Manager-এ server event-এর পাশে এটা দেখা যায়। Match কম হলে Meta জানে না order-টা কোন ad দেখা মানুষের — ফলে optimization দুর্বল হয়।
কোন তথ্য পাঠাবেন
| Parameter | কী | Hash করবেন? |
|---|---|---|
| ph | Phone number | হ্যাঁ (SHA-256) |
| em | হ্যাঁ (SHA-256) | |
| fn, ln | নামের প্রথম ও শেষ অংশ | হ্যাঁ |
| ct, st, zp, country | শহর, এলাকা, postcode, দেশ (bd) | হ্যাঁ |
| external_id | আপনার system-এর customer ID | hash করা ভালো |
| client_ip_address, client_user_agent | Customer-এর IP ও browser তথ্য | না |
| fbp, fbc | Meta-র browser cookie ও ad click ID | না |
বাংলাদেশে COD order-এ প্রায় সবসময় phone number নেওয়া হয়, কিন্তু email প্রায়ই থাকে না। তাই phone number ঠিকভাবে পাঠানোই সবচেয়ে বড় উন্নতি। Hash করার আগে number-কে একটা নির্দিষ্ট format-এ আনতে হয় — Meta-র নিয়ম হলো চিহ্ন, অক্ষর আর শুরুর শূন্য বাদ দিয়ে শুধু digit রাখা, সামনে country code সহ।
আরও দুটো সাধারণ কারণ:
- fbc পাঠানো হচ্ছে না: ad-এ click করে আসলে URL-এ
fbclidথাকে, আর Pixel সেটা_fbccookie-তে রাখে। order-এর সময় এই cookie-র মান server event-এ পাঠালে match অনেক ভালো হয়। অনেক setup এটা বাদ দেয়, কারণ order form submit হওয়ার পর server-এ cookie পড়া হয় না। - IP আর user agent server-এর নিজের: queue থেকে পাঠালে ভুল করে server-এর IP চলে যায়। order তৈরির সময় customer-এর IP ও user agent সংরক্ষণ করে পরে সেটাই পাঠাতে হবে।
ধাপে ধাপে যাচাই করার পদ্ধতি
- 1Events Manager-এ dataset খুলে Test Events tab-এ যান; server test-এর জন্য দেওয়া test code টা developer-কে দিন।
- 2Test code সহ একটা test order দিন এবং দেখুন Purchase একবার browser থেকে আর একবার server থেকে আসছে কি না।
- 3দুটো event-এর event_id একই (যেমন order number) কি না check করুন; Meta deduplicate করলে সেটা সেখানে বোঝা যায়।
- 4Server event-এর details-এ দেখুন কোন customer information parameter গেছে — অন্তত ph, fbp, fbc, IP আর user agent থাকা উচিত।
- 5Phone number normalization (বাংলা অঙ্ক, +880, space) কয়েকটা ভিন্ন format দিয়ে পরীক্ষা করুন।
- 6পরীক্ষা শেষে live code থেকে test_event_code সরিয়ে দিন, আর test order-গুলো admin panel থেকে বাতিল করুন।
- 7পরের কয়েক দিন Overview-তে Purchase সংখ্যা আপনার order সংখ্যার সাথে মেলান, আর EMQ স্কোর বাড়ছে কি না দেখুন।
কাজ হলো কি না কীভাবে মাপবেন
- Purchase সংখ্যা: Events Manager-এর দৈনিক Purchase আর admin panel-এর order প্রায় কাছাকাছি হওয়া উচিত — দ্বিগুণ নয়, অর্ধেকও নয়।
- Connection method: Purchase-এর পাশে Browser এবং Server দুটোই দেখাবে।
- EMQ: fix-এর পর কয়েক দিনে স্কোর বাড়ার দিকে যাওয়া উচিত। নির্দিষ্ট কোনো সংখ্যা "যথেষ্ট" এমন নিয়ম নেই — আপনি কোন তথ্য সংগ্রহ করেন তার উপর নির্ভর করে।
- Diagnostics: নতুন কোনো warning নেই।
সাধারণ ভুল
শেষ কথা
Conversion API-র সমস্যা মূলত তিনটা: duplicate, missing, আর low match। প্রতিটার জন্য Events Manager-এ আলাদা লক্ষণ আছে, আর বেশিরভাগ ক্ষেত্রে কারণ ছোট — একটা ID, একটা token, বা phone number-এর format। tracking ঠিক হওয়ার পরও ad থেকে বিক্রি না এলে campaign-এর দিকটা দেখুন Facebook Ads-এ conversion না আসার গাইডে।
Checklist: Conversion API সমস্যা: Duplicate, Missing Event ও Low Match Quality

