You put a bit.ly link in a text, hit send to 8,000 contacts, and your dashboard says 97% delivered. Then you check click-through and it's a quarter of what the last campaign did. The link didn't break. The message never reached a chunk of the inboxes it claimed to. The shortener did that, not your copy, not your offer, not your timing.

Full disclosure: I work for Ready, an SMS platform. We care about this because filtered messages are messages you paid for that nobody saw, and that's the most expensive line item in any SMS program nobody tracks.

This post is about the actual mechanism, why shared shorteners trip carrier filters, what a dedicated branded domain fixes, and the tracking tradeoff you quietly accept when you switch. That last part is where most "just use a branded domain" advice stops short.

Why a shared shortener gets you filtered

Carriers don't read your message and decide it's spam based on vibes. They score domains. Every link you send resolves to a domain, and that domain carries a reputation that aggregates across everyone using it.

bit.ly, tinyurl.com, ow.ly, these are shared domains. Tens of thousands of senders push links through the same handful of root domains every day. Some of those senders are running phishing, loan scams, and crypto pump messages. When a carrier's filtering system sees enough abuse reports tied to bit.ly, it starts treating any bit.ly link as suspect, including yours.

You inherit the reputation of the worst sender on the domain. You did nothing wrong and your delivery still degrades. It's the same mechanic as sharing a 10DLC number with 200 other businesses: pooled reputation means pooled risk, and you don't control the pool.

The part that makes it insidious: the filtering is silent. The carrier accepts the message, returns a "delivered" status to your platform, and then drops it before the handset. Your 98% delivered rate is confirming the carrier took the message, not that a human saw it.

What a branded (dedicated) short domain actually fixes

A branded short link means you own the domain. Instead of bit.ly/3xK9z, your links read go.yourbrand.com/sale or yb.co/x9. The redirect still happens (a click lands on your short domain, which forwards to the real destination) but the domain reputation is now yours alone.

That changes the math for the carrier:

  • No pooled abuse. Your domain only carries your traffic. No stranger's phishing campaign drags your score down.
  • Reputation you can build. A domain that consistently sends legitimate, opted-in traffic earns trust over time. A domain shared with spammers never gets the chance.
  • Consistency the filter likes. When the same clean domain shows up in registered 10DLC traffic matching your registered campaign, that coherence reads as legitimate.

This isn't a magic deliverability button, it's removing one of the most common unforced errors. If your campaign is registered and still getting filtered, a shared shortener is one of the first things to rule out, because registration doesn't override content-level domain scoring.

The tradeoff nobody mentions: you lose the shared attribution layer

Here's the part the "just use a branded domain" crowd skips.

When you use bit.ly, you get a dashboard. Clicks, timestamps, device types, geographic rollups, all of it tracked by the shortener because the redirect passes through their infrastructure. That convenience is the product. It's also exactly why the domain is a filtering target: every tracked click is a redirect, and every redirect is a hop the carrier can inspect and flag.

Move to a branded short domain and you're responsible for the tracking. Depending on how you set it up, you may:

  • Lose the slick pre-built analytics dashboard you were getting for free.
  • Have to wire up your own click logging on the redirect, or accept less granular data.
  • Give up cross-campaign attribution that the shortener was quietly stitching together.

You're trading attribution convenience for deliverability control. The uncomfortable truth: the thing that made the shared shortener easy to measure is the same thing making it easy to filter. You can't fully have both at maximum.

A rough way to think about the trade

Shared shortener (bit.ly)Branded short domain
Domain reputationPooled with every other senderYours alone
Carrier filtering riskHigh, inherits abuseLow, you control the traffic
Click analyticsRich, built-in, freeYou build or pay for it
Cross-campaign attributionAutomaticManual / your own setup
Setup effortZeroSome (DNS, redirect, tracking)
Who the reputation credit goes toThe shortenerYour brand

The setup that threads the needle

You don't actually have to choose between tracking and delivery if you build the branded domain to track its own clicks. The key is that the tracking lives on a domain you own and keep clean, not on a shared one.

A workable pattern:

  1. Register a short, dedicated domain. Something brandable and tight, a 2 to 3 character subdomain or a short standalone domain. Shorter is better for segment math (more on that below).
  2. Point it at a redirect you control that logs the click (timestamp, campaign ID, contact ID) then forwards to the destination. Now you own the attribution data instead of renting it.
  3. Keep the domain exclusive to legitimate, opted-in sends. The moment you let it carry questionable traffic, you've recreated the shared-shortener problem on your own property.
  4. Warm it the way you'd warm a number. Don't blast 50,000 links through a brand-new domain on day one. Ramp. And don't put the link in the very first message a new contact ever gets, that combination is a fast filter.

This is the approach we've written about in more depth for click tracking on a branded domain without tripping filters. The short version: the redirect itself isn't the problem; the reputation of the domain the redirect lives on is.

Watch the character cost while you're at it

One underrated benefit of a short branded domain: segments. An SMS is 160 GSM-7 characters, and anything past that splits into 153-character segments, each billed separately. A long tracking URL eats characters fast.

Say your message runs 150 characters of copy plus a link. With a bit.ly link (~20 chars) you're at 170 characters, that's 2 segments. Swap in a 10-character branded short link (yb.co/x9) and the same message lands at 160, a single segment.

On a 10,000-contact send at Standard pricing, that's the difference between:

  • 2 segments: 10,000 × 2 × ($0.02 + $0.0045 carrier) = $490
  • 1 segment: 10,000 × 1 × ($0.02 + $0.0045 carrier) = $245

Half the bill, from a shorter domain. And watch for the curly-apostrophe unicode trap too, one smart quote drops your limit to 70 characters and quietly doubles everything. You can run your own numbers on the cost calculator.

When a shared shortener is genuinely fine

I won't pretend branded domains are always worth it. If you send a few hundred texts a month to a warm, hand-raised list (appointment reminders to existing patients, order updates to recent buyers) a shared shortener may never cause you measurable trouble. Low volume, high-trust context, transactional content: the filters are far more forgiving there.

The branded-domain investment pays off when you're sending at volume, running marketing or promotional content, or sending to lists where the carrier doesn't already have strong signals that your recipients want to hear from you. If you're at a few thousand promotional sends a week and your click-through dipped without a copy change, that's your signal.

The practical takeaway

Shared shorteners cost you deliverability you can't see. A branded short domain fixes the reputation problem but hands you the tracking job that the shortener used to do for free. Done right (your own domain, your own click logging on the redirect, kept clean and warmed gradually) you keep the attribution and the delivery. Done lazily, you just move the filtering problem onto a domain you now have to maintain.

Ready registers your 10DLC in-app (approvals typically 1 to 3 days), handles STOP and quiet-hours enforcement, and gives you the conversations inbox and reporting to actually watch whether your links are landing. If you want to compare what a clean send looks like against your current setup, the pricing page has the segment math laid out, or you can start sending, your first 20 texts are free.

Either way: check your link domain before you blame your copy. It's usually the link.