One set of words for why a message failed
ImprovementWeek 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, anddelivery_errorfor anything else. The provider’s raw code is unchanged inprovider_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 valuedelivery_errorfor an opted-out or unreachable number, or on a bare code instatus_reason, match on the new word or onprovider_error_codeinstead. - 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