The number is wrong, disconnected, or a landline
This is the most common cause and the only one you can genuinely fix. A digit typed wrong produces a valid-looking number that belongs to nobody, or worse, to a stranger.
Disconnected numbers are the second layer. About one in ten mobile numbers changes hands each year, so any list older than a year has a few in it that no longer reach the person you meant.
Landlines cannot receive a text at all. There is no error and no warning, the message simply goes nowhere. This is why a list built from people entering their own number beats a list typed in by somebody else.
The phone is off, out of signal, or full
A phone that is switched off does not reject a message. The carrier holds it and tries again, usually for a day or two, and delivers it when the phone comes back.
So a text that has not arrived is not necessarily a text that failed. Someone on a flight, in a basement, or camping will get it late rather than never.
A full inbox is rarer now but still happens on older handsets, and it does cause a genuine failure. Nothing on the sending side can do anything about any of these.
They replied STOP, possibly years ago
When someone replies STOP, the block is applied by the phone company, not by the sender. It is permanent for that sending number and it survives everything: a new list, a new event, a new payment.
This catches people out because the person may have opted out of something entirely unrelated months earlier, and they will not remember doing it.
There is nothing a sender can do to override it, which is the point of the mechanism. The person has to text START or UNSTOP themselves. How opt-outs actually work covers the rules behind it.
The phone company filtered it
Carriers screen messages before delivery and silently drop the ones that look like spam. No error comes back, which is why this one is so frustrating.
What triggers it: shortened links from free URL shorteners, ALL CAPITALS, words associated with loans, prizes, crypto or adult content, and sending from a number not registered for business messaging.
The last one is the biggest. Sending through a registered number is most of what separates a delivered message from a filtered one, which is why bulk sending from a personal phone fails.
Why you cannot simply look up who received it
A carrier can confirm it accepted a message for delivery. It cannot reliably tell the sender whether a human read it, and delivery receipts are inconsistent across networks and handsets.
So any service claiming to show you exactly who read your text is overstating what the phone networks actually report. Treat precise open rates with suspicion.
The honest position is that most messages arrive within minutes, some arrive late, and a small number never arrive for the reasons above. Delivery percentages quoted online usually come from marketing rather than measurement.