SMS delivery events
Application Logs record delivery events for SMS messages sent by Clerk, including phone verification codes, one-time passcodes, and password reset codes. When a user reports a missing code, these events show whether the message was accepted, delivered, rejected, or left unconfirmed.
SMS events appear in Application Logs and follow the same retention rules. The SMS logs view shows only sms.* events and adds a phone-number column and filter. To learn how to inspect event details and understand retention, see the Logs overview.
The delivery lifecycle
A message can generate several events as its delivery status changes. Not every intermediate state is recorded, so the first event may already show the final delivery status.
The typical path is sms.accepted → sms.delivered. An sms.failed event means delivery could not proceed. An sms.undeliverable event means the message was accepted but could not be delivered. An sms.unconfirmed event means the final outcome is unknown.
Understanding failures
The sms.failed and sms.undeliverable events include a normalized reason that you can use to understand and filter failures.
For privacy, these events never include the message body, the verification code, or the delivery provider's identity.
Debugging a missing SMS
When a user reports they never received a code, open the SMS logs view in the Clerk Dashboard — it lists only sms.* events — and filter by the recipient's phone number, then check the most recent event for that message:
- No
sms.*event — First, confirm that the event would still be within your plan's Application Logs retention window: 1 day on Hobby, 7 days on Pro, or 30 days on Business. Within that window, no event usually means the send was not attempted. Older events may no longer be available. sms.failed— ifrejected_before_sendis true, Clerk stopped the send before contacting a provider. Otherwise, inspectreasonandraw_errorfor more detail.sms.acceptedwith nosms.delivered— the message left Clerk but the carrier never confirmed. Delivery receipts can lag; a lasting gap points to a carrier or handset issue for that number.sms.undeliverable— the carrier bounced it.destination_unreachableandinvalid_phone_numberpoint at the number itself.sms.unconfirmed— no delivery signal exists; if the user did not receive the code, have them retry.
All events for a message share a trace ID. Filter by it to view the message's full timeline.
Supported events
For the full list of SMS event types alongside every other Application Logs event, see Supported events.
Feedback
Last updated on