Messages are accepted but not arriving
Every call returns success. Work through this in order — the first four checks do not involve the carrier at all.
Read this article →Almost always this is a client-side timeout followed by a resend. Here is how to confirm it, and how to stop it happening.
Two sends with the same recipient and nearly identical timestamps, both accepted, is the signature of a retry. There is no idempotency key, so the platform has no way to treat the second request as the same message — it is a new message, sent and billed.
Set the time window around the incident and add the number.
Seconds apart means a resend. Far apart means two separate requests from your side.
Two distinct platform IDs with two provider IDs confirms two independent sends.
Every call returns success. Work through this in order — the first four checks do not involve the carrier at all.
Read this article →A failed status always carries a reason. The first question is which layer wrote it — the platform or the provider.
Read this article →Telling an account-level failure apart from a bad route, and what failover can and cannot absorb for you.
Read this article →