Key Takeaways
- Node DLR parsing is fetch/undici + JSON into your store — not an official Node SMS SDK or npm product we sell.
- HTTP 200 on send is accepted, not delivered. Persist the message id.
- Unknown status strings fail closed. Confirm enums in Developer Center.
- Do not clone the Java parse-DLR spoke; same physics, different runtime.
- Webhook HMAC plus a poll repair job for phones that were offline.
- You bring the Android and operator credit. We meter devices and send volume.
JSON.parse the radio, not npm
Node.js parse DLR from an Android SMS gateway API is how your worker maps a status payload onto the message id you stored at accept time. It is REST HTTPS/JSON. It is not a branded SDK, not a rewrite of the API guide, and not a clone of Java parse DLR.
If unknown strings become “delivered” in your mapper, npm was never the problem.
Not a Node SDK product
fetch or undici plus JSON.parse is a sample. Language cousins: PHP HTTPS/JSON, C# HTTPS/JSON. Live enums: Developer Center. Product DLR: SMS delivery reports.
Status families
| Family | Means | Node handler |
|---|---|---|
| Accepted / queued | Control plane has the job | Store id; do not mark delivered |
| Sent | Modem handed to operator | Still wait for DLR |
| Delivered | Handset ack when provided | Idempotent upsert; never regress |
| Failed / expired | Radio, voucher, or operator | Terminal for that id; no blind OTP retry |
| Unknown | Schema drift | Fail closed; alert |
Webhook vs poll repair
Signed webhooks for near-real-time. Poll rows stuck in accepted after the phone was offline. Duplicate callbacks must not double-count. USA canaries catch carrier quirks — USA SMS gateway notes.
Cost
You bring the Android and operator SMS credit. Failed sends still often hit the voucher. Free: 1 device / 300 SMS lifetime / 300 contacts — a bad DLR soak test. See device and SMS volume pricing.
Checklist
- No Node SDK branding.
- Message id persisted at accept.
- Unknown status fails closed.
- HMAC on webhooks.
- Poll repair for stuck accepted.
- Delivered never regresses to pending.
- OTP retries not driven by DLR noise.
- Developer Center for live enums.
Next steps
Pair a handset in the device setup guide. n8n can POST the same JSON — it is not a substitute for this mapper.
Related product pages
Jump to the live product docs for this topic—not another long-form article.
- SMS delivery reports (DLR)Delivery status tracking
- SMS API documentationLive endpoint reference
- device and SMS volume pricingPlans and allowances
- Android SMS gateway product guideDefinition, product, and how to buy





