Skip to main content

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.

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.
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:
    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. 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 endhttps://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

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.