Your SMS messages are delivered but nobody sees them: here’s what’s happening
Your carrier marks the SMS as delivered, but iOS, Android and security apps can silently hide it on the device, after delivery. Your reporting looks fine while part of your list never saw the message. Track human CTR and conversions, not the delivery rate.
- Author
- Axel Corton
- Subject
- CRM
- Date
- Read time
- 8 min

Key takeaways
- Reported SMS open rates measure delivery, not reads, since there's no tracking pixel like email has.
- Silent suppression hides a delivered message with no bounce, no error code, no signal back to you.
- Klaviyo already excludes bot clicks from CTR, so your headline click rate stays reliable.
- A verified sender, one branded link instead of bit.ly and a consistent domain reassure the filters.
- Build an iOS and Android test panel to see what lands in the main inbox and what gets filtered.
There's something painful happening in SMS marketing right now, and a lot of advertisers are completely missing it. Your message gets marked as delivered. Your reporting shows clicks. And yet a chunk of your subscribers never saw the text. Never.
Spam filters used to be an email thing. We watched deliverability, we excluded inactives, we paid attention to content. SMS was the simple, direct channel, the one that always landed. That's over now. Apple, Google and mobile security apps have tightened the screws, and SMS now has exactly the same problems email had ten years ago.
Let me walk you through what's really going on, why your reporting is lying to you a little, and most importantly what you can actually do so you don't get caught out.
Why the SMS open rate you're shown no longer means much
Everyone repeats that SMS gets opened within minutes of sending, that it's read much faster and far more often than email. That's true, and it's what made the channel so strong for eCommerce, flash promos, follow-ups, notifications.
But there's a fundamental problem. The SMS open rate isn't really trackable the way an email open is. On email you've got a pixel that tells you a message was opened. On SMS there's no equivalent. So when a platform reports a huge open rate, it's really talking about delivery, not reading. And the gap between delivered and seen keeps widening.
That's the whole point of this article.
The real problem is the gap between delivered and seen
When you send an SMS campaign, there are three stages before a subscriber sees your message.
First stage, carrier delivery. Your message leaves your platform and heads out to the mobile networks. If you get a positive delivery receipt, you know the carrier accepted the message and pushed it to the phone. So far so good.
Second stage, on-device filtering. This is where it gets murky. Once the message lands on the phone, the operating system and the SMS app can file it under an "Unknown Senders" folder, scan the content and links before even displaying it, or flat-out hide it if they judge it too promotional or risky.
Third stage, subscriber behaviour. Do they open it, click it, reply. That's the only stage you actually want to optimise. Except the two before it carry more and more weight.
The issue is that the carrier doesn't see what happens at stage two. If your message is delivered to the phone and then silently filtered, the carrier still counts it as delivered. And that's the info every SMS platform receives, Klaviyo included. So your timeline shows "SMS received" while the subscriber swears they got nothing. Both are actually telling the truth.
Bot clicks, the clicks that don't come from your customers
A bot click is a click on your link made by a security system, not a human.
Where does it come from. Security features built into the mobile OS that pre-scan links to detect phishing. Native anti-spam protections on Android and iOS. Antivirus or security apps installed on the device or on the network.
These systems exist to protect people from scams, smishing, and malicious links. They click your link before the human sees it, they log the URL, and they decide whether to display, move or hide the message. Worse, they can classify your future messages as safe or risky based on what they found.
What does it look like in your data. Clicks with no human engagement behind them. Clicks coming from a very narrow IP range, often within seconds of sending. Clicks from profiles who tell you afterward "I never saw that message."
The good news is that Klaviyo already handles this cleanly. These bot clicks are visible at the event level for transparency, but they aren't counted in your campaign click rate. Your CTR is therefore based on human behaviour, not on scanners. That means if you look at your headline CTR, it's reliable. But looking at which subscribers are getting aggressively scanned is still super useful, more on that in a second.
Silent suppression, the thing that throws everything off
Silent suppression is when a message is delivered to the device (the carrier says yes) but it's pulled out of the main inbox or completely hidden by filters. No bounce. No error code. Not the slightest signal back to you.
What we see all the time.
iOS moving messages from new, unsaved numbers into an "Unknown Senders" folder or a filtered inbox. SMS apps or security tools flagging certain texts as "too promo" and quietly hiding them. Android phones with aggressive anti-spam protection, sometimes through third-party apps.
Because the suppression happens on the device, after carrier delivery, the carrier reports "delivered," your platform logs "received," and the subscriber sees nothing. That's exactly why your metrics can look fine while real performance is taking a beating.
Why it's exploding now. Three things are converging. iOS and Android are hardening their protections, especially for unknown senders. SMS scams have exploded, so default thresholds are stricter. And a classic promo copy is often indistinguishable from spam at first glance, especially if you're firing off all-caps, fake urgency with no context, a generic link and zero personalisation.
What really degrades your read rate, beyond the filters
Device filters are the visible part. But there are two other things eating into your actual read rate that often get overlooked.
Inactive numbers first. A subscriber who changed their number, who hasn't opened anything in months, stays in your database and counts towards your "delivered" even though they'll never read it. The more you keep, the more your delivery rate tells you a nice story that isn't real.
List saturation next. If you blast SMS to your whole base every other day, you wear people out, you get reported as spam more often, and the filters learn to file you in the wrong place. It's exactly the same logic as email, except with SMS you have far less room because it's more intrusive.
What you actually change to reduce filtering
You can't turn off security scans or device filters. But you can build your programme to work with them rather than against them.
Write like a human, not like a billboard
Filters look for patterns, not intentions. Small changes make a big difference.
Drop the all-caps, the machine-gun exclamation points, the fake urgency with no date or context. Instead, anchor your message in time and give context. "25% off everything until 11:59 PM tonight" lands better than "25% OFF EVERYTHING." Mix information with promo instead of going 100% commercial. Something like "Hey Julie, your early access to our sale just opened. Code BF25 for 25% until midnight" reads like an important notification with an offer, not like spam crammed into 160 characters.
Help phones trust you
The technical choices matter as much as the copy.
Use a verified sender or a brand identifier. A message that clearly shows your brand name looks safer and is more recognizable. Favour branded shortened links over public shorteners like bit.ly. Those shorteners are massively abused by spammers, so they get scrutinised more. Limit the number of links, one clean branded link per SMS is usually ideal. And stay consistent on your sending domain, if the domain in your SMS is the same one subscribers see everywhere else, you build more trust with the filters.
Get your timing and frequency right
The right message at the wrong time is a message that takes a beating. Avoid sending outside the hours when people check their phones, and above all respect the rules, consent, clear opt-in, permitted sending windows. It's not just a compliance issue, a subscriber disturbed at the wrong hour reports you, and every report feeds the filters against you.
On frequency, ask yourself honestly. Do you actually have something to say, or are you sending because it's on your calendar. Better one SMS that matters than one more SMS in the noise.
Test and segment to spot the risk zones
This is my favourite point because it's where you really win. Since read rate isn't directly trackable, the only way to approximate it is to build your own indicators. Set up a test panel with real phones, iOS and Android, different carriers, and send yourself the campaigns to see what lands in the main inbox and what ends up filtered. That gives you a real read, not the reporting one.
Then segment on behaviour. The profiles generating bot clicks without ever converting, the ones receiving constantly but never engaging, that's exactly where you need to adjust message style, urgency, and sometimes the whole flow logic. On email we're used to excluding inactives to protect deliverability. On SMS it's the same logic, a subscriber you've been talking to into the void for months costs you more than they bring in.
SMS or email, the question doesn't really work that way
People often ask me whether they should choose between the two. No. The two channels don't do the same job. Email carries the long content, the context, the visuals. SMS carries the immediate, the short, the time-sensitive. Running them together is what works, an email that lays out the offer and an SMS that reminds people of the deadline, for example.
The real trap is treating SMS like a second email. It isn't. And the more you pollute it with fake urgency, the more you burn a channel you can't easily replace.
What you actually measure performance on now
The reflex is to look at delivery rate and reassure yourself. Except delivery rate doesn't mean much anymore since the carrier reports delivered even when the message is hidden. Same goes for the SMS open rate you're sold, it rests on delivery, not reading. Focus on human-only CTR (the one Klaviyo already calculates excluding bots), on conversions, and on engagement by segment. That's what tells you whether your channel actually works.
And keep an eye on RCS, the successor to SMS with richer content, verified senders and better readability. It's still early but it's the direction mobile is heading, and it fits well with this hardening of protections.
The real mental shift is to stop treating SMS as a channel that always lands. It doesn't anymore. You now have to earn your spot, exactly like on email. Those who adapt their copy and segmentation cut their suppression dramatically without losing performance. Those who keep blasting "HURRY DON'T MISS OUT" to their whole base will watch their channel die in silence, without even realising it.
Sources
Frequently asked questions
How do I know if my SMS are really seen or just delivered?
Delivery rate isn't enough anymore, the carrier reports delivered even when the message is hidden on the device. Set up a test panel with real iOS and Android phones to see what lands in the main inbox, and look at human CTR plus conversions by segment, not just delivered.
Do bot clicks skew my click rate?
On Klaviyo, no. Bot clicks are visible at the event level for transparency but they aren't counted in your campaign CTR. Your click rate is based on human behaviour. That said, spotting which profiles get aggressively scanned is still useful for segmentation.
Why does a subscriber tell me they got nothing when it's marked delivered?
That's silent suppression. The message was delivered to their phone, but a device filter moved it to an unknown senders folder or hid it, with no bounce or error code. The carrier reports delivered, your platform logs received, and the subscriber sees nothing.
What triggers filtering on my campaigns?
All-caps, machine-gun exclamation points, fake urgency with no context, generic links like bit.ly and zero personalisation. Filters look for patterns. Write like a human, anchor your offer in time and use a single branded link per SMS.
Should I exclude inactives on SMS like I do on email?
Yes, it's the same logic. A subscriber who hasn't engaged for months costs you more than they bring in and degrades your sender reputation. Segment on real behaviour, then adapt or cut profiles that keep receiving without ever engaging.
About the author

Axel CortonFounderLinkedIn
Keep reading
Subscribe to our newsletter
Our methods on paid media, eCommerce and CRM, in your inbox.


