The mistake I see agencies make over and over: they decide to leave a legacy provider, block off a weekend, and try to port all 20 client numbers at once. By Monday, half the clients are complaining that their appointment reminders and promos are landing in the void, and nobody can tell whether it's a routing problem, a registration problem, or a reputation problem — because you changed everything simultaneously and now there's no clean signal to debug.
Full disclosure: I work for ReadySMS, so I have a horse in the "you should move" race. But the advice below applies no matter where you land. Porting a book of clients is a sequencing problem, not a speed problem, and the agencies that treat it like a speed problem are the ones that wreck their carrier standing.
Why the "one weekend, all 20" plan backfires
Carriers don't have a formal "reputation score" you can query, but the messaging ecosystem absolutely tracks sending-number behavior: complaint rates, opt-out spikes, sudden volume changes, and whether traffic matches a registered 10DLC campaign. When you cut a number over to a new route, its recent sending history doesn't perfectly follow it. The number effectively re-establishes itself on the new path.
Do that for one client and you can watch delivery, spot problems, and fix them. Do it for 20 at once and you've created a wall of noise. If T-Mobile starts filtering harder on your new routes — which it does more aggressively than AT&T, something I've written about in Same Campaign, Different Carriers — you have no idea which client's traffic pattern triggered it, because they all landed at once.
The other failure mode is registration. Every client number needs to sit under a valid, matched 10DLC campaign on the new provider. Batch-porting 20 numbers before their campaigns are all approved means some of them start sending as unregistered traffic, which gets filtered hard. That's not a reputation reset — it's just broken from minute one.
The pre-flight work that has to happen before any number moves
Nothing ports until this is done. Ideally you do all of it while the old provider is still live and sending, so there's zero downtime.
- Register every brand and campaign on the new provider first. Brand registration runs roughly ~$10/mo per brand and campaigns ~$20/mo per campaign in carrier fees. On ReadySMS this happens in-app, and most approvals land same-day — I broke down what compresses that timeline in Most A2P Onboarding Takes 2-4 Weeks. But even same-day, you file before you port, not after.
- Match each campaign use case to actual traffic. If a client sends appointment reminders, that's a transactional/mixed use case, not marketing. Filing the wrong one silently throttles delivery — see why marketing-vs-transactional mismatch drops delivery.
- Confirm consent records travel. Your opt-in list and STOP suppressions have to move intact. If a contact opted out on the old system, they must stay suppressed on the new one. This is also a contract question most agencies handle badly — who owns the opt-in list when a client leaves.
- Decide port vs. new number per client. Some clients have the number printed on trucks and business cards — those get ported. Some are just a sending number nobody memorizes — those can get a fresh number, which sidesteps the port entirely.
Batch sizing: 3–5 numbers per wave, not 20
Here's the sequencing that actually works. Split the book into waves of 3 to 5 client numbers, spaced 48–72 hours apart. That gap is the whole point — it's your observation window. You port a wave, watch delivery for two to three days, confirm the numbers are landing on all three major carriers, and only then move the next wave.
| Wave | Clients | Timing | What you're watching |
|---|---|---|---|
| 1 (pilot) | 1–2 low-stakes | Day 0 | End-to-end mechanics: port completes, campaign matches, replies sync |
| 2 | 3–5 | Day 3 | Delivery rate per carrier, opt-out rate, any filtering |
| 3 | 3–5 | Day 6 | Same, plus whether earlier waves stayed healthy |
| 4 | 3–5 | Day 9 | Same |
| 5 (last) | highest-volume / highest-value | Day 12+ | Full throughput under load |
A 20-client book lands in roughly two weeks this way. That feels slow next to "one weekend," but two weeks of clean, observable migration beats a weekend that turns into a month of firefighting.
Warm-up order: which clients move first, which move last
The instinct is to move the biggest client first to "get it over with." That's backwards. Sequence by risk, not by importance.
Move first (the pilot):
- Low-volume clients where a hiccup won't cost anyone a booking.
- A client you have a good relationship with, who'll tolerate you saying "we're testing the new setup this week."
- Transactional senders (reminders, confirmations) over pure marketing blasts — cleaner traffic, lower complaint risk, easier to read the signal.
Move in the middle:
- Standard-volume marketing clients, a few per wave.
- Numbers being ported (as opposed to fresh numbers) — the port itself adds a variable, so you want it happening while you're still watching closely.
Move last:
- Your highest-volume sender. A 50,000-contact blast has its own throughput ceiling problem regardless of provider — why a 50K blast takes hours — so you don't want to stack "brand-new route" on top of "maximum load" until you've confirmed everything else is stable.
- Any client with a marginal list quality. If a client's list is questionable, moving it last means you're not introducing complaint risk into fresh routes before your good clients have established clean history. And if that list is genuinely dirty, run a litigator/DNC scrub at $0.005/contact before it ever sends on the new route.
Ramp volume inside each wave, too
Porting a number isn't a light switch you flip to full send. Even within a wave, ramp the daily volume on each newly-moved number over its first several days rather than immediately blasting everything you were sending before. A number that was pushing 10,000 sends/day should not resume at 10,000 on day one of the new route — start lower, watch, climb. This is the same port-and-warm principle I detailed for a single brokerage in the port-and-warm sequence; the batch version just runs it in parallel across a book.
If a client's brand vetting score is low, its daily cap may be the binding constraint anyway. Whether the $40 vetting upgrade is worth it depends entirely on the throughput you actually need — here's when it pays off.
Where the GHL integration saves you during all this
If your clients live in GoHighLevel sub-accounts, the migration has a second dimension: keeping each client's inbound and outbound messages isolated per location while you swap the underlying sender. ReadySMS connects to GHL via OAuth with two-way sync mapped per location, so inbound replies keep landing in the right sub-account inbox even mid-migration. That means a client whose number moved in Wave 2 still sees their conversations exactly where they always did — the plumbing changed, their experience didn't.
One consolidation decision worth making before you migrate: do all 50 sub-accounts need 50 separate registrations, or can some share? I've written about when consolidating helps and when it backfires — worth reading before you file, because it's much cheaper to decide upfront than to unwind later.
A worked cost check while you're at it
Migration is also a good moment to re-price. At ReadySMS Standard, outbound runs $0.02/segment plus the $0.0045 carrier pass-through billed as a separate line item — $0.0245 all-in per segment. Once your combined book crosses 50,000 segments in a calendar month, the rate drops to $0.016/segment automatically ($0.0205 all-in). Nobody picks that plan; it just applies.
Say your 20 clients collectively send 80,000 segments a month. At the Growth rate that's 80,000 × $0.0205 = $1,640/month all-in. The first 50,000 of those segments are what triggers the automatic drop, so a heavy-book agency lands on the lower rate almost by default. I ran the full tier-breakpoint math in the blended-margin post. The transparent carrier line item also matters for what you show clients — the $0.0045 pass-through your reseller hides in a rounded rate.
Fair note: on raw per-segment price alone, a bare CPaaS API can undercut this. What you're paying for is same-day 10DLC self-serve, the full bundled platform with no per-seat fees, and not having to run the A2P onboarding gauntlet manually across 20 clients.
The practical takeaway
Don't port a book in a weekend. Do the registration and consent work while your old provider is still live, split the clients into waves of 3–5 spaced 48–72 hours apart, lead with low-stakes transactional senders, ramp volume inside each wave, and save your biggest client and your dirtiest list for last. Watch delivery per carrier between every wave so you always have a clean signal when something moves.
If you want to see the mechanics before committing a client, ReadySMS starts with 2,500 free credits and no card, and 10DLC registration happens in-app — so you can run a one-number pilot and time the approval yourself. The migration playbook walks the full checklist, and the calculator will tell you where your book lands on the tiers.