A lead for one of our clients wrote on WhatsApp asking for information. They wrote again a few seconds later, and hours after that sent a fresh "Hi". The bot read every message, prepared every reply and sent it. WhatsApp rejected all twelve.
The reason: that person uses WhatsApp's new feature that lets you write with a username and a hidden number. In those cases Meta no longer hands over the phone number, but a different identifier. And the bot only knew how to reply to phone numbers. The lead existed to be read, but not to be answered. No error in sight, no alert.
Our review agent found it by cross-checking the day's rejected sends. Another agent decoded the identifier the message carried, confirmed it against Meta's documentation and built the fix: the bot now replies to the phone number when there is one, and to the identifier when there isn't. It was tested and in production that same night.
Looking closer turned up something worse. Everyone with a hidden number was sharing a single conversation and a single memory, so a reply could be built with another stranger's data. That got fixed too.
What an agent couldn't decide was what to do about the phone number. Booking a call needs one, and the easy way out was to demand it up front from everyone who writes. We decided the opposite: the lead gets full service without a number, and the phone is requested only when it's about to be used, with WhatsApp's native share-contact button. Someone who is only asking questions has no reason to hand over their number. And we told our client's team so they could reach out to the lead who'd been left without an answer.
The rule that came out of it applies to every bot we run, without the client having to ask: a person's identity is whatever you can reply to, whether it's a phone number or not. A bot that only recognizes numbers silently leaves more and more people unattended.