Encoding problems produce the strangest-looking tickets - question marks, boxes, messages split mid-word, or one message billed as three. The rules underneath are simple.
The two alphabets
- GSM-7: the standard alphabet - 160 characters per message. Basic Latin letters, digits, and a fixed set of symbols. A few characters (like the Euro sign and square brackets) count as TWO characters each.
- UCS-2: used the moment your message contains ANY character outside GSM-7 - one emoji, one smart quote, one non-Latin letter - and the per-message limit drops to 70 characters.
Why messages split (and bill) the way they do
Anything longer than one message is sent as concatenated parts: 153 characters per part in GSM-7, 67 in UCS-2, and each part bills as a message. A 300-character template with one emoji is five billable parts; without the emoji it is two. Copy-pasting from word processors is the classic trap - smart quotes and long dashes silently flip the whole message to UCS-2.
Garbled characters
- Question marks or boxes at the handset: a character was submitted in an encoding the chain or handset could not represent. Check what your platform declared (DCS value) versus what the content actually was.
- Split messages arriving out of order or partially: usually a destination-network concatenation quirk - report with message IDs and the exact content.
The one-minute pre-flight for templates
Run the template through a GSM-7 check before a campaign: confirm which alphabet it lands in, the part count, and strip the invisible UCS-2 triggers. It is the cheapest cost-per-message optimisation there is.
Was this helpful?