WhatsApp Cold Outreach Guide
How to write WhatsApp templates that actually get approved
WhatsApp Business templates aren't email โ Meta reviews every one before you can send. Templates that read like spam, mismatch your category, or stuff variables in the wrong place get rejected. This guide shows you how to write service and marketing templates that pass on the first try, with real examples you can adapt today.
Two rules decide whether your template gets approved
Meta's review is automated for the most part โ it scores your template against a few simple signals. Get the signals right and approvals come back in minutes. Get them wrong and you'll keep cycling through rejections.
Rule 1: your template body must match the category you declared. A coupon code in a Utility template is an instant reject. Rule 2: every variable like {{1}} must have a realistic sample value attached, and the body must read naturally with that sample inserted.
๐ก If you only remember one thing
Marketing = promotion / sales. Utility = something the customer already started or expects (appointments, orders, reminders, account events). When in doubt, pick Utility โ the bar is lower.
Service templates: write them like a polite confirmation
Service templates are easy to get right because they have a clear job: confirm, remind, or update. The customer is already expecting the message, so Meta's bar is low.
- Reference a specific action the customer took (booked, ordered, signed up).
- Include a concrete detail โ the appointment time, order number, balance.
- End with a clear next step or a way to reply ("reply YES to confirm", "call us at...").
- Don't add a discount code or promotional phrase โ that flips it to Marketing.
- Don't write a generic message with no customer-specific detail. Meta rejects "informational" templates that could be sent to anyone.
Hi {{1}}, this is a reminder of your appointment on {{2}} at {{3}}. Reply CANCEL to cancel or call us at {{4}} to reschedule.
Sample values: Sara ยท Mar 12 ยท 2:30 PM ยท +1-555-0123
Marketing templates: the bar is higher, the wording matters more
Marketing templates can sell, promote, or re-engage โ but Meta knows users hate spam, so it's stricter. The winning pattern is to lead with personalization and value, not the discount.
- Open with the customer's name and a reason for the message ("you saved this last week", "you're a Silver member").
- Be specific about the offer โ what, for whom, when it ends.
- Include an explicit opt-out ("reply STOP to unsubscribe") for promotional messages. This is the single biggest approval lever.
- Avoid all-caps screaming ("SALE!!!"), excessive emoji, or fake urgency ("LAST CHANCE โ TODAY ONLY" with no real deadline).
- Don't bury the offer behind vague teasers ("Click to find out what we have for you!"). Meta wants the message to stand on its own.
Hi {{1}}, thanks for joining {{2}}! As a new member, you have {{3}} off your first order โ valid until {{4}}. Reply STOP to opt out of promotions.
Sample values: Sara ยท Layali Abaya ยท 15% ยท Mar 20
Variables ({{1}}, {{2}}โฆ): the #1 reason templates get rejected
Variables are placeholders you fill in at send time โ but Meta checks that they have realistic example values, and that the body still makes sense when the value is plugged in. "Hi {{1}}, your {{2}}" with no examples gets rejected instantly.
Always provide a sample for each variable. If {{1}} is a name, write "Sara". If {{2}} is a date, write "March 12, 2026" โ not "2026-03-12T14:30:00Z". Meta wants the preview to look like a real WhatsApp message.
๐ก A simple test
Read your template out loud with the sample values inserted. If it sounds like something you'd actually send a friend or customer, you're good. If it reads like a template, rewrite it.
The 4 most common rejection reasons (and how to fix each)
Almost every rejection falls into one of these four buckets. Skim them before you submit anything.
- Category mismatch. Promotional copy in a Utility template, or transactional copy in a Marketing template. Fix: change the declared category to match the body's intent.
- Missing variable examples. Your template uses {{1}} but you didn't pass an example value. Fix: in Safqat's form, fill the sample field; on raw Graph API, include `example.body_text`.
- Generic / spammy wording. "Don't miss out!", "Click here", or anything that could be sent verbatim to thousands of strangers. Fix: rewrite with customer-specific detail or remove.
- Language mismatch. You declared the language as `en_US` but the body is in Arabic, or vice versa. Fix: the declared language must match the script you wrote in.
Skip review entirely with auto-approved templates
Meta maintains a library of pre-approved utility templates you can import to your account with one click. They cover the most common use cases:
- Appointment confirmation and reminders
- Delivery and shipping notifications
- Account creation and password resets
- Order updates and receipts
Use Safqat's "Meta Templates Library" tab to import any of these instantly. Reserve custom-written templates for marketing copy and for service messages with wording too specific to your brand to be covered by the library.
Outreach
Stop guessing โ let Safqat handle the approvals
Browse Meta's auto-approved library, write custom templates with built-in policy checks, and track every approval and rejection in one place. Cold Outreach is included in every Safqat plan.
