furnitureplusbd.com-এ আজ পর্যন্ত যা কিছু করা হয়েছে এবং লাইভে যাচাই করা হয়েছে, বিভাগ অনুযায়ী সাজানো।
ক্রলেবিলিটি ও টেকনিক্যাল SEO
✓
পুরো সাইটজুড়ে একটি সফট-৪০৪ বাগ ঠিক করা হয়েছে — মুছে ফেলা/নাম পরিবর্তন করা ক্যাটাগরি ও ব্র্যান্ড পেজ ৪০৪-এর বদলে HTTP ২০০ রিটার্ন করছিল, ফলে Google একটি ভুয়া "office furniture" পেজ ইনডেক্স করে ফেলেছিল যেখানে র্যান্ডম কন্টেন্ট ছিল, কিন্তু দেখাচ্ছিল আসল পেজের মতো।
✓
Google Lighthouse / PageSpeed Insights ব্লক হয়ে যাওয়া ঠিক করা হয়েছে — বট-প্রোটেকশন মিডলওয়্যারের কারণে সাইটের কোনো PageSpeed অডিটই সম্পন্ন হচ্ছিল না।
✓
পুরনো/নাম পরিবর্তিত ক্যাটাগরি ও ব্র্যান্ড URL-এ ২টি ফেটাল ক্র্যাশ বাগ ঠিক করা হয়েছে (স্লাগ-হিস্ট্রি রিডাইরেক্টে সমস্যা ছিল)।
✓
৫টি অপ্রয়োজনীয়/ডুপ্লিকেট "chair" ক্যাটাগরি পেজ ৩০১-রিডাইরেক্ট করে আসল ক্যাটাগরিতে পাঠানো হয়েছে, প্রোডাক্টগুলোও মার্জ করে দেওয়া হয়েছে যাতে কিছু হারিয়ে না যায়।
✓
jQuery ও SweetAlert2 নিজস্ব সার্ভারে হোস্ট করা হয়েছে (আগে বাইরের CDN থেকে লোড হতো — প্রতিটি পেজ লোডে অতিরিক্ত দুটি DNS/TLS রাউন্ড-ট্রিপ লাগত)।
✓
JS/CSS ফাইলে cache-busting ভার্সন স্ট্রিং যোগ করা হয়েছে — ১০ বছরের ব্রাউজার ক্যাশের কারণে আগের ফিক্সগুলো রিটার্নিং ভিজিটরদের কাছে পৌঁছাচ্ছিল না।
✓
হেডার/নেভিগেশনের ১৫টি ক্যাটাগরি আইকনে alt text যোগ করা হয়েছে।
✓
প্রতিটি প্রোডাক্ট পেজের গ্যালারি থাম্বনেইল ও zoom ইমেজ ঠিক করা হয়েছে — পুরো সাইটের ১০০+ প্রোডাক্টে alt text খালি ছিল। এখন প্রোডাক্টের নাম থেকে স্বয়ংক্রিয়ভাবে alt text তৈরি হচ্ছে।
✓
নতুন প্রকাশিত ব্লগ পোস্টগুলোর ফিচার্ড ইমেজ ঠিক করা হয়েছে (ইমেজ URL ভাঙা ছিল) এবং ব্লগ লিস্টিং পেজের alt text ঠিক করা হয়েছে।
✓
১১৭টি অ্যাক্টিভ প্রোডাক্টের মধ্যে ২৩টির (প্রায় ২০%) meta description খালি ছিল — Google সার্চ রেজাল্টে এই পেজগুলোর জন্য কোনো description-ই দেখাচ্ছিল না। প্রতিটির জন্য আলাদা, প্রাসঙ্গিক description লিখে যোগ করা হয়েছে। এখন সব অ্যাক্টিভ প্রোডাক্টেই meta description আছে।
✓
ডুপ্লিকেট প্রোডাক্ট লিস্টিং পরিষ্কার করা হয়েছে: "Director Chair [FP-M-128]" ৩ বার এবং "Diractor Chair [FP-M-157]" (নামের বানানও ভুল ছিল) ২ বার — একই দামে, কয়েক মিনিটের ব্যবধানে তৈরি হওয়া স্পষ্ট ভুল এন্ট্রি, কোনো অর্ডার হিস্ট্রিও ছিল না। প্রতিটির একটিকে canonical রেখে বাকিগুলো ৩০১-রিডাইরেক্ট করা হয়েছে, বানান ভুলও ঠিক করা হয়েছে।
পারফরম্যান্স ও Core Web Vitals
✓
আপনার শেয়ার করা PageSpeed রিপোর্ট (মোবাইল ও ডেস্কটপ) থেকে রিয়েল ইউজার ডেটা (CrUX) যাচাই করা হয়েছে — LCP, INP সব "Good", কিন্তু CLS ডেস্কটপে 0.16 ("Needs Improvement") এবং TTFB (সার্ভার রেসপন্স টাইম) দুই ডিভাইসেই "Needs Improvement" পাওয়া গেছে।
✓
CLS বাগ খুঁজে বের করে ঠিক করা হয়েছে: প্রোডাক্ট পেজের মূল ছবিতে (hero image) ভুলবশত lazy-loading চালু ছিল এবং এর কন্টেইনারে কোনো নির্দিষ্ট উচ্চতা রিজার্ভ করা ছিল না — ফলে ছবি লোড হওয়ার পর পুরো লেআউট নিচে নেমে যেত। লাইভ Lighthouse টেস্টে যাচাই: CLS 0.352 → 0.003, এবং পাশাপাশি LCP-ও ৮.৭ সেকেন্ড → ৩.০ সেকেন্ড-এ নেমে এসেছে (যেহেতু ছবিটি এখন lazy না হয়ে সাথে সাথে লোড হয়)।
✓
TTFB-এর আসল কারণ খুঁজে বের করা হয়েছে: হোমপেজ লোড করতে সার্ভারে ১৬৯টি আলাদা ডেটাবেজ কোয়েরি চলছিল। মূল কারণ ছিল ওয়েবসাইটের মেইন মেনু সিস্টেম (প্রতিটি মেনু আইটেমের জন্য ৫ ধরনের সম্ভাব্য রিলেশন — page/blog/category/brand/gallery — সবগুলোই আলাদা করে চেক করা হতো, যদিও একটি আইটেম একবারে মাত্র এক ধরনের হতে পারে) এবং হোমপেজের প্রতিটি ক্যাটাগরি ব্লকের জন্য একটি বাড়তি, ক্যাশ-বিহীন কোয়েরি। উভয়টিই ঠিক করা হয়েছে — কোয়েরি সংখ্যা ১৬৯ → ৯৮-এ (৪২% কম) নেমে এসেছে। যেহেতু মেইন মেনু প্রতিটি পেজেই থাকে, এই ফিক্স পুরো সাইটেই কাজ করছে, শুধু হোমপেজে না।
✓
PHP-FPM সার্ভার কনফিগারেশনও ঠিক করা হয়েছে ("ondemand" থেকে "dynamic" মোডে পরিবর্তন) যাতে প্রতিটি নতুন রিকোয়েস্টে নতুন প্রসেস তৈরি করার বিলম্ব (cold-start) না হয়।
✓
ফলাফল — লাইভে যাচাই করা রিয়েল রেসপন্স টাইম: হোমপেজ ~৪৫% দ্রুত (০.৮–১.৫s → ০.৪৪–০.৬৪s), ক্যাটাগরি পেজ ~৬০% দ্রুত (০.৮২s → ০.৩২s), প্রোডাক্ট পেজ ~৪৬% দ্রুত (০.৬৫s → ০.৩৫s)।
ইমেজ SEO ও AI সার্চ ভিজিবিলিটি
✓
প্রতিটি প্রোডাক্টের ছবিতে keyword-ভিত্তিক alt text যোগ করা হয়েছে — Search Console-এর রিয়েল ডেটায় দেখা যাচ্ছিল প্রায় প্রতিটি সার্চেই "Price in Bangladesh" মডিফায়ারটা থাকে। প্রোডাক্ট মডেল কোড (যেমন "[FP-M-20-black]") সরিয়ে, আসল প্রোডাক্ট নামের সাথে এই মডিফায়ার যোগ করে alt text তৈরি করা হয়েছে (যেমন: "China mesh Office Executive chair Price in Bangladesh")। প্রোডাক্ট URL/স্লাগ কিছুই বদলানো হয়নি, তাই Facebook Ads-এর লিংক অক্ষত আছে।
✓
Image XML সাইটম্যাপ যোগ করা হয়েছে — আগে সাইটম্যাপে কোনো ছবির তথ্যই ছিল না, যা Google Image সার্চে ইনডেক্সিং কমিয়ে দেয়। এখন ২২৬টি প্রোডাক্ট ছবি নতুন keyword-সমৃদ্ধ caption সহ সাইটম্যাপে আছে।
✓
বড় সমস্যা খুঁজে পাওয়া গেছে ও ঠিক করা হয়েছে — AI ক্রলার ব্লক ছিল: সাইটের বট-প্রোটেকশন সিস্টেম GPTBot (ChatGPT), PerplexityBot, ClaudeBot, CCBot এবং এমনকি Bingbot-কেও সাধারণ বট মনে করে ৪০৩ এরর দিয়ে ব্লক করছিল। মানে যত ভালো SEO-ই করা হোক, এই AI সিস্টেমগুলো সাইটের কন্টেন্টই পড়তে পারছিল না। এখন সব ঠিক করে যাচাই করা হয়েছে — GPTBot, ClaudeBot, PerplexityBot, Bingbot, DuckDuckBot, Applebot সবগুলোই এখন সাইট অ্যাক্সেস করতে পারছে, অন্যদিকে অচেনা/সাধারণ স্ক্র্যাপার এখনও ঠিক আগের মতোই ব্লক আছে।
✓
AI সিস্টেমগুলোর জন্য একটি llms.txt ফাইল যোগ করা হয়েছে — সাইটের মূল ক্যাটাগরি ও ব্লগ পোস্টগুলোর একটি পরিষ্কার, সংক্ষিপ্ত তালিকা, যা ChatGPT/Perplexity-এর মতো AI সিস্টেমগুলোকে সাইটের কন্টেন্ট দ্রুত বুঝতে সাহায্য করে।
✓
Search Console API অ্যাক্সেস ঠিক করা হয়েছে — সমস্যাটা ছিল Domain-টাইপ প্রপার্টি, যেটা এই ধরনের API অ্যাক্সেসকে ব্লক করে। নতুন URL-prefix প্রপার্টি (https://furnitureplusbd.com/) যোগ করার পর এখন লাইভ ডেটা টানা যাচ্ছে — নতুন প্রপার্টি বলে হিস্টোরিক্যাল ডেটা জমতে কয়েকদিন সময় লাগবে।
✓
৩য় SEO ব্লগ পোস্ট প্রকাশ করা হয়েছে — "Chair Price in Bangladesh (2026)" — real সার্চ ডেটা থেকে "chair" ও তার প্রাইস-ভিত্তিক ভ্যারিয়েশন (৩২টি কীওয়ার্ড) টার্গেট করে ৫৭৬ শব্দের গাইড, প্রতিটি চেয়ার টাইপের real price range সহ। Boss, Director, Manager, Executive, Ergonomic, Visitor — সবগুলো ক্যাটাগরি পেজের সাথে এবং আগের ২টি ব্লগ পোস্টের সাথেও ক্রস-লিংক করা হয়েছে, উল্টো দিক থেকেও (৪টি ক্যাটাগরি পেজ থেকে এই পোস্টে লিংক)। সাইটম্যাপে যোগ করা হয়েছে।
✓
আরও ২০টি ব্লগ পোস্ট প্রকাশ করা হয়েছে (মোট এখন ২৩টি) — প্রতিটি আলাদা অ্যাঙ্গেল থেকে লেখা যাতে কোনোটাই একে অপরের ডুপ্লিকেট মনে না হয়: প্রতিটি ক্যাটাগরির নিজস্ব বায়িং গাইড (Boss, Director, Manager, Executive Chair, Sofa, Sofa Set), তুলনামূলক পোস্ট (Boss vs Director, Mesh vs Leather, Visitor vs Office Chair, Swivel vs Fixed), ব্যবহার-ভিত্তিক গাইড (Home Office, Long Working Hours, Budget Under ৳10,000, Premium Above ৳25,000, Small Living Room, Corporate Setup), এবং trust/care কন্টেন্ট (Ergonomic Benefits, Maintenance Guide, Warranty Guide)। প্রতিটি পোস্টে প্রাসঙ্গিক ক্যাটাগরি পেজে ২-৪টি ইন্টারনাল লিংক এবং একে অপরের সাথে ক্রস-লিংক আছে। সব পোস্ট লাইভে যাচাই করা হয়েছে (HTTP ২০০) এবং সাইটম্যাপে যোগ করা হয়েছে।
✓
বাগ ধরা পড়েছে ও ঠিক করা হয়েছে — লিংক চোখে দেখা যাচ্ছিল না: আপনি ঠিক ধরেছিলেন — ব্লগ পোস্ট ও ক্যাটাগরি পেজের সব ইন্টারনাল লিংক আসলে কাজ করছিল (ক্লিক করলে ঠিক পেজেই যেত), কিন্তু কোনো রং বা underline ছাড়া লেখা হয়েছিল বলে সাধারণ টেক্সটের মতোই দেখাচ্ছিল, তাই চোখে পড়ছিল না। এখন সবগুলো (২৩টি ব্লগ পোস্ট + ৬টি ক্যাটাগরি পেজ মিলিয়ে ১০০+ লিংক) নীল/থিম কালার ও underline সহ স্পষ্টভাবে দেখা যাচ্ছে।
✓
আরও ৩০টি ব্লগ পোস্ট প্রকাশ করা হয়েছে (মোট এখন ৫৩টি) — এবার মূল ফোকাস "computer chair", "office chair" ও "back pain chair" সম্পর্কিত সার্চের দিকে: ব্যথা-কেন্দ্রিক গাইড (Back Pain, Sciatica, Neck Pain, Lumbar Support, সঠিকভাবে বসার নিয়ম), শরীরের গঠন অনুযায়ী গাইড (Tall People, Short People, Weight Capacity), ব্যবহারকারী-ভিত্তিক গাইড (Students, Freelancers, Gamers Who WFH), এবং প্র্যাকটিক্যাল/কেনার গাইড (Buying Mistakes, How Much to Spend, Delivery, Colors, Armrest Types, কতদিন টেকে, কখন পাল্টাতে হবে)। প্রতিটি পোস্ট কমপক্ষে ৫০০ শব্দের, স্বাভাবিক মানুষের লেখার ভঙ্গিতে (প্রতিটির স্ট্রাকচার আলাদা, একই টেমপ্লেট বারবার না দিয়ে), এবং প্রতিটিতে হোমপেজ + ২-৪টি ক্যাটাগরি পেজের লিংক আছে — এবার শুরু থেকেই দৃশ্যমান (রং+underline) করে দেওয়া হয়েছে, আগেরবারের ভুল থেকে শিখে। সব পোস্ট লাইভে যাচাই করা হয়েছে এবং সাইটম্যাপে যোগ করা হয়েছে (৫৩টি ব্লগ URL)।
✓
সব ১০টি ক্যাটাগরি পেজে ৫০০+ শব্দের keyword আর্টিকেল যোগ/আপডেট করা হয়েছে — real Search Console ডেটা থেকে পাওয়া দাম/টাইপ-ভিত্তিক কীওয়ার্ড ব্যবহার করে (যেমন "boss chair price in bangladesh", "director chair price in bd")। যে ২টি নতুন ক্যাটাগরি (Office Chair, Special Boss Chair) খালি ছিল, সেগুলোতে সম্পূর্ণ নতুন আর্টিকেল লেখা হয়েছে; বাকি ৮টিতে বিদ্যমান কন্টেন্টের সাথে নতুন প্রাইস-রেঞ্জ ও তুলনামূলক সেকশন যোগ করা হয়েছে। প্রতিটি সরাসরি লাইভ ডেটাবেজ থেকে ৫০০+ শব্দ যাচাই করা হয়েছে।
✓
"Read More" টগল যোগ করা হয়েছে ক্যাটাগরি পেজে — এখন ডিফল্টে মাত্র ১ লাইন দেখায়, ক্লিক করলে পুরো আর্টিকেল খুলে যায় (JavaScript টগল, কোনো পেজ রিলোড লাগে না)। এতে পেজ ছোট/পরিষ্কার দেখায় কিন্তু SEO কন্টেন্ট পুরোটাই HTML-এ থাকে, তাই Google এখনো পুরো টেক্সট পড়তে পারে।
✓
ছবি কেন Google Image-এ আসছে না — পূর্ণাঙ্গ তদন্ত করা হয়েছে: চেক করা হয়েছে — (১) alt text: সব ঠিক আছে (আগেই ফিক্স করা হয়েছে), (২) robots.txt/মেটা ট্যাগ: কোনো ব্লক নেই, ছবির CDN ডোমেইনেও কোনো ব্লক নেই, Googlebot-Image সরাসরি টেস্ট করে ছবি অ্যাক্সেসযোগ্য পাওয়া গেছে, (৩) noindex/noimageindex: কোথাও নেই, (৪) image sitemap: ২২৬টি ছবি লাইভ আছে। কোনো টেকনিক্যাল ব্লকিং বাগ পাওয়া যায়নি — আসল কারণ সম্ভবত সময় (ছবির সাইটম্যাপ সম্প্রতি যোগ হয়েছে, ইনডেক্স হতে সপ্তাহ লাগতে পারে) এবং পেজ অথরিটি (Google Image মূলত সেই পেজের সার্চ র্যাঙ্কিং অনুসরণ করে — যেহেতু বেশিরভাগ নন-ব্র্যান্ড পেজ এখনো পজিশন ১৫-৯০-এ, ছবিও একই কারণে কম দেখাচ্ছে)। এই পুরো সেশনের কন্টেন্ট/লিংক কাজ (৫৩টি ব্লগ, ক্যাটাগরি আর্টিকেল) ঠিক এই সমস্যাটাই সমাধানের দিকে কাজ করছে।
ব্র্যান্ড নেম ও CTR ফিক্স (Google সার্চ রেজাল্ট)
✓
Google সার্চে সাইটের নাম ঠিক করা হয়েছে — স্ক্রিনশটে দেখিয়েছিলেন Google-এ "furnitureplusbd.com" দেখাচ্ছিল, কোম্পানির নাম "Furniture Plus" না। কারণ খুঁজে পাওয়া গেছে: সাইটের APP_NAME সেটিং আক্ষরিক অর্থেই "furnitureplusbd.com" সেট করা ছিল, যেটা og:site_name ট্যাগ, প্রোডাক্ট schema, এবং ইমেইল sender name — সবখানে ব্যবহার হয়। এটা "Furniture Plus"-এ পরিবর্তন করা হয়েছে, এবং সবচেয়ে শক্তিশালী সিগন্যাল হিসেবে WebSite + Organization structured data যোগ করা হয়েছে (Google-এর নিজস্ব ডকুমেন্টেশন অনুযায়ী এটাই মূল সিগন্যাল)। পরিবর্তনের আগে চেক করা হয়েছে APP_NAME থেকে যে cache prefix ও session cookie name বের হয়, সেগুলো যেন না বদলায় — তাই এই দুটো আলাদাভাবে আগের ভ্যালুতে পিন করে রাখা হয়েছে, যাতে কোনো লগইন করা কাস্টমার হঠাৎ লগআউট না হয়ে যায় বা ক্যাশ রিসেট না হয়। Google-এ এই পরিবর্তন দেখাতে সাধারণত ১-৩ সপ্তাহ সময় লাগে।
✓
বড় বাগ ধরা পড়েছে — Director Chair-এর meta description ভুল প্রোডাক্টের ছিল: Search Console-এ দেখা গেল Director Chair ক্যাটাগরি ভালো পজিশনে (৮.৭) থেকেও CTR মাত্র ০.৭৯%। চেক করে দেখা গেল, এর meta description-এ লেখা ছিল "folding director chairs... for office, outdoor, or event use" — অর্থাৎ এটা ক্যাম্পিং/আউটডোর ভাঁজ করা চেয়ারের বর্ণনা, অথচ এই সাইট বিক্রি করে অফিসের Director Chair (এক্সিকিউটিভ সিটিং)! এই ভুল বর্ণনার কারণে যারা অফিসের চেয়ার খুঁজছিল তারা ক্লিক করছিল না, কারণ স্নিপেট দেখে মনে হচ্ছিল ভুল প্রোডাক্ট। সঠিক অফিস Director Chair-এর বর্ণনা দিয়ে ঠিক করা হয়েছে।
✓
সব ১০টি ক্যাটাগরির title ট্যাগে "Price in Bangladesh" যোগ করা হয়েছে — Search Console ডেটায় দেখা যাচ্ছিল Sofa (পজিশন ৮.৭, ২০৯ ইম্প্রেশন, ০ ক্লিক), Sofa Set (পজিশন ৫.৩, ৮৪ ইম্প্রেশন, ০ ক্লিক), Manager Chair (পজিশন ১৮.৪, ২৬১ ইম্প্রেশন, ০ ক্লিক) — এগুলো ভালো পজিশনে থেকেও ক্লিক পাচ্ছিল না। কারণ টাইটেল ছিল শুধু "Sofa - Furniture Plus" — যেখানে মানুষ real সার্চ করছে "sofa price in bangladesh" টাইপ টার্ম দিয়ে, টাইটেলে সেই "Price in Bangladesh" শব্দগুলো না থাকায় স্নিপেট কম আকর্ষণীয় লাগছিল। এখন সব ক্যাটাগরির টাইটেল "X Price in Bangladesh - Furniture Plus" ফরম্যাটে — real সার্চ ইনটেন্টের সাথে সরাসরি মিলে যায়।
✓
"best budget office chairs" কীওয়ার্ডের quick-win ফিক্স করা হয়েছে: Search Console-এ দেখা গেল একটি ব্লগ পোস্ট এই কীওয়ার্ডে পজিশন ৯.৯-এ (পেজ ১-এর একদম শেষে) আছে, ২০৭ ইম্প্রেশন থাকলেও ক্লিক ছিল শূন্য। পোস্টের টাইটেলে আসল কীওয়ার্ড ফ্রেজটাই ছিল না ("Budget Office Chair Guide" — "best budget office chairs" না)। টাইটেল ঠিক করে কীওয়ার্ডটি সরাসরি বসানো হয়েছে, এবং কন্টেন্ট ২০০ শব্দ থেকে বাড়িয়ে ৬৩৭ শব্দে নেওয়া হয়েছে — নতুন যোগ হয়েছে "Boss Chair vs Office Chair" তুলনা সেকশন (Boss Chair ক্যাটাগরিতে লিংক-সহ), দামের ধাপ ভাঙা তালিকা, এবং একটি FAQ সেকশন।
অন-পেজ কন্টেন্ট
✓
হোমপেজের title ট্যাগ ঠিক করা হয়েছে, যা আগে "furnitureplusbd.com - furnitureplusbd.com" এভাবে দেখাচ্ছিল — সাইটের "slogan" সেটিং হুবহু title-এর মতোই সেট করা ছিল।
✓
পুরো সাইটজুড়ে একটি বড় সমস্যা পাওয়া গেছে ও ঠিক করা হয়েছে: ৮টি ক্যাটাগরি পেজের সুলিখিত বর্ণনা (description) ডেটাবেজে পড়ে ছিল কিন্তু লাইভ টেমপ্লেটে কখনো দেখানো হতো না। এখন প্রতিটি ক্যাটাগরি পেজে এটি দেখানো হচ্ছে।
✓
"Ergonomic Chair" (যা মূলত Office Chair-এর প্রধান পেজ হিসেবে কাজ করে) এবং "Sofa Set" ক্যাটাগরির খালি meta description ঠিক করা হয়েছে।
✓
"Ergonomic Chair" পেজের ভূমিকা অংশ নতুন করে লেখা হয়েছে যাতে "office chair" সার্চ ইনটেন্টও সরাসরি টার্গেট করা যায়, কারণ রিডাইরেক্টের মাধ্যমে এই পেজেই সব "office chair" ট্রাফিক আসছে।
✓
Search Console-এর আসল ডেটা থেকে খুঁজে পাওয়া long-tail কীওয়ার্ড টার্গেট করে ২টি SEO বায়িং-গাইড ব্লগ পোস্ট প্রকাশ করা হয়েছে, সংশ্লিষ্ট ক্যাটাগরি পেজের সাথে ক্রস-লিংক করা হয়েছে, এবং সাইটম্যাপে যোগ করে সাথে সাথে ক্রলযোগ্য করা হয়েছে।
✓
মেইন নেভিগেশন মেনুতে "Blog" লিংক যোগ করা হয়েছে, যাতে ইউজাররাও সহজে ব্লগ পোস্টগুলো খুঁজে পায়।
Facebook কনভার্সন কোয়ালিটি (Event Match Quality) ফিক্স
✓
Facebook Events Manager-এ দেখানো কম Event Match Quality স্কোর (৫.৭–৬.১/১০) তদন্ত করে আসল কারণ বের করা হয়েছে: Facebook-কে পাঠানো প্রতিটি ইভেন্টে (View Content, Add to Cart, Purchase, ইত্যাদি) গ্রাহকের নাম (first/last name), শহর, বিভাগ, ও দেশ — এই তথ্যগুলো একেবারেই পাঠানো হচ্ছিল না, শুধু ইমেইল/ফোন (এনক্রিপ্টেড) পাঠানো হতো। কোড-লেভেলে চেক করে দেখা গেছে ডেটাবেজে গ্রাহকের নাম এমনভাবে সংরক্ষিত (এক ফিল্ডে পুরো নাম) যে এটা আগে আলাদা করে পাঠানোই হতো না।
✓
Purchase ইভেন্টে নাম, শহর, বিভাগ ও দেশ যোগ করা হয়েছে: অর্ডারের নাম থেকে first/last name আলাদা করে (এনক্রিপ্টেড আকারে) পাঠানো শুরু হয়েছে, ঢাকার অর্ডারের জন্য city/state = "Dhaka" যোগ করা হয়েছে (ঢাকার বাইরের বা অজানা এলাকার অর্ডারে ভুল তথ্য যাতে না যায়, তাই সেগুলোতে ফাঁকাই রাখা হয়েছে), এবং সব ইভেন্টে দেশ = "Bangladesh" যোগ করা হয়েছে।
✓
View Content / Add to Cart / Search ইভেন্টে একটি বড় ফাঁক ধরা পড়েছে ও ঠিক করা হয়েছে: এই ইভেন্টগুলোতে (মোট ইভেন্টের সিংহভাগ — লক্ষাধিক) গ্রাহক লগইন করা থাকলেও ইমেইল/ফোন/নাম কখনো পাঠানো হতো না, শুধু অর্ডার করার পরই (Purchase-এর সময়) এই তথ্য যেত। এখন লগইন করা গ্রাহকের ক্ষেত্রে এই তথ্য প্রতিটি ইভেন্টেই পাঠানো হচ্ছে।
✓
সবচেয়ে কম স্কোরের কারণ — Add to Cart (৫.৭/১০) — শনাক্ত করে ঠিক করা হয়েছে: যেসব ভিজিটর লগইন করেননি (গেস্ট ব্রাউজিং, যা এই ইভেন্টের বেশিরভাগ), তাদের জন্য external_id ফাঁকা (null) পাঠানো হতো — Facebook-এর জন্য এটা মিলানোর মতো কোনো স্থায়ী পরিচয় না থাকার শামিল। এখন এমন ভিজিটরদের জন্য তাদের ব্রাউজিং সেশনের একটি স্থায়ী আইডি পাঠানো হচ্ছে, যাতে Facebook একই ভিজিটরের একাধিক ইভেন্ট মেলাতে পারে।
✓
"Complete Registration" ইভেন্টে একটি ডেটা-ফরম্যাট বাগ পাওয়া গেছে ও ঠিক করা হয়েছে: নতুন অ্যাকাউন্ট তৈরির সময় Facebook-কে পাঠানো ডেটাতে কোনো user_data (ইমেইল/ফোন/নাম) ছিলই না — শুধু একটি ভুল ফরম্যাটে নাম পাঠানো হচ্ছিল যেটা Facebook-এর সিস্টেম চিনতেই পারত না। এখন এই ইভেন্টেও ইমেইল, ফোন, নাম, ও দেশ সঠিকভাবে পাঠানো হচ্ছে। (এই ইভেন্টের সংখ্যা কম হওয়াটা স্বাভাবিক — বেশিরভাগ কাস্টমার গেস্ট চেকআউট ব্যবহার করেন, অ্যাকাউন্ট খোলেন না — এটা বাগ না, সেটাও যাচাই করে নিশ্চিত হওয়া হয়েছে।)
✓
সব পরিবর্তন লাইভ সার্ভারে যাচাই করে দেখা হয়েছে কোনো এরর লগ হচ্ছে না, এবং সাইটের সব পেজ স্বাভাবিকভাবে কাজ করছে। Facebook Events Manager-এ স্কোর আপডেট হতে সাধারণত নতুন ট্রাফিকের সাথে কয়েক দিন সময় লাগে — কয়েকদিন পর আবার চেক করে দেখা হবে।
✓
৩ দিন পর স্কোর আবার চেক করা হয়েছে (৮ সেপ্টেম্বর) — বেশিরভাগ ইভেন্ট এখনো ৬.১/১০-এ স্থির, Add to Cart সামান্য নেমেছে (৫.৭ → ৫.৩)। এর মানে আগের ফিক্স (Purchase/CAPI ডেটা) কাজ করছে কিন্তু পুরো ছবিটা না — কারণ খুঁজে বের করা হয়েছে: ব্রাউজারে সরাসরি চলা Facebook Pixel কোডে (View Content, Add to Cart, Search ইভেন্ট যেগুলো ব্রাউজার থেকেই পাঠানো হয়) কোনো গ্রাহক-পরিচয় ডেটাই পাঠানো হচ্ছিল না — শুধু সার্ভার-সাইড (CAPI) অংশ ঠিক করা হয়েছিল, ব্রাউজার-সাইড অংশ বাকি ছিল। এখন Pixel-এর init কোডে Manual Advanced Matching যোগ করা হয়েছে — লগইন করা গ্রাহকের জন্য ইমেইল/ফোন/নাম/দেশ, এবং গেস্ট ভিজিটরদের জন্য একটি স্থায়ী সেশন আইডি — যা পুরো সাইটের একটি মাত্র শেয়ার্ড ফাইলে (সব ১২টি টেমপ্লেটে একইভাবে কাজ করে) যোগ করায় পুরো সাইট একসাথে কভার হয়েছে। এটাই ছিল বাকি থাকা সবচেয়ে বড় ফাঁক।
মাল্টি-এজেন্ট SEO অডিট ও ব্যাচ ফিক্স (৯ সেপ্টেম্বর)
✓
৫টি বিশেষজ্ঞ এজেন্ট দিয়ে সম্পূর্ণ ফ্রেশ অডিট করা হয়েছে (টেকনিক্যাল, স্কিমা, ই-কমার্স, কন্টেন্ট, সার্চ-এক্সপেরিয়েন্স) — নতুন করে ১৩টি নির্দিষ্ট সমস্যা পাওয়া গেছে। এর মধ্যে ২টি দাবি যাচাই করে ভুল প্রমাণিত হয়েছে (নিচে আলাদা করে উল্লেখ করা হয়েছে) — বাকি ১১টি ফিক্স করে লাইভ যাচাই করা হয়েছে।
✓
ব্লগ পোস্টে BlogPosting schema যোগ করা হয়েছে — আগে ৫৩টি ব্লগ পোস্টের কোনোটাতেই headline/author/datePublished স্কিমা ছিল না, শুধু সাইট-ওয়াইড WebSite/Organization ট্যাগ ছিল।
✓
প্রোডাক্ট স্কিমায় sku, mpn, ও priceValidUntil যোগ করা হয়েছে — ডেটাবেজে আলাদা SKU ফিল্ড খালি থাকায় প্রোডাক্টের ইউনিক স্লাগকে fallback হিসেবে ব্যবহার করা হয়েছে (কোনো ভুয়া ডেটা বানানো হয়নি)। priceValidUntil প্রতিবার পেজ লোডে অটো-ক্যালকুলেট হয় (আজ থেকে ৬ মাস), তাই কখনো পুরনো হয়ে যাবে না।
✓
robots.txt-এ /cart, /checkout, /login, /register ব্লক করা হয়েছে — আগে এই ট্রানজ্যাকশনাল পেজগুলো সম্পূর্ণ ইনডেক্সযোগ্য ছিল।
✓
শোরুমের ঠিকানা দিয়ে LocalBusiness (HomeGoodsStore) schema যোগ করা হয়েছে — ফুটারে থাকা আসল ঠিকানা ও ফোন নম্বর (Road No. 20, North Badda, Dhaka-1212) ব্যবহার করে, লোকাল সার্চ/ম্যাপ প্যাক ভিজিবিলিটির জন্য।
✓
প্রোডাক্ট পেজের ব্রেডক্রাম্ব আগে শুধু Microdata ফরম্যাটে ছিল আর ক্যাটাগরি পেজে JSON-LD — দুই জায়গায় দুই ফরম্যাট থাকায় Google-এর জন্য কনফ্লিক্টিং সিগন্যাল হতে পারত। এখন সব জায়গায় JSON-LD BreadcrumbList একমাত্র সোর্স, প্রোডাক্ট পেজে Home → Category → Product — ৩ লেভেল সহ।
✓
সাইটের সাধারণ /sitemap.xml URL আগে ৪০৪ দেখাত (আসল সাইটম্যাপ /assets/sitemaps/ ফোল্ডারে থাকায়) — এখন /sitemap.xml থেকে সরাসরি সঠিক লোকেশনে রিডাইরেক্ট হয়।
✓
সার্ভারে HSTS সিকিউরিটি হেডার (Strict-Transport-Security) যোগ করা হয়েছে।
✓
দুটি ক্যাটাগরি ("Office chair" ও "Special Boss Chair") মূল মেনুতে যোগ করা হয়েছে — আসল কারণ ছিল সাইটের মেনু ক্যাটাগরি টেবিল থেকে অটো-জেনারেট হয় না, বরং একটি আলাদা মেনু ম্যানেজমেন্ট টেবিলে ম্যানুয়ালি যোগ করতে হয় — এই দুটো কখনো যোগ করা হয়নি।
✓
"best budget office chairs" ব্লগ পোস্টে সরাসরি "শপ নাউ" প্রোডাক্ট লিংক যোগ করা হয়েছে — আগে পাঠককে ক্যাটাগরি পেজে গিয়ে আবার প্রোডাক্ট খুঁজতে হতো। এখন পোস্টের শুরুর দিকেই ৩টি আসল, স্টকে-থাকা প্রোডাক্টের সরাসরি লিংক আছে (৳২,৫০০ থেকে ৳৫,৪৯০ রেঞ্জে) — যার একটি Boss Chair-ও, তাই দুটো টার্গেট কীওয়ার্ডই কভার হয়।
✓
প্রোডাক্ট JSON-LD ও meta description-এ এনটিটি leak হয়ে লেখার মাঝে literal টেক্সট হিসেবে দেখাচ্ছিল (রেন্ডার হওয়া স্পেস না) — ঠিক করা হয়েছে, এখন সঠিকভাবে স্পেস হিসেবে দেখায়।
✓
দুটি দাবি সরাসরি চেক করে ভুল প্রমাণিত হয়েছে (তাই কোনো কোড পরিবর্তন করা হয়নি): (১) "Boss Chair পেজে প্রোডাক্টের আগে মার্কেটিং টেক্সট আসে" — লাইভ HTML সরাসরি চেক করে দেখা গেছে প্রোডাক্ট গ্রিড আসলে H1-এর ঠিক পরেই আসে, বর্ণনা (description) অনেক পরে — এটা অডিট টুলের একটা ভুল রিডিং ছিল। (২) "ক্যাটাগরি পেজে পেজিনেশন নেই" — কোড চেক করে দেখা গেছে পেজিনেশন আসলে আছে (৫০টি প্রোডাক্ট/পেজ), শুধু কোনো ক্যাটাগরিতেই এখনো ৫০টির বেশি প্রোডাক্ট না থাকায় পেজিনেশন বাটন দেখানোর দরকার হয়নি — এটা বাগ না, ঠিকভাবে কাজ করছে। ফিল্টার/সর্ট অপশন সত্যিই নেই, কিন্তু এটা নতুন ফিচার বানানো (বাগ ফিক্স না) — বর্তমান ক্যাটাগরি সাইজে (২-২৩টি প্রোডাক্ট) জরুরি মনে হয়নি, তাই আপাতত করা হয়নি।
✓
সব পরিবর্তন লাইভ সার্ভারে যাচাই করে দেখা হয়েছে — কোনো এরর নেই, সব পেজ ঠিকভাবে লোড হচ্ছে।