Trace SMS delivery in Application Logs
- Category
- Product
- Published
Follow the delivery lifecycle of every Clerk-delivered SMS
Application Logs now record delivery events for SMS messages sent by Clerk, including phone verification codes, OTPs, and password reset codes. When a user reports a missing code, these events show whether the message was accepted, delivered, rejected, or left unconfirmed.
The delivery lifecycle
Each message can generate several event types, helping you distinguish between a send failure, a delivery rejection, and an unknown outcome:
sms.accepted— the delivery provider accepted the message (not yet proof it reached the phone)sms.delivered— the carrier confirmed delivery to the handsetsms.failed— the send stopped before handoff, or the provider rejected itsms.undeliverable— the carrier could not deliver it after accepting itsms.unconfirmed— the provider reported an unknown delivery outcome
Failure events carry a normalized reason — like invalid_phone_number, destination_unreachable, or rate_limited — so a failure tells you whether to fix the number, wait out a provider limit, or adjust your own configuration. The message body, verification code, and provider identity are never included.
Filtering and search
The dedicated SMS logs view lists these events, where you can filter by a single event type like sms.failed or by the destination phone number to pull up one recipient's history. Every event for a single message shares a trace, so you can follow its whole timeline end to end.
Get started
SMS events are available on all plans as part of Application Logs. Retention varies by plan. See the pricing page for details. Open the SMS logs view to investigate SMS delivery, or Application Logs to view SMS events alongside other application events. Read the documentation to learn more.
Going forward
SMS delivery events build on Clerk's ongoing observability work alongside Admin Logs and Email Logs.