Skip to main content
When a message fails, the message.failed webhook payload carries two fields describing why:
  • error_code - a short, stable code identifying the failure (e.g. "300", "012").
  • error_message - the human-readable label for that code, exactly as listed in the table below.
The same codes appear in the project error report (GET /v1/projects/{id}/error-codes), conversation CSV exports, and data exports, so a code seen in a webhook can be cross-referenced anywhere else in the platform.

Code format

Most codes are three digits with leading zeros preserved ("001", "012", "300"), so they align at a consistent width. A small number of codes fall outside that family and arrive at their full length (e.g. "41000"). Treat error_code as an opaque string, not a number: parsing "012" as an integer loses the leading zero. If a message fails with a code not listed below, the code is passed through as-is with a best-effort error_message (or "Unknown error" when no further detail is available). Email support@politicalcomms.com with the code and the message_id and we will investigate.

Categories

Every code belongs to a category that tells you how to react:

All error codes

The error_message column is the exact string delivered in the webhook payload.