Skip to content
Try Free →

WhatsApp message templates

Last updated: · 4 min read

Why templates exist

WhatsApp Business rules from Meta:

  • Customer-initiated window. When a customer messages your business first, you have 24 hours to reply with any text. No template needed.
  • Outside the window. To re-engage after 24 hours, you must use a pre-approved template. Free-form messages get rejected.

This prevents spam. Templates are reviewed by Meta to ensure they're transactional or service-oriented, not promotional bulk.

AskVault routes via Twilio's WhatsApp API. Twilio forwards your template to Meta for approval. See WhatsApp setup for the upstream Twilio config.

When you need templates

Three common use cases:

  1. Re-engagement. Customer asked a question 2 days ago; you have a follow-up. Template required.
  2. Proactive notifications. Order shipped, invoice due, appointment reminder. Template required from the start.
  3. Marketing. Promotional broadcast to opted-in customers. Template required and must be in the "Marketing" category.

If you only ever respond to inbound customer messages within 24 hours, you don't need templates. Most teams need at least 2 to 3.

Template categories

Meta classifies templates into three categories with different pricing and rules:

  • Utility. Order updates, shipping notifications, appointment reminders, OTP codes. Lowest cost ($0.005 to $0.015 per message).
  • Authentication. OTP/2FA codes only. Very low cost ($0.001 to $0.005 per message).
  • Marketing. Promotional content, sales announcements. Higher cost ($0.02 to $0.05 per message) and stricter approval.

Pricing varies by country: India is among the cheapest, US and EU are mid-range, UAE and certain markets are highest.

Template structure

A template has three components:

  • Header (optional). Text, image, video, or document. Max 60 characters for text.
  • Body (required). The main message. Max 1,024 characters. Supports variables.
  • Footer (optional). Small grey text at the bottom. Max 60 characters.

Plus optional buttons:

  • Quick reply. Up to 3 buttons. Visitor taps to send a pre-set response.
  • Call to action. Up to 2 buttons. URL or phone call.

Variables and personalization

Use double-curly placeholders for variables:

Hi {{1}}, your order #{{2}} shipped today.
Track at {{3}}. Expected delivery {{4}}.

When sending, supply the variable values:

{
"template_name": "order_shipped",
"language": "en_US",
"variables": ["Alice", "ORD-12345", "https://yoursite.co/track/12345", "May 20"]
}

Up to 25 variables per template. Each must have an example value during submission so Meta can review the template in context.

Submitting a template

Three paths.

Via the AskVault dashboard.

  1. Open Deploy Hub > WhatsApp > Templates > Create.
  2. Pick a category.
  3. Write the header, body, footer text.
  4. Set example variable values.
  5. Submit for review. AskVault forwards to Twilio, which forwards to Meta.

Via Twilio Console. If you prefer Twilio's template builder, create there. AskVault auto-syncs available templates from Twilio every 30 minutes.

Via API.

Terminal window
curl -X POST https://api.askvault.co/v1/whatsapp/templates \
-H "Authorization: Bearer ak_xxx" \
-H "Content-Type: application/json" \
-d '{
"name": "order_shipped",
"category": "utility",
"language": "en_US",
"body": "Hi {{1}}, your order #{{2}} shipped today...",
"examples": {"1": "Alice", "2": "ORD-12345"}
}'

Approval timeline

  • Most utility templates. Approved within 1 to 4 hours.
  • Authentication templates. Approved within 30 minutes typical.
  • Marketing templates. Take 4 to 24 hours; often need 1 to 2 revision cycles.

AskVault notifies you via webhook (whatsapp.template.approved or whatsapp.template.rejected) the moment Meta responds.

Common rejection reasons

Meta rejects templates that:

  • Use promotional language in utility category. "Get 50% off!" must be Marketing.
  • Include URLs without HTTPS. Plain http:// links get rejected.
  • Misformat variables. {1} (single brace) fails; must be {{1}}.
  • Have no clear purpose. "Hi" alone gets rejected.
  • Look like spam. Excessive emoji, all-caps, or generic blast messaging.

Resubmit with the suggested fixes. Re-approval is usually faster (within 1 hour) since Meta has prior context.

Sending an approved template

Three ways once the template is approved:

Via skill firing. Skills like wismo_order_status and subscription_manager auto-send templates when they have visitor consent and the conversation is outside the 24-hour window.

Via automation rule. Configure a rule under Dashboard > Automation Rules like: when a lead.captured webhook fires, send the welcome template within 60 seconds.

Via API.

Terminal window
curl -X POST https://api.askvault.co/v1/whatsapp/send-template \
-H "Authorization: Bearer ak_xxx" \
-H "Content-Type: application/json" \
-d '{
"to": "+918012345678",
"template": "order_shipped",
"language": "en_US",
"variables": ["Alice", "ORD-12345", "https://yoursite.co/track/12345", "May 20"]
}'

Returns the Twilio message SID. Delivery status webhooks fire as the message progresses.

Opt-in and opt-out

WhatsApp requires explicit opt-in before you send templates. Patterns:

  • Checkbox at signup. "Yes, I want WhatsApp updates about my orders."
  • Inline consent during chat. "Want order updates on WhatsApp? Reply YES."
  • Email confirmation flow. Click a link in email to confirm.

Capture opt-in via lead.captured webhook and store the consent. Opt-out happens when a visitor texts STOP or UNSUBSCRIBE; AskVault auto-flags the contact as opted-out.

Limits

  • Templates per workspace. Up to 250 active templates.
  • Approval time. 1 to 24 hours typical.
  • Body length. 1,024 characters.
  • Variables per template. Up to 25.
  • Languages per template. 1 (separate templates per language).

Common pitfalls

"Template not found" error on send. Template name typo or template not yet approved. Check Deploy Hub > WhatsApp > Templates for approval status.

"Variable count mismatch". You passed 3 variables but the template expects 4. Check the template body for {{1}} through {{n}}.

Customer never receives the template. Customer's WhatsApp number not verified, opted out, or blocked. Check delivery webhook events for the specific reason.

Cost higher than expected. Marketing-category templates cost 4 to 10x more than utility. Confirm category at submission.

Planned features (on the roadmap)

Documented for accuracy:

  • Template version history. Today, edits create a new template name; versioning is on the roadmap.
  • Multi-language auto-detection. Today you pick the language explicitly; planned auto-detect from customer's preferred language.
  • Interactive list templates. Today only buttons; list templates ship soon.

FAQ

Can I send free-form messages without templates?

Yes within 24 hours of the customer's last message. Outside that window, templates only.

How much does a WhatsApp message cost?

Varies by country and category. India utility: about $0.005 per message. US marketing: about $0.04 per message. Twilio bills you separately for the WhatsApp infrastructure.

Can I A/B test templates?

Yes via two approved templates and your automation rule routing 50/50. Native A/B is planned.

What if Meta rejects my template?

You'll see the rejection reason in the dashboard. Edit and resubmit. Resubmissions are usually approved within 1 hour.

Can I attach media in a template?

Yes for header (image, video, or PDF). Body is text-only with variables. Use the dashboard template builder to upload media.

Was this page helpful?