You send a campaign that looks lean on screen. A short promo, a link, maybe one emoji to make it feel less dry. Then the invoice lands higher than expected, and nothing about the message felt “long” enough to justify it.
That surprise usually comes down to one thing: SMS characters count. Not the way most store owners think about it, either. SMS billing doesn't care whether a message feels short. It cares how the message is encoded, where it crosses a segment boundary, and whether one tiny character forces the whole send into a more expensive format.
For eCommerce brands, this matters far beyond neat copywriting. It affects campaign margin, flow efficiency, and how much revenue you keep from every abandoned cart reminder, back-in-stock alert, and promo blast. If you've ever wondered why one extra word, trailing space, or emoji changed the cost of a send, this is the practical version of the answer.
Table of Contents
- Why Your SMS Bill Was Higher Than You Expected
- The Two SMS Alphabets GSM-7 and UCS-2
- The Emoji Trap How One Symbol Changes Everything
- How One Extra Character Creates a Multi-Part Message
- Calculating the Real Cost for Your eCommerce Store
- How to Optimize Your SMS Campaigns and Check Your Count
Why Your SMS Bill Was Higher Than You Expected
A common pattern goes like this. A store owner writes: “Your cart is waiting. Complete checkout now and grab free shipping today.” It looks compact, clean, and harmless. Then someone adds a brand flourish, an accent mark from pasted copy, or a final emoji. The campaign still looks short, but the billing changes.
That isn't a platform error. It's SMS logic doing exactly what it was built to do. The hidden part is that SMS characters count isn't just about length. It's also about the type of characters in the message and whether the message crosses a segment limit.
That's why the same promotional idea can be cheap in one version and expensive in another. One version stays in a single segment. Another version gets split. Another version flips into Unicode and burns through more segments than expected. For stores sending cart recovery, product drops, and flash sales at volume, those small copy choices stack up fast.
You don't have to write longer copy to spend more on SMS. You just have to write copy that crosses a technical boundary.
I've seen merchants focus hard on click rate and offer strength while ignoring the message payload itself. That's a mistake. If your message architecture is sloppy, your ROI gets drained before the campaign even has a chance to perform.
A better approach is to treat character count like margin control. Every send should be checked before launch, especially if the message was pasted from another document or edited by multiple people. If you're comparing platforms, this is one of the operational details worth watching closely, and it's one reason merchants look harder at how Shopify SMS platforms differ in day-to-day use.
The Two SMS Alphabets GSM-7 and UCS-2
Most SMS cost surprises start with a basic misunderstanding. SMS doesn't use one universal “text format.” It uses different encoding schemes, and those schemes decide how many characters fit into a message segment.
The easiest way to think about it is this: SMS has two alphabets. One is efficient and limited. The other is broader and more expensive.

Why 160 characters became the standard
GSM-7 is the standard SMS encoding for basic Latin letters, numbers, spaces, and common punctuation. The original 160-character limit traces back to the GSM 03.38 recommendation in the early 1990s, which fixed the SMS payload at 140 bytes. Using GSM-7 at 7 bits per character, that payload becomes 1,120 bits, which allows 160 standard characters in one message segment, as described in Wikipedia's overview of Short Message Service.
That's the good-news mode for marketers. If your message stays inside that character set, you get the most room for the lowest segment usage.
UCS-2 is what happens when your message includes characters outside that standard GSM set. That includes things like emojis, accented letters, and many special symbols. Once that happens, the message has to use a different encoding system, and the capacity drops hard.
GSM-7 vs. UCS-2 Encoding at a Glance
| Feature | GSM-7 (Standard) | UCS-2 (Unicode) |
|---|---|---|
| Typical use | Basic Latin letters, numbers, common punctuation | Emojis, accented letters, non-Latin scripts, special symbols |
| Single-segment limit | 160 characters | 70 characters |
| Main advantage | Efficient use of SMS space | Broader character support |
| Main trade-off | Limited character set | Far less room per segment |
This is the part many teams miss. They assume SMS character limits are based on visible length only. They're not. The encoding scheme controls the limit first, and your visible text length comes second.
Practical rule: If your brand voice relies on emojis or stylized symbols, budget for them intentionally. Don't let them sneak into high-volume flows by accident.
A few examples help:
- Safe in GSM-7: “Your order ships today. Track it here”
- Likely to trigger UCS-2: “Your order ships today 😊”
- Also risky: pasted copy with smart symbols, accented characters, or decorative punctuation from Google Docs, Notion, or a design brief
For eCommerce stores, the trade-off is straightforward. GSM-7 gives you more room for urgency, offer clarity, and link placement. UCS-2 gives you broader expression, but it reduces your available space and makes segmentation easier to trigger. In practice, most automated flows perform better operationally when the copy stays simple, clean, and GSM-friendly unless there's a strong reason not to.
The Emoji Trap How One Symbol Changes Everything
The most expensive character in SMS is often the one added last.
A marketer writes a clean message at around standard length, then adds a single emoji to make it feel warmer or more on-brand. That one symbol changes the technical identity of the entire message. The cost increase doesn't come from the emoji being “one more character.” It comes from the encoding switch it triggers.

The all-or-nothing switch
When a message includes even a single extended character such as an emoji, accented letter, or a symbol like €, the limit drops from 160 to 70 characters because the message must use UCS-2 encoding, as explained in Attentive's guide to message character counts.
Stores get punished for casual edits. SMS encoding is not selective. It doesn't say, “only this one character needs Unicode.” It says, “the whole message now uses Unicode.”
That means the impact reaches every word in the message, not just the symbol that caused the switch. It doesn't matter whether the emoji sits at the front, middle, or very end. Once it's there, the entire message follows the UCS-2 limit.
Before and after copy examples
Here's the practical version.
Before “Back in stock. Your size is available now. Shop before it sells out: [link]”
That kind of message can often stay efficient if you've written it with standard characters only.
After “Back in stock 🔥 Your size is available now. Shop before it sells out: [link]”
That tiny visual upgrade may look harmless in the composer. Operationally, it can force segmentation much sooner.
A few common traps:
- Emoji added by habit in campaign sends
- Accented product names copied from catalog text
- Special symbols used for visual styling
- Smart punctuation pasted from external documents
If you want stronger hooks without falling into this trap, it's smarter to improve the copy structure itself. Strong openings, urgency, and specificity usually do more work than decoration, and you can get ideas from these SMS text hooks for eCommerce brands.
If an emoji earns its place, use it on purpose. If it's there because “the message looked plain,” it usually isn't worth the extra segment risk.
The stores that control SMS costs best tend to separate “brand voice” from “billing triggers.” They know where personality helps and where plain text wins. In campaign work, a visual flourish can be useful. In high-frequency flows like cart reminders, shipping notices, and replenishment messages, restraint usually protects margin better.
How One Extra Character Creates a Multi-Part Message
Once a message goes past the single-part limit, the system doesn't block it. It slices the message into parts and sends them separately, then the recipient's phone stitches them back together into what looks like one continuous text.
That sounds simple. Billing isn't.

What concatenation actually does
In multipart SMS, part of each segment is reserved for a User Data Header, or UDH, which tells the receiving device how to reassemble the message. That overhead is 7 bytes, which is why a segmented GSM-7 message drops from 160 characters in a single part to 153 characters per segment, and segmented UCS-2 messages drop to 67 characters per segment, according to Textel's explanation of SMS and MMS character limits.
That “missing” space is not optional. It's what makes long SMS appear correctly on the recipient's phone.
Why 161 characters is a pricing event
SMS characters count gets expensive in a very unglamorous way. A message at 160 characters can fit as one GSM-7 SMS. A message at 161 characters becomes multipart. It is no longer “basically the same message.” It is now a segmented send.
That shift changes how you should edit copy. The goal isn't just to write concise text. The goal is to avoid crossing a threshold by accident.
Here's what to watch:
- Trailing spaces count. If a copywriter leaves one at the end, it still takes room.
- Line breaks count. Formatting for readability can push a message over.
- Link placement matters. If the link makes the final line spill over, the whole send changes class.
- Personalization can tip the count. A short first name and a long first name won't consume the same space.
A message that is one character over the limit behaves like a different product, not a slightly longer version of the same one.
For practical campaign writing, that means you should build with a buffer. Don't write right up to the edge and hope the platform handles it cheaply. Leave room for personalization, compliance copy, and last-minute edits. Teams that write too tightly often end up paying for second or third segments they never intended to buy.
A strong editing habit is to trim before review, not after approval. If the copy enters design or stakeholder review already near the segment boundary, somebody will add a word, brand phrase, or visual touch and nudge it into the next billing tier.
Calculating the Real Cost for Your eCommerce Store
The technical side now becomes a profit problem.
For eCommerce, the difference between a tidy message and a sloppy one isn't abstract. It's money out of campaign margin. The easiest way to evaluate SMS copy is to ask one blunt question: how many billable segments does this version create?
Simple campaign math that catches budget leaks
A standard GSM-7 SMS can fit within 160 characters, but a 161-character message can be split into two parts, costing $0.03 instead of $0.015, which means a single trailing space or emoji can double cost and also create delivery risk, according to YipSMS's breakdown of SMS pricing mechanics.
That's the kind of math store owners need in their heads before they approve a send.
A few real-world scenarios:
| Campaign type | Version choice | Likely billing effect |
|---|---|---|
| Cart recovery | Tight copy under the segment limit | Cleaner cost control |
| Cart recovery | One extra phrase added at approval | Message can become multipart |
| Promo blast | Text-only copy | More room to sell in one segment |
| Promo blast | Text plus emoji styling | Higher chance of extra segments |
| Shipping update | Functional, plain language | Usually the safest operationally |
The hard part is that poor SMS economics often look small in isolation. One message doesn't feel expensive. But eCommerce stores don't send one message. They send campaigns, automations, reminders, alerts, and post-purchase follow-ups.
Where stores waste money most often
The biggest leaks usually come from routine habits, not big strategic mistakes:
- Last-minute copy additions that push a message over the line
- Brand styling choices that trigger Unicode
- Template sprawl where old flows were never cleaned up
- No review buffer for dynamic fields like names or product titles
If you manage multiple flows, audit the highest-frequency ones first. Cart abandonment, checkout reminders, shipping notifications, and back-in-stock alerts deserve the most discipline because they run constantly.
Margin-minded SMS teams don't just ask, “Will this convert?” They ask, “Will this convert enough to justify the segment count?”
That second question is what separates good creative from profitable execution. Sometimes a longer message is worth it. Sometimes a little extra context lifts trust. But if a small flourish doesn't improve the commercial outcome enough to offset the additional segments, it's just eating budget.
How to Optimize Your SMS Campaigns and Check Your Count
Once you understand the mechanics, optimization becomes much simpler. You're not trying to write robotic copy. You're trying to make every character earn its place.
That means checking count before launch, editing with segment thresholds in mind, and treating Unicode as a conscious choice instead of an accident.

A practical editing workflow
For bulk campaigns, a 200-character message in GSM-7 becomes two parts, while the same message with an emoji becomes three parts, which can triple the cost. A solid operating rule is to keep templates under 150 characters for GSM or 65 characters for Unicode if you want to reliably stay in one part, as noted in this guide to running successful SMS campaigns.
That's the rule I'd use for teams, especially when multiple people touch copy before send.
A practical workflow looks like this:
- Draft the message in an editor that shows character count and segment count in real time.
- Check whether the message is GSM-7 or Unicode before anyone approves it.
- Leave buffer space for personalization and links.
- Recheck after legal, brand, or merchandising edits.
- Send test versions with real data, not placeholder text.
What to cut first
Not every cut hurts performance. Most of the time, the first cuts improve clarity.
- Remove filler words. “Just,” “today only,” “right now,” and repeated urgency language often add bulk without adding meaning.
- Shorten common phrases. “Complete your order” may work as well as longer variants.
- Use cleaner punctuation. Fancy symbols often create more trouble than they're worth.
- Question every emoji. If it doesn't strengthen the offer, delete it.
- Keep templates tight. Build standard campaign and flow drafts that are already safe before personalization.
A few before-and-after examples:
| Before | After |
|---|---|
| “Hi Sarah, your cart is still waiting for you. Complete your purchase today before items sell out.” | “Sarah, your cart is waiting. Checkout now before it sells out.” |
| “New arrivals just dropped 🔥 Tap to shop your favorites now.” | “New arrivals are live. Shop now.” |
| “Your order has been successfully shipped and is now on the way to you.” | “Your order shipped. Track it here.” |
“Shorter” isn't the goal. Clearer and cheaper is the goal.
The teams that handle SMS well build this review into process, not memory. They don't rely on someone noticing a risky character at the last second. They use tooling, templates, and a hard habit of checking the final count before every send.
If you want tighter control over SMS costs without slowing your team down, YipSMS Inc. is built for Shopify brands that need clear segment visibility, affordable sending, and practical tools for campaigns and automations. It helps store owners see what a message will cost before launch, keep flows efficient, and avoid the kind of hidden character-count mistakes that subtly drain ROI.
