Messaging Reports and Debugging Tools
Two pages drive SMS observability in Blocx:
- Messaging → Reports — aggregated trends and breakdowns.
- Messaging → Debug — single-message timeline.
For email-specific equivalents, see Email History and Reports.
Messaging Reports
Open Messaging → Reports to see SMS performance:
- Send volume over time — split by country, campaign, number, or messaging profile.
- Delivery rate — delivered / sent, with industry benchmarks overlaid.
- End-to-end latency — p50, p95, p99 broken down by carrier.
- Top error codes — sorted by volume, click to drill in.
- Inbound volume — replies, opt-outs, keyword matches.
- Per-number and per-campaign breakdowns — useful for identifying a single problematic number.
Filter at the top by:
- Time range
- Messaging profile
- 10DLC campaign
- Sending number
- Destination country
- Tag (any custom labels you set at send time)
Hover any chart for exact counts; click a bar or line to drill into the underlying messages.
Debug
Messaging → Debug is single-message inspection. Paste a message ID — from a msg_... returned by the API, a webhook event, or a row in a report — and you'll see:
- The original request — exact JSON you sent us.
- Routing decisions — chosen sending number, applied campaign, queueing latency, pool decisions.
- Carrier handoff — exact API call to the carrier and the response code and body.
- Delivery receipts — carrier-reported status, error code, and free text.
- Compliance actions — opt-out matched, suppressed recipient, content-filter trigger, throughput throttling.
If a message didn't deliver, this is the first place to look.
Common error codes
| Code | Meaning | Recommended action |
|---|---|---|
| 30003 | Unreachable destination | Phone off or out of coverage. Retry later. |
| 30004 | Message blocked | Carrier blocked the recipient or content. Investigate at Compliance Inbox. |
| 30005 | Unknown destination | Number doesn't exist. Validate recipient lists. |
| 30006 | Landline or unreachable carrier | Number can't receive SMS. Skip in future. |
| 30007 | Carrier filtered | Spam-like content or sender. Review campaign content and opt-in flow. |
| 30008 | Carrier-side unknown | Retry with exponential backoff. |
| 21610 | Recipient has opted out | Stop sending to this number. |
| 21611 | Source number not provisioned | Number not active on campaign — check Numbers → Manage. |
Full reference is linked from the debug page next to each error.
Exporting
On Messaging → Reports, apply your filters and choose Export CSV to download all matching messages, including results you have not loaded into the table yet. The file includes full message bodies, error codes, error messages, message IDs, tags, provider details, and UTC timestamps. Use it for:
- Incident reviews after a deliverability drop
- Cost-allocation reports per tag (when tags map to internal teams)
- Reconciling app-side delivery counts against carrier-confirmed delivery
Exports are prepared in your browser. Keep the page open until the download starts; you can cancel an export while it is loading. The export uses the applied filters, so apply any filter edits before exporting.
To read a truncated error in the table, select View details in the Error column. The dialog shows the full error code and message, with a Copy error details button for troubleshooting.
Status page
For platform-wide incidents (carrier outages, our own degradations), watch otterblocx.statuspage.io. Subscribe to email or SMS alerts there.