For three months I tried to make Twilio work. It never did.
I set up the number more than once. Every attempt died at a different gate — carrier registration, A2P 10DLC compliance, campaign verification. Each fix “took 24-48 hours” and none of them shipped. My clients kept getting no-shows because the reminder never left.
I switched to Meta WhatsApp Business Cloud API on a Monday. Reminders were going out by Tuesday.
Two things made it obvious once I stopped defending the sunk cost:
My clients already used WhatsApp.
South Florida. Cuban families. The number my clients text me on to reschedule is their WhatsApp, not a shortcode. I’d been building an SMS system for a client base that lives on a different channel.
Meta’s free tier covered my whole month.
First 1,000 conversations a month are free. I’ve never come close. Twilio was charging me for infrastructure I couldn’t successfully deploy. Meta charged me nothing to deploy successfully.
The rule I now apply to every operator I build for.
Ask what channel your customers actually message on before you pick a stack.
Pick the stack first, try to force your customers into it, and you’ll spend three months learning what I learned.
If you’re stuck in the same trap, the switch takes an afternoon.
- 01Meta Business Manager → WhatsApp Business Account
- 02Verify the phone number your customers already have saved
- 03Get one message template approved (24-48 hours for Meta — and this one actually works)
That’s it. No campaign registration. No 10DLC. No shortcode ballet.
I still use Twilio underneath — Vapi’s voice infra runs on it, and that side has been fine. But for a text message going to a human? Meta. Every time.
