Full disclosure — I run ReadySMS. This is a founder post about the technical and business choices behind the company. If you're looking for a feature comparison, this isn't it. Read the Twilio alternatives breakdown for that.

For the first six months of building ReadySMS, the question I got most often was a variant of:

"How are you cheaper than Twilio if you're built on top of Twilio?"

The implication was that I was either lying about the price, lying about the architecture, or running at a loss to acquire users. None of those is true. The answer is unsexier and more interesting: the per-message economics of an SMS API are mostly fixed costs, and the variable costs are negotiable at scale.

Here's what I mean.

What you're actually paying for

When you send an SMS through Twilio (or any CPaaS), the bill has three components stacked together:

  1. Carrier fee — what T-Mobile, AT&T, or Verizon charges to terminate the message. This is basically fixed across providers (~$0.003-$0.0045/segment) because it's pass-through.
  2. Carrier wholesale rate — what the CPaaS pays the carrier for access to send into their network. This is volume-negotiated. A small CPaaS pays meaningfully more per segment than a large one. There's a real cost gap between the providers who do 50M messages/day and the ones who do 5M.
  3. CPaaS markup — what the CPaaS charges on top of (1) + (2). This is where the platform makes money.

When Twilio quotes $0.0079/segment, that price has a Twilio margin baked in. When LeadConnector (LC Phone) quotes $0.0158/segment, that's $0.0079 of Twilio cost + $0.0079 of LC Phone markup. They're stacking margins.

ReadySMS is a different shape. We negotiated a wholesale rate directly with a tier-1 carrier-backed provider (not Twilio — though Twilio is what most marketing comparisons assume). At our volume, the wholesale rate is below Twilio's published retail rate. That's the whole trick. We pay less because we negotiated a contract, and we charge less because we built a thinner UI on top.

The architectural choice that mattered

Most "Twilio wrappers" exist for the wrong reason: they sell a cleaner UX on top of identical infrastructure. The economics never work. You inherit Twilio's wholesale costs and you pay Twilio's retail rate; your only path to margin is to charge MORE than Twilio.

ReadySMS only made sense once we changed the underlying infrastructure provider. The product looks like a SaaS layer (campaigns, conversations, GHL marketplace install) but the unit economics are wholesale + a small markup. The SaaS UI is the customer acquisition hook; the wholesale relationship is the moat.

If I'd built this on top of Twilio's API the way most "Twilio alternative" SaaS products do, the per-message cost would be above Twilio's retail rate, not below. We would have been a worse Twilio at a higher price.

The market that actually matters

The market I built for wasn't "developers who want a raw API." That market is small, technical, and already DIY-ing on whatever CPaaS gives them the lowest base rate. They have the engineering capacity to glue together a campaign manager, opt-out handler, and 10DLC dashboard themselves. ReadySMS isn't built to sell to them.

The market I built for was GoHighLevel agencies — small marketing agencies running 10-100 sub-accounts, sending heavy SMS volume, and paying LC Phone's $0.0158/segment because the alternative ("learn to integrate Twilio with GHL") wasn't realistic for a non-technical operator.

Those agencies didn't need an API. They needed a one-click marketplace install that drops a cheaper SMS provider into the GHL UI without changing their workflow. The technical work was modest. The customer development work — figuring out exactly what the GHL marketplace install needed to do, what the pricing wallet model needed to look like, how to handle 10DLC across hundreds of sub-accounts — was the hard part.

What I'd do differently

Three things I got wrong early:

1. I underpriced the first 6 months

I launched at $0.0049/segment ($0.0094 all-in) for everyone. The customers who signed up at that rate are mostly low-volume agencies that will never grow into the wholesale-rate tier we were optimizing for. They're great customers, but the unit economics are tight.

Today's pricing has 5 tiers ($0.0028 to $0.0084 base). The high-volume tier looks similar to what I launched with; the low-volume tier is 70% higher. The low-volume tier customers are paying for the GHL integration and the support, not the per-message cost. That's the right shape, but I should have started there.

2. I built the API before the GHL marketplace install

The first six months, I treated ReadySMS like a developer product. Documentation, REST API, SDKs. The conversion rate from "API signup" to "paying customer" was something like 3%.

The GHL marketplace install was an afterthought — built in week 28. Conversion rate from "marketplace install" to "paying customer" is north of 40%. That tells you how badly I misread the market.

3. I didn't take seriously how much SMS infrastructure work the platform requires

I assumed sending an SMS was the hard part. It isn't. The hard part is everything around the SMS: opt-out tracking across thousands of contacts, 10DLC registration flows, carrier deliverability monitoring, retry queues for failed inbounds, billing reconciliation against carrier invoices, fraud prevention, SHAFT-compliant content filtering. The actual send() function is maybe 1% of the codebase.

I underestimated this by a factor of 5x. A solo developer thinking about building "a thin SaaS layer over Twilio" will hit this same wall. There is no thin layer. Either you take the platform seriously or you ship a leaky product that breaks every time a carrier changes a policy.

The lesson I'd give another founder

If you're thinking about building infrastructure-as-a-service on top of an existing provider, the question to ask yourself is: what wholesale relationship can I negotiate that the incumbents can't or won't?

If the answer is "I'll just resell at a markup," don't build it.

If the answer is "I'll negotiate volume rates the incumbents don't offer to my customer segment, and I'll repackage the product for a market they don't serve well," that might work.

For ReadySMS, the answer was "I'll route through a carrier-backed provider at wholesale, and I'll repackage as a GHL marketplace app." Two choices, both deliberate. Neither one was sexy. Both worked.

The more general pattern I've seen across other infra SaaS:

  • Vercel repackaged AWS at wholesale + a Next.js UX layer. Worked.
  • Supabase repackaged Postgres + open-source Postgres extensions at wholesale + a hosted UX layer. Worked.
  • Resend repackaged AWS SES at wholesale + a developer DX layer. Working so far.

The pattern: real wholesale relationship, narrow customer wedge, opinionated product layer. If any of those three is missing, the math doesn't work.


If you're building something in adjacent infrastructure space and want to compare notes, I'm reachable at anton@readysms.io. Always happy to talk shop with other infra founders, especially if you're navigating the carrier negotiation side of the business — that part is genuinely a black box and most of us are figuring it out as we go.