> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apifycloud.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Template examples

> Copy-and-adapt template examples for Marketing, Utility, and Authentication — with bodies, variables, buttons, and category rationale

Real-world template patterns, organised by category. Each example
shows the **body**, **variables**, **buttons**, and the reasoning for
its category. Adapt to your brand and submit — they're written to
clear Meta's review with minimal friction.

<Note>
  Always personalise the copy to match your actual business. Generic or
  overly templated content is a common cause of rejection.
</Note>

## Utility templates

Transactional updates tied to something the user already did. Usually
free inside the 24h window, otherwise priced at the Utility rate.

### Order confirmation

* **Name:** `order_confirmation`
* **Category:** UTILITY
* **Header:** TEXT — `Order confirmed ✅`
* **Body:**
  ```
  Hi {{1}}, your order {{2}} for a total of {{3}} was received and is being prepared.

  We'll let you know as soon as it ships. You can check the status any time using the button below.
  ```
* **Variables:** `{{1}}` = first name, `{{2}}` = order ID, `{{3}}` = total
* **Footer:** `Customer Support Team`
* **Buttons:**
  * URL: "View order" → `https://example.com/orders/{{1}}`

Why Utility: responds directly to a purchase the user initiated.

***

### Shipping status update

* **Name:** `shipping_in_transit`
* **Category:** UTILITY
* **Body:**
  ```
  Hi {{1}}, your order {{2}} has left our distribution center and is expected to arrive around {{3}}.

  Tracking number: {{4}}
  ```
* **Footer:** `Track it in real time`
* **Buttons:**
  * URL: "Track shipment" → `https://example.com/track/{{1}}`
  * QUICK\_REPLY: "Change address"

Why Utility: fact about an existing order, not a promotion.

***

### Appointment reminder

* **Name:** `appointment_reminder_24h`
* **Category:** UTILITY
* **Body:**
  ```
  Hi {{1}} 👋

  This is a reminder of your appointment on {{2}} at {{3}} with {{4}} at our {{5}} location.

  Still on?
  ```
* **Buttons:**
  * QUICK\_REPLY: "Yes, I'll be there"
  * QUICK\_REPLY: "Need to reschedule"

Why Utility: confirms a scheduled event the user booked.

***

### Account alert

* **Name:** `account_security_alert`
* **Category:** UTILITY
* **Body:**
  ```
  Hi {{1}}, we detected a sign-in to your account from {{2}} on {{3}} at {{4}}.

  If this was you, you can ignore this message. If not, secure your account right away.
  ```
* **Buttons:**
  * URL: "Review activity" → `https://example.com/security/{{1}}`
  * QUICK\_REPLY: "That wasn't me"

Why Utility: security notification tied to a specific account event.

***

### Payment receipt

* **Name:** `payment_receipt`
* **Category:** UTILITY
* **Header:** DOCUMENT (PDF sample of the receipt)
* **Body:**
  ```
  Thanks for your payment, {{1}}.

  Amount: {{2}}
  Method: {{3}}
  Reference: {{4}}

  We've attached your receipt as a PDF.
  ```
* **Buttons:**
  * URL: "View history" → `https://example.com/payments`

Why Utility: confirms a transaction the user authorised.

***

### Low balance / quota warning

* **Name:** `low_balance_alert`
* **Category:** UTILITY
* **Body:**
  ```
  Hi {{1}}, your account balance is {{2}}.

  If you'd like to top up so you can keep using the service without interruption, you can do it from the button below.
  ```
* **Buttons:**
  * URL: "Top up" → `https://example.com/topup`

Why Utility: reports a factual account state.

## Marketing templates

Promotional content. Always charged at the Marketing rate (outside
Free Entry Points) and counts toward the
[per-user marketing cap](/guides/whatsapp/per-user-marketing-limits).
Requires explicit marketing opt-in.

### Product launch announcement

* **Name:** `launch_new_product`
* **Category:** MARKETING
* **Header:** IMAGE (product hero shot)
* **Body:**
  ```
  Hey {{1}}, today we're launching {{2}}.

  Designed for {{3}}, and available this week with free shipping.

  Let us know what you think.
  ```
* **Footer:** `Reply STOP to unsubscribe`
* **Buttons:**
  * URL: "See the product" → `https://example.com/p/{{1}}`
  * QUICK\_REPLY: "Tell me more"

Why Marketing: promotes a new product.

***

### Back in stock

* **Name:** `back_in_stock`
* **Category:** MARKETING
* **Body:**
  ```
  It's back!

  {{1}}, {{2}} is available again. Grab it before it sells out.
  ```
* **Footer:** `Reply STOP to unsubscribe`
* **Buttons:**
  * URL: "Shop now" → `https://example.com/p/{{1}}`

Why Marketing: drives a new purchase decision.

***

### Price drop alert

* **Name:** `price_drop_alert`
* **Category:** MARKETING
* **Body:**
  ```
  Good news, {{1}} — {{2}} just dropped to {{3}}.

  {{4}}% off while stock lasts.
  ```
* **Footer:** `Reply STOP to unsubscribe`
* **Buttons:**
  * URL: "See it" → `https://example.com/p/{{1}}`
  * QUICK\_REPLY: "Not interested"

Why Marketing: promotes a purchase decision based on a price change.

***

### Flash sale / limited-time offer

* **Name:** `flash_sale_announcement`
* **Category:** MARKETING
* **Header:** IMAGE (sale hero)
* **Body:**
  ```
  Hey {{1}}, today only:

  Get {{2}}% off the entire store. Ends at 11:59 PM your local time.
  ```
* **Footer:** `Reply STOP to unsubscribe`
* **Buttons:**
  * URL: "Shop" → `https://example.com/sale`

***

### Customer survey (NPS)

* **Name:** `nps_survey_request`
* **Category:** MARKETING
* **Body:**
  ```
  Hi {{1}}, we'd love to know how your experience with {{2}} went.

  How would you rate us from 1 to 10?
  ```
* **Buttons:**
  * QUICK\_REPLY: "10"
  * QUICK\_REPLY: "7-9"
  * QUICK\_REPLY: "6 or lower"

Why Marketing: not transactional; solicits opinion for business
benefit. (Some teams misclassify this as Utility — it's not.)

***

### Re-engagement

* **Name:** `reengagement_30_days`
* **Category:** MARKETING
* **Body:**
  ```
  It's been a while, {{1}}.

  We've got some news we think you'll like. Want to see it?
  ```
* **Footer:** `Reply STOP to stop receiving messages`
* **Buttons:**
  * QUICK\_REPLY: "Show me"
  * QUICK\_REPLY: "No, thanks"

## Authentication templates

Authentication templates are a dedicated Meta layout for OTPs and
verification codes. The structure is fixed — a code, one short line
of context, and a COPY\_CODE button — and the editor guides you
through it. No marketing, no extra content beyond the code.

Typical use cases (all follow the same structure, only name and
wording change): login OTP, two-factor authentication, password
reset, email verification, phone verification.

The console's template editor guides you through the
Authentication-specific layout, including ONE\_TAP auto-fill and other
Authentication subtypes.

## The pitfalls you'll avoid with these patterns

### Category and content

* **Don't mix marketing into Utility** — even a small upsell
  ("enjoy 10% off your next purchase") turns an order confirmation
  into a Marketing reclassification risk.
* **Don't load Authentication with context** — keep it to the code,
  a one-line instruction, and a copy button.
* **Always include an opt-out line on Marketing footers** —
  "Reply STOP to unsubscribe" or locale equivalent. Missing this is
  the #1 cause of Marketing rejections.
* **No clickbait or excessive formatting** — ALL CAPS throughout,
  walls of emojis, "🔥🔥🔥 ACT NOW 🔥🔥🔥" — Meta rejects
  theatrics, especially in Marketing.

### Variables

* **Don't start the body with a variable** — Meta rejects bodies
  that begin with `{{1}}`. Lead with a literal word (`Hi {{1}}`,
  `Hey {{1}}`, `Your order {{1}}`, etc.).
* **Don't place consecutive variables without text between them** —
  `{{1}} {{2}}` with no literal separator gets rejected. Always
  anchor variables with surrounding text.
* **Number variables sequentially from `{{1}}`** — no gaps
  (`{{1}}` then `{{3}}`), no starting at `{{2}}`, no duplicate
  indexes.
* **Sample values must match the variables exactly** — if the body
  has 3 variables, you provide 3 sample values. Mismatches cause
  `PARAMETER_MISMATCH` rejections.
* **Sample values must be realistic** — use `Ana`, `A-10042`, not
  `FIRSTNAME` or `{{1}}`.

### URL buttons

* **URL buttons may contain at most one variable, at the end** —
  `https://example.com/orders/{{1}}` works;
  `https://example.com/{{1}}/orders` doesn't.
* **Don't put URLs in the body text** — all links go in URL
  buttons. Plain URLs in the body are a rejection flag.

### Character limits

* **Body**: up to 1024 characters
* **TEXT header**: up to 60 characters
* **Footer**: up to 60 characters, no variables
* **Button labels**: up to 25 characters

### Media headers

* **Upload a real, working sample** — Meta fetches the sample image,
  video, or document during review. Broken URLs, placeholder images,
  or empty PDFs cause rejections. Upload a realistic sample that
  represents what the user will receive in production.

## What's next

<CardGroup cols={2}>
  <Card title="Template categories" href="/guides/whatsapp/template-categories">
    How Meta categorizes templates and when reclassification happens.
  </Card>

  <Card title="Approval flow" href="/guides/whatsapp/templates/approval">
    What happens after submission, rejection reasons, pausing.
  </Card>

  <Card title="Per-user marketing limits" href="/guides/whatsapp/per-user-marketing-limits">
    The dynamic cap Meta applies to Marketing templates per user.
  </Card>

  <Card title="Compliance" href="/guides/whatsapp/compliance">
    Opt-in, opt-out, and what counts as a policy violation.
  </Card>
</CardGroup>
