Polling ছাড়াই sent, failed, campaign completed, link clicked বা payment event পেতে webhook কার্যকর। কিন্তু public endpoint হওয়ায় যেকেউ নকল request পাঠাতে পারে। Consumer-কে raw body ও timestamp দিয়ে HMAC signature verify করতে হবে, পুরোনো request reject করতে হবে এবং event ID idempotently process করতে হবে। Endpoint সাময়িক fail করলে sender retry করবে—তাই একই event একাধিকবার আসা স্বাভাবিক।
Signature আগে verify করুন
Parsed JSON নয়, raw body
Header-এর event, timestamp ও signature নিন। configured secret দিয়ে documented canonical payload hash করে constant-time compare করুন। verification ব্যর্থ হলে business logic চালাবেন না।
Replay ও duplicate সামলান
At-least-once delivery ধরে নিন
Timestamp tolerance রাখুন এবং event_id unique table-এ লিখুন। duplicate হলে আগের success response দিন; দ্বিতীয়বার order update বা notification চালাবেন না।
Fast acknowledgement দিন
Heavy কাজ queue-তে
Signature ও minimal validation শেষে event durable queue/database-এ রেখে দ্রুত 2xx দিন। downstream CRM slow হলে webhook endpoint block করবেন না।
- TLS endpoint
- Secret rotation
- Event ID unique
- Timestamp tolerance
- Delivery log alert
ব্যবহারিক checklist
- Raw body access
- HMAC verify
- Timestamp check
- Idempotent store
- 2xx after persistence
মূল takeaway
Webhook secure ও reliable হয় যখন প্রতিটি event authenticate, deduplicate এবং পরে process করা হয়।
শেষ কথা
Test event দিয়ে success, invalid signature, duplicate এবং timeout চারটি scenario চালান। delivery log-এ response status ও attempt count monitor করুন। secret leak সন্দেহ হলে rotate করে old secret-এর short overlap window দিন।
Campaign চালুর আগে consent, mobile operator policy এবং প্রযোজ্য current নিয়ম যাচাই করুন।
১০০ free automation credit দিয়ে শুরু করুন →সাধারণ প্রশ্ন
এক event দুইবার আসা কি bug?
না, retry-based webhook at-least-once হতে পারে; event ID দিয়ে deduplicate করুন।
Webhook-এ 200 কখন দেব?
Signature verify ও event durableভাবে সংরক্ষণের পর দ্রুত 2xx দিন; heavy processing পরে করুন।
Sources ও editorial note
সর্বশেষ editorial review: ২৮ জুলাই, ২০২৬। Product behavior release অনুযায়ী বদলাতে পারে; current documentation দেখুন।
