Skip to content
LinkProfit

How Short Links Reduce SMS Marketing Costs

LinkProfit Team10 min read
  • sms
  • link-shortener
  • marketing
On this page

SMS is priced by the segment, not by the message, and the difference is where campaign budgets quietly leak. A marketer writes what feels like a short text, sends it to a hundred thousand people, and pays for two hundred thousand segments — usually because a fully tagged campaign URL took up more room than every other word in the message combined. The fix is mechanical and takes minutes, and the savings compound with every send. This article works through how segment billing actually functions, what a realistic saving looks like on a real campaign, and why the deliverability argument for branded short links ends up mattering more than the money.

How SMS Billing Actually Works

The unit you pay for is a segment, and a segment is defined by the encoding your message forces the network to use.

GSM-7 and the 160-character segment

The default alphabet for SMS packs each character into 7 bits. A single message payload is 140 bytes, and 140 bytes at 7 bits per character gives exactly 160 characters. That number is not a marketing convention; it falls out of the arithmetic.

GSM-7 covers the Latin alphabet, digits, common punctuation, and a handful of accented characters. It also has an extension table for a few symbols that were added later — [, ], {, }, ~, ^, the backslash, the vertical bar, and the euro sign. Each of those costs two characters from your budget rather than one, because it is transmitted as an escape sequence.

The UCS-2 cliff

Any single character outside GSM-7 switches the entire message to a 16-bit encoding. Not the character, the whole message. At 16 bits each, 140 bytes holds 70 characters.

This is the most expensive mistake available in SMS copywriting, because the characters that trigger it are ones people insert without thinking: an emoji, a curly quotation mark pasted from a word processor, an em dash, an ellipsis character, or any non-Latin script. Most emoji sit outside the basic multilingual plane and occupy two 16-bit units, so a single smiley consumes two of your 70.

Concatenation and the 153-character segment

Messages longer than one segment are split and reassembled by the receiving handset. The joining instructions travel in a user data header of 6 bytes inside each part, which consumes the space of 7 characters at GSM-7 density. Every segment in a multi-part message therefore carries 153 usable characters instead of 160, and 67 instead of 70 under the 16-bit encoding.

The practical consequence catches people out: a 161-character message does not cost slightly more than a 160-character one, it costs exactly twice as much, and it gives you 306 characters of capacity you are now paying for whether you use them or not.

| Encoding | Single segment | Each segment when concatenated | What triggers it | | --- | --- | --- | --- | | GSM-7 | 160 characters | 153 characters | Default for Latin text and common punctuation | | GSM-7 extension | Counts as 2 each | Counts as 2 each | Characters such as the euro sign, braces, and brackets | | UCS-2 | 70 characters | 67 characters | Any one emoji, curly quote, em dash, or non-Latin character |

Where the Characters Go

Look at what a compliant marketing SMS has to contain. There is a brand identifier, because recipients need to know who is texting and many jurisdictions require it. There is the offer itself, which is the only part doing persuasion. There is opt-out language — "Reply STOP to opt out" is 21 characters and is not negotiable in most markets. And there is a link, because SMS without a destination is a message with nowhere to go.

Of those four, three are compressible by writing better copy. The link is not, and it is usually the largest single block in the message. A properly tagged campaign URL like this one runs to 129 characters:

https://example.com/collections/summer-sale?utm_source=vip_list&utm_medium=sms&utm_campaign=flash_sale_0813&utm_content=segment_a

That is not an unusually verbose example. It has one path segment, four parameters, and no tracking identifiers from an ad platform. Drop it into a message and it consumes 80 percent of a single segment before you have written a word of the offer.

Note also that this tagged URL is exactly what you want your analytics tool to receive. The mistake is putting it in the message body. The parameters belong on the redirect destination, invisible to the recipient, which is the arrangement described in our UTM parameters guide.

The Arithmetic

Take a straightforward campaign: a flash sale to 100,000 opted-in subscribers. Two versions of the same message, identical copy, differing only in the link.

The long-URL version:

Acme Flash Sale: 30% off everything through Sunday. Shop now: https://example.com/collections/summer-sale?utm_source=vip_list&utm_medium=sms&utm_campaign=flash_sale_0813&utm_content=segment_a Reply STOP to opt out

The short-link version, where the same tagged URL sits behind go.acme.com/sale as the redirect destination:

Acme Flash Sale: 30% off everything through Sunday. Shop now: https://go.acme.com/sale Reply STOP to opt out

| Component | Long-URL version | Short-link version | | --- | --- | --- | | Copy before the link | 62 characters | 62 characters | | The link | 129 characters | 24 characters | | Opt-out language | 22 characters | 22 characters | | Total | 213 characters | 108 characters | | Encoding | GSM-7 | GSM-7 | | Segments billed per message | 2 | 1 |

The long version exceeds 160, so it is split at 153 characters per segment and bills as two. The short version fits inside a single segment with 52 characters to spare. Same offer, same compliance language, half the billed volume.

Across 100,000 recipients that is 200,000 segments versus 100,000 — a saving of exactly 100,000 segments. Applying the modeling range of around 0.5 to 1.5 cents per segment in the United States:

| Rate per segment | Long-URL cost | Short-link cost | Saved per send | | --- | --- | --- | --- | | 0.5 cents | 1,000 USD | 500 USD | 500 USD | | 1.0 cents | 2,000 USD | 1,000 USD | 1,000 USD | | 1.5 cents | 3,000 USD | 1,500 USD | 1,500 USD |

One campaign saves between 500 and 1,500 USD. Run this weekly and the annual difference is roughly 26,000 to 78,000 USD on messaging spend alone, for a change that costs one DNS record and a few minutes of setup. Substitute your own contracted rate and recipient count; the structure of the calculation does not change.

What one emoji does to the same campaign

The encoding cliff deserves its own line in the model, because it can undo the saving entirely.

| Message variant | Encoding | Length | Segments | | --- | --- | --- | --- | | Short link, plain text | GSM-7 | 108 characters | 1 | | Short link plus one emoji | UCS-2 | 110 units | 2 | | Long URL, plain text | GSM-7 | 213 characters | 2 | | Long URL plus one emoji | UCS-2 | 215 units | 4 |

Adding a single emoji to the short version doubles its cost. Adding one to the long version doubles it again, to four segments — four times the baseline. Before adding any decorative character to an SMS template, price it: at 100,000 recipients and one cent per segment, one emoji is a thousand-dollar glyph.

The Reasons That Matter More Than Cost

If SMS were only about segment arithmetic, the case would already be made. The stronger arguments are about whether the message arrives and whether anyone trusts it.

Shared domains carry other people's reputation

Public shortener domains are used by everyone, including the people sending fraudulent messages. Filtering systems at carriers and aggregators evaluate the reputation of the domain in a message, not just the sender, so a domain shared by thousands of unrelated senders inherits the behavior of the worst of them. Some public shortener domains are blocked outright on messaging routes for this reason, and a blocked link can mean the message never reaches the handset at all.

A branded domain inverts this. go.acme.com is used by exactly one sender, accumulates exactly that sender's history, and can be registered alongside your messaging campaign so filtering systems associate the domain with a known, verified business. In markets with formal registration requirements for application-to-person messaging, this alignment between sender identity and link domain is something reviewers actively look for. Setting it up is DNS work rather than engineering work, covered in our guide to custom domains for short links.

The value here is asymmetric and worth stating plainly: shaving segment costs improves margin, but a filtered campaign delivers nothing at all. Deliverability is the larger risk and the branded domain addresses both.

Truncation and trust

Messaging apps wrap and sometimes truncate long URLs, and a 129-character link rendered across three lines of a phone screen looks exactly like the thing recipients have been trained to avoid. Worse, they cannot see where it goes — the domain scrolls off, the parameters dominate, and the visible portion is meaningless.

A short branded link is legible in one glance and the domain matches the brand name in the message. That coherence between sender and destination is the single clearest trust signal available in a channel with no visual design, no logo, and 160 characters to work with.

Tracking Clicks From SMS

SMS sends no referrer. A visitor arriving from a text message looks, to your website analytics, exactly like someone who typed the address by hand. Without a link you control, the channel is unmeasurable.

Routing through a short link makes the click itself the measurement event. The redirector records the timestamp, approximate location, device, and operating system for every click, and the tagged destination behind it delivers campaign parameters to your analytics tool on arrival. You get two complementary views: click-side data available immediately in the analytics dashboard, and session-side data tied to whatever conversion follows.

Give each audience segment its own link, or the same destination with a different utm_content value, and comparison becomes possible: which segment responded, which send time worked, which offer wording earned the click. A single shared link across every segment gives you one number and no way to improve it.

Per-recipient unique links are worth the extra machinery only when you need to attribute a specific purchase to a specific person or deliver personalized content. They cost more to generate and store, and they turn your link table into a data set containing personal information, with the retention obligations that follow. For most broadcast campaigns, per-segment links are the right granularity.

Practical Rules for SMS Copy

  1. Put the link on your own domain. One DNS record, and both the cost and deliverability arguments are handled at once.
  2. Keep slugs short and readable. Six characters of path is plenty; go.acme.com/sale beats a random string on both length and trust.
  3. Tag the destination, never the message. The recipient sees a clean link, your analytics sees complete campaign parameters.
  4. Count before you send. Paste the exact template into a character counter and check the segment count, including the opt-out language.
  5. Treat every non-Latin character as a budget decision. Curly quotes from a word processor and an em dash cost as much as an emoji.
  6. Write the offer before the link. The first 40 characters appear in the notification preview and decide whether the message is opened at all.
  7. Keep one link per message. Two links dilute the click signal and give filtering systems more to evaluate.

Putting It Into Practice

The mechanics are simple enough to do this week. Point a subdomain at a redirect service, build the fully tagged destination URL, shorten it on your domain, paste the short version into your message template, and count the characters before scheduling. Our link shortening feature covers branded domains and custom slugs, and the free URL shortener is enough to check what the shortened form does to your character count before committing to anything.

Then run the numbers on your own next campaign rather than on the example above. Take the template you were about to send, count it as-is, count it with a short link, multiply the difference by your list size and your contracted rate. In most cases the arithmetic makes the decision before the deliverability argument even comes up — and the deliverability argument is the one that matters more.

Questions people ask

How many characters can one SMS segment hold?

160 characters when the message uses only the GSM-7 alphabet, or 70 characters if any character falls outside it. Once a message exceeds one segment it is split and concatenated, and the joining header consumes space in every part, dropping capacity to 153 characters per segment for GSM-7 and 67 for the extended alphabet. You are billed per segment, so a 161-character message costs twice a 160-character one.

Does adding an emoji really change what I pay?

Yes, and the effect is larger than most people expect. A single emoji forces the entire message out of GSM-7 into the 16-bit alphabet, cutting capacity from 160 characters to 70. Most emoji also occupy two units rather than one. A 108-character message that fit comfortably in one segment becomes two the moment you add a smiley, doubling the cost of the whole campaign for one glyph.

How much does an SMS segment cost?

It depends on the provider, destination country, volume tier, and route, so treat any single figure with suspicion. In the United States, list pricing for application-to-person messaging typically lands somewhere around 0.5 to 1.5 cents per segment before carrier surcharges, with high-volume commitments at the lower end. Use that as a modeling range and substitute your own contracted rate before making decisions.

Why do carriers filter messages containing short links?

Because public shared shortener domains are heavily used in fraudulent messaging, and filtering systems evaluate the reputation of the domain rather than the sender alone. When thousands of unrelated senders share one domain, its reputation reflects the worst of them. A branded domain used only by your own campaigns carries only your own sending history, which is the outcome you want.

Can I track clicks from an SMS campaign?

Only through the link itself. SMS carries no referrer, so the destination page cannot tell that a visitor arrived from a text message unless the URL says so. Routing through a short link you control makes the click itself the measurement event, capturing timestamp, approximate location, and device, while the destination behind it carries campaign parameters your analytics tool reads on arrival.

Should I use a unique link for every recipient?

Only when you need per-person attribution, such as tying a purchase back to an individual recipient or delivering personalized content. Unique links cost more to generate and store, add personal data to your link records, and lengthen slugs slightly. For most broadcast campaigns a shared link per audience segment gives you everything you need to compare segments without those trade-offs.