WhatsApp Reminders for Appointments, Renewals & Due Dates
One daily send that reminds people a set number of days before their appointment, renewal or due date — plus the operator mistake that would message the same person eight days running.
A date-based reminder is a daily WhatsApp broadcast that filters contacts on a future date you've stored — an appointment, a renewal, a due date — using the operator is in exactly … days. Set it to 1 and every morning it reaches precisely the people whose date is tomorrow, and nobody else. It is the closest thing to a set-and-forget campaign in this whole toolkit.
Reminders are also the only date campaign on this list that saves money rather than spending it. A no-show costs you a booked slot; a missed renewal costs you a subscriber; a forgotten invoice costs you working capital. This playbook covers the field, where the dates come from, the exact filter, a reminder-ladder table, the one operator mistake that will message the same person eight days running, and what to measure.
How it differs from the other date campaigns
All three date playbooks share the same segment builder, but they point in different directions and it's worth being clear which you need. A win-back looks backwards — "more than 60 days since the last order". A birthday looks sideways, ignoring the year to match the same calendar square annually. A reminder looks forwards at a specific, one-time, future-dated event that will happen once and then be over.
That forward direction changes the economics too. Most reminders are utility messages rather than marketing — you're telling someone something they need to know, not selling. That matters for cost, as covered further down.
How the build works
You store the relevant date on each contact in a Date field. A recurring broadcast set to Daily carries a segment whose only condition is appointment_date · is in exactly … days · 1. Every occurrence rebuilds its audience from that filter, so today's send catches tomorrow's appointments, tomorrow's send catches the day after's, and so on indefinitely. You never maintain a list.
Step 1 — Create the date field
- Go to Settings → Contact Attributes.
- Name it for the thing you're reminding about: "Appointment date" (appointment_date), "Renewal date" (renewal_date), or "Due date" (due_date).
- Set the type to Date. A Text field will not offer the day-counting operators at all, which is the most common reason a reminder segment silently returns nobody.
- Click Add Field.
Create one field per kind of date, not per reminder. A single appointment_date field can feed a 7-day reminder, a 1-day reminder and a same-day confirmation — three broadcasts, one field.
Step 2 — Get the dates in, and keep them current
This is the real work. Appointment and renewal dates live in your booking system, billing tool or CRM, and unlike a last-order date there is no order event to stamp from. Three routes:
- Push them in via your account's API. The dependable option. Whenever a booking or subscription is created, moved or cancelled, your system updates that contact's date field. This is a one-time setup for whoever handles your integrations, and it's the only approach that stays accurate at volume.
- Set the date by hand on the contact. Perfectly fine below roughly 20 bookings a week — a salon or clinic can do this as part of taking the booking.
- Stamp it from an automation where the date is something your system already witnesses.
The rescheduling trap. A reminder is only as good as the freshness of the field, and a stale date is worse than no reminder — it messages someone about an appointment they already moved. Whatever route you choose, make sure the field is updated when a booking changes, not only when it's created. If you can't guarantee that, keep the lead time short: a 1-day reminder is wrong far less often than a 7-day one, because there's less time for plans to change.
Contacts with no date, or an unreadable one, never match any date filter and are simply skipped.
Step 3 — Choose the lead time
Lead time should match how much notice the recipient needs to act. A dentist appointment needs a day (enough to rearrange, not enough to forget again). A subscription renewal needs a week (enough to update a card or cancel without feeling ambushed).
| Use case | Field | Filter | Lead time | Why |
|---|---|---|---|---|
| Salon / clinic appointment | appointment_date | is in exactly … days · 1 | Day before | The classic no-show reducer. Long enough to rearrange, close enough to stay in memory. |
| Same-day confirmation | appointment_date | is today | Morning of | Takes no value at all — the operator means today. Best paired with an early send time. |
| Subscription renewal | renewal_date | is in exactly … days · 7 | A week before | Time to update a card or cancel cleanly. Surprise charges cause chargebacks and complaints. |
| Invoice due | due_date | is in exactly … days · 3 | Three days before | Long enough to arrange a transfer, short enough that it doesn't get filed away and forgotten. |
| Overdue chase | due_date | is more than … days ago · 3 | After the fact | The backwards operator, used forwards in spirit. Note this keeps matching every day until the date changes — pair it with a frequency cap. |
| Warranty / policy expiry | expiry_date | is in exactly … days · 30 | A month before | Renewal decisions on bigger commitments need real thinking time. |
| Course or event start | event_date | is in exactly … days · 7 and · 1 | Two nudges | Two separate daily broadcasts on the same field — joining instructions a week out, a final nudge the day before. |
The operator mistake that spams people
Two date operators look interchangeable and behave completely differently. Getting this wrong is the single most damaging error in this playbook, so it earns its own comparison:
| is in exactly … days · 7 | is within the next … days · 7 | |
|---|---|---|
| Matches | Only dates that are exactly 7 days away | Every date from today through 7 days away |
| On a daily broadcast, one contact receives | 1 message, seven days before their date | 8 messages — one every day from a week out until the day itself |
| Use it for | Every recurring reminder. This is the default and it's almost always what you want. | One-off manual sends — "everyone with something booked this week" — sent once, on purpose. |
The rule: on anything set to Repeat → Daily, use is in exactly … days. Reserve is within the next … days for a one-time send you trigger yourself. Eight consecutive reminder messages is how a healthy number gets reported.
Step 4 — Build the daily reminder
- Create a new broadcast and pick your reminder template. Include the detail that makes the message useful — the time, the amount, the address — as personalization variables. "You have an appointment tomorrow" with no time in it just makes the customer call you.
- Set the schedule to Repeat → Daily and pick a sensible hour. Times run in your own timezone. For a day-before reminder, late morning or early evening beats 7am.
- Under Audience → By segment, add one condition: appointment_date · is in exactly … days · 1.
- Click Preview recipients and sanity-check the count against how many bookings you actually have tomorrow. This is the moment you find out whether the field is being kept current.
- Test-send to yourself, then activate. Leave the Until date empty so the series runs indefinitely.
For two nudges, duplicate the whole thing: a second daily broadcast on the same field with the value set to 7, and its own message. They don't interfere — a contact 7 days out matches only the first, and the same contact six days later matches only the second.
A worked example, with real dates
Today is 18 July 2026, and you run two daily reminders on appointment_date: one at is in exactly … days · 1 and one at · 7. The filter counts whole calendar days in your timezone, so "in exactly 1 day" means the date 19 July — not "24 hours from the moment of sending".
| Customer | appointment_date | Days away | Gets the 1-day reminder today? | Gets the 7-day reminder today? |
|---|---|---|---|---|
| Ayesha | 19 July 2026 | 1 | Yes | No |
| Bilal | 25 July 2026 | 7 | No — he'll get it on 24 July | Yes |
| Chen | 22 July 2026 | 4 | No — his turn is 21 July | No — his 7-day moment was 15 July |
| Dania | 10 July 2026 | −8 (past) | No | No |
Chen illustrates the pattern nicely: he isn't skipped, he's simply not due today. The same series that reaches Ayesha this morning reaches Chen in three days, with no list-building in between. Dania's appointment is in the past and no forward filter will ever match it again — which is exactly right, and also why nothing needs cleaning up after an event passes.
What a good reminder message says
- State the fact first. "Your appointment is tomorrow, Saturday 19 July at 3pm." The reader should be able to act on line one without reading line two.
- Add the specifics that prevent a phone call — location, amount due, what to bring, who they're seeing.
- Give one action. Confirm, reschedule, or pay. One, not three.
- Say how to change it. "Reply RESCHEDULE and we'll sort it." A reminder that offers no way out just converts a no-show into an annoyed no-show.
- Keep it short and unpromotional. Adding "and 10% off your next visit!" changes the template's category to marketing, which changes what it costs. See below.
Expect replies, and plan for them. Reminders generate more inbound than any other broadcast type — reschedules, questions, "wrong day". Make sure someone is watching the shared inbox in the hours after the send goes out.
Cost: why reminders are the cheap ones
Category is decided by content. A pure reminder qualifies as utility, and that is worth real money: since 1 July 2025 WhatsApp charges per delivered message, and "Utility templates delivered within an open customer service window are free" — outside that window they're charged, but at the cheaper utility rate rather than the marketing one (Meta's pricing documentation). You're also only charged when a template message is actually delivered.
The practical consequence: keep offers out of your reminder templates. Bolting a discount onto an appointment reminder pushes the whole template into the marketing category, which costs more, needs different approval, and makes the message legitimately annoying. Send the offer as a separate campaign if you want one.
One more cost-adjacent detail: the frequency cap on the Opt-outs page applies to marketing messages only, so genuine utility reminders are never capped — an order update or an appointment reminder always gets through. That's the correct behaviour, but it does mean a mis-categorised reminder ladder has nothing stopping it. See opt-outs, frequency caps and quality.
Limits and timing details
- They count towards your daily limit. Reminders are business-initiated template messages, so they consume your messaging tier like anything else. Meta's tiers run 250 → 2,000 → 10,000 → 100,000 → unlimited unique recipients per rolling 24 hours, and new business portfolios start at 250 (Meta's messaging limits documentation). For most appointment books this is irrelevant; for a 5,000-booking-a-day operation on Tier 2K it very much isn't.
- Whole days, your timezone. "In exactly 1 day" means tomorrow's calendar date, not 24 hours from now. A 9am send about a 10am appointment tomorrow gives 25 hours of notice, not 24.
- Same-day is a different operator. Use is today, which takes no value.
- Opted-out contacts are skipped by every broadcast, including reminders. If a customer needs an operational message and has opted out of your list, that's a phone call, not a workaround.
What to measure
| What to look at | Where you find it | What a good result looks like |
|---|---|---|
| Recipient count vs. your actual book | Preview recipients, compared with tomorrow's real bookings | They should match. A gap is a data problem — the field isn't being updated on booking or on reschedule — and it's the first thing to check every week. |
| Delivered vs. failed | The per-recipient delivery report | Near-total delivery. Reminders go to people you have an active relationship with, so failures here usually mean a bad phone number in your booking system. |
| Reply volume | Shared inbox in the hours after each send | A steady trickle of reschedules is the campaign working — a moved booking is worth far more than an empty chair. |
| No-show or late-payment rate | Your own booking or billing system, month over month | The only metric that matters, and it isn't in the campaign report. Note the rate for a month before you switch reminders on so you have something to compare against. |
Don't judge reminders on read rate. Recipients who disable read receipts report only as "delivered" however carefully they read the message, so the read number is a floor rather than a measurement.
Common mistakes
- Using is within the next … days on a daily series. Eight messages instead of one. Use is in exactly … days.
- A Text field instead of a Date field. No date operators appear and the segment matches nobody.
- Not updating the field on reschedule. Reminding someone about an appointment they already moved damages trust more than sending nothing.
- Adding a promotion. It re-categorises the template as marketing, raising the cost and the annoyance.
- Weekly instead of daily. A weekly series only fires on one weekday, so six days of appointments get no reminder at all.
- No reply route. Always give a way to reschedule or ask a question, and staff the inbox after the send.
Frequently asked questions
Can I send a WhatsApp reminder a day before an appointment?
Yes. Store the appointment date in a Date field, then run a daily recurring broadcast whose segment filters 'appointment_date is in exactly 1 day'. Each morning it reminds everyone whose appointment is the next calendar date in your timezone — so a 9am send about a 10am appointment tomorrow gives 25 hours of notice, not 24.
What's the difference between 'is in exactly N days' and 'is within the next N days'?
'Is in exactly 7 days' matches only dates exactly 7 days away, so on a daily broadcast each contact gets 1 message. 'Is within the next 7 days' matches every date from today through day 7, so the same contact gets 8 messages — one a day until the date arrives. Always use 'is in exactly' on a recurring daily series; save 'within the next' for one-off manual sends.
How do I get appointment or renewal dates into ConvoFly?
Push them into the contact's Date field via your account's API whenever a booking or subscription is created, changed or cancelled — that's the only route that stays accurate at volume. Below roughly 20 bookings a week you can set the date by hand on the contact. The critical part is updating on reschedule, not just on creation.
Can I remind people twice — a week before and a day before?
Yes. Run two daily recurring broadcasts on the same date field: one filtered 'is in exactly 7 days' and one 'is in exactly 1 day', each with its own message. They don't overlap — a contact matches the first only on day 7 and the second only on day 1.
Do WhatsApp reminders cost money?
A pure reminder qualifies as a utility template, which is the cheap category: since 1 July 2025 WhatsApp charges per delivered message, and utility templates delivered inside an open 24-hour customer service window are free, while those outside it are charged at the utility rate. Adding a discount to the message re-categorises it as marketing and raises the cost, so keep offers in a separate campaign.