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:

EncodingSingle messagePer part when split
GSM-7 (ASCII only)160153
UCS-2 (any accented or non-Latin character)7067

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_at handles that automatically.
  • Set a click limit. If the link starts circulating in group chats, max_clicks stops 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:

  1. How many parts is the message split into? (Your provider's console shows this.)
  2. Does the link render as clickable? Some devices will not detect an address without the https:// prefix.
  3. Does it land on the right page with parameters intact?
  4. Does the page look right on mobile?
  5. 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.