# Template Review & Approval

### Approval Criteria

WhatsApp may **reject** a template if any of the following apply:

* **Invalid format**: missing, misplaced, or malformed placeholders.
* **Policy violations**: content conflicts with WhatsApp Terms/Business/Commerce policies.
* **Too generic**: lacks context or looks like it could be misused.

### Template Statuses

* **Pending** — Under automated review and/or manual review (may take up to 48 hours).
* **Approved** — Ready to use; messages can be sent to customers.
* **Rejected** — Not approved during review (see common fixes below).
* **Paused** — Temporarily halted due to negative user feedback (e.g., blocks/spam reports); cannot be used while paused.
* **Disabled** — Permanently blocked due to repeated negative feedback or a policy violation; cannot be used.

### &#x20;Common Rejection Reasons & How to Fix

| Reason                                                            | How to fix                                                                 |
| ----------------------------------------------------------------- | -------------------------------------------------------------------------- |
| Variable at the very start or end of the message                  | Add static text or punctuation before/after the variable                   |
| Adjacent variables (e.g., {{1}}{{2}})                             | Add at least one word/symbol between them, or merge into a single variable |
| Non-sequential variable numbers (e.g., {{1}}, {{2}}, {{4}})       | Make variables sequential ({{1}}, {{2}}, {{3}}…)                           |
| Duplicates another template (name-only change)                    | Change both the name and the message content                               |
| Contains gaming/gambling language (e.g., “raffle”, “win a prize”) | Replace with neutral wording that avoids gaming/gambling terms             |
| Overly vague (e.g., “Hi, {{1}}, thanks”)                          | Add clear context and purpose so reviewers see intended use                |
| Language doesn’t match content                                    | Select the correct language for the message text                           |
| More than 10 emojis                                               | Reduce emojis to 10 or fewer                                               |

### Template Categorization (pick the correct type)

See Meta’s guidelines: [New Template Guidelines](https://developers.facebook.com/docs/whatsapp/updates-to-pricing/new-template-guidelines/?utm_source=chatgpt.com)

**Utility**&#x20;

Service/transactional updates the user expects.

* *Examples*:
  * “Your order **#{{1}}** was delivered on **{{2}}**.”
  * “Your appointment on **{{1}}** at **{{2}}** is confirmed.”
  * “Payment **{{1}}** received. View receipt: **{{2}}**.”

**Authentication**

Messages that deliver one-time passcodes.

* *Examples*:

  * “Your verification code is **{{1}}**. It expires in **{{2}}** minutes.”
  * “Use **{{1}}** to confirm your login on **{{2}}**.”

Marketing

Promotional or engagement messages intended to drive action (offers, new products, win-backs, reminders to complete a purchase).

* **Examples**
  * “New offer: **{{1}}** off **{{2}}**. Shop now: **{{3}}**.”
  * “Back in stock: **{{1}}**. Tap to buy: **{{2}}**.”
  * “You left **{{1}}** in your cart. Complete your order: **{{2}}**.”
  * “Exclusive launch for you, **{{1}}**. Learn more: **{{2}}**.”
* **Best practices**
  * Obtain user **opt-in** before sending marketing messages. [Facebook Developers](https://developers.facebook.com/docs/whatsapp/overview/getting-opt-in/?utm_source=chatgpt.com)
  * Consider adding an **opt-out** quick reply (e.g., “Stop promotions”) to reduce spam reports and keep quality high. (Some platforms expose a “marketing opt-out” option in the template builder.)
  * Meta may apply **per-user marketing template limits** and different pricing/handling vs. Utility/Auth.

> **Tip:** Keep variables only for the parts that truly change (names, times, codes, order IDs). Avoid starting or ending the message with a variable, avoid fully dynamic URLs, and always include realistic **sample values** when submitting.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.lipachat.com/reference/template-review-and-approval.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
