← Back to What's New

One set of words for why a message failed

Improvement

Week of September 30, 2026

When a text is not delivered, the Message Log says why. Until now that reason could be one of Stoked’s own words, a bare provider code such as 30003, or the provider’s English sentence, depending on how the failure was reported. It is now always one of a short list, so failures can be counted and grouped.

  • A fixed list of reasons in the Message Log API: opted_out, unreachable, carrier_filtered, landline, invalid_number, content_too_large, blocked_by_opt_out, blocked_by_allow_list, no_relay_target, and delivery_error for anything else. The provider’s raw code is unchanged in provider_error_code.
  • Existing records were rewritten to the new words and marked as updated, so an API sync using filter[updated_since] receives them. If you matched on the old value delivery_error for an opted-out or unreachable number, or on a bare code in status_reason, match on the new word or on provider_error_code instead.
  • In the admin portal, the message detail page and the “delivery failed” notices on conversations and introductions show the reason in plain language, for example “Phone could not be reached”.

The API documentation is also corrected on three points about imported history: a backfilled record’s created_at is its import date, an imported outbound text is always sent because its final outcome was never recorded, and a web message’s addresses are the participants’ names as they were entered.

Related: Message Log API



© 2024-2026 Stoked — Real conversations. Real trust.