Key Takeaways
- Concatenated SMS is one user-visible message split into several PDUs with a UDH so the handset can reassemble them. You pay and transmit per part.
- GSM-7 often allows 160 characters in a single part, 153 once concatenated. UCS-2 drops that to 70 / 67. Emoji and “fancy” punctuation throw you into UCS-2.
- On an Android SIM gateway, extra parts multiply radio time, OEM ceiling pressure, and operator fair-use risk — not just the invoice.
- OTP bodies must stay one part. Long “brand stories” on a login code are how filters and latency both win.
- Priced by devices and SMS send volume. You use your own phone and operator SMS credit. Platform volume and operator airtime both see parts, whether your dashboard shows “one message.”
- Count in the composer you will actually send. Google Docs is a liar.
Query android sms gateway concatenated sms when a “simple” template quietly became three charges and a sluggish radio. This Hub A in-depth stays on segmentation: encoding, UDH overhead, DLR honesty, and why a phone modem feels long texts more than a cloud SMSC brochure does.
It does not replace the setup guide or API hub. Priced by devices and SMS send volume. You use your own phone and operator SMS credit.
Recipients see a paragraph. The radio sees parts. If you only count rows, you are lying to yourself about throughput and to finance about airtime.
What concatenated SMS actually is
GSM SMS user data is small. When the body does not fit, the phone sends several SMS with a User Data Header that says “this is part 2 of 3, reference X.” The receiving handset stitches them if nothing is lost. 3GPP TS 23.040 is the boring spec — 3GPP TS 23.040. Optional bits and operator quirks still apply on a consumer SIM.
Android’s SmsManager will split for you. That is convenience, not a throughput grant. Each part is a separate trip to the SMSC, a separate chance to be delayed, and a separate line on prepaid.
Encoding table: 160, 70, and the UDHL tax
| Encoding | Single SMS | Each concatenated part | What throws you here |
|---|---|---|---|
| GSM-7 (default alphabet) | 160 chars | 153 (UDH eats payload) | Basic Latin, some European letters via extension |
| UCS-2 / UTF-16-ish | 70 chars | 67 | Emoji, many scripts, “smart” quotes, some symbols |
| National shift tables | Varies | Varies | Some operators; do not assume 160 after a locale change |
A single heart emoji can turn a 140-character GSM-7 OTP footer into a two-part UCS-2 monster. Count after encoding. The GSM 03.38 alphabet is the usual reference for what stays 7-bit.
Why long texts hurt a phone gateway
Cloud aggregators hide parts behind a price list. Your Android radio serializes them. Three parts is roughly three times the modem work, three times the chance the OEM rate ceiling bites, three times the fair-use heat. Throughput plans that assumed “500 messages/hour” meant 500 PDUs, not 500 novels.
Recipients on some devices show “… 1 of 3” while parts are still arriving. Support tickets become “I only got half the code” when the code itself was never supposed to split.
Template design that stays in one part
- Brand + fact + optional one URL on a domain you own.
- No stacked legal paragraphs in SMS. Link a hosted policy.
- OTP: identity, code, expiry. Stop talking.
- Promo: if you need STOP language, keep it short — it still has to fit with the offer.
Related wording: avoid spammy wording. Shouty copy plus concatenation is how you look automated and expensive.
Unicode, emoji, and “smart” punctuation
Word processors insert curly quotes and em-dashes that are not GSM-7. Paste into a GSM-7 counter before you ship. If you must send Arabic, Chinese, or emoji, budget 70-character parts and slower pace. Do not mix a GSM-7 campaign and a UCS-2 campaign on the same blast without splitting the job — your airtime forecast will be fiction.
DLR and partial concatenations
You may get per-part reports or a collapsed status. Treat “delivered” on part 1 as incomplete if the user needed the whole body. Failed middle parts produce mysterious truncated texts. See API delivery reports for pending-is-unknown.
OTP should never concatenate
If a login SMS is two parts, you already failed the template review. Codes delayed behind a second PDU are codes users type wrong. Keep the quiet SIM boring and short.
Bulk + concatenation is a cost multiplier
8,000 rows × 3 parts is 24,000 PDUs. Pace and device count must use the PDU number. CSV import should warn before send — bulk CSV API usage.
Cost math on parts, not rows
Priced by devices and SMS send volume. You use your own phone and operator SMS credit. Operator bills segments. Platform volume counts sends the product meters — do not assume one user-visible bubble is one unit everywhere. Free-tier 300 SMS disappears fast in three-part tests. There is no unlimited carrier pack hiding in a long template.
Checklist
- Templates counted in GSM-7 and UCS-2, not in a word processor.
- OTP confirmed single-part on a real handset.
- Promo STOP + offer still fits the intended part budget.
- No emoji on the OTP pool.
- Bulk jobs estimate PDUs, not rows.
- DLR policy defined for partial failure.
- Pace uses PDU rate, not message-bubble rate.
- Airtime forecast includes concatenation + retries.
- Canary includes a Unicode sample if you send Unicode.
- Developer Center not treated as a character-counter — you still measure.
Next steps
Shorten templates, then size radios on pricing and keep bulk honest on Excel/CSV. Concatenation is physics. Write like you are paying per brick.
Related product pages
Jump to the live product docs for this topic—not another long-form article.
- device and SMS volume pricingPlans and allowances
- Android SMS gateway product guideDefinition, product, and how to buy
- SMS API documentationLive endpoint reference
- download the Android gateway appGet the APK





