Sign inGet Started

सप्रेशन

आपके वर्कस्पेस की एक सप्रेशन सूची होती है: ईमेल पतों का एक सेट जिन पर हम डिलीवरी नहीं करते। हार्ड बाउंस और स्पैम शिकायतें अपने आप इसमें जुड़ जाती हैं, और आप खुद भी पते जोड़ सकते हैं। बार-बार ऐसे पतों पर मेल भेजना जो बाउंस होते हैं या स्पैम रिपोर्ट करते हैं, मेलबॉक्स प्रदाताओं द्वारा आपके डोमेन को ब्लॉक करवा सकता है, इसलिए हम उन भेजावों को प्लेटफ़ॉर्म छोड़ने से पहले ही रोक देते हैं।
नया अनसब्सक्राइब करने पर सप्रेशन रिकॉर्ड नहीं बनता। यह डिलीवरेबिलिटी तथ्य नहीं बल्कि प्राप्तकर्ता की अपनी बताई प्राथमिकता दर्ज करता है, इसलिए यह Preferences टैब में रहता है। यह कैसे काम करता है, इसके लिए अनसब्सक्राइब लिंक देखें।
सूची को Email > Suppressions में, सप्रेशन API के ज़रिए, या bird email suppressions से प्रबंधित करें।
डैशबोर्ड में Suppressions पेज, जिसमें सप्रेस किए गए पते उनके कारण, मूल और निर्माण तिथि के साथ सूचीबद्ध हैं, और एक Create suppression बटन है

तीन कारण और वे क्या ब्लॉक करते हैं

हर रिकॉर्ड में एक reason होता है जो बताता है कि पता क्यों सूचीबद्ध है, और एक applies_to पॉलिसी होती है जो नियंत्रित करती है कि यह कौन-सी श्रेणियाँ ब्लॉक करता है:
कारणapplies_toमार्केटिंग श्रेणीट्रांज़ैक्शनल श्रेणी
hard_bounceallब्लॉक्डब्लॉक्ड
complaintnon_transactionalब्लॉक्डअनुमत
manualallब्लॉक्डब्लॉक्ड
यह विभाजन हर कारण के अर्थ से निकलता है:
  • hard_bounce: पता मौजूद नहीं है। किसी भी श्रेणी में भेजना व्यर्थ है, इसलिए यह सब कुछ ब्लॉक करता है।
  • complaint: अनचाहे मेल के बारे में एक बयान। जिसने आपका न्यूज़लेटर स्पैम के रूप में रिपोर्ट किया, उसे अभी भी पासवर्ड रीसेट या ऑर्डर कन्फ़र्मेशन की ज़रूरत हो सकती है, इसलिए यह केवल गैर-ट्रांज़ैक्शनल भेजावों को ब्लॉक करता है।
  • manual: आपका या आपकी टीम का एक जानबूझकर लिया गया निर्णय। हम इस पर सवाल नहीं उठाते, इसलिए मैन्युअल सप्रेशन ट्रांज़ैक्शनल सहित हर श्रेणी को ब्लॉक करता है।
एक पते पर प्रति कारण एक रिकॉर्ड होता है, इसलिए एक हार्ड बाउंस और पहले की कोई शिकायत अलग-अलग रिकॉर्ड के रूप में साथ-साथ रहते हैं, और जब तक कोई भी ब्लॉक करने वाला रिकॉर्ड मौजूद है, डिलीवरी ब्लॉक रहती है। हम किसी भी अपरिचित चीज़ पर fail closed करते हैं: यदि कोई रिकॉर्ड ऐसे applies_to के साथ आता है जो आपके इंटीग्रेशन ने कभी नहीं देखा, तो उसे हर श्रेणी को ब्लॉक करने वाला मानें, क्योंकि हम खुद भी इसे ऐसे ही मानते हैं।
Note: reason: unsubscribe is deprecated on the suppressions API. New unsubscribes record a preference instead of a suppression. The deprecated ?reason=unsubscribe filter still returns legacy suppression records with origin: unsubscribe_link or origin: unsubscribe_event until those records are removed.

पते स्वचालित रूप से कैसे जोड़े जाते हैं

हम प्राप्तकर्ता सिग्नलों के जवाब में सप्रेशन जोड़ते हैं, इसलिए बाउंस या शिकायत के लिए आपको कुछ करने की ज़रूरत नहीं:
ट्रिगरपरिणामी सप्रेशन
हार्ड बाउंस (email.bounced)reason: hard_bounce, origin: bounce_event, applies_to: all
आउट-ऑफ़-बैंड हार्ड बाउंस (email.out_of_band_bounce)reason: hard_bounce, origin: bounce_event, applies_to: all
स्पैम शिकायत (email.complained)reason: complaint, origin: complaint_event, applies_to: non_transactional
अनसब्सक्राइब, चाहे इन-बॉडी लिंक या वन-क्लिक बटन के ज़रिए हो, यहाँ दिखाई नहीं देता: यह इस सूची में पंक्ति जोड़ने के बजाय Preferences टैब पर प्राथमिकता दर्ज करता है।
केवल hard-क्लास बाउंस ही सप्रेस करता है, और वर्गीकरण तालिका दिखाती है कि कौन-से bounce_class मान hard माने जाते हैं। दो परिणाम जो विफलता जैसे दिखते हैं, पते को भेजने योग्य छोड़ देते हैं:
  • सॉफ़्ट बाउंस और डिफ़रल (email.deferred, या email.bounced के साथ bounce_type: "soft"): क्षणिक विफलताएँ जैसे भरा हुआ मेलबॉक्स। हम फिर से प्रयास करते हैं।
  • सेंड-साइड रिजेक्शन: जनरेशन विफलताएँ और पॉलिसी रिजेक्शन भेजने की समस्याएँ हैं, पते की नहीं। ये email.rejected इवेंट उत्पन्न करते हैं और कोई सप्रेशन नहीं।
उसी कारण से पहले से सप्रेस किए गए पते के लिए दोहराए गए सिग्नल मूल रिकॉर्ड को उसके created_at सहित अपरिवर्तित छोड़ देते हैं। रिकॉर्ड में source_email_id और source_recipient_id रहते हैं, जो एक स्वचालित सप्रेशन को उस सटीक संदेश और प्राप्तकर्ता से जोड़ते हैं जिसने इसे उत्पन्न किया। ये दोनों फ़ील्ड सपोर्ट प्रश्न "why did this person stop getting our email" का उत्तर देते हैं, और मैन्युअल जोड़ पर ये null होते हैं।
हर जोड़, स्वचालित या मैन्युअल, आपके webhook एंडपॉइंट पर एक email_suppression.created इवेंट फ़ायर करता है जिसमें suppression_id, सप्रेस किया गया email, reason, और workspace_id शामिल होते हैं, ताकि आपका अपना सिस्टम पोलिंग के बिना सूची को मिरर कर सके:
कोड उदाहरण
{
  "type": "email_suppression.created",
  "timestamp": "2026-07-23T14:52:03.192524705Z",
  "data": {
    "email": "user@example.com",
    "reason": "manual",
    "suppression_id": "sup_01ky7qckqrf06r38g49b9kxdbc",
    "workspace_id": "ws_01ky7m21hjffh9s8kq76gyb1xf"
  }
}

API के ज़रिए सप्रेशन प्रबंधित करना

API एकल रिकॉर्ड जोड़ता, सूचीबद्ध करता, खोजता और हटाता है। पते स्टोरेज और लुकअप से पहले लोअरकेस किए जाते हैं, और वे कभी URL पथ में दिखाई नहीं देते, क्योंकि पथ एक्सेस लॉग में आता है और ईमेल पता व्यक्तिगत डेटा है। किसी पते का रिकॉर्ड खोजने के लिए, सूची को ?email= से फ़िल्टर करें।
हर SDK इन ऑपरेशन्स को अपने suppressions रिसोर्स पर टाइप्ड मेथड्स के रूप में उपलब्ध कराता है।

पता जोड़ें

const suppression = await bird.suppressions.add({ email: "user@example.com" });
console.log(suppression.id);
मैन्युअल जोड़ में reason: manual और applies_to: all मिलते हैं, इसलिए वे हर श्रेणी को ब्लॉक करते हैं। कॉल idempotent है: एक नया सप्रेशन 201 Created लौटाता है, और पहले से मैन्युअली सप्रेस किया गया पता conflict के बजाय मौजूदा रिकॉर्ड के साथ 200 OK लौटाता है। दोनों स्थितियों में बॉडी सप्रेशन ऑब्जेक्ट होती है:
कोड उदाहरण
{
  "applies_to": "all",
  "created_at": "2026-07-23T14:52:03.192524705Z",
  "email": "user@example.com",
  "id": "sup_01ky7qckqrf06r38g49b9kxdbc",
  "origin": "api_key",
  "reason": "manual",
  "scope": {
    "id": "ws_01ky7m21hjffh9s8kq76gyb1xf",
    "type": "workspace"
  }
}
origin फ़ील्ड दर्ज करता है कि रिकॉर्ड कैसे बना। मैन्युअल जोड़ में api_key या user मिलता है, इस पर निर्भर करते हुए कि कॉलर ने API key से प्रमाणित किया या डैशबोर्ड सेशन से। स्वचालित जोड़ में bounce_event या complaint_event मिलता है, इस पर निर्भर करते हुए कि किस सिग्नल ने इसे बनाया।

सूचीबद्ध करें और खोजें

ये कॉल्स पहला पेज लौटाती हैं। Go में, खाली तीसरा आर्गुमेंट पेजिनेशन शुरू करता है; अगला पेज पढ़ने के लिए पिछले पेज का NextCursor पास करें।
const page = await bird.suppressions.list({ limit: 25 });
console.log(page.data.length);
सूची कर्सर-पेजिनेटेड है, नवीनतम पहले, और reason द्वारा फ़िल्टर करने योग्य है। किसी एक पते की जाँच करने के लिए इसे email क्वेरी पैरामीटर के रूप में पास करें:
const page = await bird.suppressions.list({ email: "user@example.com" });
console.log(page.data.length);
email फ़िल्टर प्रीफ़िक्स द्वारा केस-असंवेदनशील रूप से मैच करता है: user@example.com भी user@example.com.au से मैच करता है। हर लौटाए गए पते की तुलना आपके अनुरोधित पूरे पते से करें, और मैचिंग रिकॉर्ड मौजूद है या नहीं यह तय करने से पहले हर पेज में next_cursor को फ़ॉलो करें। एक पते पर कई रिकॉर्ड लागू हो सकते हैं। MCP कॉलर इस सटीक-पता लुकअप के लिए email_suppressions_check का उपयोग कर सकते हैं।
जब आपके पास सप्रेशन ID हो, तो GET /v1/email/suppressions/{suppression_id} वह एक रिकॉर्ड लौटाता है: SDKs में suppressions.get, या CLI पर bird email suppressions get <id>।

पता हटाएँ

await bird.suppressions.remove("sup_01ky7qckqrf06r38g49b9kxdbc");
एक कारण को इस तरह नहीं हटाया जा सकता। complaint रिकॉर्ड केवल साइन-इन किए हुए डैशबोर्ड उपयोगकर्ता के लिए हटता है; API की को 422 SuppressionNotRemovableByAPIKey मिलता है। hard_bounce और manual रिकॉर्ड दोनों तरीकों से हटाए जा सकते हैं।
204 No Content लौटाता है और उस रिकॉर्ड को स्थायी रूप से हटा देता है। उसी पते के अन्य रिकॉर्ड बने रहते हैं, और जब तक कोई शेष रिकॉर्ड मैसेज कैटेगरी को ब्लॉक करता है, डिलीवरी ब्लॉक रहती है। पते के आधार पर रिकॉर्ड हटाने के लिए, ?email= लुकअप को पेजिनेट करें, केवल पूरे-पते के मैच चुनें, और हर इच्छित रिकॉर्ड को ID से डिलीट करें। hard_bounce रिकॉर्ड हटाते समय सोच-समझकर काम करें, क्योंकि जो पता अभी भी मौजूद नहीं है वह अगले भेजने पर बाउंस होगा और खुद को फिर से सप्रेस कर लेगा।

सप्रेस किए गए पते पर भेजने पर क्या होता है

हम प्राप्तकर्ता को वहाँ रिजेक्ट करते हैं जहाँ आप देख सकें। प्राप्तकर्ता को recipient_id मिलता है और वह मैसेज की प्राप्तकर्ता सूची में rejected स्टेटस के साथ दिखाई देता है। इवेंट्स API और आपके webhooks एक email.rejected इवेंट को rejection_reason: "recipient_suppressed" के साथ रिकॉर्ड करते हैं। बाकी प्राप्तकर्ता सामान्य रूप से डिलीवर होते हैं।
मैसेज स्वयं 202 के साथ स्वीकार किया जाता है, भले ही उसके सभी प्राप्तकर्ता सप्रेस हों। हम सेंड स्वीकार करने के बाद, मैसेज प्रोसेस करते समय सप्रेशन रिज़ॉल्व करते हैं, इसलिए अभी जोड़ा गया पता कुछ ही मिनटों में लागू हो जाता है और पहले से चल रहे किसी सेंड को नहीं रोकता।

सैंडबॉक्स के साथ परीक्षण

टेस्टिंग सैंडबॉक्स सप्रेशन हैंडलिंग को नियतात्मक रूप से चलाता है। suppressed@messagebird.dev पर भेजने पर ऐसा व्यवहार होता है जैसे पता आपकी सूची में हो: प्राप्तकर्ता rejection_reason: "recipient_suppressed" के साथ रिजेक्ट होता है और डिलीवरी तक कभी नहीं पहुँचता। सैंडबॉक्स बाउंस और कंप्लेंट पते (bounce@messagebird.dev, complaint@messagebird.dev) अपने परिणामों को वास्तविक इवेंट पाइपलाइन से गुज़ारते हैं लेकिन आपकी सप्रेशन सूची में कुछ नहीं लिखते, इसलिए वही टेस्ट पते हर रन में दोबारा उपयोग किए जा सकते हैं।

अगले कदम

संबंधित संसाधन

इस विषय के लिए डॉक्यूमेंटेशन, गाइड और उदाहरणों के साथ आगे बढ़ें। संसाधन अंग्रेज़ी में हैं।

इम्प्लीमेंटेशन ब्रीफ़ पाएँ