# Your first template > Writing a message template, the field limits, and getting it approved by Meta. > Source: https://onpad.in/docs/your-first-template A **template** is a message Meta approved in advance. You need one to write to anybody who has not messaged you in the last 24 hours — which includes every campaign you will ever send. This page walks through creating one. For why they exist at all, see [WhatsApp Business API](https://onpad.in/docs/whatsapp-business-api). ## Create it Open **Templates** and choose **Create template**. ### Name Lowercase letters, numbers and underscores only, at least 3 characters. `order_shipped` works; `Order Shipped` does not. The name is an identifier, not something customers see. Pick something you will recognise in a list a year from now. ### Category Pick the one that describes the message honestly: - **Marketing** — offers, announcements, anything promotional. - **Utility** — about something the customer already did: an order update, a reminder, a receipt. - **Authentication** — one-time passcodes only. Choosing Utility for a promotional message does not make it cheaper. Meta re-categorises templates it disagrees with, and often rejects them. **Authentication is a special case.** Meta writes the wording itself — the body becomes `{{1}} is your verification code.` and you cannot change it, add a header, a footer or your own buttons. That is Meta's rule, not a limitation of ONPAD. ### Language Pick the language the template is written in. Supported: English (`en`, `en_US`, `en_GB`), Hindi, Bengali, Marathi, Tamil, Telugu, Gujarati, Spanish, Portuguese (Brazil), French, German, Italian, Arabic, Indonesian, Turkish, Russian, Chinese (Simplified), Japanese and Korean. The language must match the text. A Hindi message submitted as English is a common rejection reason. ## The parts of a template ### Header — optional One of: - **Text** — up to **60 characters**. Can contain one variable. - **Image**, **Video** or **Document** — uploaded as a sample when you submit. - **Location** - **None** ### Body — required Up to **1,024 characters**. This is the message. Variables are written `{{1}}`, `{{2}}` and so on, and are filled in when the message is sent: ```text Hi {{1}}, your order {{2}} has shipped and should arrive by {{3}}. ``` For every variable you must give a **sample value** of up to 100 characters. Meta reads the samples to understand what the template does — a template whose samples are `a`, `b`, `c` is much more likely to be rejected than one with `Priya`, `#10482`, `Friday`. Variables cannot sit next to each other (`{{1}}{{2}}`) and the body cannot begin or end with one. Meta rejects both. ### Footer — optional Up to **60 characters**. Small grey text under the message. Good place for "Reply STOP to opt out". ### Buttons — optional Up to **10 buttons** in total. Every label is up to **40 characters**. - **Quick reply** — the customer taps and the label comes back to you as their reply. Up to 10 of them. - **Website** — opens a URL. Up to 2, and the URL must be `https://`. - **Phone** — dials a number. One per template. - **Copy code** — gives the customer a coupon code to copy. One per template, and Meta writes the label itself. See [Templates](https://onpad.in/docs/templates) for the full rules. ## Submit it Saving submits the template to Meta. The status then moves through: - **Pending** — with Meta, awaiting review. Usually minutes, sometimes up to 24 hours. - **Approved** — ready to use in campaigns and the API. - **Rejected** — see below. ONPAD keeps the status in sync with Meta, so the Templates list shows the current state. ## If it is rejected Rejection is normal, especially the first time. The usual causes: **It reads like spam.** Lots of capitals, several exclamation marks, "FREE!!!", urgency pressure. **Wrong category.** A promotional message submitted as Utility. **Poor sample values.** Placeholders like `xxx` or `test` give Meta nothing to review. **Language mismatch.** Text in one language, submitted as another. **A URL Meta cannot verify**, or a link shortener it does not trust. **Asking for sensitive information** — card numbers, passwords, government ID numbers. Fix the wording and submit again. There is no penalty for resubmitting, and no queue position to lose. Repeated rejections of the same kind can affect your account standing, so change something meaningful between attempts rather than resubmitting the same text. ## A good first template Keep it simple and obviously legitimate: ```text Name: welcome_message Category: Utility Language: en_US Body: Hi {{1}}, thanks for getting in touch with Sunrise Store. We have saved your number and will keep you updated. Sample: Priya Footer: Reply STOP to opt out ``` That one is approved quickly and is enough to test the whole path end to end. ## Next [Your first message](https://onpad.in/docs/your-first-message) — sending the template you just had approved.