Reducing SMS Costs with WhatsApp Business API: A Guide for E-commerce

Reducing SMS Costs with WhatsApp Business API: A Guide for E-commerce

Ihor (Harry) Chyshkala
Ihor (Harry) ChyshkalaAuthor
|5 min read

The SMS bill that made me look for alternatives

Last year I was working with an e-commerce client who was spending about $800 a month just on SMS notifications. Order confirmations, shipping updates, delivery alerts — the usual stuff. That's almost $10,000 a year on messages that most customers glance at for two seconds.

The math was simple: 10,000 orders per month, 4 messages per order, $0.02 per SMS. But the solution wasn't obvious until I dug into WhatsApp Business API and discovered that most of these transactional messages could be sent for free.

Why WhatsApp makes sense (beyond the cost)

Here's what surprised me: the cost savings are actually the least interesting part. WhatsApp messages have a 98% open rate. SMS hovers around 20%. Think about that — nearly every WhatsApp message gets read.

You can also send images (packed order photos), PDFs (invoices), and interactive buttons ("Track my order" with one tap). Try doing that with SMS.

And customers can reply. No extra charges. If someone asks "where's my order?" you can respond in the same conversation thread.

How WhatsApp pricing actually works

This took me a while to understand, so let me save you the confusion. WhatsApp doesn't charge per message — it charges per conversation. A conversation is a 24-hour window during which you can send as many messages as you want for one price.

There are four types of conversations:

Utility — order updates, shipping notifications, payment confirmations. Free in most regions.

Service — customer support replies within 24 hours of customer contact. Low cost.

Marketing — promotions, abandoned cart reminders. Standard pricing.

Authentication — OTPs, verification codes. Lowest cost.

The key insight: most e-commerce notifications are "utility" messages. Order confirmed, shipped, delivered — all free.

Setting Up WhatsApp Business API with Twilio

Twilio provides one of the easiest ways to integrate WhatsApp Business API into your application. Here's how to get started:

1. Enable WhatsApp in your Twilio console
2. Connect your Facebook Business Manager account
3. Get approved for WhatsApp Business API
4. Create message templates for approval
5. Integrate the API into your application

bash
1npm install twilio

Creating Message Templates

Unlike SMS, WhatsApp requires pre-approved message templates for business-initiated conversations. Templates must be created in the Twilio console and approved by WhatsApp before use:

text
1Example template for order confirmation:
2
3Template Name: order_confirmation
4Category: UTILITY
5Language: English
6
7Body:
8Your order #{{1}} has been confirmed! 🎉
9
10Order Total: {{2}}
11Estimated Delivery: {{3}}
12
13Track your order: {{4}}
14
15Thank you for shopping with us!

Variables (like {{1}}) are placeholders that you'll fill with actual values when sending messages.

Implementation: Order Confirmation

Here's how to send a WhatsApp order confirmation using Twilio:

whatsapp-notifications.js(41 lines)
1const twilio = require('twilio');
2
3const accountSid = process.env.TWILIO_ACCOUNT_SID;
4const authToken = process.env.TWILIO_AUTH_TOKEN;
5const client = twilio(accountSid, authToken);
6
7async function sendOrderConfirmation(order) {
8  try {

Using Approved Templates with Content API

For production use, you must use approved templates. Here's how to send using a template:

template-message.js(20 lines)
1async function sendTemplatedOrderConfirmation(order) {
2  try {
3    const message = await client.messages.create({
4      from: 'whatsapp:+14155238886',
5      to: `whatsapp:${order.customerPhone}`,
6      contentSid: 'HX...', // Your approved template SID
7      contentVariables: JSON.stringify({
8        1: order.id,

Complete E-commerce Notification System

Here's a complete notification service that handles different order stages:

notification-service.js(85 lines)
1class WhatsAppNotificationService {
2  constructor(twilioClient) {
3    this.client = twilioClient;
4    this.whatsappNumber = process.env.TWILIO_WHATSAPP_NUMBER;
5  }
6
7  async sendOrderConfirmation(order) {
8    return this.sendMessage(order.customerPhone, {

Integration with Order Management System

Integrate the notification service into your order processing workflow:

order-webhooks.js(35 lines)
1const WhatsAppNotificationService = require('./notification-service');
2const twilioClient = require('twilio')(
3  process.env.TWILIO_ACCOUNT_SID,
4  process.env.TWILIO_AUTH_TOKEN
5);
6
7const notificationService = new WhatsAppNotificationService(twilioClient);
8

The actual numbers

Back to my client with 10,000 orders per month. Four SMS per order at $0.02 each:

40,000 × $0.02 = $800/month = $9,600/year

With WhatsApp, those same order notifications (confirmed, shipped, out for delivery, delivered) count as utility messages. The cost? Zero. The 24-hour conversation window means all four messages fall under one free conversation.

Even if you throw in some customer service responses and the occasional promo, you're looking at maybe $50-100/month. That's a 90%+ reduction.

For bigger stores doing 100k orders monthly? We're talking $90,000+ per year in savings. At that scale, this isn't an optimization — it's a no-brainer.

The stuff SMS can't do

Cost aside, WhatsApp just does more. You can send a photo of the packed order before shipping — customers love this. Attach a PDF invoice. Add a "Track Order" button that opens your tracking page with one tap.

And when customers reply ("Hey, can I change my delivery address?"), you see it in the same thread. No separate support ticket, no lost context.

The engagement difference is real too. 98% of WhatsApp messages get opened. SMS? About 20%. Your delivery notification isn't useful if nobody reads it.

A few things I learned the hard way

Keep SMS as a fallback. Not everyone has WhatsApp, and some customers prefer SMS. Give them the choice.

Get opt-in properly. WhatsApp is strict about this. You need explicit consent before sending the first message. A checkbox at checkout works.

Template approval takes time. Submit your message templates a few days before you need them. They need to be reviewed, and rejections happen.

Monitor delivery rates. WhatsApp delivery isn't 100% (phones offline, app not installed, etc). Track it and trigger SMS fallback when needed.

Is it worth the switch?

If you're sending more than a few thousand transactional messages per month, absolutely. The cost savings alone pay for the integration work within weeks.

The implementation with Twilio took about two days for a basic setup, another week to handle all the edge cases. Nothing too complex.

My client? They're saving about $9,000 a year now. And their customers actually read the notifications.

About the Author

Ihor (Harry) Chyshkala

Ihor (Harry) Chyshkala

Code Alchemist: Transmuting Ideas into Reality with JS & PHP. DevOps Wizard: Transforming Infrastructure into Cloud Gold | Orchestrating CI/CD Magic | Crafting Automation Elixirs