I woke up this morning to a Twilio email with a green banner. Our A2P 10DLC brand registration for Freebo — the one that had been sitting in “pending vetting” for weeks — was approved. That single email unblocked abandoned-booking texts, in-thread messaging, and extend-your-rental SMS. It is the last thing that stood between us and shipping a whole cluster of features that have technically been code-complete for months.
If you’re building a SaaS in the US and you think SMS is a feature you write, you’re going to lose several weeks the first time you try to send one. SMS isn’t a feature. It’s a registration you file, then wait on, then file another one, then wait on that too. The code is the easy part.
Here’s what actually happens between “we should text our customers” and “our customers can receive a text.”
The rule that changed everything about SaaS SMS
In late 2023 the US mobile carriers — AT&T, T-Mobile, and Verizon — finished rolling out a rule that any 10-digit long code (10DLC) used for application-to-person messaging must be registered. Not the number. The sender. Both the business behind the number and the specific kind of messages that number will send.
Unregistered 10DLC traffic gets one of three things done to it, depending on carrier: silently filtered, rate-limited to homeopathic doses, or outright rejected. Your Twilio dashboard will happily show a “delivered” status for a message that never reached a real handset. This is the trap: nothing errors. Nothing warns you. You just have a feature that appears to work in staging and quietly fails in production.
The rule exists because 10DLC was being used to send billions of spam texts a day. The registration process is the carriers’ way of putting a name and a use case behind every sender, so they can block the bad actors and let real businesses through. That’s the good version. The other version is that it’s a compliance tax that adds weeks to your launch.
Two registrations, not one
The bit almost everyone misses on their first pass: you don’t register once. You register twice.
Brand — your business as a whole. Legal name, EIN, address, website, “who are you.” Vetted by The Campaign Registry (TCR), a consortium the carriers stood up to be the single throat to choke for sender identity.
Campaign — the specific category of messages you’ll send from that brand. Not “we’ll send SMS,” but “we’ll send transactional booking confirmations, plus 2-factor auth codes, plus occasional promotional offers with explicit opt-in.” Each category has different rules and different per-message throughput.
The Brand vets first. Then, and only then, can the Campaign go in. Then the Campaign gets vetted, which is a second wait. Then the carriers approve or reject the Campaign, which can be a third wait. The clock resets each stage.
The Freebo timeline
Freebo is my booking platform for tour operators. Boats, tours, rentals — anything with schedules and payments. SMS is not a nice-to-have here. When a customer books a sunset cruise for tonight, they want a text at 4pm with dock instructions, not an email that sits in Promotions. When a rental group wants to extend for another hour, an SMS reply is how that transaction actually happens on the water.
Here’s what shipping this looked like in real time:
- March 2026Wrote the SMS codeTwilio SDK wired into the notifications worker. Templates drafted. Feature flags in place. In staging, my personal phone got messages. Everything looked done.
- May 2026First carrier filtering hitStarted sending real messages from a real Twilio number. Some got through. Some didn't. Delivery reports lied. Turned out the number wasn't on a registered brand.
- July 13, 2026Filed brand registrationLegal name, EIN, address, website, use case category. Uploaded through Twilio's console (they wrap TCR).
- July–August 2026Sat in the queueNothing to do. No email updates. No estimated wait. Vetting is a black box and the box takes as long as it takes.
- August 5, 2026Brand approved overnightGreen-banner email. Next step: file the Campaign for booking notifications and start the second wait.
Six months from writing the code to being allowed to ship it. The feature branch has been ready to merge since March. That’s how long the compliance step alone took, and I hadn’t even started the Campaign leg yet.
The mental model shift for founders
The lesson I actually want to hand to another SaaS founder here is this: for any category of feature that requires an outside party to approve you before you can ship it, treat the approval as the feature. Not the code.
Every startup I’ve watched try to add SMS has done the same thing: engineer first, discover the registration wall second, and only then start the clock they should have started six weeks earlier. The correct order is inverted. File the paperwork the day you decide the feature is on the roadmap, then build the code during the wait. If approval lands and the code isn’t ready, you launch a week later than you could have. If the code lands and approval isn’t there, you sit on a done feature for two months and eat morale doing it.
Tier 1 — Long approvals, start immediately (weeks → months). SMS / A2P 10DLC. Meta App Review. Google OAuth verification. Ticket insurance underwriting.
— Freebo integration-prerequisites doc, July 2026

We keep a doc called integration-prerequisites.md in the Freebo repo that ranks every roadmap feature by the lead time of the approval it depends on. Tier 1 is “start today or you’ll be sad in six weeks.” Tier 2 is “start when the roadmap says next month.” Tier 3 is “you can do this the day of.” The doc is boring. The doc is also the thing that keeps a two-person team from repeatedly discovering, mid-sprint, that we need a partnership program invitation, an app review, or a merchant vetting round before the feature we already built can go live.
What ships next
The brand is approved. The Campaign registration goes in today. Once that clears — probably another week, maybe two, nobody promises anything — Freebo can start sending booking confirmations, abandoned-checkout texts, and eventually the in-thread messaging that lets operators talk to customers without either party needing an app.
That’s a lot of product waiting on a form. The lesson isn’t “SMS is hard.” SMS is easy. The lesson is that in 2026, half the work of shipping a serious B2B product is not code — it’s paperwork on behalf of a business, filed with the right registry, months before you need the answer. Plan the wait. Then build during it.
Building & Shipping