किसी email template को Bird में store करें और उसे id से reference करें। जब message भेजा जाता है तब Conditionals, loops, और defaults हर recipient के लिए render होते हैं, इसलिए personalization logic आपके code में बिखरने के बजाय template में ही रहती है। इसे declared variables के साथ HTML के रूप में author करें, या अपने React Email components को render करें।
import { BirdClient } from "@messagebird/sdk";
import { render } from "@react-email/render";
import { WelcomeEmail } from "./emails/welcome";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
const { data, error } = await bird.email.send({
from: "Bird <hello@bird.com>",
to: ["ada@example.com"],
subject: "Your invite is ready",
html: await render(<WelcomeEmail name="Ada" />),
}).safe();
if (error) throw error;
console.log(data.id);
// → "em_2bX91Yk8h..."
You can sign in any time at bird.com/login.
Your test API key is on your dashboard, ready to send.
एक template store करें। Send के समय personalize करें।
सिर्फ़ वही values भेजें जो हर recipient के लिए बदलती हैं।
Templates Bird Email API का हिस्सा हैं। Layout और उसकी logic एक बार store करें; हर send पर आप template को reference करते हैं और प्रति-recipient values का एक flat set पास करते हैं। Bird अंतिम message अपनी तरफ़ render करता है, इसलिए वही template एक email चलाए या दस लाख।
import { BirdClient } from "@messagebird/sdk";
const bird = new BirdClient({ apiKey: process.env.BIRD_API_KEY! });
// Store a template once. Conditionals and loops render per recipient at send.
const tpl = await bird.templates.create({
name: "order-confirmation",
subject: "Order {{ order_number }} confirmed",
html: "<h1>Thanks, {{ first_name or 'there' }}.</h1>" +
"{{ if is_member }}<p>You earned {{ points }} points.</p>{{ end }}",
variables: [
{ key: "first_name", type: "string", fallback: "there" },
{ key: "order_number", type: "string" },
{ key: "is_member", type: "boolean" },
{ key: "points", type: "number" },
],
});
// Send it. Bird fills in the blanks for each recipient.
await bird.email.send({
from: "orders@acme.com",
to: ["ada@example.com"],
template: tpl.id,
variables: { first_name: "Ada", order_number: "A-1043", is_member: true, points: 120 },
});Find-and-replace से कहीं ज़्यादा।
असली templating logic, Bird की तरफ़ resolve होती हुई, हर recipient के लिए, send के समय।
- 01
Conditionals.
किसी block को सिर्फ़ तभी दिखाएँ जब कोई value लागू हो, जैसे members-only नोट या free-shipping banner, बिना दो अलग templates भेजे।
- 02
Loops.
किसी array के हर item के लिए एक row दोहराएँ, ताकि एक ही order-confirmation template हर वो line item list करे जो customer ने सचमुच ख़रीदा।
- 03
Defaults.
जब कोई field मौजूद न हो तो एक safe value पर fall back करें, ताकि खाली first name कभी खाली greeting बनकर न जाए।
- 04
Nested data.
सिर्फ़ flat top-level keys नहीं, dotted paths के साथ structured objects में पहुँचें, ताकि आपके मौजूदा data shapes सीधे map हो जाएँ।
- 05
Rich variable types.
Declared variables strings, numbers, booleans, arrays, और objects हो सकते हैं, यही ऊपर बताए loops और conditionals को संभव बनाता है।
इसे उसी तरह author करें जैसे आप पहले से काम करते हैं।
API के ज़रिए declared variables की एक list के साथ plain HTML भेजें, और आपके पास एक चलता-फिरता template है, कोई नया editor सीखने की ज़रूरत नहीं। Components पसंद हैं? अपने React Email templates को HTML में render करें और नतीजा store करें। जानने लायक एक बात: Bird के tokens को JSX में literal text के रूप में छोड़ दें ताकि वे render में बचे रहें और send के समय भर जाएँ, बजाय इसके कि React render होते समय कोई value bake हो जाए।
import { render } from "@react-email/render";
import { Receipt } from "./emails/receipt";
// Author in React. Leave Bird's tokens as literal text so they
// survive the render and get personalized per recipient at send.
const html = await render(<Receipt firstName="{{ first_name }}" />);
await bird.templates.create({
name: "receipt",
subject: "Your receipt",
html,
variables: [{ key: "first_name", type: "string", fallback: "there" }],
});
Versioned, बिल्कुल आपके बाक़ी code की तरह।
Editing एक draft पर होती है और जो live है उसे कभी नहीं छूती। Publish करने पर एक immutable, numbered version freeze होकर push हो जाता है; अगर कोई बदलाव ग़लत हो जाए, तो किसी पहले version पर roll back कर फिर से publish करें। एक साथ हुई edits चुपचाप overwrite होने के बजाय पकड़ी जाती हैं, इसलिए एक ही template पर काम कर रहे दो लोग एक-दूसरे का काम नहीं बिगाड़ते। हर version की एक स्थिर पहचान होती है, यही चीज़ per-template reporting को opens और clicks सही ढंग से attribute करने देती है।
हर brand को consistent रखें।
एक brand kit आपके रंग, type, spacing, logo, और voice को रखता है, और उन्हें किसी template पर लागू करता है ताकि output बिना हर एक को हाथ से restyle किए आप जैसा दिखे और पढ़े। Kits workspace स्तर पर रहते हैं और एक workspace कई रख सकता है, क्योंकि एक parent brand, एक sub-brand, और आपका सादा transactional mail शायद ही कभी एक जैसा look चाहते हैं। Kit इस्तेमाल करना optional है: बिना kit वाला template साफ़-सुथरे defaults पर fall back करता है।
जो ship होगा उसका ठीक वैसा preview देखें।
किसी template को sample values से भरें और किसी के प्राप्त करने से पहले rendered message देखें। Preview उसी rendering path से गुज़रता है जिससे असली send गुज़रता है, इसलिए जिसे आप approve करते हैं वही बाहर जाता है, न कि कोई qरीब-क़रीब approximation जो असली recipients के लिए tokens और logic resolve होते ही बदल जाए।
Templates किस दिशा में जा रहे हैं।
Stored-template model आगे आने वाली चीज़ों की नींव है: किसी prompt में एक template describe करें और refine करने के लिए एक draft generate करें, बिना HTML लिखे इसे visual रूप से बनाएँ, और coding agents को MCP के ज़रिए on-brand templates compose करने दें, साथ ही शुरुआत के लिए starter templates की एक library। ये उसी versioned, brand-aware model पर बनते हैं, कोई अलग track नहीं, इसलिए जो API आप आज integrate करते हैं वही वे extend करते हैं।
Docs में और गहराई से जाएँ।
देखें कि templates sending guide में कैसे फ़िट होते हैं, जिसमें React Email render करना शामिल है, और email events और webhooks wire up करें ताकि opens और clicks प्रति template वापस आएँ।
Templates से जुड़े सामान्य सवाल
क्या मुझे visual builder इस्तेमाल करना ही पड़ेगा?+
हर send पर HTML पास करने से stored template कैसे अलग है?+
Personalization find-and-replace से आगे क्या कर सकता है?+
क्या React Email काम करता है?+
अगर मैंने कोई template बिगाड़ दिया तो क्या मैं उसे roll back कर सकता हूँ?+
क्या कोई AI generation या drag-and-drop builder है?+
मैं असल में कोई stored template कैसे भेजूँ?+
बाक़ी Email platform
एक API, keys का एक set। बाक़ी क्षमताओं को explore करें।
Templates एक platform का हिस्सा हैं, कोई point tool नहीं।
उसी Email API पर templates को store, version, और personalize करें जो sending, deliverability, suppression, और analytics संभालता है। Keys का एक set।