SMS_MULTI_SEGMENT
Category: sms · Severity: warning · Channel: SMS
The rendered SMS body is longer than a single segment, so the carrier splits it into concatenated parts and bills you per segment.
What it means
An SMS "segment" is the unit carriers charge for. A single segment holds:
| Encoding | Single segment | Concatenated (multi-part) |
|---|---|---|
| GSM-7 (standard text) | 160 characters | 153 characters per part |
| UCS-2 (Unicode) | 70 characters | 67 characters per part |
When your message exceeds one segment, it is sent as several concatenated parts. The recipient sees one message, but you are billed for every part.
Synapse Inspect reads the segment count and encoding directly from the same send-path segmenter (render_sms) that runs at delivery time, so the number reported here is exactly what you will be charged for — not an estimate.
Why it matters
- Cost. A two-segment message costs twice as much as a one-segment message. High-volume SMS makes this add up quickly.
- Delivery. Multi-segment messages arrive more slowly and can occasionally be reassembled out of order on some handsets.
- Hidden encoding jumps. A single non-GSM character (a smart quote or an emoji) can force UCS-2 encoding, which cuts the per-segment budget from 160 to 70 — turning a message you thought was one segment into three. See SMS_UCS2_FORCED.
How to fix it
- Shorten the body to fit a single segment: 160 characters in GSM-7, or 70 characters in UCS-2.
- Remove non-GSM characters — replacing a smart quote or emoji often drops you back to GSM-7 and restores a single segment. Check for a co-occurring SMS_UCS2_FORCED finding.
- Or accept the multi-segment cost knowingly — this is a
warning, not a block. If the length is intentional, snooze the finding.
Finding context
The context object on this finding reports the exact segmentation, read from the send-path segmenter:
This finding is a warning — it never blocks a send. It surfaces so you can weigh cost against message length before you send.
Related
- SMS_UCS2_FORCED — a non-GSM character forced the expensive encoding
- SMS_BODY_TOO_LONG — the body spans many segments
- SMS quality checks — the full SMS Inspect guide