WhatsApp for E-Commerce
Send order confirmations, delivery updates, cart reminders and review requests as approved WhatsApp templates from your store's backend, and answer customer replies from a shared team inbox.
✦ 14-day free trial · Your own WhatsApp Business number · Meta bills messages directly
Complete E-Commerce Toolkit
-
Order Updates
Order confirmed, shipped, out for delivery and delivered updates as utility templates, with a tracking-link button.
-
Abandoned Cart Recovery
When your store flags an abandoned cart, send an approved reminder template with a product image header and a dynamic checkout-link button.
-
Review Requests
After delivery, send a review request with quick-reply rating buttons. Each tap reaches your webhook as a message.received event.
-
Product Catalogs
Templates can carry catalog and multi-product buttons that open items from your Meta commerce catalog right inside WhatsApp. Campaigns can't send catalog templates.
-
Birthday Offers & Retargeting
On the Business plan, a repeating campaign can send a daily birthday offer to whoever has a birthday that day, or target another date such as a last-order date. Retarget customers who got a campaign but didn't read it, or who tapped a button, and keep quiet hours so nothing goes out overnight.
-
Campaign Conversions
On the Business plan, report each sale from your store with POST /api/v1/conversions — the phone number, order ID and value. It is credited to the campaign that last reached that customer within your conversion window, and shows up in that campaign's report.
E-Commerce Integrations
No plugin needed. When an order event happens in Shopify, WooCommerce, Magento or your own platform, call POST /api/v1/messages from your backend, or from a Zapier, Make or Pabbly scenario. Pass the order ID as clientReference: it comes back on every sent, delivered, read and failed webhook, and on the customer's button reply.
- REST API and signed webhooks, or Zapier, Make and Pabbly
- Dynamic URL buttons for one-tap checkout
- Catalog and multi-product template buttons
Cart Recovery Automation Sequence
1. Event Trigger
Customer adds items to cart on your store database, inputting checkout contact detail but leaving without buying.
2. Your Delay
Your store or automation tool waits the delay you choose (for example 60 minutes) and checks whether the order was completed.
3. Reminder Sent
If not, your backend calls POST /api/v1/messages with an approved cart-reminder template and a checkout link. Replies land in your shared inbox.
WhatsApp Cart Recovery vs. Email Cart Recovery vs. Web Push Notifications
Compare two-way replies, opt-out handling and rich product content.
| Parameter | WhatsApp Recovery | Email Recovery | Web Push Alerts |
|---|---|---|---|
| Two-Way Replies | ✓ (Replies land in your shared inbox) | Separate support mailbox | ✗ (One-way only) |
| User Opt-out Friction | Low (STOP opt-outs honoured automatically) | High (Subscribed lists) | Immediate blocker settings |
| Multimedia Catalogs | ✓ (Carousel, catalog and multi-product templates) | ✓ (Heavy static HTML) | ✗ (Static small icon) |
Send an abandoned-cart reminder template
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: cart-88231-reminder-1" \
-d '{
"to": "+919812345678",
"type": "template",
"template": {
"name": "cart_reminder",
"language": "en_US",
"headerMediaUrl": "https://cdn.example.com/products/kurta-blue.jpg",
"parameters": [
{
"text": "Aarti"
},
{
"text": "Blue cotton kurta"
}
],
"buttonParameters": [
{
"index": 0,
"subType": "url",
"text": "cart-88231"
}
]
},
"clientReference": "cart-88231"
}' 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': 'cart-88231-reminder-1',
},
body: JSON.stringify({
"to": "+919812345678",
"type": "template",
"template": {
"name": "cart_reminder",
"language": "en_US",
"headerMediaUrl": "https://cdn.example.com/products/kurta-blue.jpg",
"parameters": [
{
"text": "Aarti"
},
{
"text": "Blue cotton kurta"
}
],
"buttonParameters": [
{
"index": 0,
"subType": "url",
"text": "cart-88231"
}
]
},
"clientReference": "cart-88231"
}),
});
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': 'cart-88231-reminder-1',
},
json={
"to": "+919812345678",
"type": "template",
"template": {
"name": "cart_reminder",
"language": "en_US",
"headerMediaUrl": "https://cdn.example.com/products/kurta-blue.jpg",
"parameters": [
{
"text": "Aarti"
},
{
"text": "Blue cotton kurta"
}
],
"buttonParameters": [
{
"index": 0,
"subType": "url",
"text": "cart-88231"
}
]
},
"clientReference": "cart-88231"
},
)
data = res.json()['data']
print(data['id'], data['status']) <?php
$body = <<<'JSON'
{
"to": "+919812345678",
"type": "template",
"template": {
"name": "cart_reminder",
"language": "en_US",
"headerMediaUrl": "https://cdn.example.com/products/kurta-blue.jpg",
"parameters": [
{
"text": "Aarti"
},
{
"text": "Blue cotton kurta"
}
],
"buttonParameters": [
{
"index": 0,
"subType": "url",
"text": "cart-88231"
}
]
},
"clientReference": "cart-88231"
}
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: cart-88231-reminder-1',
],
CURLOPT_POSTFIELDS => $body,
]);
$data = json_decode(curl_exec($ch), true)['data'];
echo $data['id'] . ' ' . $data['status']; E-Commerce Use Case — FAQ
How do I integrate WhatsApp with my e-commerce platform?
Through the REST API. When an order is placed, shipped or delivered, your store backend (or a Zapier, Make or Pabbly scenario listening to Shopify or WooCommerce events) calls POST /api/v1/messages with an approved template. There is no native Shopify or WooCommerce plugin. Delivery receipts and customer replies come back to you on signed webhooks.
Can I integrate WhatsApp with regional e-commerce and shipping gateways?
Yes. Any system that can make an HTTPS request, such as a regional carrier's tracking webhook, a local checkout or an automation tool, can call POST /api/v1/messages to send a tracking-update template.
Can I send automated customer review requests?
Yes. When your platform marks an order delivered, wait the delay you choose in your own system, then send a review-request template with quick-reply rating buttons. The customer's tap arrives on the message.received webhook as a quick reply whose reply.title is the button text, and context.clientReference points back to the order you sent it for.
How are WhatsApp transactional messages billed?
Meta charges for every delivered template, billed directly to your own WhatsApp Business Account. Since 1 October 2026 that includes utility templates such as order updates sent while the 24-hour customer service window is open. Free-form service replies are free up to a monthly allowance per number, then charged. StartMessaging charges a flat subscription only, with no per-message markup.
Can I see which campaign led to a sale?
Yes, on the Business plan. When an order is paid, call POST /api/v1/conversions (API key with the conversions:write scope) with the customer's phone number and, optionally, the order ID, value and currency; repeating a call with the same order ID is safe. StartMessaging credits the sale to the campaign whose message last reached that customer within your conversion window (1–30 days, 7 by default), and the campaign report shows its customers, value and conversion rate. Leads moved to a won pipeline stage count too.
Can I send birthday offers or re-send to customers who didn't read?
Yes, on the Business plan. Save the birthday (or any other date) on the contact, and a campaign that repeats every day sends to whoever matches that day; a day with nobody is skipped. To follow up a campaign, retarget the people who got it but didn't read it, read it but didn't reply, or tapped a particular button. Set quiet hours in your workspace so campaigns never send overnight — sending waits and carries on by itself. Opted-out contacts are always skipped.
Boost Your E-Commerce with WhatsApp
Start with a 14-day free trial of the Business plan.