SparkPost से माइग्रेट करें
आउटबाउंड ईमेल को SparkPost से Bird पर ले जाने के लिए इस गाइड का उपयोग करें। अपने HTTP या SMTP इंटीग्रेशन के लिए नीचे दी गई मैपिंग का उपयोग करते हुए मुख्य माइग्रेशन चेकलिस्ट का पालन करें।
शुरू करने से पहले
आपको अपने SparkPost अकाउंट और सबअकाउंट, सेंडिंग-डोमेन DNS, ऐप्लिकेशन कॉन्फ़िगरेशन, और वेबहुक हैंडलर तक पहुँच चाहिए। अपने चुने हुए रीजन में एक Bird वर्कस्पेस और API key तैयार करें। ऑप्ट-आउट इंपोर्ट के लिए key पर preferences write परमिशन भी आवश्यक है।
सेंडर, टेम्प्लेट, स्निपेट, रेसिपिएंट लिस्ट, सप्रेशन, शेड्यूल्ड सेंड, IP पूल, और वेबहुक की इन्वेंटरी बनाएँ। SDK, फ्रेमवर्क मेल एडैप्टर, बैकग्राउंड जॉब, और इनबाउंड ईमेल फ़्लो शामिल करें। नए रिसोर्स ID बनाते समय उन्हें रिकॉर्ड करें; SparkPost ID और क्रेडेंशियल Bird में काम नहीं करते। SparkPost क्लाइंट को बदलते समय Bird SDK का उपयोग करें, और उसके फिर से प्रयास, टाइमआउट, और पेजिनेशन की समीक्षा करें।
यदि आप SparkPost सबअकाउंट का उपयोग करते हैं, तो वर्कस्पेस लेआउट चुनने से पहले हमसे संपर्क करें। उपलब्ध वर्कस्पेस, परमिशन, शेयर्ड रिसोर्स, और टेनेंट-प्रोविज़निंग वर्कफ़्लो की पुष्टि करें। एक वर्कस्पेस API key, X-MSYS-SUBACCOUNT के साथ टेनेंट नहीं बदल सकती। माइग्रेशन के दौरान सस्पेंड किए गए टेनेंट और टेनेंट-विशिष्ट सेंडिंग प्रतिबंधों को बनाए रखें।
पुष्टि करें कि आपकी Bird प्लान अलाउंस और दर सीमाएँ आपके सेंडिंग वॉल्यूम, रिसोर्स काउंट, और पीक ट्रैफ़िक को कवर करती हैं।
अपने सेंडिंग डोमेन जल्दी रजिस्टर करें। काम कर रहे SparkPost DNS को बनाए रखें और जहाँ ज़रूरत हो वहाँ अलग return-path और ट्रैकिंग होस्टनेम चुनें। यदि रजिस्ट्रेशन ओनरशिप कॉन्फ़्लिक्ट रिपोर्ट करे, तो किसी सक्रिय डोमेन को हटाने से पहले सपोर्ट से संपर्क करें।
डेडिकेटेड IP: माइग्रेट करने से पहले हमसे संपर्क करें या अपनी अकाउंट टीम से बात करें। हमसे पुष्टि कराएँ कि क्या आपके मौजूदा SparkPost IP Bird पर ट्रांसफ़र हो सकते हैं, और पूल सेटअप, टाइमिंग, और किसी भी ज़रूरी वॉर्मअप पर सहमति बनाएँ। अपना अकाउंट रीजन, IP पते, पूल नाम, और सेंडिंग वॉल्यूम शामिल करें। माइग्रेशन प्लान की पुष्टि होने तक अपने वर्तमान IP सक्रिय रखें।
कटओवर से पहले पूल सिलेक्शन और रेसिपिएंट IP या होस्टनेम अलाउलिस्ट की पुष्टि करें। IP ख़रीदने से डिफ़ॉल्ट पूल नहीं बदलता। नए ख़रीदे गए IP वॉर्मअप के दौरान शेयर्ड इंफ़्रास्ट्रक्चर से ओवरफ़्लो भेज सकते हैं, जो तब मायने रखता है जब रेसिपिएंट केवल विशिष्ट IP से मेल स्वीकार करते हों।
यह अपने एजेंट को दें
इसे अपने एप्लिकेशन रिपॉज़िटरी में अपने कोडिंग एजेंट में पेस्ट करें:
Help me migrate my SparkPost email integration to Bird.
1. Use an existing Bird MCP connection or signed-in CLI. Otherwise follow https://bird.com/docs/ai/set-up-your-agent.md. Append .md to Bird docs URLs to read Markdown.
2. Read https://bird.com/docs/guides/email/migrate/sparkpost.md and https://bird.com/docs/guides/email/migrate.md. Make a read-only inventory of my SparkPost call sites, SDKs, resource IDs, configured URLs, sending domains, and scheduled jobs before editing. Never print API keys.
3. Propose workspace and region mappings. If subaccounts, dedicated IPs, or domain ownership conflicts need a migration plan, use the available Bird tools to open a human email support ticket and return its ID. For CLI usage, read https://bird.com/docs/cli/reference/support-tickets-create.md. Wait for the agreed plan before moving those resources.
4. Follow https://bird.com/docs/guides/email/sending-domains.md; preserve working DNS and show me proposed records. Ask before DNS changes or paid provisioning.
5. Port sending, templates, and webhooks using this guide. Preserve recipient privacy, personalization, and categories. Export suppressions with scope and type; show me the handling before importing or changing preferences.
6. Test using https://bird.com/docs/guides/email/testing-sandbox.md. Show me results and unresolved differences, including tracking, signatures, and correlation.
7. Ask for explicit approval before production cutover. Keep a rollback path; get separate approval before retiring SparkPost resources or credentials.सेंड कॉल को मैप करें
POST /api/v1/transmissions को POST /v1/email/messages से बदलें, या स्वतंत्र संदेशों के लिए POST /v1/email/batches से। SparkPost API overview इसके क्षेत्रीय होस्ट और प्रमाणीकरण सूचीबद्ध करता है। Bird आपकी API key के क्षेत्र के अनुसार https://us1.platform.bird.com या https://eu1.platform.bird.com का उपयोग करता है, Authorization: Bearer $BIRD_API_KEY के साथ।
एक SparkPost transmission अपने प्राप्तकर्ताओं के लिए अलग-अलग, वैयक्तिकृत ईमेल बना सकता है। Bird एक सेंड के प्राप्तकर्ताओं के बीच कंटेंट और पैरामीटर साझा करता है। प्रत्येक वैयक्तिकरण के लिए एक अलग संदेश का उपयोग करें, जिसे वैकल्पिक रूप से एक batch में समूहित किया जा सकता है। केवल-To वाले सेंड अलग-अलग पते पर भेजे जाते रहते हैं; Cc/Bcc कॉपी जोड़ते समय दृश्यमान हेडर जाँचें।
SparkPost transmission fields को मैप करें:
| SparkPost | Bird माइग्रेशन |
|---|---|
content.from, subject, html, text | समान नामों वाले शीर्ष-स्तरीय फ़ील्ड |
content.reply_to | reply_to array |
recipients[].address | प्रति वैयक्तिकृत प्राप्तकर्ता एक संदेश |
address.header_to, content.headers.CC | to / cc / bcc ग्रुप फिर से बनाएँ; नीचे एड्रेसिंग नोट देखें |
content.headers | headers; सेंड गाइड में आरक्षित नामों की जाँच करें |
substitution_data | इनलाइन parameters या स्टोर किया गया template.parameters; ओवरराइड हल करें और Bird की छोटी पैरामीटर सीमा में फ़िट करें |
content.template_id | नया Bird टेम्पलेट id या slug; पहले कॉन्टेंट कन्वर्ट और पब्लिश करें |
Transmission/recipient metadata | metadata में मर्ज करें, प्राप्तकर्ता कीज़ को प्राथमिकता दें; Bird की छोटी मेटाडेटा सीमा में फ़िट करें |
प्राप्तकर्ता tags, campaign_id | { name, value } टैग चुनें; कोई broadcast नहीं बनता |
options.transactional | स्पष्ट category: transactional या marketing |
options.open_tracking, options.click_tracking | track_opens, track_clicks; पहले ओवरराइड हल करें |
options.start_time | scheduled_at; स्वीकृति के समय टेम्पलेट कंटेंट तय हो जाता है; नीचे शेड्यूलिंग नोट्स देखें |
options.ip_pool | Bird ip_pool_id; डेडिकेटेड IP माइग्रेट करने से पहले हमसे संपर्क करें |
content.attachments | type → content_type (बेस MIME टाइप), name → filename, data → base64 content; MIME पैरामीटर पर निर्भर फ़ाइलों को मान्य करें |
content.inline_images | वही फ़ाइल मैपिंग, साथ ही name → content_id; नीचे देखें |
return_path, tracking_domain | Bird डोमेन कॉन्फ़िगरेशन; नीचे देखें |
content.ab_test_id | अपने एप्लिकेशन में वेरिएंट चुनें और परिणाम ट्रैक करें; कोई सीधा send-field समकक्ष नहीं है |
एक ईमेल की To/Cc/Bcc कॉपी के लिए, प्राप्तकर्ता समूह एक बार फिर से बनाएँ। SparkPost के प्रदर्शित पते डिलीवरी प्राप्तकर्ताओं से भिन्न हो सकते हैं; Bird के to, cc, और bcc प्रत्येक डिलीवरी प्राप्तकर्ता जोड़ते हैं। SparkPost के CC हेडर को हर विस्तारित संदेश के cc में कॉपी करने से डुप्लिकेट कॉपी भेजी जा सकती हैं। स्विच करने से पहले दृश्य हेडर और प्राप्तकर्ता संख्या सत्यापित करें।
सेंड फ़ील्ड सीमाएँ, शेड्यूलिंग, और अटैचमेंट नियम जाँचें। इनलाइन-इमेज ID और मिलान करने वाले cid: रेफ़रेंस को Bird के नियमों के अनुसार अपडेट करें। डोमेन पर रिटर्न पाथ और ट्रैकिंग डोमेन कॉन्फ़िगर करें।
Bird के HTTP सेंड फ़ील्ड में SparkPost के content.email_rfc822, content.amp_html, या options.inline_css शामिल नहीं हैं। समर्थित फ़ील्ड के साथ रॉ संदेश फिर से बनाएँ, AMP के लिए HTML/text फ़ॉलबैक दें, और HTML सबमिट करने से पहले CSS इनलाइन करें। SMTP समर्थित संदेश भागों को पार्स और पुनर्निर्मित करता है; अगर आप उसकी सटीक संरचना पर निर्भर हैं तो प्राप्त MIME को मान्य करें। कैलेंडर method या टेक्स्ट charset जैसे अटैचमेंट MIME पैरामीटर संरक्षित नहीं होते।
शेड्यूल किए गए API संदेशों के लिए, Bird अनुरोध स्वीकार करते समय टेम्पलेट संस्करण, भाषा और पैरामीटर फ़िक्स कर देता है। बाद में टेम्पलेट संपादन उस संदेश को अपडेट नहीं करते। इसे बदलने के लिए, प्रोसेसिंग शुरू होने से पहले शेड्यूल किया गया संदेश रद्द करें, फिर प्रतिस्थापन सबमिट करें। अगर आपको SparkPost के कैंपेन-आधारित रद्दीकरण को बदलना है तो Bird संदेश ID का एक समूह रखें।
BIRD_API_KEY को अपनी Bird कुंजी पर सेट करें। इस सैंडबॉक्स उदाहरण के लिए किसी सत्यापित डोमेन की आवश्यकता नहीं है और यह किसी वास्तविक इनबॉक्स तक नहीं पहुँचता। EU कुंजी के लिए, https://eu1.platform.bird.com का उपयोग करें:
curl --fail-with-body https://us1.platform.bird.com/v1/email/messages \
-H "Authorization: Bearer $BIRD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "onboarding@messagebird.dev",
"to": ["delivered@messagebird.dev"],
"subject": "Your receipt",
"text": "Thanks for your order, {{ first_name }}.",
"parameters": {"first_name": "Alex"},
"category": "transactional",
"metadata": {"order_id": "order_123"},
"tags": [{"name": "mailstream", "value": "receipts"}]
}'202 Accepted और एक em_ संदेश ID की अपेक्षा करें। उस ID को स्टोर करें और इवेंट के माध्यम से प्राप्तकर्ता परिणामों को फ़ॉलो करें। स्वीकृति डिलीवरी स्थापित नहीं करती: एक सप्रेस किए गए प्राप्तकर्ता को स्वीकार किया जा सकता है और बाद में अस्वीकार किया जा सकता है। सेंड कॉल के साथ रिस्पॉन्स पार्सिंग, त्रुटि प्रबंधन, और आइडेम्पोटेंट रीट्राइज़ अपडेट करें।
बैच के लिए, data array पढ़ें और हर मैसेज की ID को अपने सेंड रिकॉर्ड के साथ सेव करें। Bird बैच को कतार में डालने से पहले वैलिडेट करता है: एक अमान्य मैसेज पूरे अनुरोध को अस्वीकार कर सकता है। बड़े ट्रांसमिशन को बैच सीमाओं में फिट करने के लिए विभाजित करें, और जब प्रतिक्रिया अस्पष्ट हो तो Bird के फिर से प्रयास करने के नियमों का पालन करें।
हर अलग अनुरोध या बैच चंक को अपनी स्थिर idempotency key दें। Bird की रीप्ले विंडो SparkPost से भिन्न है; कटओवर या रोलबैक के दौरान डुप्लिकेट से बचने के लिए अपने एप्लिकेशन के सेंड रिकॉर्ड उस विंडो से आगे तक रखें।
SMTP सेंडर माइग्रेट करें
Bird की SMTP कनेक्शन सेटिंग्स, username bird, और ईमेल भेजने की अनुमति वाली API key का उपयोग करें। रीजन, TLS, और key कॉन्फ़िगरेशन जाँचें।
हेडर हटाने से पहले SparkPost के X-MSYS-API विकल्पों को कन्वर्ट करें। Bird के SMTP कॉन्फ़िगरेशन में कैटेगरी, टैग, ट्रैकिंग, और पूल डिफ़ॉल्ट सेट करें। ये सेटिंग्स प्रति API key लागू होती हैं; जब ये मैसेज के बीच भिन्न हों तो अलग कॉन्फ़िगर की गई keys या HTTP का उपयोग करें। प्रति-मैसेज मेटाडेटा या टेम्पलेट पैरामीटर के लिए HTTP का उपयोग करें।
हर डिलीवरी प्राप्तकर्ता को SMTP एनवेलप में, दृश्य प्राप्तकर्ताओं को MIME To/Cc हेडर में, और Bcc प्राप्तकर्ताओं को केवल एनवेलप में रखें। X-MSYS-API.archive की अलग से सूची बनाएँ: SparkPost आर्काइव कॉपी मूल प्राप्तकर्ता की ट्रैकिंग URLs बनाए रखती हैं, इसलिए सामान्य Bcc समकक्ष नहीं है। उस फ़्लो को बदलने से पहले प्रतिस्थापन को वैलिडेट करें।
अपनी प्रभावी ट्रैकिंग सेटिंग्स स्पष्ट रूप से कॉपी करें: Bird की बिना कॉन्फ़िगर की गई SMTP key ओपन और क्लिक ट्रैकिंग सक्षम करती है, जबकि SparkPost डिफ़ॉल्ट अकाउंट के अनुसार भिन्न होते हैं। कैटेगरी भी सेट करें: Bird SMTP डिफ़ॉल्ट रूप से transactional होता है और इनलाइन HTTP marketing। न्यूज़लेटर भेजने वालों को किसी भी पथ पर marketing की आवश्यकता है।
SMTP फिर से प्रयास के लिए, idempotency key, एनवेलप, और बिल्कुल वही MIME बाइट्स पुनः उपयोग करें। Date, Message-ID, या MIME बाउंड्री को दोबारा जेनरेट करने से पेलोड बदल जाता है और सुरक्षित फिर से प्रयास में बाधा आ सकती है।
टेम्पलेट कन्वर्ट करें
SparkPost के Templates API से वे वर्शन एक्सपोर्ट करें जो आप वास्तव में भेजते हैं: GET /api/v1/templates?draft=false से सूची बनाएँ, फिर GET /api/v1/templates/{id}?draft=false से कंटेंट प्राप्त करें। ज़रूरत हो तो ड्राफ़्ट अलग से सेव करें। सबअकाउंट्स के साथ शेयर किए गए टेम्पलेट और संदर्भित स्निपेट्स को इन्वेंटरी में शामिल करें।
SparkPost की टेम्पलेट भाषा और Bird का Liquid सिंटैक्स भिन्न हैं। कंडीशनल, लूप, डिफ़ॉल्ट और नेस्टेड वैल्यू कन्वर्ट करें। रेंडरिंग के लिए उपयोग किए जाने वाले प्राप्तकर्ता ओवरराइड और मेटाडेटा को स्पष्ट पैरामीटर में रिज़ॉल्व करें। उदाहरण के लिए, {{ if ... }} बन जाता है {% if ... %}। केवल साझा {{ name }} सिंटैक्स संगतता स्थापित नहीं करता।
पब्लिश करने से पहले स्निपेट्स को एक्सपैंड करें; Bird का Liquid include या render को सपोर्ट नहीं करता। स्टोर किए गए टेम्पलेट के लिए, {{ user.name }} जैसे बाहरी संदर्भों को {{ user_name }} जैसे फ़्लैट पैरामीटर से बदलें। अगर आप SparkPost पैरामीटर के ज़रिए डायनेमिक HTML इन्सर्ट करते हैं, तो इसे अपने एप्लिकेशन में रेंडर करें और इनलाइन parameters के बिना पूरा बॉडी सबमिट करें; सामान्य HTML पैरामीटर वैल्यू एस्केप हो जाती हैं।
एक Bird टेम्प्लेट बनाएँ, प्रीव्यू करें और पब्लिश करें, फिर टेम्प्लेट के साथ भेजना फ़ॉलो करें। SparkPost से प्रभावी sender, Reply-To और कस्टम हेडर send रिक्वेस्ट में लाएँ; Bird टेम्प्लेट कंटेंट प्रदान करते हैं।
इनलाइन Liquid के लिए parameters शामिल करें, {} भी; इसे छोड़ने पर टोकन अपरिवर्तित रहते हैं। गायब वैल्यू, एस्केपिंग और URL सत्यापित करें।
अनसब्सक्राइब प्लेसहोल्डर को {{ bird.unsubscribe_url }} से बदलें। Bird मार्केटिंग अनसब्सक्राइब हेडर प्रदान करता है; 422 रिजेक्शन से बचने के लिए मार्केटिंग sends से कस्टम List-Unsubscribe और List-Unsubscribe-Post हेडर हटाएँ।
Bird के अनसब्सक्राइब लिंक पते को पूरे वर्कस्पेस में मार्केटिंग ईमेल से ऑप्ट आउट करते हैं। ये लिंक सूची-विशिष्ट ऑप्ट-आउट प्रदान नहीं करते। यदि आपका SparkPost इंटीग्रेशन अलग-अलग सब्सक्रिप्शन प्रदान करता है तो इस व्यवहार की जाँच करें।
प्राप्तकर्ता सूचियाँ माइग्रेट करें
प्रत्येक संग्रहीत प्राप्तकर्ता सूची को GET /api/v1/recipient-lists/{id}?show_recipients=true के साथ एक्सपोर्ट करें ताकि सदस्यता और पर्सनलाइज़ेशन शामिल हो। इम्पोर्ट करने से पहले गंतव्य ऑडियंस बनाएँ और कॉन्टैक्ट प्रॉपर्टीज़ रजिस्टर करें। प्रत्येक इम्पोर्ट परिणाम की समीक्षा करें और सदस्यता संख्या का मिलान करें।
कॉन्टैक्ट प्रॉपर्टीज़ कॉन्टैक्ट से उसकी सभी ऑडियंस में जुड़ी रहती हैं। यदि एक ही पते का कई SparkPost सूचियों में अलग-अलग substitution data है, तो ओवरराइट होने से बचाने के लिए इम्पोर्ट करने से पहले उन वैल्यू का मिलान करें। Bird कॉन्टैक्ट प्रॉपर्टीज़ स्केलर टाइप की होती हैं; जब सूची-विशिष्ट या स्ट्रक्चर्ड पर्सनलाइज़ेशन को सुरक्षित रूप से प्रदर्शित नहीं किया जा सकता, तो उसे अपनी ऐप्लिकेशन में रखें।
जब कोई पब्लिश किया गया टेम्प्लेट कॉन्टैक्ट प्रॉपर्टीज़ से पॉपुलेट हो सके तो ब्रॉडकास्ट का उपयोग करें। भेजना शुरू होने पर ऑडियंस सदस्यता रिज़ॉल्व होती है, और ब्रॉडकास्ट send तथा कॉनकरेंसी अलाउंस लागू होते हैं। रिक्वेस्ट-विशिष्ट पैरामीटर या निश्चित प्राप्तकर्ता स्नैपशॉट के लिए स्वतंत्र बैच संदेश का उपयोग करें। माइग्रेट की गई सूची को सक्रिय करने से पहले सहमति और सप्रेशन हैंडलिंग सत्यापित करें।
सप्रेशन एक्सपोर्ट करें
प्रोडक्शन sending से पहले एक्सपोर्ट करें। GET /api/v1/suppression-list?cursor=initial&types=transactional,non_transactional,open_tracking से शुरू करें, फिर पेजिनेशन को पूरा होने तक फ़ॉलो करें। पूरे रिकॉर्ड सेव करें, जिनमें type, source, list ID, subaccount और timestamps शामिल हों। प्राइमरी अकाउंट के लिए X-MSYS-SUBACCOUNT: 0 और प्रत्येक subaccount ID उसकी अपनी सूची के लिए उपयोग करें। SparkPost की Suppression List API देखें।
मुख्य गाइड के इम्पोर्ट लूप का उपयोग करने से पहले रिकॉर्ड को type, source और scope के आधार पर वर्गीकृत करें। Bird का POST /v1/email/suppressions एक email लेता है और दोनों कैटेगरी पर मैन्युअल, वर्कस्पेस-व्यापी ब्लॉक बनाता है:
- ईमेल प्राप्त करने से ब्लॉक किए गए पते: उन्हें इम्पोर्ट करें जिन्हें सभी कैटेगरी में ब्लॉक किया जाना चाहिए। मिलान के लिए मूल एक्सपोर्ट सुरक्षित रखें; इम्पोर्ट किए गए रिकॉर्ड Bird का मैन्युअल कारण दर्शाते हैं।
- अकाउंट-व्यापी मार्केटिंग ऑप्ट-आउट:
channel: "email",handleमें पता,status: "revoked", औरcoverage: "non_transactional"के साथPOST /v1/preferencesका उपयोग करें। मिलान के लिएsource: "sparkpost-migration"सेट करें। पहले मौजूदा Bird प्राथमिकताओं की समीक्षा करें और सख्त प्रतिबंधों को बनाए रखें; हर लिखने के बादappliedऔर लौटाई गई प्राथमिकता की जाँच करें। - सूची-विशिष्ट या केवल-ट्रांज़ैक्शनल प्रतिबंध: अपने एप्लिकेशन की भेजने की पात्रता में इनका दायरा बनाए रखें। Bird की ईमेल प्राथमिकताएँ चैनल-व्यापी हैं और इन दायरों को प्रदर्शित नहीं कर सकतीं। मैन्युअल सप्रेशन पासवर्ड रीसेट को भी ब्लॉक कर सकता है। प्रभावित ट्रैफ़िक को तब तक रोके रखें जब तक आप प्रतिस्थापन को सत्यापित नहीं कर लेते।
- ओपन-ट्रैकिंग ऑप्ट-आउट: किसी भी भेजने के प्रतिबंधों के अतिरिक्त, स्वतंत्र संदेश के लिए
track_opens: falseसेट करें। SMTP के लिए, ओपन ट्रैकिंग अक्षम वाली कुंजी का उपयोग करें या प्रति-संदेश नियंत्रण के लिए HTTP का उपयोग करें।
ऊपर दिया गया प्राथमिकता अनुरोध आयात के समय प्रतिबंध दर्ज करता है। अपने एक्सपोर्ट में SparkPost के मूल टाइमस्टैम्प रखें और लिखने से पहले किसी भी बाद की सहमति का मिलान करें। आयातित रिकॉर्ड और विफल लिखावटों का मिलान करें, फिर दोनों श्रेणियों का परीक्षण करें। जब तक दोनों प्रदाता भेज रहे हों, नए ऑप्ट-आउट और सप्रेशन को सिंक्रोनाइज़ करें। कटओवर के बाद पहले से डिलीवर किए गए SparkPost मेल से ऑप्ट-आउट Bird पर लागू करना जारी रखें। नेटिव बाउंस और शिकायत हैंडलिंग के लिए सप्रेशन देखें।
वेबहुक इवेंट रूपांतरित करें
SparkPost msys रैपर के अंतर्गत बैच किए गए वेबहुक इवेंट भेजता है। Bird प्रति अनुरोध एक इवेंट type, timestamp, और data के साथ डिलीवर करता है। स्पष्ट इवेंट सब्सक्रिप्शन और सिग्नेचर सत्यापन के साथ एक Bird एंडपॉइंट रजिस्टर करें। SparkPost हैंडलर को उसके शेष ट्रैफ़िक के लिए सक्रिय रखें।
| SparkPost इवेंट | Bird इवेंट |
|---|---|
injection | email.processed |
delivery | email.delivered |
delay | email.deferred |
bounce | email.bounced |
out_of_band | email.out_of_band_bounce |
spam_complaint | email.complained |
| भेजने-संबंधी विफलताएँ (नीचे देखें) | email.rejected |
open, initial_open | email.opened |
click | email.clicked |
link_unsubscribe | email.unsubscribed |
list_unsubscribe | email.list_unsubscribed |
सीधे API और SMTP सेंड प्रोसेसिंग से पहले email.accepted emit करते हैं। ब्रॉडकास्ट स्वीकृति को इवेंट्स API और ईमेल लॉग में रिकॉर्ड करते हैं लेकिन वह webhook नहीं भेजते। SparkPost के policy_rejection, generation_failure, और generation_rejection email.rejected पर मैप होते हैं; rejection_reason की जाँच करें। यूनिक एंगेजमेंट गिनते समय ओपन को अलग से deduplicate करें।
Bird correlation के लिए data.email_id और data.recipient_id का उपयोग करें, और अपने खुद के आइडेंटिफ़ायर metadata में रखें। SparkPost की batch-ID हैंडलिंग को Bird के webhook डिडुप्लिकेशन और ऑर्डरिंग नियमों से बदलें। किसी पते को सप्रेस करना चाहिए या नहीं, यह तय करने से पहले बाउंस विवरण पढ़ें; बाउंस वर्गीकरण स्थायी पता विफलताओं को अस्थायी या पॉलिसी विफलताओं से अलग करता है।
रिपोर्टिंग इतिहास संरक्षित करें
अपनी ज़रूरत के SparkPost इवेंट इतिहास और एग्रीगेट रिपोर्ट को उनकी रिटेंशन विंडो समाप्त होने से पहले एक्सपोर्ट करें। इवेंट पेजिनेशन को पूरा होने तक फ़ॉलो करें और प्रोवाइडर ID, अकाउंट/सबअकाउंट स्कोप, टाइमस्टैम्प, और रिपोर्टिंग फ़िल्टर संरक्षित करें। ओवरलैप के दौरान देर से आने वाले इवेंट्स इकट्ठा करते रहें, और SparkPost इतिहास को अलग आर्काइव में रखें।
हर सेंडिंग स्ट्रीम के लिए एक बेसलाइन सेव करें। मैचिंग प्राप्तकर्ता जनसंख्या और रिपोर्टिंग विंडो की तुलना करें, और मेट्रिक परिभाषाएँ जाँचें: प्रोवाइडर स्वीकृति, प्राप्तकर्ता-सर्वर डिलीवरी, यूनिक एंगेजमेंट, और प्रीफ़ेच्ड ओपन अलग-अलग माप हैं। केवल मेट्रिक नामों का मिलान तुलनीय दरें स्थापित नहीं करता।
इनबाउंड ईमेल को अलग से माइग्रेट करें
यदि आप SparkPost relay webhooks का उपयोग करते हैं, तो उस फ़्लो के लिए ईमेल प्राप्त करना देखें। Bird का email.received webhook एक inbound_message_id प्रदान करता है; webhook में पूरा संदेश अपेक्षित करने के बजाय API के माध्यम से बॉडी, अटैचमेंट, या रॉ MIME प्राप्त करें। अपने हैंडलर को Bird फ़ॉरवर्डिंग पते से टेस्ट करें, फिर MX रिकॉर्ड बदलने से पहले डोमेन रिसीविंग तैयार करें। DNS परिवर्तन के बाद रिप्लाई राउटिंग सत्यापित करें और Bird की रिसीविंग रिटेंशन अवधि से परे आवश्यक कंटेंट आर्काइव करें।
सत्यापित करें और कटओवर करें
- प्रत्येक डोमेन की भेजने की क्षमता सत्यापित करें। सैंडबॉक्स स्मोक टेस्ट और शिकायत केस चलाएँ। पुष्टि करें कि साइन किए गए इवेंट आपके हैंडलर तक पहुँचते हैं, सही संदेश से सहसंबद्ध होते हैं, और डुप्लिकेट डिलीवरी को संभालते हैं। सैंडबॉक्स इवेंट इनबॉक्स डिलीवरी, रेंडरिंग, या ट्रैकिंग प्रमाणित नहीं करते।
- अपने सत्यापित डोमेन से नियंत्रित वास्तविक इनबॉक्स में भेजें। पर्सनलाइज़ेशन, To/Cc/Bcc दृश्यता, अटैचमेंट, ऑथेंटिकेशन, और ट्रैकिंग जाँचें। अनसब्सक्राइब टेस्ट करें: मार्केटिंग बंद होनी चाहिए जबकि योग्य ट्रांज़ैक्शनल मेल जारी रहे। अलग से टेस्ट करें कि सभी-कैटेगरी ब्लॉक दोनों को अस्वीकार करते हैं। इन जाँचों को सिम्युलेटेड सैंडबॉक्स परिणामों से अलग रखें।
- लंबित शेड्यूल्ड सेंड एक प्रोवाइडर को असाइन करें। मूल को कहीं और फिर से बनाने से पहले ड्रेन या रद्द करें। अपने एप्लिकेशन में रिकॉर्ड रखें कि किस प्रोवाइडर ने कौन सा लॉजिकल सेंड स्वीकार किया, ताकि फिर से प्रयास करने या रोलबैक से दूसरी कॉपी न भेजी जाए।
- ट्रैफ़िक का एक नियंत्रित हिस्सा स्थानांतरित करें और डिलीवरी मेट्रिक्स तथा webhook प्रोसेसिंग की निगरानी करें। डेडिकेटेड IP के लिए, हमारी टीम के साथ सहमत माइग्रेशन प्लान का पालन करें, जिसमें कोई भी वॉर्मअप शामिल है। देखे गए परिणाम आपकी डिलीवरी आवश्यकताओं को पूरा करने के बाद ट्रैफ़िक बढ़ाएँ।
- यदि सत्यापन विफल होता है, तो प्रभावित Bird ट्रैफ़िक रोकें और वर्तमान ऑप्ट-आउट लागू करते हुए नए सेंड को बरकरार SparkPost पथ से रूट करें। फिर से प्रयास करने से पहले अस्पष्ट सेंड का समाधान करें। क्यू और विलंबित इवेंट का हिसाब होने के बाद पुराने क्रेडेंशियल, webhooks, और DNS हटाएँ; पहले डिलीवर किए गए मेल के लिए पुराने ट्रैकिंग और अनसब्सक्राइब लिंक कार्यशील रखें।
यदि ऑथेंटिकेशन विफल होता है, तो Bird bearer टोकन और रीजन जाँचें। यदि प्रेफ़रेंस इम्पोर्ट 403 लौटाते हैं, तो जारी रखने से पहले कुंजी की preferences write अनुमति जाँचें। यदि पर्सनलाइज़ेशन गलत रेंडर होता है, तो Liquid रूपांतरण और पैरामीटर की जाँच करें। यदि ट्रांज़ैक्शनल मेल अप्रत्याशित रूप से अस्वीकार होता है, तो इम्पोर्ट किए गए मैनुअल सप्रेशन जाँचें। प्रत्येक सुधार सत्यापित करने के लिए ईमेल लॉग और इवेंट विवरण का उपयोग करें।
अगले कदम
- ईमेल भेजना: पेलोड फ़ील्ड, पर्सनलाइज़ेशन, और असिंक्रोनस परिणाम
- ईमेल टेम्पलेट: प्रीव्यू, प्रकाशन, और Liquid सपोर्ट
- सप्रेशन: सप्रेशन कारण और प्रबंधन
- Webhooks और events: सिग्नेचर, फिर से प्रयास, और रीप्ले
संबंधित संसाधन
इस विषय के लिए दस्तावेज़, गाइड और उदाहरणों के साथ आगे बढ़ें।