Error codes that stay put.
Hopwire maps every provider, operator, DLT and Meta code to one catalogue of stable codes. The same code appears in API errors, webhooks, the explorer and the audit trail.
What you get
Request errors
Codes such as validation_failed, tenant_required, intent_not_allowed, destination_not_allowed and otp_velocity_limited, with HTTP statuses.
Delivery outcomes
Grouped codes such as recipient.not_on_whatsapp, template.mismatch, sender.suspended and provider.submission_unknown.
Retry and fallback built in
Each outcome says whether Hopwire retries it, whether it falls back, and whether the provider may charge.
Never renamed
Codes are stable. The catalogue is versioned and changes follow a deprecation policy.
Unknown codes are flagged
An unmapped provider code shows as unclassified with the raw value, is never retried, and alerts Hopwire staff.
Questions
Where do I find the code for a failed message?
In status_code on the message and each attempt, in webhook payloads and in the audit trail.
Do the codes depend on the provider?
No. A DLT template mismatch shows the same code whichever SMS provider reported it.
What does provider.submission_unknown mean for me?
The provider did not answer. Hopwire does not resend; send a new message if the recipient did not receive it.
Related
- APIAvailableA versioned JSON API at api.hopwire.io for messages, templates, tenants, senders, webhooks and usage, with idempotency and cursor pagination.
- Message explorerAvailableFind any message and open a step-by-step audit trail of its checks, attempts, provider responses and webhooks, with sensitive values masked.
- RoutingAvailableEvery message tries WhatsApp and falls back to SMS after a confirmed failure or timeout. Override the channel per send.
Start with the beta.
Hopwire is free during the invite-only beta. Tell us what you send and we will reply by email.