Key Takeaways
- Two-way inbox limits on an Android SMS gateway are phone storage, webhook throughput, and human ownership — not an unbounded chat product.
- Inbound arrives as message.received. Confirm live payload in OpenAPI; this page is ops.
- STOP, job acks, and random replies need different handlers. Unattended auto-reply is how you double-book.
- Isolate OTP SIMs so login traffic never shares the promo inbox.
- Service pricing is based on device count and total SMS sent through the gateway. You need a working Android phone with a SIM and SMS credit from your mobile operator. Operator message costs are yours—we do not sell carrier SMS balance.
Android SMS gateway two-way inbox limits show up when a SIM that sends OTP also collects “YES Thursday” and “STOP” into one scrolling panel. Recipients reply to a real MSISDN. The phone, the webhook worker, and a human (or a very boring keyword bot) have to keep up.
Service pricing is based on device count and total SMS sent through the gateway. Pillar: two-way SMS. Events: webhooks.
If nobody owns the inbound thread, you do not have two-way SMS. You have a voicemail-shaped liability.
The inbox is not infinite
Device SMS storage fills. OEM cleaners wipe threads. Panel views lag. Persist what matters in your database from message.received. Confirm the live shape at API docs.
Limit table
| Constraint | What breaks | Mitigation |
|---|---|---|
| Handset storage / OEM | Old inbound gone | Webhook persist immediately |
| One SIM for OTP + promo | STOP next to login codes | Split deviceIds |
| No owner | Double-booked jobs | Named inbox on-call |
| Auto-reply on everything | Loops, extra airtime | Keywords only; campaign:false for staff replies |
| Burst inbound | Worker backlog | Idempotent consume on event id |
message.received is the API path
Illustrative inbound event (docs win if this drifts):
{
"id": "evt_01K2F8QW3N4RXB7M",
"type": "message.received",
"createdAt": "2026-08-12T14:04:09Z",
"apiVersion": "2026-08-12",
"data": {
"message": {
"id": 41822,
"number": "+14155552671",
"text": "Yes, please reschedule to Thursday.",
"status": "Received",
"deviceId": 3,
"receivedAt": "2026-08-12T14:04:09Z"
}
}
}You need a working Android phone with a SIM and SMS credit from your mobile operator. Operator message costs are yours—we do not sell carrier SMS balance.
Who owns YES / STOP / noise
Promo STOP belongs on a suppression list. Auto-reply and STOP. Dispatch YES belongs in the FSM. Do not let a generic bot confirm clinic appointments.
Do not mix OTP inbound
Customers rarely reply to OTP. If they do, it is support — not a second factor. Keep that SIM quiet. OTP.
Checklist
- Webhook signature verified.
- Event-id dedupe.
- Inbox owner named.
- OTP / promo SIMs split.
- STOP writes suppression, not a ticket pile only.
Next steps
Pair via downloads, send a staff SMS and reply, then prove the webhook row exists after you clear the phone thread.
Related product pages
Jump to the live product docs for this topic—not another long-form article.
- two-way SMS inboxReplies on your SIM
- SMS auto-reply and STOP keywordsOpt-out and keywords
- SMS API documentationLive endpoint reference
- device and SMS volume pricingPlans and allowances





