You wrote a clean message. Registered your 10DLC campaign. Sent 2,000 texts to a list you're allowed to text. And somewhere between 15% and 40% of them never showed up on a phone — no error, no bounce, just silence. If that first message opened with a link, you've probably found your problem.
Full disclosure: I work for Ready, an SMS platform. So I have a reason to care whether your messages land. But this specific failure mode isn't about which vendor you use — carrier filtering treats a Twilio link and a Ready link the same way. The fix is about sequencing, and it costs you nothing but one extra message.
Why a first-contact link reads as spam to a carrier
Carriers don't read your message the way a human does. They score it. The scoring model watches for the patterns spam and smishing campaigns share, and a link in an unsolicited-looking opening text hits several of them at once.
Think about what a smishing attack actually looks like. A number the recipient doesn't recognize sends one message, that message contains a URL, and the whole point is to get a click before the recipient thinks too hard. That is structurally identical to a lot of legitimate cold and reactivation outreach: unfamiliar sender, no prior conversation, link in the body.
The carrier can't tell your reactivation blast from a phishing run by content alone, so it leans on signals it can measure:
- No inbound history. The recipient has never texted this number back. Two-way engagement is one of the strongest trust signals a carrier has, and a cold link gives it zero.
- URL in the first message. A link with no established relationship is the single most common smishing shape.
- Shortened or unfamiliar domains. Public shorteners (bit.ly and friends) are heavily abused, so they carry their own penalty on top of the first-message one. We wrote about that tradeoff in the branded-domain click-tracking post.
- Velocity. A brand-new campaign firing thousands of near-identical link messages in a short window looks like exactly what an attacker does.
None of these on its own gets you filtered. Stacked together — which is precisely what a cold link blast does — they push your message over the line where the carrier quietly drops it. You get billed for the segment either way. It just never arrives.
The two-message warmup carriers reward
The fix is to earn a reply before you send anything the filter distrusts. Your first message establishes who you are and invites a response. The link — the thing you actually want them to click — waits for message two.
Here's the pattern I'd run for a cold or reactivation flow:
Message 1 — identify and invite (no link, no pressure):
Hi Jordan, it's Sam from Northside Auto — you had your Civic in with us last spring. We've got a spot open this month. Want the details?
That's it. No URL. The message names the sender, names a real prior relationship, and ends on a question. If the recipient replies "yes" or even "who?", you now have inbound engagement on the thread — the single signal the carrier weights most heavily.
Message 2 — deliver the link (now that a conversation exists):
Great — here's the online scheduler: sched.northsideauto.com/jordan. Reply STOP to opt out.
By the time the URL goes out, the thread has two-way history and the recipient has effectively consented to the next message. The filter sees a conversation, not a cold blast.
Does this cost you? Yes. You're paying for two segments per contact instead of one, and not everyone replies to message one, so your funnel narrows before the link ever goes out. On a 5,000-contact reactivation at Ready's Standard rate — $0.02/segment plus the $0.0045 carrier pass-through — message one alone is 5,000 × $0.0245 = $122.50. If 30% reply and get message two, that's another 1,500 × $0.0245 = $36.75. Call it ~$160 total.
Compare that to blasting the link cold to all 5,000 for $122.50 and having a third of them filtered into the void. You paid for delivery you didn't get, and the filtering damages your campaign's reputation score, which drags down every future send. The warmup is cheaper than it looks once you count the messages that actually land.
10DLC registration is the floor, not the ceiling
Warmup sequencing works better on top of a foundation the carrier already trusts. That foundation is A2P 10DLC registration.
An unregistered number sending link traffic is filtered aggressively — often before it ever reaches the content-scoring step. Registration ties your traffic to a vetted brand and a declared campaign use case, which tells the carrier your messages are what they claim to be. Ready handles the full 10DLC registration in-app — brand and campaign, roughly ~$10/mo per brand and ~$20/mo per campaign in carrier fees, with approval usually landing in one to three days. If you're weighing your number type, we compared the options in the toll-free vs 10DLC breakdown.
Registration doesn't exempt you from content filtering. A registered number that opens with a shortened link to a cold list still gets scored on that behavior. The two work together: registration establishes who you are, the warmup establishes that this recipient wanted this.
STOP handling is part of your sender reputation
Here's the piece people miss. Carriers watch how you handle opt-outs, and a clean opt-out record feeds back into how trusted your traffic is.
If someone texts STOP and you keep messaging them, that generates complaints, and complaints are radioactive to your reputation score. On Ready, inbound STOP and UNSUBSCRIBE are honored automatically and the opt-out propagates across your campaigns, so a contact who opts out of one flow can't be caught by another. That's the audit trail that keeps your complaint rate low — which is exactly what a carrier is measuring when it decides whether your next link gets through.
Worth noting: opt-out usually doesn't cross channels on its own. Someone who texts STOP can keep getting your calls unless your systems are wired to sync it. We got into that in the cross-channel opt-out post. For deliverability, the point is narrower: honoring STOP fast and completely is part of the reputation that determines whether your link messages land at all.
A checklist for cold and reactivation flows
If you're building a flow that eventually needs a link in front of a list with no recent inbound history, run through this:
- Register your 10DLC brand and campaign first. Don't send anything meaningful on an unregistered number.
- Open with identity, not a URL. Name yourself and the prior relationship. End on a question.
- Wait for a reply before you send the link. Even a one-word reply flips the thread to two-way.
- Use a branded domain, not a public shortener, when the link does go out.
- Include STOP language and honor it instantly. Ready does this automatically; if your tool doesn't, it's on you.
- Watch your velocity on a fresh campaign. Ramp into volume over a few days rather than firing your whole list on day one.
- Scrub before you send, not after. For genuinely cold lists, screen litigator and DNC numbers up front — scrubbing after import is too late.
The practical takeaway
A link in your very first text isn't a small optimization miss — it's the single behavior most likely to get a legitimate campaign filtered, because it's structurally indistinguishable from smishing. Carriers can't read intent, so they read shape, and a cold link is the wrong shape.
Split the ask into two messages. Establish who you are, earn a reply, then send the URL. Combined with a registered 10DLC campaign and clean STOP handling, that sequencing is the difference between paying for segments that land and paying for segments that vanish.
If you want to see how the registration and automatic opt-out handling fit together before you build a flow, Ready's SMS product page lays it out, and you can start with 2,500 free credits — no card — and test the warmup pattern on a small segment before you scale it.