
A salon sends its Friday reminder to 400 clients: "Last chance for 20% off this weekend, book here: bit.ly/…". Bookings that weekend are flat. Nobody complains, because nobody saw anything. In the texting service's dashboard, a good share of the messages say undelivered.
That's what carrier filtering looks like. The customer's phone shows nothing, and you get no bounce message as you would with email. The only trace is a status code in the sending service. And one of the most common reasons, in the US especially, is the link.
We run a link shortener on a shared domain, so this article includes advice against using ours. It's the advice we'd want before sending a campaign.
What the guidelines say
Business texting in the US runs under guidelines from CTIA, the wireless industry's trade body, which the big carriers enforce through their own filters and codes of conduct. Its Messaging Principles and Best Practices (May 2023 edition), section 5.3.2, "Embedded Website Links", says:
Where a web address (i.e., Uniform Resource Locator (URL)) shortener is used, Message Senders should use a shortener with a web address and IP address(es) dedicated to the exclusive use of the Message Sender.
— CTIA Messaging Principles and Best Practices, section 5.3.2
In plain words: a shortener is fine, a shared one isn't. If the same domain carries links from thousands of unrelated senders, some of them will be scammers, and filters learn to distrust the domain. Your perfectly honest salon reminder then pays for someone else's fake parcel-delivery text.
The same section asks for two more things that are easy to miss. Links must not "conceal or obscure the Message Sender's identity", and the website a link leads to should "unambiguously identify the website owner" and include contact details such as a postal address. So a link that goes to a bare booking widget with no business name or address on the page is a weak spot even on your own domain.
These are guidelines, not law, and each carrier runs its own filter. Messaging providers report that public shorteners such as bit.ly and TinyURL are among the most common causes of filtering on all three big US networks, and some providers now refuse them outright. Twilio's own link shortening feature is built on that rule: "You must own the domain you use for link shortening."
Who this applies to
Business texts sent from a texting service. Appointment reminders, offers, order updates and reviews sent through a service like Twilio, SimpleTexting, Podium or your booking system. In the US these go over registered numbers (10DLC numbers, toll-free numbers or short codes), and these are the messages the rules were written for. When you register a 10DLC campaign, the form asks whether your messages contain links and wants sample messages. Put your real link domain in the samples, not a placeholder.
One-to-one texts from your own phone. A freelancer sending one client a link from their own mobile is not a campaign. Carriers' filters still look at those messages, but a single short link in a normal conversation rarely trips them. A b59.link link to send a client an invoice or a portfolio is fine.
Outside the US. Rules differ by country. Many countries require senders to register a sender name instead of a number, and operators run their own filters. The reasoning travels well though: a link on a domain that's yours and only yours is trusted more than one on a domain everyone uses.
What to send instead
Your own domain, with a short path. yourshop.com/book is short enough for a text and needs no shortener at all. If your booking system's address is long and ugly, set a redirect from your own domain to it. Most website builders and hosting panels have a redirects page; Squarespace, Wix, Shopify and WordPress plugins all do this.
A short subdomain just for links. go.yourshop.com/sale keeps the main site separate from campaign links. You add one DNS record and point it at a server or service that answers with redirects. If you want click counts per link, use a shortener that lets you bring your own domain. Twilio's built-in shortener does this; so do the paid plans of most large shorteners.
One hop, not three. A link on your own domain that forwards to a shared shortener, which then forwards to your booking page, hasn't fixed anything: filters follow the chain and see the shared domain in the middle. Check your link with a redirect checker and make sure it goes straight to the page. While you're there, check the page itself shows your business name and contact details.
Where does that leave b59.link? Our links are on a shared domain, so we don't recommend them for US business texting campaigns. We don't offer links on your own domain yet. For everything else (posters, flyers, posts, newsletters, slides, a link to a client) they work well, and our article on what happens when a shortener shuts down gives a second reason to use your own domain for anything that matters long term.
The link and the 160 characters
One text message (a segment) holds 160 characters if every character is in the basic GSM alphabet: plain English letters, digits and common punctuation. Longer messages are split into parts of 153 characters, and most services charge per part.
One character outside that alphabet switches the whole message to Unicode, and then a segment holds only 70 characters (67 per part). Emoji do it, and so does the curly apostrophe (’) that phones and word processors put in automatically. A 150-character message with "we’re" in it becomes three billed parts.
Here's a typical reminder, counted:
Three practical points:
- The opt-out line counts. US guidelines expect a business text to say who it's from and how to stop, so "Reply STOP to opt out" (21 characters) is part of your budget.
- You may not need https://. Most phones turn yourshop.com/book into a tappable link on their own. Adding https:// costs 8 characters but helps on older phones; test both on the phones your customers use.
- Don't put two links in one text. One clear link gets more taps, and messaging providers often list several links in one message as a filtering risk.
Test before the whole list gets it
Filtering doesn't announce itself, so look for it on purpose:
1. Send the exact message to test phones on each big network. In the US, AT&T, T-Mobile and Verizon, from the real sending number, with the real link. Friends and staff on different networks will do. A message that reaches one network and not another is a filtering sign.
2. Read the delivery status for each test. In Twilio, error 30007 means the message was "filtered (blocked) by Twilio or by the carrier". Other services have their own wording, usually "undelivered" or "filtered".
3. Send to a small slice first. Send to the first 50 or 100 people, wait half an hour, and compare delivered against sent. If the delivered rate is clearly lower than your normal reminders, stop and change the link before sending the rest.
4. Change one thing at a time. If messages are filtered, swap the link first (shared shortener to your own domain), then the wording. Words like "FREE", lots of capitals and "click here" are worth removing too, but the link is the most common cause.
Counting the clicks without a shared domain
You can still see which text worked. Add UTM tags to the destination behind your own-domain link: yourshop.com/book can redirect to yourbooking.com/salon?utm_source=sms&utm_medium=sms&utm_campaign=friday-offer, and your analytics will show the visits. Use a new path per campaign (/book-fri, /book-mon) if you want them apart. Our UTM naming sheet helps keep the names consistent, and the UTM link checker catches typos before you send.
The short version
For business texts, especially in the US, don't use a link on a shared shortener domain, ours included. Use your own domain with a short path or a short subdomain, make it a single hop to a page that says who you are, keep the whole message in the plain alphabet, and test it on every big network before the full send.
Sources: CTIA, Messaging Principles and Best Practices (May 2023), section 5.3.2 (the quotations); Twilio Docs, Link Shortening (own domain) and error 30007; messaging providers' notes on public shorteners and filtering, among them Bandwidth's Text messages with shortened URLs might not get delivered and HighLevel's Shortened URLs and SMS deliverability; 3GPP TS 23.038 (the GSM 7-bit alphabet; 160 and 70 characters per segment).
Check that your own-domain link reaches the page in one hop, with nothing shared in the middle.
Check a redirect


