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.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.
Always personalise the copy to match your actual business. Generic or
overly templated content is a common cause of rejection.
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:
- Variables:
{{1}}= first name,{{2}}= order ID,{{3}}= total - Footer:
Customer Support Team - Buttons:
- URL: “View order” →
https://example.com/orders/{{1}}
- URL: “View order” →
Shipping status update
- Name:
shipping_in_transit - Category: UTILITY
- Body:
- Footer:
Track it in real time - Buttons:
- URL: “Track shipment” →
https://example.com/track/{{1}} - QUICK_REPLY: “Change address”
- URL: “Track shipment” →
Appointment reminder
- Name:
appointment_reminder_24h - Category: UTILITY
- Body:
- Buttons:
- QUICK_REPLY: “Yes, I’ll be there”
- QUICK_REPLY: “Need to reschedule”
Account alert
- Name:
account_security_alert - Category: UTILITY
- Body:
- Buttons:
- URL: “Review activity” →
https://example.com/security/{{1}} - QUICK_REPLY: “That wasn’t me”
- URL: “Review activity” →
Payment receipt
- Name:
payment_receipt - Category: UTILITY
- Header: DOCUMENT (PDF sample of the receipt)
- Body:
- Buttons:
- URL: “View history” →
https://example.com/payments
- URL: “View history” →
Low balance / quota warning
- Name:
low_balance_alert - Category: UTILITY
- Body:
- Buttons:
- URL: “Top up” →
https://example.com/topup
- URL: “Top up” →
Marketing templates
Promotional content. Always charged at the Marketing rate (outside Free Entry Points) and counts toward the per-user marketing cap. Requires explicit marketing opt-in.Product launch announcement
- Name:
launch_new_product - Category: MARKETING
- Header: IMAGE (product hero shot)
- Body:
- Footer:
Reply STOP to unsubscribe - Buttons:
- URL: “See the product” →
https://example.com/p/{{1}} - QUICK_REPLY: “Tell me more”
- URL: “See the product” →
Back in stock
- Name:
back_in_stock - Category: MARKETING
- Body:
- Footer:
Reply STOP to unsubscribe - Buttons:
- URL: “Shop now” →
https://example.com/p/{{1}}
- URL: “Shop now” →
Price drop alert
- Name:
price_drop_alert - Category: MARKETING
- Body:
- Footer:
Reply STOP to unsubscribe - Buttons:
- URL: “See it” →
https://example.com/p/{{1}} - QUICK_REPLY: “Not interested”
- URL: “See it” →
Flash sale / limited-time offer
- Name:
flash_sale_announcement - Category: MARKETING
- Header: IMAGE (sale hero)
- Body:
- Footer:
Reply STOP to unsubscribe - Buttons:
- URL: “Shop” →
https://example.com/sale
- URL: “Shop” →
Customer survey (NPS)
- Name:
nps_survey_request - Category: MARKETING
- Body:
- Buttons:
- QUICK_REPLY: “10”
- QUICK_REPLY: “7-9”
- QUICK_REPLY: “6 or lower”
Re-engagement
- Name:
reengagement_30_days - Category: MARKETING
- Body:
- 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_MISMATCHrejections. - Sample values must be realistic — use
Ana,A-10042, notFIRSTNAMEor{{1}}.
URL buttons
- URL buttons may contain at most one variable, at the end —
https://example.com/orders/{{1}}works;https://example.com/{{1}}/ordersdoesn’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
Template categories
How Meta categorizes templates and when reclassification happens.
Approval flow
What happens after submission, rejection reasons, pausing.
Per-user marketing limits
The dynamic cap Meta applies to Marketing templates per user.
Compliance
Opt-in, opt-out, and what counts as a policy violation.