Templates & campaigns
Every business-initiated WhatsApp conversation starts with a Meta-approved message template. WhautX creates them, submits them for review, and feeds them into campaigns, automations, and the API.
Naming & format
Template names must match ^[a-z][a-z0-9_]{1,49}$ — lowercase, leading letter, no spaces, max 50 chars. The same name is used to reference the template from automations and the API.
Examples: order_confirmation, july_promo_v1.
Categories
Meta allows three template categories. They use the same wizard surface in WhautX but Meta’s review rules and field restrictions are different — Utility prompts for validity period, and Authentication locks the body copy and requires per-app setup before approval.
Marketing
Promotions, offers, newsletters, re-engagement.
What you can use
- HeaderOptional — text, image, video, or document.
- BodyRequired. Up to 1024 chars, 1–10 variables ({{1}} …).
- FooterOptional, max 60 chars.
- ButtonsUp to 10 (url or quick_reply).
- ValidityNo custom expiry — long-lived by default.
Notes
- The default template shape — the WhautX wizard covers everything end-to-end.
- Subject to Meta’s business-initiated 24-hour conversation rules and ongoing audience-quality tracking.
Utility
Order updates, shipping alerts, appointments, account notifications.
What you can use
- HeaderOptional — text, image, video, or document.
- BodyRequired. Up to 1024 chars, 1–10 variables ({{1}} …).
- FooterOptional, max 60 chars.
- ButtonsUp to 10 (url or quick_reply).
- ValidityCustom message validity period. Meta defaults to 10 minutes if you don’t set one — the form surfaces this prominently because a utility message arriving hours late is useless.
Notes
- Same component shape as Marketing — Meta distinguishes them by intent and timeliness, not by what you put in the body.
- Triggers should be tied to a real transactional event (order placed, shipped, payment captured). Meta rejects utility templates used for promotional purposes.
- The WhautX wizard inherits Meta’s default 10-min validity on submitted components; configure a custom one in the API payload if you need a different window.
Authentication
One-time passcodes (OTP), login challenges, identity verification.
What you can use
- HeaderNOT allowed — no media, no text header.
- BodyExactly 1 variable ({{1}}). Meta locks the copy to: "{{1}} is your verification code. For your security, do not share this code."
- FooterOptional.
- ButtonsA single copy_code button is the standard (and only approved) affordance.
- ValidityDriven by the code-expiration window you configure, plus the delivery method (Zero-tap / One-tap / Copy code).
Notes
- The body is locked: Meta rejects Auth templates whose copy deviates from the OTP pattern, even by a word.
- Before Meta approves the template, configure code delivery + per-app signing at the Meta WhatsApp Manager level:
- Zero-tap autofill (recommended), One-tap autofill, or Copy code.
- Up to 5 apps per template, each with Android package name + 11-char signature hash. iOS apps are configured the same way.
- Optional add-ons after approval: security recommendation + code expiration (after which the autofill button is disabled).
- The WhautX wizard accepts any components you bundle, but Auth templates only get approved when the body matches the OTP pattern and the apps are set up in Meta Manager.
Authentication templates require the body to match Meta’s exact OTP copy ({{1}} is your verification code. For your security, do not share this code.). Anything else is rejected on review. Code-delivery setup (Zero-tap / One-tap / Copy code) and per-app package + signature hash live in Meta WhatsApp Manager — set those up before submitting so Meta can complete the approval.
Variable formats
Positional (default)
Body uses {{1}}, {{2}}, {{3}}. Campaigns auto-map these to firstName, lastName, email, phoneNumber in that order. You can override per-campaign.
Named (explicit)
Set the template to named parameters and reference variables by name — e.g. {{customer_name}}. Automation steps supply values by name via bodyMapping.
Status lifecycle
APPROVEDSendable. Most templates land here within minutes.PENDINGSubmitted to Meta, awaiting review.REJECTEDMeta declined. reason is surfaced inline so you can edit + resubmit.PAUSEDQuality flag — paused by Meta or by your workspace.DISABLEDRemoved from your workspace’s sendable list.DRAFTLocal-only; never sent to Meta. Visible only inside WhautX.
Approval flow
- Create a draft in WhautX → submit to Meta. Rejected drafts can be edited and resubmitted in place.
- Only APPROVED templates are saved locally — failures at Meta throw without persisting.
- The sync job pulls the latest status from Meta, so a pause or rejection flips the local row automatically.
Sending a template
Approved templates are the only way to start a new conversation — text sends are valid only inside the 24-hour customer-service window. Three places can send a template:
- Campaign — broadcast to a segment, on demand or scheduled. Draft-only via the API to avoid accidental blasts.
- Automation — a
SEND_TEMPLATEstep fires when the trigger matches. - API — create a campaign via
POST /api/v1/campaignsand start it from the app.