SMS is one of the few channels where characters convert directly into money. A message one character over the limit is billed as two. Across a 50,000-recipient send, a single extra character becomes a substantial line item.
The character arithmetic
SMS uses two encodings:
| Encoding | Single message | Per part when split |
|---|---|---|
| GSM-7 (ASCII only) | 160 | 153 |
| UCS-2 (any accented or non-Latin character) | 70 | 67 |
A single accented character drops your limit from 160 to 70. That is why most corporate sends stick to plain ASCII.
What the link costs you
A typical campaign address:
https://shop.com/campaigns/summer-sale-2026?utm_source=sms&utm_medium=campaign&utm_campaign=summer26
That is 103 characters — 64% of a 160-character message spent on the address alone, leaving 57 characters for the actual copy.
Shortened:
https://lnkz.tr/SUMMER26
24 characters. You get roughly 80 characters back — more than half the message. In most campaigns that turns a two-part send into a single message and halves the cost outright.
Per-recipient links
SMS is at its strongest when personalised. You want each recipient to get a link carrying their own data: appointment details, order tracking, a personal discount code.
That cannot be done by hand — it is done through the API. Iterate over the send list and create one link per row:
POST /api/v1/links
{
"url": "https://shop.com/order/8842?token=abc123",
"title": "Order tracking — A. Yilmaz",
"expires_at": "2026-06-30 23:59:00",
"max_clicks": 20
}
Drop the returned short_url into the placeholder in your SMS template. For a 50,000-row list you create 50,000 links, each carrying click data for that one recipient.
Two safeguards for personal links
- Set an expiry. An order tracking link should not still work six months later.
expires_athandles that automatically. - Set a click limit. If the link starts circulating in group chats,
max_clicksstops the spread.
Protecting deliverability
Carriers and on-device spam filters classify messages by content. With links in the message:
- Use one consistent domain. Switching shorteners every campaign looks suspicious, and recipients cannot associate the address with you.
- Repeat the sender name in the body. "SHOP: Summer sale is live" — recognition raises click-through.
- Provide an opt-out. Informing recipients of their right to unsubscribe is a legal requirement in most jurisdictions; make sure you comply with local rules.
- Do not over-egg the urgency. "LAST 1 HOUR!!! CLICK NOW" annoys both filters and recipients.
Timing and measurement
SMS click behaviour differs sharply from other channels: the bulk of clicks arrive within the first 15 minutes, and the curve is nearly flat after an hour. So:
- Choose the send time around when your audience will look at their phone.
- Do not wait days to evaluate the campaign; the first two hours are usually enough.
- Measure the destination's mobile load time. Everyone arriving from SMS is on a phone, and a slow page wastes the click.
Test send
Before the bulk send, always send to a few numbers and verify:
- How many parts is the message split into? (Your provider's console shows this.)
- Does the link render as clickable? Some devices will not detect an address without the
https://prefix. - Does it land on the right page with parameters intact?
- Does the page look right on mobile?
- Did personalisation placeholders resolve? (Nobody should receive "Dear {name}".)
Summary
In SMS, a short link is not a preference but a budget line. Saving 80 characters on a large list halves the send cost outright. Add per-recipient generation and expiry control and SMS becomes a properly measurable channel.