# Conversations, not just notifications.

- Canonical URL: https://www.broadnet.me/products/two-way-sms
- Language: en
- Last updated: 2026-10-01
- Publisher: BroadNet (https://www.broadnet.me)
- Markdown version of the page above, generated from the rendered page.

2-Way SMS · Inbound + Outbound

Provision a virtual number, point a webhook at your app, and your customers can text you back. Confirmations, surveys, support — all on the channel everyone already has.

[Design my two-way conversation flow](https://www.broadnet.me/contact?topic=two-way-flow&product=two-way-sms) [Request route audit](https://www.broadnet.me/contact?topic=route-audit&product=two-way-sms)

99.99% uptime SLA <1s round-trip numbers in 50+ countries STOP/HELP built-in

![The BroadNet snow leopard between outgoing and incoming message streams meeting in a conversation](https://www.broadnet.me/marketing/art/pr-two-way.webp)

BroadNet · two-way

POST /sms/sendSms

50+

Number countries

1,000+

Operator connections

99.99%

SLA

At a glance

## Conversational, but carrier-grade.

Availability

99.99%

uptime SLA

Inbound and outbound messages run on the same contracted platform SLA.

Latency

<1s

round-trip

Reply to webhook to API call to handset.

Footprint

50+

countries

Virtual numbers + native shared codes.

Network

1,000+

direct operator connections

Same backbone as our outbound A2P.

MO meets MT

## How a two-way thread survives the operator boundary.

Every inbound MO is matched to the sends before it. The keyword router handles STOP, HELP, and your custom triggers before they ever reach your app.

1. 01 · Outbound POST /sms/sendSms MT submitted on your long code, short code, or shared number. Conversation ID generated so inbound replies thread back to this send. p50 < 40ms
2. 02 · Bind Operator SMPP Direct bind delivers the MT. Number capability checked (long-code vs short-code vs shared) and inbound listener registered for the conversation. p50 < 1.4s
3. 03 · Inbound MO capture User reply lands on the operator MO channel. Keyword router (STOP, HELP, custom) processes opt-out and trigger words before the message hits your app. p50 < 800ms
4. 04 · Thread Conversation engine MO message correlated to the outbound MT via conversation ID. Thread context (last 20 messages) attached to the webhook payload. p50 < 50ms
5. 05 · Webhook Your app POST to your webhook with the inbound body, the conversation thread, and any matched keyword. 24h dedupe on message ID. p95 < 2s
6. ← MO event · webhook

01 · Outbound

POST /sms/sendSms

MT submitted on your long code, short code, or shared number. Conversation ID generated so inbound replies thread back to this send.

p50 < 40ms

02 · Bind

Operator SMPP

Direct bind delivers the MT. Number capability checked (long-code vs short-code vs shared) and inbound listener registered for the conversation.

p50 < 1.4s

03 · Inbound

MO capture

User reply lands on the operator MO channel. Keyword router (STOP, HELP, custom) processes opt-out and trigger words before the message hits your app.

p50 < 800ms

04 · Thread

Conversation engine

MO message correlated to the outbound MT via conversation ID. Thread context (last 20 messages) attached to the webhook payload.

p50 < 50ms

05 · Webhook

Your app

POST to your webhook with the inbound body, the conversation thread, and any matched keyword. 24h dedupe on message ID.

p95 < 2s

Capabilities

## Everything you need to talk and listen.

### Inbound webhooks

Every MO reply is posted to your endpoint within a second. Retries with jitter; dead-letter queue if your service is down.

JSON webhook retries × 5

### Long & short codes

Dedicated long codes, shared shortcodes, and country-native virtual numbers. 10DLC for US traffic, A2P-registered numbers in the UK and EU.

dedicated · shared · 10DLC

### Keyword routing

Built-in handlers for YES, NO, STOP, HELP, plus any custom keyword you define. Route to different endpoints per keyword without writing a parser.

YES · STOP · HELP · *

### Conversation threading

Every inbound message is matched to a conversation ID so you can track context across days, agents, and channels — including handoff to WhatsApp.

thread-aware

### Auto-replies + business hours

Out-of-hours auto-replies, holiday calendars, and per-keyword templates. Localised to the recipient's timezone if you store it.

tz-aware template lib

### MMS support

Where MMS is available — primarily US and Canada — send images, vCards, or short video clips on the same inbound number.

US · CA · auto-fallback

How it works

## From their handset back to yours in under a second.

1. 01 Customer texts your number Native SMS — no app, no link, no friction.
2. 02 BroadNet receives via virtual number Routed off the operator's MO queue in milliseconds.
3. 03 Webhook fired to your endpoint JSON payload with conversation context.
4. 04 Your app replies via REST A single POST /sms/sendSms back to the same number keeps the conversation going.
5. 05 Customer receives instantly Direct SMPP bind to the operator wherever one exists — never a grey route.

Use cases

## Where 2-way SMS pays off.

### Appointment confirmations

Clinics, salons, embassies — reduce no-shows with a YES/RESCHEDULE prompt that fits in one SMS.

### Customer support

Let customers describe a problem in their own words instead of waiting in a phone queue.

### Surveys & feedback

NPS, CSAT, single-question polls — SMS completion runs well ahead of email (illustrative · results vary).

### Two-factor with reply

Instead of a code, ask the user to reply YES from their registered number — stronger than OTP, simpler than passwords.

### Lead qualification

Send the first message, ask one question, route hot leads to your CRM, drop the rest.

Customer stories

## What happens when SMS becomes a real conversation.

Tier-1 GCC operator Telecom · GCC SA KW BH

**Challenge**

A self-service balance check needed to run on the same short code across several regulators with one regex set.

**Approach**

BroadNet handled the parallel short-code registrations and provisioned a single keyword router across those markets.

Customer self-service lead (reference under NDA)

Gulf flag carrier Airline · GCC KW

**Challenge**

Pre-boarding no-shows were dragging gate operations and revenue at peak.

**Approach**

Two-way SMS lets passengers reply to confirm their seat or request a change, with replies surfacing to gate ops ahead of boarding.

Passenger experience lead (reference under NDA)

South Asian telecom operator Telecom · South Asia BD

**Challenge**

A large estate of active short codes needed a STOP/HELP keyword router and platform-wide suppression list to satisfy the local regulator.

**Approach**

A migration sprint moved every code under one keyword engine with consolidated opt-out enforcement.

VP digital channels (reference under NDA)

Two endpoints, full loop

## Receive, then reply.

One webhook to listen, one POST to talk back. Same account, same Bearer token, same delivery reports.

Reconcile by message id

Retries with backoff

Dead-letter queue if your service is down

POST · your-app.com/webhooks/sms

INBOUND

```
# Inbound reply from +44 7700 900123
"YES"

# → POSTed to the webhook URL configured on your BroadNet account
```

POST · api.broadnet.me/sms/sendSms

REPLY

```
curl -X POST https://api.broadnet.me/sms/sendSms \
  -H "Authorization: Bearer $BROADNET_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"senderId":"BroadNet","destinationNumber":"447700900123",
       "message":"Thanks Sarah — confirmed for 10 AM.","messageType":"TEXT"}'
```

Number provisioning

## Pick the number that fits the use case.

### Shared shortcode

From $0 setup

Lowest cost, fastest provisioning. Inbound traffic is keyword-routed across many brands — fine for low-volume or testing.

- Provision in minutes
- Pay per inbound
- Keyword-prefixed

### Dedicated long code

From $5 / month

A standard 10-digit number that belongs to you. Best for conversational support and 2FA-reply flows in EMEA and APAC.

- Country-local format
- Numeric sender
- Up to 1 msg/sec

### Dedicated shortcode

From $500 / month

Premium 4–6 digit codes — high throughput, brand recall, best for opt-in marketing in NA, UK, AU.

- Vanity + random
- 30–200 msg/sec
- Pre-approval req.

### 10DLC (US/Canada)

From $10 / month

The Campaign Registry-registered 10-digit numbers. Required for any business sending A2P SMS in the US — we handle TCR vetting and brand registration.

- TCR-registered
- Carrier-vetted
- Low/Mid/High volume tiers

Compliance

## Opt-in enforced. STOP respected.

Every regulator we operate under expects a clean opt-in trail and an instant opt-out. We enforce both at the platform layer — your app doesn't need to remember.

### TDRA · UAE

Opt-in records, mandatory sender ID registration, prohibited-content filters applied inline.

### CST · Saudi Arabia

PDPL-aligned consent storage, SAR data residency for regulated industries.

### TPS · United Kingdom

STOP keyword enforcement, do-not-call list synchronisation, marketing-vs-service split.

### 10DLC · USA

TCR registration, brand vetting, campaign approval; carrier filtering on Verizon, AT&T, T-Mobile.

Questions buyers ask

## Two-way SMS, answered for buyers.

Long codes are standard 10–12 digit international numbers; they're cheap, easy to provision (1–3 days), and suit moderate volume. Short codes (4–6 digits) are premium, regulator-approved, support 50–500 messages per second, and take 4–10 weeks to register. Shared numbers are pooled multi-tenant — fastest to launch but you share opt-out lists with other tenants.

Replies to your number are posted to the webhook URL configured on your account, with the sender's number and the message text. Match them to the conversation by sender number and the message IDs your sends returned — the dashboard inbox keeps the full thread for you.

The keyword router runs on every inbound MO before your webhook fires. STOP, إيقاف, ARRÊT (plus your custom keywords) are matched case-insensitively. STOP lands the recipient on the platform-wide suppression list and auto-acks with a confirmation message. HELP returns your configured help text. Custom keywords route to a webhook URL you specify per keyword.

Inbound MO is free in some markets (UAE, KSA on shared short codes) and per-message in others (Egypt, Jordan, Kuwait — typically $0.01–0.02 per inbound). Outbound MT bills at the standard SMS rate. Number rental: long codes $5/month, dedicated short codes $1,500–4,000/month depending on market.

UAE TDRA: 4–6 weeks for a dedicated short code, including use-case approval. KSA CST: 6–10 weeks. Egypt NTRA: 4–8 weeks. We submit the application, manage the regulator back-and-forth, and provision the inbound listener once approved. Shared short codes are typically live within 1–3 business days.

Yes — the unified inbox in the dashboard surfaces every active conversation, assigns to agents based on round-robin or skills routing, and tracks SLAs per conversation. Or pipe the webhook into your existing helpdesk (Zendesk, Freshdesk, Salesforce SC) and let agents reply through the same POST /sms/sendSms endpoint.

Platform-wide. A STOP reply to any of your numbers lands the MSISDN on the suppression list for every campaign, every product (Bulk SMS, A2P, OTP, WhatsApp), every account in your tenant. The user can opt back in only by texting START (or your configured opt-in keyword) — this is a regulatory must-have we enforce by default.

Inbound messages are pushed to your webhook as soon as the operator hands over the MO event. Retries with exponential backoff for 24 hours on webhook failure. Dead-letter queue queryable for 7 days standard, 90 days enterprise. Inbound handling runs on the platform's 99.99% uptime SLA; the exact SLA terms and any service credits are set in your contract.

Question not here? [Ask our engineering team](https://www.broadnet.me/contact)

Two-way SMS runs on the same backbone as [BroadNet's A2P SMS infrastructure](https://www.broadnet.me/products/a2p-sms). Pair it with [OTP verification](https://www.broadnet.me/products/otp) for reply-based authentication, or step up to [RCS for Business](https://www.broadnet.me/products/rcs-messaging) where the handset supports it.

Related

## Pick the right shape of conversation.

[SMS API If you only need outbound delivery — transactional alerts and notifications. Learn more](https://www.broadnet.me/products/sms-api) [WhatsApp Business API For richer conversations with media, buttons, and read receipts. Learn more](https://www.broadnet.me/products/whatsapp-business-api) [Omnichannel One conversation across SMS, WhatsApp, RCS, and email with automatic fallback. Learn more](https://www.broadnet.me/products/omnichannel) [deliver_sm (MO) reference The SMPP PDU that carries every inbound reply back to your bind — the wire format behind two-way SMS. Learn more](https://www.broadnet.me/reference/smpp-deliver-sm)

Carrier-grade delivery

## Delivered to 200+ countries, direct to the operator in 86.

No grey routes: a direct operator bind wherever one is commercially available, otherwise a labelled partner-managed route. One API to every channel, on a network built since 2003.

200+

Countries

1,000+

Operator connections

300M+

Msgs·day

[Talk to sales](https://www.broadnet.me/contact)

Two-way numbers live in 50+ countries

## Start the conversation.

Pick a country, provision a number, point a webhook at your app — and you're live before the next stand-up.

[Design my two-way conversation flow](https://www.broadnet.me/contact?topic=two-way-flow&product=two-way-sms) [Request route audit](https://www.broadnet.me/contact?topic=route-audit&product=two-way-sms)

$ npm i @broadnet/cpaas-sdk axios

## Related guides & answers

Go deeper on the concepts behind this product.

- [What is P2P SMS Read](https://www.broadnet.me/answers/what-is-p2p-sms)
- [MO vs MT — what's the difference Read](https://www.broadnet.me/answers/what-is-mo-vs-mt)
- [What is P2A SMS Read](https://www.broadnet.me/answers/what-is-p2a-sms)
- [What is a long code Read](https://www.broadnet.me/answers/what-is-long-code)
- [What is two-way messaging Read](https://www.broadnet.me/answers/what-is-two-way-messaging)
- [How do I handle SMS opt-outs Read](https://www.broadnet.me/answers/how-to-handle-sms-opt-outs)
