01What is send-time optimisation?
Send-time optimisation (STO) is choosing when each WhatsApp message goes out so it arrives at a moment the recipient is likely to read and act on it. It works at three levels: picking the best hour and weekday for a whole campaign, picking different slots for different segments (office workers, students, shop owners), and, in its most advanced form, picking a slot for each recipient from their own history of reading and replying.
The data comes from your own message events. Every business-initiated message has a send time, the statuses webhook later reports delivered and read with their own timestamps, and replies and button taps arrive through the messages webhook. Grouping the gap between delivery and read or reply by weekday and hour shows when an audience really engages. Users can switch off read receipts, so a read-based model understates some people; replies and clicks are the stronger signals.
Send-time optimisation decides when; Frequency Capping decides how often, and the two work together, because a perfectly timed message is still one too many if the contact has had three this week. It is also different from A/B Testing, although an A/B test of two send times is the honest way to check that a chosen slot really beats the default.
Key takeaways
- Send-time optimisation chooses the hour and day each message goes out, for a whole audience or per recipient, from when people actually read and reply.
- On WhatsApp the signals are delivered and read statuses, replies and button taps, all timestamped in your webhooks.
- The Cloud API has no 'send at' field: scheduling and per-recipient timing live in your own system or messaging platform.
- At the default 80 messages per second, 100,000 messages take about 21 minutes, so a send time is really a send window.
- Give marketing templates a time-to-live that matches the offer, so a message that cannot be delivered in time is dropped.
02 · How it works, step by step
How does send-time optimisation work?
- Step 1
Collect timestamps for every message
Store the send time, the
deliveredandreadtimestamps from status webhooks and the time of any reply or button tap, keyed bywamidand recipient. Convert everything to the recipient's local time: IST for Indian numbers, but not for contacts on +971 or +44 numbers. - Step 2
Build the engagement heatmap
For each weekday and hour, compute the share of delivered messages read or replied to within a fixed window such as 60 minutes. Use several weeks of data and ignore cells with tiny samples.
- Step 3
Choose slots by segment or by recipient
Pick the best one or two slots per segment. For per-recipient timing, use a contact's own most frequent reply hour once they have enough history, and fall back to their segment's slot until then.
- Step 4
Schedule inside your limits
Queue sends to start at the chosen slot and pace them within throughput, up to 80 messages per second per number by default. A 100,000-message campaign therefore takes about 21 minutes; per-recipient timing spreads it across the day.
- Step 5
Test against a control
Split a campaign: half at the default time, half at the optimised slot. Compare click and reply rates, not only reads, before rolling the model out to every send.
03Send-time optimisation: key facts and limits
- Default throughput
- Up to 80 messages per second per number
- 100,000 messages at 80 mps
- About 21 minutes
- Marketing template TTL
- Default 30 days, customisable from 12 hours to 30 days
- Timing signals
- delivered and read statuses, replies, button taps
- Scheduling field in the Cloud API
- None; schedule in your own system
- Read receipts
- Users can turn them off, so reads are understated
04Example: One saree catalogue, two audiences, two times
A saree seller in Surat sends a weekly new-arrivals template to about 30,000 opted-in contacts at 11 am, a time nobody had questioned. Six weeks of status and reply webhooks, turned into a heatmap, show two different groups: retail shoppers read fastest between 1 pm and 2 pm and between 8 pm and 10 pm on weekdays, while resellers who buy in bulk reply fastest at 9–10 am. The seller splits the send: resellers at 9:30 am, retail shoppers at 8:30 pm, both with a 12-hour time-to-live on the template so a stale offer is dropped rather than delivered the next day. A holdout kept at 11 am shows the evening send earning clearly more replies for the same number of paid deliveries.
05 · Common mistakes, and the fix
Common mistakes with send-time optimisation
Optimising for reads alone
A slot with a high read rate but few clicks or replies is not a better slot. Score slots on the action the campaign wants, and use reads only as a tie-breaker.
Using one time zone for everyone
A list of Indian numbers with a few thousand NRI contacts in the Gulf, the UK or North America will wake some of them at night. Derive the zone from the country code and send by local time.
Sending everything at the 'best' time
If every campaign targets 8 pm, contacts receive all your messages together, alongside every other business that read the same advice. Spread campaigns across two or three strong slots and respect frequency caps.
Ignoring how long a large send takes
A 9 am flash sale to 300,000 contacts at 80 messages per second is still sending after 10 am. Start earlier, pace by segment, or qualify for higher throughput before the campaign.
Trusting a tiny sample
A per-recipient slot learned from two replies is noise. Require a minimum history, such as five engaged messages, before overriding a contact's segment slot.
06Why does send-time optimisation matter?
WhatsApp messages are read quickly, so the hour a campaign lands decides whether it sits at the top of the chat list or under a day of family-group messages. A well-timed send lifts reads, clicks and replies for the same number of paid deliveries, while a badly timed one, such as a promotion that buzzes at 6 am, invites the blocks that lower a number's quality rating. Timing also interacts with delivery mechanics: throughput, per-user marketing limits and the Marketing Messages API's own delivery optimisation all mean a large campaign spreads over a window that is better planned than discovered.
07 · Tips from the bench
Best practices for send-time optimisation
- Avoid late-night and very early marketing sends; the message that buzzes at 6 am is the one that gets blocked.
- Treat festival weeks and month-start paydays as separate seasons; behaviour in Diwali week is not an ordinary week.
- Time utility messages to the event, not the heatmap: an OTP or a delivery update goes out immediately.
- Rebuild the heatmap every quarter, because habits shift with seasons, exams and working patterns.