WhatsApp Marketing That Gets Opened.
Reach customers where they already spend their time. Industry reports put WhatsApp open rates near 98%, against about 20% for email. Send promotions, launches and offers with rich media and interactive buttons.
✦ 14-day free trial · Your own WhatsApp Business number · Meta bills messages directly
- 45%
- Average click-through rate (industry reports)
- 5x+
- ROI vs. traditional SMS (industry reports)
- 10
- Buttons per template (quick reply, URL, copy code and more)
- 0%
- Per-message markup from StartMessaging
Send Promotions That Get Opened
WhatsApp marketing templates support image, video and document headers, coupon codes and interactive buttons, and you can personalize every message with variables for each contact — name, purchase history, preferences and more. Carousel and limited-time offer templates are sent one at a time from the inbox or the API; campaigns send standard templates.
- Image, video and PDF headers; product carousels through the API or inbox
- Personalized variables dynamically resolved per customer
- Interactive quick-reply and call-to-action buttons
Opt-In to Conversion Pipeline
1. Collect Opt-Ins
Integrate opt-in checkbox triggers inside purchase forms, landing pages, or checkout channels.
2. Welcome Broadcast
Deliver an immediate automated welcome notification containing onboarding discount parameters.
3. Campaign Nurture
Send follow-up campaigns to the tags that reflect what each customer did, spaced at least 48 hours apart. On the Business plan, target engagement and pipeline-stage segments, retarget people who didn't read or reply, and add follow-ups that stop when someone replies.
WhatsApp Marketing vs. SMS Marketing vs. Email Marketing
Compare what each channel can carry and how customers can respond.
| Metric | WhatsApp Marketing | SMS Marketing | Email Marketing |
|---|---|---|---|
| Interactive CTAs | ✓ (Quick-reply / URL links) | ✗ (Raw hyperlinks only) | ✓ (Embedded styled buttons) |
| Rich Media Attachments | ✓ (Images, Videos, PDFs) | ✗ (Text only / MMS cost-prohibitive) | ✓ (HTML layout) |
| Two-Way Replies | ✓ (Shared team inbox) | Limited (mostly one-way) | ✓ (Separate email inbox) |
Send a marketing template with an image header
curl -X POST https://waba-api.startmessaging.com/api/v1/messages \
-H "Authorization: Bearer sm_live_your_api_key" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: launch-autumn-919812345678" \
-d '{
"to": "+919812345678",
"type": "template",
"template": {
"name": "new_collection_launch",
"language": "en_US",
"headerMediaUrl": "https://cdn.example.com/new-collection.jpg",
"parameters": [
{
"text": "Aarti"
}
],
"buttonParameters": [
{
"index": 0,
"subType": "url",
"text": "autumn-26"
}
]
}
}' const res = await fetch('https://waba-api.startmessaging.com/api/v1/messages', {
method: 'POST',
headers: {
'Authorization': 'Bearer ' + process.env.SM_API_KEY,
'Content-Type': 'application/json',
'Idempotency-Key': 'launch-autumn-919812345678',
},
body: JSON.stringify({
"to": "+919812345678",
"type": "template",
"template": {
"name": "new_collection_launch",
"language": "en_US",
"headerMediaUrl": "https://cdn.example.com/new-collection.jpg",
"parameters": [
{
"text": "Aarti"
}
],
"buttonParameters": [
{
"index": 0,
"subType": "url",
"text": "autumn-26"
}
]
}
}),
});
const { data } = await res.json();
console.log(data.id, data.status); import os, requests
res = requests.post(
'https://waba-api.startmessaging.com/api/v1/messages',
headers={
'Authorization': f"Bearer {os.environ['SM_API_KEY']}",
'Idempotency-Key': 'launch-autumn-919812345678',
},
json={
"to": "+919812345678",
"type": "template",
"template": {
"name": "new_collection_launch",
"language": "en_US",
"headerMediaUrl": "https://cdn.example.com/new-collection.jpg",
"parameters": [
{
"text": "Aarti"
}
],
"buttonParameters": [
{
"index": 0,
"subType": "url",
"text": "autumn-26"
}
]
}
},
)
data = res.json()['data']
print(data['id'], data['status']) <?php
$body = <<<'JSON'
{
"to": "+919812345678",
"type": "template",
"template": {
"name": "new_collection_launch",
"language": "en_US",
"headerMediaUrl": "https://cdn.example.com/new-collection.jpg",
"parameters": [
{
"text": "Aarti"
}
],
"buttonParameters": [
{
"index": 0,
"subType": "url",
"text": "autumn-26"
}
]
}
}
JSON;
$ch = curl_init('https://waba-api.startmessaging.com/api/v1/messages');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('SM_API_KEY'),
'Content-Type: application/json',
'Idempotency-Key: launch-autumn-919812345678',
],
CURLOPT_POSTFIELDS => $body,
]);
$data = json_decode(curl_exec($ch), true)['data'];
echo $data['id'] . ' ' . $data['status']; Marketing Messages — FAQ
Do contacts need to opt-in for marketing messages?
Yes. WhatsApp requires explicit opt-in from contacts before you can send marketing messages. You can collect opt-ins through your website, app, or existing customer touchpoints. StartMessaging records opt-in status per contact (including a consent checkbox on CSV import) and handles STOP/START opt-outs per phone number, to help you follow Meta's policies and local privacy laws such as GDPR and LGPD.
What is the pricing for marketing messages?
Meta charges for every delivered marketing template, at its rate for the recipient's country, billed directly to your own WhatsApp Business Account. Since 1 October 2026 Meta charges every delivered template — utility ones too, even inside the 24-hour window — while free-form service replies are free up to a monthly allowance per number. Marketing templates are usually priced higher than utility or authentication templates. StartMessaging charges a flat CRM subscription only — no per-message markup, no wallet. Before a campaign launches, the pre-launch check estimates Meta's charge, and the campaign report shows about what Meta charged.
Can I compare different marketing messages?
Yes, on the Business plan. An A/B test sends a second template to part of the audience (10–50%), split between the two versions, and after 1 to 72 hours sends the version with more replies, reads or button taps to everyone else. You can also split the whole audience in half and compare the two in the report. On Team, duplicate a campaign, send each version to a different tag or CSV list and compare the campaign reports.
What media formats are supported in marketing messages?
Marketing templates can have an image (PNG, JPEG), video (MP4) or document (PDF) header and up to 10 buttons, such as quick replies, links and copy-code coupons. Carousel templates (2 to 10 cards, each with its own image or video) and limited-time offers with a countdown can be sent one at a time from the inbox or through the API, but campaigns can't send them.
How do I personalize marketing messages for each recipient?
Templates use numbered ({{1}}, {{2}}) or named ({{first_name}}) variables; Meta keeps the style you pick once the template is created. In a campaign, map each variable to a contact field, a custom attribute or the same text for everyone. Through the API, pass the values with each message.
Start Your Marketing Campaign Today
14-day free trial. Connect your own WhatsApp Business number in minutes.