Transactional messaging is the one area where picking the cheapest channel is usually the expensive decision.
The four things that actually decide this
- Will the customer want to reply? Only WhatsApp makes that natural
- Does it carry a document they will need later? Email archives better, WhatsApp searches better on a phone
- Does it need to arrive with certainty on any handset? SMS still wins
- What does a failure cost? That, not unit price, should set the budget
Where WhatsApp is clearly right
Order confirmations, dispatch and tracking updates, appointment reminders and delivery attempts. All of these invite a response — where is it, can I change it, I will not be home — and WhatsApp is the only one of the three where that response is a natural next step rather than a separate support ticket.
These are utility templates tied to a transaction, so they bill at the lower utility rate rather than the marketing rate.
Where SMS still wins
One-time passcodes, and any message where delivery to any handset matters more than richness. SMS reaches feature phones and does not depend on the recipient having an account with anyone.
It is also the sensible fallback when a WhatsApp message fails: a critical alert should not depend on one channel.
Where email is still the right tool
Anything long, anything with an attachment the customer will want in a folder, and anything they may need to forward to an accountant. Invoices are the clearest case, though sending the invoice on both channels costs little and suits both habits.
Email is also effectively free at volume, which matters when the message is genuinely optional.
Comparing cost honestly
SMS is cheapest per unit, email cheapest of all, WhatsApp the most expensive. Comparing on unit price alone leads to the wrong answer, because it ignores the cost of the message not working.
A delivery notification that is not read produces a failed delivery and a support call. Measure cost per successful outcome, and the ranking usually reverses.
- Count the support contacts each channel avoids
- Count failed deliveries caused by unread notifications
- Count the conversations a reply-capable channel starts
- Then compare against unit cost