ওয়েবহুক

WhatsApp ওয়েবহুক: মেসেজ ও কন্টাক্টের সাইন করা ইভেন্ট

নতুন WhatsApp মেসেজ, কন্টাক্ট আর শেষ হওয়া ক্যাম্পেইনের সাইন করা ইভেন্ট আপনার URL-এ নিন, HMAC সিগনেচার যাচাই করুন, আর ব্যর্থ ডেলিভারি নিজে থেকে আবার যাক।

WhatsApp ওয়েবহুক: মেসেজ ও কন্টাক্টের সাইন করা ইভেন্ট

আপনার অর্ডার সিস্টেম জানে কখন অর্ডার এলো। আপনার CRM-এর জানা দরকার কখন কাস্টমার WhatsApp-এ লিখলেন। দুটো যুক্ত না থাকলে কাউকে এক স্ক্রিন দেখে আরেক স্ক্রিনে টাইপ করতে হয়, আর কিছু না কিছু বাদ পড়ে। প্রতি মিনিটে API-তে খোঁজ নেওয়া ধীর, আর রিকোয়েস্টও নষ্ট হয়।

ওয়েবহুক হলো একটা HTTP রিকোয়েস্ট, যা কোনো ঘটনা ঘটার সাথে সাথে এক সিস্টেম আরেক সিস্টেমকে পাঠায়। SaleMag নতুন মেসেজ, কন্টাক্ট আর শেষ হওয়া ক্যাম্পেইনের খবর ওয়েবহুক দিয়ে আপনার সিস্টেমকে দেয়। উল্টো দিকে, আপনার সিস্টেম SaleMag-এ কিছু করাতে চাইলে REST API কল করে।

SaleMag-এ কত ধরনের ওয়েবহুক আছে?

SaleMag-এ আপনি নিজে সেট করেন এক ধরনের ওয়েবহুক: আউটগোয়িং ইভেন্ট ওয়েবহুক। এর বাইরে কিছু প্ল্যাটফর্ম ওয়েবহুক আছে, যা SaleMag নিজেই সেট করে:

ধরন দিক কী কাজে কোথায় সেট করবেন
আউটগোয়িং ইভেন্ট ওয়েবহুক SaleMag থেকে আপনার URL-এ নতুন মেসেজ, নতুন কন্টাক্ট, শেষ হওয়া ক্যাম্পেইন Webhooks পেজ, বা /api/v1/webhooks
প্ল্যাটফর্ম ওয়েবহুক Meta, স্টোর আর Telegram থেকে SaleMag-এ চ্যাট, স্টোরের অর্ডার আর প্রোডাক্ট গ্রহণ চ্যানেল বা স্টোর যুক্ত করলে নিজে থেকে রেজিস্টার হয়

আপনার সিস্টেম থেকে SaleMag-এ ডেটা পাঠানোর কাজ হয় REST API দিয়ে; নিচে দেখুন।

SaleMag-এর আউটগোয়িং ওয়েবহুক কোন কোন ইভেন্ট পাঠায়?

SaleMag-এর আউটগোয়িং ওয়েবহুক তিনটি ইভেন্ট পাঠায়। প্রতিটি এন্ডপয়েন্টে ইভেন্ট বাছাই করা যায়; কোনো ইভেন্ট না বাছলে সবগুলোই আসে।

ইভেন্ট কখন যায় পেলোডের মূল অবজেক্ট
message.received WhatsApp, Messenger, Instagram, Telegram বা WeChat-এ কাস্টমারের মেসেজ এলে message: id, conversation_id, direction, channel, body, sent_at
contact.created অ্যাপে নতুন কন্টাক্ট যোগ হলে, বা কাস্টমারের প্রথম মেসেজে contact: id, phone_e164, email, first_name, last_name
campaign.completed ব্রডকাস্ট শেষ হলে, স্ট্যাটাস completed বা failed campaign: id, name, channel, status, totals
test.ping শুধু Send test চাপলে message: একটা টেস্ট লেখা

CSV ইমপোর্ট, স্টোর সিঙ্ক বা POST /api/v1/contacts দিয়ে আসা কন্টাক্টে contact.created যায় না।

একটা message.received ডেলিভারি দেখতে এমন:

{
  "event": "message.received",
  "message": {
    "id": 9812,
    "conversation_id": 311,
    "direction": "in",
    "channel": "whatsapp",
    "body": "Ei dress ta koto?",
    "sent_at": "2026-10-24T09:15:02+00:00"
  },
  "timestamp": "2026-10-24T09:15:03+00:00"
}

campaign.completed-এ totals-এর ভেতরে থাকে total, queued, sent, delivered, read, failed, clicked আর unsubscribed-এর সংখ্যা।

প্রতিটি ডেলিভারিতে কোন কোন হেডার থাকে?

প্রতিটি ডেলিভারি JSON বডিসহ একটা HTTP POST, সাথে এই হেডারগুলো:

হেডার মান
Content-Type application/json
X-Webhook-Event ইভেন্টের নাম, যেমন message.received
X-Webhook-Signature t={unix seconds},v1={HMAC-SHA256 hex}
User-Agent শেষে থাকে Webhooks/1.0

ওয়েবহুকের সিগনেচার কীভাবে যাচাই করব?

আপনার সাইনিং সিক্রেট দিয়ে {t}.{raw body}-এর HMAC-SHA256 hex হিসেবে বের করুন, তারপর v1-এর সাথে মেলান। সিক্রেট শুরু হয় whsec_ দিয়ে; প্রিফিক্সসহ পুরো স্ট্রিংটাই ব্যবহার করুন। সবসময় যেমন এসেছে তেমন raw body হ্যাশ করুন, নতুন করে এনকোড করা কপি নয়।

import crypto from "node:crypto"

// rawBody: the request body as a string, exactly as received
export function verifySaleMagWebhook(rawBody, signatureHeader, secret, toleranceSec = 300) {
  const parts = Object.fromEntries(signatureHeader.split(",").map((p) => p.split("=", 2)))
  if (!parts.t || !parts.v1) return false
  if (Math.abs(Date.now() / 1000 - Number(parts.t)) > toleranceSec) return false

  const expected = crypto
    .createHmac("sha256", secret)
    .update(`${parts.t}.${rawBody}`)
    .digest("hex")

  const a = Buffer.from(expected)
  const b = Buffer.from(parts.v1)
  return a.length === b.length && crypto.timingSafeEqual(a, b)
}

একই যাচাই PHP-তে:

$raw = file_get_contents('php://input');
parse_str(str_replace(',', '&', $_SERVER['HTTP_X_WEBHOOK_SIGNATURE'] ?? ''), $sig);
$expected = hash_hmac('sha256', ($sig['t'] ?? '') . '.' . $raw, $secret);
$valid = isset($sig['v1']) && hash_equals($expected, $sig['v1']);

প্রতিটি চেষ্টা, রিট্রাইসহ, নতুন টাইমস্ট্যাম্প দিয়ে আবার সাইন হয়। তাই পুরোনো টাইমস্ট্যাম্প নিশ্চিন্তে বাতিল করতে পারেন।

আমার এন্ডপয়েন্ট বন্ধ থাকলে কী হয়?

আপনার এন্ডপয়েন্ট ১০ সেকেন্ডের মধ্যে যেকোনো 2xx স্ট্যাটাস দিলে SaleMag ডেলিভারি সফল ধরে। বাকি সব ক্ষেত্রে এই সময়সূচিতে আবার চেষ্টা হয়:

চেষ্টা কখন
১ সাথে সাথে
২ ১ নম্বর ব্যর্থ হওয়ার ১ মিনিট পর
৩ ২ নম্বর ব্যর্থ হওয়ার ৫ মিনিট পর
৪ ৩ নম্বর ব্যর্থ হওয়ার ১ ঘণ্টা পর
৫ ৪ নম্বর ব্যর্থ হওয়ার ১ দিন পর, এরপর আর নয়

প্রতিটি চেষ্টা ডেলিভারি লগে সেভ হয়: ইভেন্ট, HTTP স্ট্যাটাস, কততম চেষ্টা আর সময়। Webhooks পেজে প্রতিটি এন্ডপয়েন্টের শেষ পাঁচটা দেখা যায়, আর View deliveries-এ পুরো তালিকা। প্রাইভেট বা লোকাল নেটওয়ার্কের ঠিকানায় যাওয়া URL ব্লক হয়, আবার চেষ্টাও হয় না।

ধীর সফল রেসপন্সের পরেও রিট্রাই আসতে পারে। তাই আপনার রিসিভার এমনভাবে বানান যাতে দুবার চললেও সমস্যা না হয়: অবজেক্টের id রেখে দিন, আগে সামলানো হলে বাদ দিন।

ওয়েবহুক এন্ডপয়েন্ট কীভাবে সামলাব?

অ্যাপের Webhooks পেজ থেকে, অথবা কোড দিয়ে:

  • তৈরি, এডিট, বন্ধ বা ডিলিট করুন। এই পেজ খুলতে টিম মেম্বারের ডেভেলপার পারমিশন লাগে।
  • সিক্রেট রোটেট করুন। পুরোনো সিক্রেট সাথে সাথে বন্ধ হয়ে যায়, তাই রিসিভার তখনই আপডেট করুন।
  • Send test। ওই এন্ডপয়েন্টে একটা test.ping পাঠায়।
  • API থেকে। webhooks:write স্কোপের টোকেন দিয়ে /api/v1/webhooks-এ GET, POST আর DELETE। তৈরির রেসপন্সে সিক্রেট একবারই আসে। দেখুন REST API।

আমার সিস্টেম থেকে SaleMag-এ ডেটা পাঠাব কীভাবে?

REST API দিয়ে। SaleMag-এ ইনকামিং ওয়েবহুক URL নেই, তাই আপনার ওয়েবসাইট, ERP বা অর্ডার সিস্টেম বেয়ারার টোকেন দিয়ে সরাসরি API কল করে:

কাজ এন্ডপয়েন্ট স্কোপ
কন্টাক্ট বানানো বা আপডেট POST /api/v1/contacts, PATCH /api/v1/contacts/{id} contacts:write
কাউকে WhatsApp বা SMS পাঠানো POST /api/v1/messages/send messages:write
অনেককে একসাথে পাঠানো ক্যাম্পেইন বানিয়ে launch campaigns:write

Zapier, Make বা n8n-এর মতো টুলও একইভাবে কাজ করে: SaleMag-এর আউটগোয়িং ওয়েবহুক নেয়, আর API কল করে। অর্ডার আপডেটের টেমপ্লেট কেমন লিখলে অনুমোদন পায়, দেখুন WhatsApp-এ অর্ডার স্ট্যাটাস আপডেট।

SaleMag কি অর্ডারের ডেটা আমার সিস্টেমে পাঠায়?

না। আউটগোয়িং ওয়েবহুকে অর্ডার বা কার্টের কোনো ইভেন্ট নেই। স্টোরের অর্ডার আসে আপনার Shopify, WooCommerce বা BigCommerce স্টোর থেকেই, তাই অর্ডারের ডেটা সরাসরি স্টোর থেকে নেওয়াই সহজ। চ্যাটে নেওয়া অর্ডার থাকে SaleMag-এর Orders পেজে।

SaleMag ওয়েবহুক কী করে না?

  • অর্ডার, কার্ট, লিড বা মেসেজ স্ট্যাটাসের ইভেন্ট আউটগোয়িং ওয়েবহুকে যায় না। শুধু উপরের তিনটি ইভেন্টই SaleMag থেকে বের হয়।
  • ইনকামিং ওয়েবহুক নেই। বাইরের সিস্টেম SaleMag-এ কিছু করাতে চাইলে REST API কল করে।
  • Zapier, Make বা n8n-এর নিজস্ব অ্যাপ নেই। সাধারণ ওয়েবহুক আর API দিয়ে কাজ করে।
  • আউটগোয়িং ডেলিভারি হাতে আবার পাঠানোর ব্যবস্থা নেই; রিট্রাই নিজে থেকে হয়।

SaleMag ওয়েবহুক কাদের জন্য?

ডেভেলপার আর এজেন্সি, যারা SaleMag-কে ওয়েবসাইট, ERP, POS, CRM বা নো-কোড টুলের সাথে যুক্ত করেন। আর সেই শপগুলোর জন্য, যারা চান কাস্টমারের নতুন মেসেজ আর কন্টাক্টের খবর সাথে সাথে নিজেদের সিস্টেমে পৌঁছাক। কোড থেকে মেসেজ পাঠানো বা ডেটা পড়ার কাজ REST API দিয়ে হয়।

কীভাবে শুরু করবেন?

SaleMag অ্যাকাউন্ট খুলুন, Webhooks পেজে আপনার এন্ডপয়েন্ট যোগ করুন, তারপর Send test চাপুন। প্ল্যানের দাম দামের পেজে।

ধাপে ধাপে

  1. 1

    এন্ডপয়েন্ট যোগ করুন

    Webhooks পেজে আপনার HTTPS URL দিন আর ইভেন্ট বাছুন, সব ইভেন্ট চাইলে কোনোটাই টিক দেবেন না।

  2. 2

    সিক্রেট সেভ করুন

    whsec_ সাইনিং সিক্রেট দেখানোর সাথে সাথে কপি করুন। এটা একবারই দেখায়; হারালে রোটেট করুন।

  3. 3

    সিগনেচার যাচাই করুন

    টাইমস্ট্যাম্প আর raw body-র HMAC-SHA256 দিয়ে X-Webhook-Signature মেলান, তারপর দ্রুত 2xx রেসপন্স দিন।

  4. 4

    টেস্ট পাঠান

    Send test চাপলে test.ping আসবে, তারপর ডেলিভারি লগে HTTP স্ট্যাটাস দেখুন।

সাধারণ জিজ্ঞাসা

SaleMag আমার ওয়েবহুক URL-এ কোন কোন ইভেন্ট পাঠায়?

SaleMag তিনটি ইভেন্ট পাঠায়: message.received, contact.created আর campaign.completed। Send test বাটন একটা test.ping-ও পাঠায়, তবে সেটায় সাবস্ক্রাইব করা যায় না।

SaleMag ওয়েবহুকের সিগনেচার কীভাবে যাচাই করব?

X-Webhook-Signature হেডার পড়ুন, দেখতে t={timestamp},v1={signature}-এর মতো। আপনার whsec_ সিক্রেট দিয়ে '{timestamp}.{raw body}'-এর HMAC-SHA256 hex হিসেবে বের করুন, তারপর constant-time তুলনায় v1-এর সাথে মেলান।

ডেলিভারি ব্যর্থ হলে SaleMag কি আবার চেষ্টা করে?

হ্যাঁ। ১০ সেকেন্ডের মধ্যে 2xx রেসপন্স না পেলে ১ মিনিট, ৫ মিনিট, ১ ঘণ্টা আর ১ দিন পর আবার চেষ্টা হয়, মোট ৫ বার। প্রতিটি চেষ্টা ডেলিভারি লগে দেখা যায়।

অর্ডার প্লেস হলে কি SaleMag ওয়েবহুক পাঠায়?

না। SaleMag শুধু message.received, contact.created আর campaign.completed পাঠায়; অর্ডারের কোনো ইভেন্ট নেই। স্টোরের অর্ডারের ডেটা সরাসরি আপনার Shopify, WooCommerce বা BigCommerce স্টোর থেকেই নিন।

আমার ওয়েবসাইট বা ERP কি WhatsApp মেসেজ পাঠাতে পারে?

হ্যাঁ, REST API দিয়ে; SaleMag-এ ইনকামিং ওয়েবহুক নেই। messages:write স্কোপের টোকেন দিয়ে POST /api/v1/messages/send কল করলে কোনো কন্টাক্টকে WhatsApp টেমপ্লেট বা টেক্সট যায়। দেখুন REST API।

Meta-র WhatsApp ওয়েবহুক কি আমাকে নিজে সেট করতে হবে?

না। SaleMag-এর WhatsApp সাইনআপ দিয়ে নম্বর যুক্ত করলে SaleMag নিজেই সেটাকে Meta-র ওয়েবহুকে সাবস্ক্রাইব করে। চ্যানেল সেটিংসে ওয়েবহুক হেলথ চেক আর Meta-তে আবার রেজিস্টার করার বাটন আছে।

SaleMag কি Zapier, Make বা n8n-এর সাথে কাজ করে?

হ্যাঁ, ওয়েবহুক আর API দিয়ে। SaleMag-এর নিজস্ব Zapier অ্যাপ নেই, তবে এই টুলগুলো SaleMag-এর আউটগোয়িং ওয়েবহুক নিতে পারে আর REST API কল করে কন্টাক্ট বানাতে বা মেসেজ পাঠাতে পারে।

sent বা read-এর মতো ডেলিভারি স্ট্যাটাসের ওয়েবহুক কি আছে?

না। SaleMag ইনবক্সে sent, delivered আর read টিক দেখায়, কিন্তু মেসেজ স্ট্যাটাসের পরিবর্তন আপনার URL-এ পাঠায় না।

লেখক পরিচিতি

সেলম্যাগ টিম

হোয়াটসঅ্যাপ ও এফ-কমার্স অটোমেশন, ঢাকা

ঢাকার যে টিম সেলম্যাগ বানায়: বাংলাদেশের অনলাইন বিক্রেতাদের জন্য হোয়াটসঅ্যাপ, মেসেঞ্জার আর ইনস্টাগ্রামের এআই সেলস ইনবক্স।

আরও সলিউশন

ইউনিফায়েড ইনবক্স: WhatsApp, Messenger ও Instagram | SaleMag

WhatsApp, Messenger, Instagram, Telegram আর WeChat-এর সব চ্যাট এক ইনবক্সে। প্রতিটি চ্যাট একজনকে দিন, নোট রাখুন, সেভ করা উত্তর পাঠান, এআই এজেন্টের সাথে কাজ করুন।

২১ অক্টোবর, ২০২৬ · 5 মিনিটে পড়া

সোশ্যাল মিডিয়া পোস্ট শিডিউলার: Facebook ও Instagram | SaleMag

এক ক্যালেন্ডার থেকে Facebook, Instagram, LinkedIn, X, TikTok আর YouTube-এ পোস্ট শিডিউল করুন। এআই ক্যাপশন লেখে, বা একটা টপিক থেকে ৩ থেকে ১৪টা পোস্ট সাজিয়ে দেয়।

২১ অক্টোবর, ২০২৬ · 4 মিনিটে পড়া

এআই এজেন্ট: WhatsApp ও Messenger-এর বাংলা চ্যাটবট | SaleMag

আপনার প্রোডাক্ট আর FAQ থেকে WhatsApp, Messenger ও Instagram-এ কাস্টমারের প্রশ্নের উত্তর দেয় এআই এজেন্ট (চ্যাটবট), বাংলায়। কঠিন চ্যাট যায় টিমের কাছে।

২১ অক্টোবর, ২০২৬ · 6 মিনিটে পড়া

প্রতিটি চ্যাটে জিততে প্রস্তুত?

SaleMag-এর সাথে দ্রুত এগিয়ে যান। বিনামূল্যে শুরু করুন — কোনো ক্রেডিট কার্ড লাগবে না।