SMS and WhatsApp
Some customers live in their inbox. Many more read a text within minutes. The SMS and WhatsApp module sends confirmations, reminders and change notices by text, through your own Twilio account or Meta’s WhatsApp Cloud API, and only to customers who ask for them on the booking form.
You pay Twilio or Meta for each message. Core Bookings adds no fee of its own.
Turn It On
- Go to Bookings → Settings → Modules, switch on SMS and WhatsApp and click Save modules.
- Open Bookings → Settings → SMS and WhatsApp and add a provider under Channels and providers.
- In each service that should send messages, set Phone number field (under Customer details and policy) to Optional or Required.
- Click Save messaging settings, then use Send a test message to check the connection.
Connect Twilio or WhatsApp
- SMS through Twilio: tick Send SMS through Twilio and fill in Twilio Account SID (starts with AC), Twilio Auth Token and Twilio SMS sender, an international number such as +15551234567 or a Messaging Service SID (MG…).
- WhatsApp through Twilio: set WhatsApp to Through Twilio and add the Twilio WhatsApp sender.
- WhatsApp through Meta: set WhatsApp to Through the WhatsApp Cloud API (Meta) and add the WhatsApp phone number ID, a permanent WhatsApp access token and the Meta app secret.
Credentials are stored encrypted. Leave a saved field blank to keep it. Then copy the addresses from Provider webhooks into your provider: the Twilio “A message comes in” webhook into your Twilio number’s settings, or the WhatsApp Cloud API callback URL and WhatsApp verify token into your Meta app, subscribed to messages. That’s how STOP replies and delivery receipts reach your site.
What Gets Sent
| Message | Sent when |
|---|---|
| Booking confirmed | A booking becomes confirmed: created, paid, approved or claimed from the waitlist. |
| Appointment reminder | Reminder (hours before) the start. The default is 24, and 0 sends no reminder. |
| Booking rescheduled | The appointment moved. |
| Booking cancelled | The customer or staff cancelled. |
| Waitlist place offered | A freed time is offered to a waitlisted customer. |
Under Messages, untick a message to stop sending it, and edit its SMS text (up to 1,000 characters) to change the wording. Placeholders include {name}, {service}, {when}, {staff}, {location}, {manage_url}, {claim_url}, {expires} and {site}, and times use the customer’s timezone.
WhatsApp only delivers business messages from templates Meta has approved. For each message, add the Template name or Content SID, the Language code (such as en_US) and the Variables in template order, such as name,service,when. A message without a template sends nothing on WhatsApp.
Each message is checked again right before it goes out. If the booking changed in the meantime, it’s skipped, so a customer never gets a stale time.
Opt-in, Opt-out and Quiet Hours
- The booking form shows an unticked opt-in under Appointment messages only when the service asks for a phone number and a channel is ready. With both SMS and WhatsApp ready, the customer picks one.
- Opt-in text is the wording next to the checkbox. The exact wording is saved with each booking, so changing it later never rewrites past consent.
- A reply of STOP (or UNSUBSCRIBE, CANCEL, END, QUIT and similar) adds the number to Opt-outs and cancels its queued messages. START opts it back in. You can also add or remove a number by hand.
- Quiet hours start and Quiet hours end (24-hour times, such as 21:00 and 08:00) hold messages due in that window until it ends, in the customer’s timezone. A confirmation for a booking made in the last 15 minutes and waitlist offers go out at once.
- Default country calling code (such as 1 or 44) is used for numbers typed without a +. Leave it blank to require international numbers.
Track Delivery
Recent messages lists each message with its status. The appointment panel shows the messages for that booking, and sent or failed ones appear in its timeline with a masked number. A provider saying it accepted a message isn’t the same as delivery; the status moves to delivered or read only when the provider reports it.
Good to Know
- Consent is per booking. A later booking without the tick gets nothing, even for the same number.
- Appointments staff enter in the admin never carry an opt-in, and imported bookings never trigger messages.
- Send test message makes one real attempt and reports exactly what the provider answered.
- Message logs are deleted after 90 days. Opt-outs are kept as a hashed record so the number isn’t messaged again.
- If your site sits behind a proxy that rewrites the address, Twilio’s signature check can fail. The webhook address Twilio uses must match the one on the screen.
- To send extra texts on your own schedule, use the SMS action in Automations.