You send SMS in Vietnam for OTP, marketing, or verification. The dashboard shows 'delivery rate 70%'. Your boss asks why 30% dropped and you have no answer. The problem is not you — 'delivery rate' is a vague metric that blends three completely different things.
Layer 1: Submit Success Rate
This is the ratio at which your platform sends the request to the SMS gateway and the gateway returns 'received'. If it drops, your API call frequency is over the limit, your signature format is wrong, or your account is throttled. You can check this from your own logs — no need to ask the provider.
Layer 2: Carrier Acceptance Rate
After the gateway delivers the SMS to Viettel / VNPT / Mobifone, the ratio at which they return a DLR 'accepted'. A drop usually means carrier risk control blocked it (sensitive words in content, high-frequency same-number bursts, flagged sending port). For this layer you MUST ask the provider for 'per-carrier acceptance rate' — an average alone hides the collapse of one carrier.
Layer 3: Handset Delivery Rate
The SMS only counts when it reaches the user's phone. Users being offline, numbers deactivated, out of credit, or roaming abroad all drop this layer. This layer is not entirely the provider's fault, but a good provider gives you the 'invalid number ratio' to help clean your list.
Three reports to demand from your provider
- Per-carrier acceptance rate (Viettel / VNPT / Mobifone separately, not one average)
- DLR receipt details (final status of each SMS: delivered / failure reason code)
- Invalid / deactivated number ratio (to clean your user database)
With these three reports you know exactly which layer leaks the 30%. If it's the submit layer, fix your calls. If it's acceptance, switch routes or fix signatures. If it's the handset layer, clean the numbers. Stop taking the blame for one vague 'delivery rate'.