Articles on: Billing

How SMS segments work for SMS alerts

When STOQ sends an SMS back-in-stock or preorder alert to a customer, the message may be delivered as one or more segments. A segment is the unit carriers use to measure and bill text messages. Short messages fit into a single segment, but longer messages are automatically split into multiple segments. Each segment is charged separately, so the number of segments directly affects your SMS costs. Understanding how segments work helps you write concise SMS templates that keep costs predictable. STOQ's SMS template editor includes a character counter and recommends keeping your message under 140 characters to avoid sending multiple segments.


Why SMS Segments Matter


There are several reasons to understand how SMS segments work.


  • Control SMS costs. You are charged per segment, not per message. A single SMS that splits into 2 segments costs twice as much as a 1-segment message. Keeping messages short saves money, especially at scale.
  • Write better templates. Knowing the character limits helps you craft effective SMS templates that deliver the key information (product name, purchase link) without exceeding a single segment.
  • Predict monthly charges. If you know your average segment count per message, you can estimate your SMS spend based on the number of alerts you plan to send.
  • Avoid customer confusion. Multi-segment messages may arrive out of order on some devices or carriers, which can confuse customers. Shorter messages are more reliable.


What Is an SMS Segment


An SMS segment is a single unit of text that carriers transmit and bill for. The number of characters that fit into one segment depends on the type of characters used in the message.


GSM-7 encoding (standard characters)


If your message contains only standard characters — letters (A–Z, a–z), numbers (0–9), spaces, and common punctuation (. , ! ? - / : ; @ & + = " ' # % * < > ( ) ) — it uses GSM-7 encoding:


  • 1 segment = up to 160 characters
  • 2 segments = up to 306 characters (not 320, because each segment uses 7 characters for a concatenation header)
  • 3 segments = up to 459 characters


When a message exceeds 160 characters, each segment holds only 153 characters instead of 160 because 7 characters are reserved for a header that tells the receiving phone how to reassemble the segments in the correct order.


UCS-2 encoding (special characters)


If your message contains any character outside the GSM-7 set — such as emojis, accented characters (é, ñ, ü), non-Latin scripts (Arabic, Hebrew, Chinese, Japanese, Korean), or certain special symbols (curly quotes, em dashes) — the entire message switches to UCS-2 encoding:


  • 1 segment = up to 70 characters
  • 2 segments = up to 134 characters (67 per segment, with 3 characters reserved for the concatenation header)
  • 3 segments = up to 201 characters


Even a single special character in an otherwise standard message forces the entire message to UCS-2 encoding, which dramatically reduces the characters per segment.


Quick reference table


Encoding

Characters per 1 segment

Characters per segment (multi-segment)

GSM-7 (standard)

160

153

UCS-2 (special/emoji)

70

67


How STOQ Counts Segments


STOQ's SMS template editor displays a character counter below the SMS body field. It shows the current character count against a recommended maximum of 140 characters. The counter turns red when you exceed 140 characters.



STOQ recommends keeping your SMS content under 140 characters (not 160) because the final message sent to customers includes additional text that you do not see in the editor:


  • Unsubscribe text — STOQ automatically appends an unsubscribe link or instruction to every SMS. This text cannot be removed and takes up characters in the final message.
  • Variable expansion — Template variables like {{product.title_incl_variant}} or {{product.purchase_link}} are replaced with actual values when the message is sent. A variable like {{product.title_incl_variant}} might expand to "Floral Summer Dress - Medium / Blue" which is much longer than the variable placeholder.


Because of these additions, a message that shows 120 characters in the editor could be 170+ characters when actually sent — pushing it into 2 segments. The 140-character recommendation accounts for this overhead.


Examples


Example 1: Short message — 1 segment


Template in editor (95 characters):

Hi! {{product.title}} is back in stock. Grab yours before it's gone: {{product.purchase_link}}


Rendered message sent to customer (~135 characters):

Hi! Classic White T-Shirt is back in stock. Grab yours before it's gone: https://m.stoqapp.com/abc123 Reply STOP to unsubscribe


Result: 135 characters → 1 segment (GSM-7 encoding, under 160). You are charged for 1 segment.


Example 2: Long message — 2 segments


Template in editor (155 characters):

Great news! {{product.title_incl_variant}} is back in stock at {{shop.name}}. We have limited quantities so order now: {{product.purchase_link}}


Rendered message sent to customer (~210 characters):

Great news! Floral Summer Dress - Medium / Blue is back in stock at Sunshine Boutique. We have limited quantities so order now: https://m.stoqapp.com/xyz789 Reply STOP to unsubscribe


Result: 210 characters → 2 segments (GSM-7 encoding, 153 chars per segment in multi-segment mode). You are charged for 2 segments — double the cost of Example 1.


Example 3: Emoji triggers UCS-2 — 2 segments


Template in editor (90 characters):

🎉 {{product.title}} is back! Shop now: {{product.purchase_link}}


Rendered message sent to customer (~110 characters):

🎉 Classic White T-Shirt is back! Shop now: https://m.stoqapp.com/abc123 Reply STOP to unsubscribe


Result: Even though it is only ~110 characters, the 🎉 emoji forces UCS-2 encoding where 1 segment = 70 characters. 110 characters → 2 segments. Removing the emoji would keep it at 1 segment under GSM-7.


Example 4: How segment count affects cost


You send 500 SMS alerts in a month to customers in the USA/Canada (rate: $0.025 per segment).


Scenario

Segments per message

Total segments

Total cost

Short template (1 segment)

1

500

$12.50

Long template (2 segments)

2

1,000

$25.00

Emoji template (2 segments via UCS-2)

2

1,000

$25.00


By keeping your template concise and avoiding emojis, you can cut your SMS costs in half.


For full SMS pricing details by country, see the SMS alert pricing and charges article.


Tips to Keep Messages Under 1 Segment


Follow these guidelines to minimise your segment count.


  • Keep content under 140 characters in the editor. This leaves room for the unsubscribe text and variable expansion.
  • Avoid emojis. A single emoji switches the entire message to UCS-2 encoding, reducing the segment limit from 160 to 70 characters.
  • Use short variable names. Use {{product.title}} instead of {{product.title_incl_variant}} if you do not need the variant name, as it produces shorter output.
  • Use the test section. Click "Test character counts" in the SMS editor to enter a sample product name and see the approximate rendered length.
  • Trim unnecessary words. Every character counts. Compare "Your product is now back in stock and available for purchase" with "Back in stock! Buy now:" — the second version is far shorter and equally effective.
  • Use branded short links. STOQ's default short link (e.g. https://m.stoqapp.com/abc123) is already compact. If you use a branded domain, ensure it does not significantly increase the URL length.


Where to See Your Segment Usage


You can view the total number of SMS segments sent in a given month on the Usage card on the Plans page.


  1. Open the STOQ app in your Shopify admin.
  2. Go to Plans from the left menu.
  3. Scroll to the Usage card at the bottom.
  4. Click the Back in stock alerts count to expand the breakdown.
  5. If SMS alerts were sent, you will see a note: "SMS alerts incur additional fees. {X} segments sent this month."

This tells you the total segment count for the current month, which directly corresponds to your SMS charges.


Known Limitations


  • STOQ's character counter in the SMS editor counts template characters, not the final rendered message length. The actual message may be longer due to variable expansion and the appended unsubscribe text.
  • The 140-character recommendation is a guideline. The actual segment count depends on the final rendered message length and the encoding used.
  • You cannot remove the unsubscribe text from SMS messages. This is required for compliance and takes up characters in every message.
  • If any character in the message is outside the GSM-7 set, the entire message uses UCS-2 encoding. There is no way to mix encodings within a single message.
  • Segment count is determined by the SMS carrier at the time of delivery. STOQ estimates the segment count but the carrier's count is authoritative.
  • STOQ does not currently show a per-message segment breakdown in the app. You can see the total segments sent per month on the Usage card.


Troubleshooting


Problem

Solution

SMS charges are higher than expected

Check whether your messages are splitting into multiple segments. Open the SMS template editor and verify the character count is under 140. Remove emojis or shorten the text if needed.

Character count shows under 140 but charges suggest 2 segments

Template variables expand to longer text when sent. Use the test section in the SMS editor to preview the rendered length with a sample product name. Long product names or variant titles increase the final character count.

Message contains no emojis but still uses 2 segments

Check for hidden special characters like curly quotes (" "), em dashes (—), or accented characters (é, ñ). These trigger UCS-2 encoding. Replace them with standard equivalents (" ", -, e, n).

Cannot reduce character count below 140

Shorten the message text, use {{product.title}} instead of {{product.title_incl_variant}}, and remove any unnecessary words. The unsubscribe text is mandatory and cannot be shortened.

Segment count on Usage card seems high

Each SMS counts its own segments. If you sent 100 SMS alerts and each was 2 segments, the total is 200 segments. Review your template length to reduce per-message segments.


FAQs


Q: What is a segment?

A: segment is the smallest unit a carrier uses to transmit and bill an SMS. A standard SMS can hold up to 160 characters (GSM-7 encoding). If your message exceeds this limit, it is split into multiple segments, and each segment is charged separately.


Q: Why does STOQ recommend 140 characters instead of 160?

A: Because STOQ appends unsubscribe text to every SMS and your template variables (like product name and purchase link) expand to their actual values when sent. The 140-character limit in the editor accounts for this additional content, helping you stay within 1 segment.


Q: Do emojis affect segment count?

A: Yes. Even a single emoji forces the entire message to use UCS-2 encoding, which reduces the single-segment limit from 160 characters to 70 characters. A message that would be 1 segment without an emoji could become 2 segments with one. Avoid emojis in SMS templates to keep costs low.


Q: How are segments charged?

A: Each segment is charged at the per-segment rate for the destination country. For example, if the rate is $0.025 per segment (USA/Canada) and your message uses 2 segments, the cost for that single SMS is $0.05. For full pricing details, see the SMS alert pricing and charges article.


Q: Can I preview how many segments my message will use?

A: The SMS template editor shows a character counter. Keep the count under 140 to aim for 1 segment. You can also use the test section to enter a sample product name and see the approximate rendered length. For a precise segment count, use an online SMS segment calculator and paste your fully rendered message.


Q: Does the unsubscribe text count towards the character limit?

A: Yes. The unsubscribe text (e.g. "Reply STOP to unsubscribe") is appended to every SMS and counts towards the total character count. This is why STOQ recommends 140 characters in the editor — to leave room for this mandatory text.


Updated on: 03/03/2026

Was this article helpful?

Share your feedback

Cancel

Thank you!