Customers & Automation
SMS Delivery Status and Failure Alerts
Last updated 8 July 2026
SMS Delivery Status and Failure Alerts
TL;DR
- SMS delivery status tracking records carrier callbacks for sent, delivered, failed, and undelivered SMS.
- Failed transactional SMS creates a high-priority sms_delivery_failed Activity item in Needs action.
- Booking-linked failure rows can show Resend, plus Open booking and Mark as read actions.
- Campaign, marketing, inbox-reply, and auto-respond failures are not turned into these transactional failure alerts.
SMS delivery status tracking tells operators when an important customer SMS did not arrive. OpenChair records Twilio status callbacks against the original delivery log, then creates an Activity alert when a transactional SMS fails. The alert helps the team resend the confirmation or contact the customer another way before the missed message causes a booking problem.
What SMS delivery status tracking records
SMS delivery status tracking records status callbacks from Twilio against OpenChair's delivery log. The webhook accepts carrier status updates only when the Twilio signature is valid.
| Twilio status | OpenChair status | What it means |
|---|---|---|
sent |
sent |
Twilio accepted the SMS for delivery. |
delivered |
delivered |
Twilio confirmed delivery to the carrier or device where supported. |
failed |
failed |
Twilio reported delivery failure. |
undelivered |
failed |
Twilio could not deliver the SMS. |
| Other status | Not mapped | The webhook accepts the callback but does not change the delivery status. |
OpenChair also runs a reconciliation job for SMS sends that were accepted but still need delivery confirmation. It scans recent pending SMS logs after 30 seconds, searches Twilio around the original send time, and marks unresolved rows failed after 5 minutes.
When failure alerts appear
Failure alerts appear when a transactional SMS fails or cannot be confirmed. The Activity type is sms_delivery_failed, the priority is high, and the row appears in Needs action.
OpenChair alerts on these transactional message types:
| Message type | Friendly label |
|---|---|
CONFIRMATION |
Confirmation SMS failed |
RESCHEDULE |
Reschedule SMS failed |
REMINDER |
Reminder SMS failed |
RECEIPT |
Receipt SMS failed |
ACKNOWLEDGEMENT |
Acknowledgement SMS failed |
DECLINE |
Decline SMS failed |
COUNTER_OFFER |
Counter-offer SMS failed |
EXPIRY |
Expiry SMS failed |
RECONFIRMATION_REQUEST |
Reconfirmation SMS failed |
INVOICE |
Invoice SMS failed |
INVOICE_REMINDER |
Invoice reminder SMS failed |
MAGIC_LINK |
Magic link SMS failed |
WAITLIST |
Waitlist SMS failed |
DEPOSIT_REQUEST |
Deposit request SMS failed |
Marketing, campaign, inbox-reply, auto-respond, review request, welcome, reconnect, and consultation-invite failures are excluded from transactional failure alerts. Those sends are handled by their own send surfaces or delivery logs.
What the Activity alert shows
The Activity alert tells the operator which transactional SMS failed and, when possible, which customer or booking it relates to. The row uses a message-warning icon and a destructive action tone.
| Alert state | Label or copy |
|---|---|
| Single failure title | Confirmation SMS failed, Reminder SMS failed, or another friendly label |
| Single failure message | We couldn't deliver [customer]'s [message type] SMS. Tap to resend or contact them. |
| Carrier reason | Added as carrier code [code] when Twilio provides an error code |
| Multiple failures title | Multiple SMS deliveries failed |
| Multiple failures message | States how many confirmation or reminder SMS messages failed in the last 15 minutes |
To prevent Activity from flooding during carrier incidents, OpenChair caps individual sms_delivery_failed alerts at 5 per venue in a 15-minute window. After that, it emits one aggregate failure alert for the window.
Actions on a failure alert
Booking-linked SMS failure alerts can be handled directly from Activity. The inline action calls the booking resend path, which resends the booking confirmation by email and SMS where contact details are available.
| Action | When it appears | Result |
|---|---|---|
| Resend | The alert is linked to a booking | Resends the booking confirmation. |
| Resending... | The resend request is running | Prevents duplicate taps while the resend is pending. |
| Open booking | The alert has booking route data or is used as a secondary action | Opens the booking detail. |
| Mark as read | The row is unread and supports secondary actions | Removes the row from Unread without resolving the issue. |
Successful resend shows Confirmation resent. If resend fails, the row shows Unable to resend the confirmation with retry and dismiss controls.
Note
Booking confirmation resend has a 60-second cooldown. If someone taps resend again too quickly, OpenChair asks them to wait before trying again.
Customer delivery health alerts
Customer delivery health alerts are separate Activity rows that can appear alongside SMS failure tracking. They use the type customer_delivery_health_changed, title Customer messages blocked, and action Fix contact method.
SMS failure tracking emits a customer delivery health row when a carrier failure or unresolved Twilio timeout suggests the customer may not receive future SMS. SMS STOP replies also create this health alert. The row routes to customer communication context when a customer can be identified.
Who can use this
| Role | Access |
|---|---|
| Owner | Sees venue-wide SMS delivery failure alerts, can resend booking confirmations, and can open related bookings or customer records. |
| Manager | Sees venue-wide SMS delivery failure alerts, can resend booking confirmations, and can open related bookings or customer records. |
| Team | Sees only notifications targeted directly to them. Venue-wide SMS delivery failure alerts are not shown to staff by default. |
Common mistakes
The most common mistake is assuming sent means the customer received the SMS. Sent means Twilio accepted the message; delivered means Twilio confirmed delivery where supported.
Another common mistake is expecting every failed SMS to create the same alert. sms_delivery_failed is for transactional SMS where the customer is waiting for an operational message. Marketing and inbox-reply failures are handled by their own surfaces.
Do not mark a failed SMS row as read until someone has resent it or contacted the customer another way. Mark as read only changes Activity visibility.
Troubleshooting
| Issue | Solution |
|---|---|
| The customer says they did not get a confirmation | Open Activity > Needs action and look for sms_delivery_failed. Use Resend if the row is booking-linked, or open the booking and contact the customer by another channel. |
| Resend is not visible | The alert may not have a booking link. Use Open booking if available, or search the customer and send a manual message. |
| Resend says to wait | Booking confirmation resend has a 60-second cooldown. Wait for the number of seconds shown, then try again. |
| Many SMS failures appear at once | Treat it as a possible carrier, number, or contact-data issue. Check the dedicated number in Settings > SMS & Messaging and contact support if the pattern continues. |
| A failed SMS is not in Needs action | Confirm the failed message was transactional. Campaign, marketing, inbox-reply, and auto-respond failures do not create sms_delivery_failed Activity rows. |
FAQ
What is SMS delivery status tracking?
SMS delivery status tracking records carrier updates from Twilio and marks each SMS as sent, delivered, or failed in OpenChair delivery logs. Failed or undelivered carrier statuses are mapped to failed.
When does OpenChair create an SMS failure alert?
OpenChair creates an Activity alert when a transactional SMS fails or cannot be confirmed. Transactional messages include confirmations, reminders, receipts, invoices, magic links, waitlist messages, and deposit requests.
Who sees SMS delivery failure alerts?
Owners and managers see venue-wide SMS delivery failure alerts in Activity. Staff see only notifications targeted directly to them, so venue-wide delivery failure alerts are not shown to staff by default.
Can I resend a failed SMS from Activity?
Yes, if the alert is linked to a booking. Click Resend to send the booking confirmation again; the action shows Resending... while it runs and Confirmation resent. on success.