# WhatsApp टेम्पलेट लिखना

Bird का प्रबंधित कैटलॉग सामान्य मामलों को कवर करता है, लेकिन आपके अपने शब्दों में बोलने वाला टेम्पलेट आपके कनेक्ट किए गए WhatsApp Business Account पर लिखना होगा। यह पेज एक टेम्पलेट बनाने को कवर करता है; [WhatsApp टेम्पलेट](/docs/guides/whatsapp/templates) पहले से मौजूद टेम्पलेट ब्राउज़ और भेजने को कवर करता है।

तीन चीज़ें पूरे फ़्लो को आकार देती हैं:

- **एक टेम्पलेट में संस्करण होते हैं, और एक संस्करण में हर भाषा की एक प्रविष्टि होती है।** वास्तव में जो भेजा जाता है वह एक संस्करण की एक भाषा है, टेम्पलेट नहीं।
- **सामग्री एक ड्राफ़्ट में लिखी जाती है।** एक टेम्पलेट में अधिकतम एक खुला ड्राफ़्ट होता है, और जब तक आप सबमिट नहीं करते, इसमें कुछ भी WhatsApp तक नहीं पहुँचता।
- **स्वीकृति हर भाषा के लिए अलग आती है।** एक भाषा स्वीकृत हो सकती है जबकि उसी संस्करण की दूसरी भाषा अस्वीकृत हो।

## शुरू करने से पहले

आपको एक कनेक्ट किया हुआ [अपना नंबर](/docs/guides/whatsapp/phone-number-setup) चाहिए, जो आपके वर्कस्पेस को लिखने के लिए एक WhatsApp Business Account देता है। जो अकाउंट आपने कनेक्ट नहीं किया है वह अस्वीकार कर दिया जाता है, और Bird के बिल्ट-इन `bird_` टेम्पलेट को संपादित करना भी: वे Bird के अपने अकाउंट पर होते हैं, इसलिए उन्हें अपने अकाउंट पर डुप्लिकेट करें।

**authentication** टेम्पलेट लिखने के लिए अतिरिक्त रूप से एक सत्यापित बिज़नेस चाहिए; utility और marketing के लिए नहीं। उस शर्त के लिए [Authentication टेम्पलेट](/docs/guides/whatsapp/templates/authentication#before-you-send) देखें।

डैशबोर्ड में **WhatsApp** > **Templates** के तहत, [`bird` CLI](/docs/cli) से, या [MCP सर्वर](/docs/ai/mcp-server) के ज़रिए टेम्पलेट लिखें। डैशबोर्ड उन्हीं चरणों से गुज़रता है जो यह पेज बताता है; आगे के उदाहरण CLI का उपयोग करते हैं।

## डैशबोर्ड में

**New template** दो रास्ते देता है। **Start with a template** गैलरी खोलता है, सबसे तेज़ रास्ता: जो पहले से लगभग वही कहता हो जो आपको चाहिए, उसे चुनें, Bird का कोई टेम्पलेट भी, और कॉपी आपके अकाउंट पर खुले ड्राफ़्ट के रूप में आ जाती है।

![Bird डैशबोर्ड में टेम्पलेट गैलरी: टेम्पलेट कार्ड की एक ग्रिड, हर कार्ड अपने मैसेज का प्रीव्यू दिखाता है और उस पर नाम, slug, स्थिति, श्रेणी और भाषाएँ लेबल हैं, साथ में टेम्पलेट स्रोत, श्रेणी और भाषा के फ़िल्टर](/images/docs/dashboard-whatsapp-template-gallery.png)

**Start from scratch** श्रेणी, एक नाम और एक डिफ़ॉल्ट भाषा माँगता है, फिर एडिटर खोलता है। एक marketing टेम्पलेट एक मैसेज प्रकार भी चुनता है। नाम slug बन जाता है, और slug और श्रेणी वे दो विकल्प हैं जिन्हें बाद में बदला नहीं जा सकता।

![Bird डैशबोर्ड में Create a new template चरण: Name फ़ील्ड और Default language सिलेक्टर के ऊपर Marketing, Utility और Authentication श्रेणी टाइल, साथ में Create template बटन](/images/docs/dashboard-whatsapp-template-details.png)

एडिटर एक समय में एक भाषा लिखता है: साइडबार टेम्पलेट की भाषाओं को उनकी समीक्षा स्थिति के साथ सूचीबद्ध करता है, बीच का कॉलम सामग्री रखता है, और फ़ोन प्रीव्यू उदाहरण मानों के साथ मैसेज रेंडर करता है।

![Order update utility टेम्पलेट के लिए Bird डैशबोर्ड में टेम्पलेट एडिटर: भाषा साइडबार में Dutch के बगल में English Approved चिह्नित, और रेंडर किए गए मैसेज का फ़ोन प्रीव्यू जिसमें Track order और Contact support बटन हैं](/images/docs/dashboard-whatsapp-template-builder.png)

टेम्पलेट के अनुसार एडिटर का रूप बदलता है। एक **carousel** मैसेज के बगल में हर कार्ड के लिए एक टैब जोड़ता है, और हर कार्ड को कार्ड 1 की संरचना दोहरानी होती है: वही हेडर फ़ॉर्मेट और वही बटन उसी क्रम में।

![एक carousel marketing टेम्पलेट के लिए Bird डैशबोर्ड में टेम्पलेट एडिटर: मैसेज बॉडी के ऊपर Message, Card 1, Card 2 और Card 3 टैब, नीचे Variable samples सेक्शन, और फ़ोन प्रीव्यू जिसमें मैसेज के बाद स्वाइप करने योग्य इमेज कार्ड दिख रहे हैं, हर एक पर Show me बटन](/images/docs/dashboard-whatsapp-template-builder-carousel.png)

एक **authentication** टेम्पलेट में कोई मैसेज एडिटर नहीं होता। WhatsApp कॉपी लिखता है, इसलिए एडिटर केवल वे दो सेटिंग देता है जिनसे वह लिखता है: **Add security recommendation** और **Code expiration (minutes)**।

![एक authentication टेम्पलेट के लिए Bird डैशबोर्ड में टेम्पलेट एडिटर: Add security recommendation टॉगल और Code expiration (minutes) फ़ील्ड वाला Authentication settings पैनल, और WhatsApp द्वारा लिखे गए सत्यापन कोड मैसेज का फ़ोन प्रीव्यू जिसमें Copy code बटन है](/images/docs/dashboard-whatsapp-template-builder-auth.png)

**Save as draft** आपके काम को WhatsApp से संपर्क किए बिना सहेजता है। **Submit for review** संस्करण को फ़्रीज़ करता है और उसे WhatsApp को भेजता है। नीचे दिया गया CLI का सबमिट भी वही फ़्रीज़ करता है।

## शुरू करने के दो तरीके

### मौजूदा टेम्पलेट का डुप्लिकेट बनाएँ

एक डुप्लिकेट स्रोत की सामग्री को खुले ड्राफ़्ट के रूप में लाता है और WhatsApp को शून्य बार कॉल करता है, इसलिए जब तक आप न चाहें कुछ भी सबमिट नहीं होता। कॉपी बनाने से पहले दो बातें जानने लायक हैं:

- **श्रेणी विरासत में मिलती है और बदली नहीं जा सकती।** अगर आपको दूसरी श्रेणी चाहिए, तो शुरुआत से बनाएँ।
- **कॉपी बनाते समय आप स्रोत में उपलब्ध भाषाओं में से कम भाषाएँ चुन सकते हैं; उस समय नई भाषा नहीं जोड़ सकते।** 70 भाषाओं वाले कैटलॉग टेम्पलेट की सभी 70 भाषाएँ लेने की ज़रूरत नहीं है: वह सबसेट चुनें जिसे आप वास्तव में बनाए रखेंगे। जो भाषा स्रोत में नहीं है उसकी माँग [`E15060`](/docs/api/errors/E15060) के साथ अस्वीकार होती है, और प्रतिक्रिया बताती है कि कौन सी भाषाएँ मेल नहीं खाईं। कॉपी बन जाने के बाद उसमें और भाषाएँ जोड़ें।

भाषा सबसेट एक array है, इसलिए यह फ़्लैग के बजाय रिक्वेस्ट बॉडी में जाता है:

```bash
bird whatsapp templates duplicate bird_order_confirmation --body-file copy.json
```

```json
{
  "waba": "102290129340398",
  "slug": "acme_order_update",
  "include_languages": ["en", "es-ES"],
  "default_language": "en"
}
```

`include_languages` छोड़ दें तो कॉपी स्रोत की सभी भाषाएँ लेती है। `default_language` छोड़ दें तो कॉपी स्रोत का डिफ़ॉल्ट रखती है जब आपके सबसेट में वह अभी भी हो; अन्यथा यह कॉपी की भाषाओं में कैनोनिकल टैग के अनुसार पहली लेती है, जो ज़रूरी नहीं कि वही हो जो आपने पहले सूचीबद्ध की, इसलिए अगर यह मायने रखता है तो इसे स्पष्ट रूप से सेट करें।

### शुरुआत से बनाएँ

टेम्पलेट बनाने के लिए एक slug, एक अकाउंट, एक श्रेणी और एक डिफ़ॉल्ट भाषा चाहिए:

```bash
bird whatsapp templates create order_update \
  --waba 102290129340398 \
  --category utility \
  --default-language en
```

**slug और श्रेणी दोनों स्थायी हैं।** WhatsApp slug से अपना टेम्पलेट नाम बनाता है, और न तो यह और न ही श्रेणी बाद में बदली जा सकती है; दूसरा चाहिए तो नया टेम्पलेट बनाएँ। `bird_` प्रीफ़िक्स Bird के कैटलॉग के लिए आरक्षित है। आपकी चुनी हुई श्रेणी ज़रूरी नहीं कि वही हो जिस पर भेजने की कीमत लगती है: Meta हर भाषा के लिए अपनी श्रेणी लागू करता है और उसे बदल सकता है, और कीमत Meta की श्रेणी के अनुसार होती है।

## हर भाषा लिखना

ड्राफ़्ट खोलें, फिर एक समय में एक भाषा लिखें:

```bash
bird whatsapp templates versions create order_update
bird whatsapp templates versions languages set order_update <version-id> en --body-file en.json
```

ड्राफ़्ट खोलना दोहराना सुरक्षित है: एक टेम्पलेट में केवल एक होता है, इसलिए यह दूसरा बनाने के बजाय खुला हुआ लौटाता है। टेम्पलेट इसे `draft_version_id` के रूप में भी रिपोर्ट करता है।

**भाषा लिखना उस भाषा को बदल देता है, उसमें मर्ज नहीं करता।** फ़ाइल हर बार उस भाषा का पूरा `components` ले जाती है, इसलिए पहले भाषा पढ़ें और पूरी वापस लिखें; केवल बदला हुआ ब्लॉक भेजने से बाकी हट जाता है।

**हर वेरिएबल को एक उदाहरण मान चाहिए।** WhatsApp टेम्पलेट के बजाय भरे हुए मैसेज की समीक्षा करता है, इसलिए प्लेसहोल्डर वाला और बिना उदाहरण पैरामीटर वाला ब्लॉक लिखते समय नहीं बल्कि सबमिट करते समय अस्वीकार होता है।

## जाँचें, फिर सबमिट करें

कुछ भी फ़्रीज़ करने से पहले वैलिडेट करें। केवल-वैलिडेशन सबमिट हर भाषा पर हर जाँच चलाता है और हर समस्या एक ही पास में रिपोर्ट करता है, WhatsApp को कुछ नहीं भेजता:

```bash
bird whatsapp templates versions submit order_update <version-id> --validate-only
```

`valid` और `errors` पढ़ें; हर त्रुटि भाषा, फ़ील्ड और वह कोड बताती है जिसके साथ वास्तविक सबमिट विफल होता। फिर फ़्लैग हटाकर वास्तव में सबमिट करें। यह ड्राफ़्ट को अपरिवर्तनीय संस्करण के रूप में फ़्रीज़ करता है और `202` उत्तर देता है। जाँच और सबमिट के लिए अलग idempotency key का उपयोग करें, क्योंकि बदली हुई बॉडी के साथ एक ही key दोबारा उपयोग करना अस्वीकार होता है।

केवल वे भाषाएँ WhatsApp को जाती हैं जिनकी सामग्री उनकी स्वीकृत कॉपी से भिन्न है। जो पहले से मेल खाती है वह अपनी स्वीकृति आगे ले जाती है, इसलिए जहाँ कुछ नहीं बदला वहाँ सबमिट तुरंत पूरा हो जाता है और पोल करने को कुछ नहीं होता। बाद में कोई रिप्लेसमेंट ड्राफ़्ट नहीं खुलता: संपादन का अगला दौर फिर से ड्राफ़्ट बनाकर शुरू होता है।

एक साफ़ केवल-वैलिडेशन रन WhatsApp के निर्णय की भविष्यवाणी नहीं करता। WhatsApp पहले से पूछने का कोई तरीका नहीं देता, इसलिए वह ऐसी सामग्री भी अस्वीकार कर सकता है जो हर स्थानीय जाँच पास कर चुकी हो।

## समीक्षा पर नज़र रखना

स्वीकृति बाद में आती है और हर भाषा के लिए अलग। जब तक कोई भाषा अनसुलझी है, टेम्पलेट का `pending_version_id` सेट रहता है, और प्रति-भाषा सूची हर निर्णय दिखाती है:

- **`approved`** स्थिति वाली भाषा में संदेश भेजे जा सकते हैं। टेम्पलेट का `available_languages` बताता है कि अभी भेजते समय किन भाषाओं का चयन किया जा सकता है।
- **`rejected`, `submit_failed`, `paused`** के लिए एक नए ड्राफ़्ट पर संपादन चाहिए। WhatsApp रुकी हुई भाषा पर संपादन स्वीकार करता है, और दोबारा सबमिट करने से भाषा की रुकी हुई स्थिति हटती है।
- **`disabled`, `limit_exceeded`, `in_appeal`** संपादन पूरी तरह अस्वीकार करते हैं; जब तक WhatsApp उन्हें नहीं बदलता, उन्हें केवल दोबारा पढ़ने की ज़रूरत है।

टेम्पलेट का अपना `status` एक समग्र मान है: `active` का मतलब है कम से कम एक भाषा भेजने योग्य है, सभी नहीं।

## आपका लिखा हुआ भेजना

एक लिखा हुआ टेम्पलेट किसी भी अन्य की तरह उसी एंडपॉइंट से भेजा जाता है, Bird के कैटलॉग से एक अंतर के साथ: **आपको `from` का मान देना होगा**, और यह उसी WhatsApp Business Account का नंबर होना चाहिए जिस पर टेम्पलेट है। दूसरे अकाउंट का सेंडर कोई भी शुल्क लगने से पहले `422` [`E15023`](/docs/api/errors/E15023) के साथ अस्वीकार होता है।

एक टेम्पलेट `language_source_required` के ज़रिए प्राप्तकर्ता की भाषा अनिवार्य कर सकता है। अन्यथा, `on_missing_language` नियंत्रित करता है कि भाषा का चयन विफल हो या किसी स्वीकृत बेस भाषा या `default_language` का उपयोग किया जा सके। कॉन्फ़िगर की गई नीति को टेम्पलेट के स्वीकृत `available_languages` के विरुद्ध जाँचें; जिस डिफ़ॉल्ट भाषा को स्वीकृति नहीं मिली है उसमें संदेश नहीं भेजा जा सकता। आपके दिए गए मान वास्तव में चुनी गई भाषा के प्लेसहोल्डर भरने चाहिए, इसलिए भेजने से पहले उस भाषा की सामग्री पढ़ें। पूरे पेलोड के लिए [WhatsApp मैसेज भेजना](/docs/guides/whatsapp/sending-whatsapp) देखें।

## ध्यान देने योग्य बातें

- **नवीनतम संस्करण वह नहीं है जो भेजा जाता है।** संस्करण सूची नवीनतम-पहले होती है और इसमें कोई भी खुला ड्राफ़्ट शामिल होता है, इसलिए शीर्ष पंक्ति अक्सर एक ड्राफ़्ट या अभी भी समीक्षा में संस्करण होता है। टेम्पलेट सेवा में मौजूद संस्करण को `live_version_id` के रूप में नाम देता है; बिना लाइव संस्करण वाला टेम्पलेट भेजा ही नहीं जा सकता।
- **समीक्षा के दौरान भाषा की सामग्री लिखी नहीं जा सकती।** WhatsApp समीक्षा पूरी होने तक उसे रोक कर रखता है, इसलिए `pending` के दौरान संपादन कतार में लगने के बजाय विफल होता है।
- **सूची पंक्ति में कोई सामग्री नहीं होती।** टेम्पलेट सूचीबद्ध करना उन्हें खोजता है और जीवनचक्र स्थिति दिखाता है; एक टेम्पलेट वास्तव में क्या कहता है यह जानने के लिए संस्करण पढ़ना होगा।
- **हटाना अपरिवर्तनीय है।** भाषा हटाना, ड्राफ़्ट हटाना और टेम्पलेट हटाना सभी को स्पष्ट पुष्टि चाहिए, और टेम्पलेट हटाना उस slug से हर भेजने को रोक देता है।

## अगले कदम

- [WhatsApp टेम्पलेट](/docs/guides/whatsapp/templates): कैटलॉग, श्रेणियाँ और टेम्पलेट से संदेश भेजने का साझा अनुबंध
- [टेम्पलेट दिशानिर्देश](/docs/knowledge-base/whatsapp/template-guidelines): Meta की समीक्षा किन चीज़ों की जाँच करती है
- [फ़ोन नंबर सेटअप](/docs/guides/whatsapp/phone-number-setup): वह अकाउंट कनेक्ट करना जिस पर आप लिखते हैं
- [WhatsApp मैसेज भेजना](/docs/guides/whatsapp/sending-whatsapp): पूरा सेंड पेलोड
- [WhatsApp टेम्पलेट बनाना और सबमिट करना](/learn/whatsapp/building-and-submitting-a-whatsapp-template): एक वीडियो जिसमें utility टेम्पलेट और marketing carousel लिखा गया है

## Related resources

- [What is a WhatsApp message template?](/explained/whatsapp/what-is-a-whatsapp-message-template) (answer)
- [WhatsApp templates](/products/whatsapp/templates) (product)
- [Build your first integration](/learn/paths/integration) (course)

[Get an implementation brief](/learn/workspace?topic=whatsapp-templates)
