Find the invisible invoice.
Copy from a document, CRM or AI tool can introduce characters that look harmless but change the encoding and segment count of an entire campaign.
The usual suspects
| Character type | Example | Risk |
|---|---|---|
| Smart punctuation | “ ” ‘ ’ — … | May trigger Unicode encoding |
| Invisible spacing | NBSP, zero-width marks | Hard to spot in review |
| Emoji | ✅ 🚚 🎉 | Uses Unicode; some use multiple units |
| Personalization | Names, cities, coupon text | Encoding changes after rendering |
| GSM extension | { } [ ] ^ € | Each consumes two septets |
A safe pre-send workflow
- Render every message with realistic or worst-case template variables.
- Analyze the rendered text and selected sender profile.
- Flag an unexpected move from GSM-7 to UCS-2.
- Preview conservative replacements for typography-only characters.
- Recalculate segments and campaign cost before approval.
Automate the check
const result = await client.optimize({
text,
recipients: 10000,
unitPrice: 0.0075,
currency: "USD"
});
The optimization response includes the original analysis, optimized analysis, every proposed replacement and the possible savings. It does not paraphrase marketing copy or remove meaningful language.
Keep human intent in the loop.
Emoji, names and non-Latin languages can be deliberate. Treat an encoding change as a cost signal, then choose whether preserving the content is worth the additional segments.
Add a preflight gate.
Move the same Unicode and cost check into your application before messages reach a delivery provider.