Where the July 2026 bill goes, and what each lever is worth. Numbers are pulled read-only from Twilio usage records (July = last full month) and Firestore prd; savings are monthly at July unit prices, ± 15%.
Two lines are 84% of spend: renting 2,728 phone numbers ($3,098) and toll-free SMS ($3,560). Around 2,000 of those numbers have no tenant, no calls in 90 days, or belong to churned accounts, and office texts average 3.9 segments because each carries a 130-character recording URL. Releasing stale numbers and shrinking the texts are worth $4,066/mo in the likely case (−53%, ≈ $49k/yr); the SMS and dead-recipient fixes are merged to main.
Running tally against the $4,066/mo likely case. "Deployed" means live in production; the SMS savings show up in Twilio's usage records from the first post-deploy texts. The Premium Support downgrade was taken off the plan on 25 Aug. "Secured" means the money stops on a known date without further decisions; "built" means code is written on the branch but not yet merged and deployed.
| Lever | Status | $ / mo | What happened |
|---|---|---|---|
| Delete legacy recordings | done | $59 | 25 Aug — 67,959 recordings / 91,878 min created before 2026-06-01 deleted, 0 failures. delete-legacy-twilio-recordings.ts |
| Release stale numbers — Tier A (GHL-routed) | quarantined | $938 | 25 Aug — 816 numbers detached from the Retell trunk, voice → <Reject/>, renamed. Release runs from GitHub Actions on 28 Aug 15:00 UTC (PR #1030 merged); CI dry run verified 20:48 UTC. |
| Release stale numbers — Tier B (operator-excluded) | quarantined | $411 | 25 Aug — 357 of 365 quarantined; 3 held as A/B-linked, 5 already in Tier A. Same 28 Aug release. |
| Release stale numbers — Tier C (unlisted) | quarantined | $918 | 25 Aug — 798 of 800 quarantined (2 already in Tier A), 0 failures. Same 28 Aug release. |
| Shrink office SMS body | deployed | $900–1,500 | 25 Aug — PR #1035 merged 21:11 UTC; Vercel production deploys succeeded (backend 21:12, web 21:14). Short dashboard call link (/c/:token) instead of the 130-char recording URL; empty-value and duplicate-summary drops; blank-line compaction. Savings show from the first post-deploy texts. |
| Suppress dead SMS recipients | deployed | $150–245 | 25 Aug — PR #1035 deployed 21:14 UTC. Per-recipient health from Twilio status callbacks; auto-disable at 3 permanent / 10 transient failures; settings-page re-enable. Ramps as the webhook accumulates failures; first landlines trip after their third failed text. |
| Volume / committed-use pricing | not started | $500–1,200 | Best negotiated after the number release lands and the bill resets. |
| Toll-free → 10DLC · after-hours merge · SIP REFER | not started | $290–445 |
Number rental stops accruing at release, not at quarantine — the $2,267 lands on the September invoice. Tier B/C counts are from the live runs and differ slightly from the audit's estimates below.
Voice is already cheap — SIP trunking to Retell is $632 for 144k minutes. The money is in rentals and texts.
Twilio's channels line ($3,555) is the parent bucket for SMS outbound + carrier fees + inbound, not an additional charge; the itemized lines above sum to the $7,639 total. Not in use anywhere: Lookups, Verify, Studio, Conference, transcription, AMD, CNAM, trunk recording.
Conservative vs likely, $/month. Stale-number release and the SMS body format are ~85% of the opportunity between them.
Bill composition today against the likely case.
2,728 numbers in Twilio; only 1,919 have a tenant document, and 1,215 of those (63%) have had no call in 90 days. Number rental is 40% of the bill, and nothing in the platform releases a number today — the only intentional release path is the A/B variant delete.
| Tier | Who they are | Numbers | $ / mo | Gate |
|---|---|---|---|---|
| A | Twilio-only, no numbers doc. 806 route to GoHighLevel/LeadConnector; 691 were bought on 2025-12-19 in a three-minute window — residue of the "7,503 accidental purchases" incident. About 57% are fully idle. | 813idle ≈ 460 | $935idle $530 | Confirm GHL ownership with sales/marketing first |
| B | accountHealthExclusions — operator-marked test line or dead account — with no call in 90 days | 366 | $421 | Safest cohort; release first |
| C | unlisted (no HubSpot company) with no call in 90 days, minus A/B-linked numbers | 802 | $922 | 128 have a CRM configured — spot-check; 202 were never called at all |
| D | unclassified with no call in 90 days | 12 | $14 | CSM check |
| E | cancelled (churned) with no call in 90 days. 11 of the 31 churned numbers still receive calls. | 8 | $9 | Offer forward or port-out; 30–60 day grace |
| Conservative | A idle + B + E | ≈ 830 | $960 | |
| Likely | A – E | ≈ 2,000 | $2,300 | |
| Actual | A (all 816) + B (357) + C (798) quarantined 25 Aug; release 28 Aug | 1,971 | $2,267 | D/E not yet done |
disableSelfServeNumber only blanks the voiceUrl and keeps billing. Clones carry no isClone marker and docs have no created-at, so Twilio dateCreated is the only age signal.abtestNumber / isABTestNumber. Releasing one without unlinking sends callers to a dead number through decideNumberToUse; run clear-abtest-link.ts first.removeRetellNumber leaves orphaned retellData and Retell phone objects — 95 already exist.apps/backend/scripts/release-stale-numbers.ts to fleet-write conventions: dry-run by default, --apply plus a --cohort file, re-verify each number immediately before release (last call, class, A/B link, deny-list), write AuditTrail/{phone}/logs with the Twilio SID, detach from the Retell trunk and delete retellData. Script the revert first — the doc can be restored; the number cannot be re-bought.voiceUrl and detach the trunk for 30 days, watch inbound attempts, then release.provisionedAt / expiresAt on demo, test and clone numbers so they auto-qualify.Audit script and output: /tmp/archer-audit/audit-stale-numbers.ts, /tmp/archer-audit/number-audit.json (2,732 rows).
SMS is $3,560 all-in, about $0.0123 per segment. Office lead texts averaged 3.9 segments because shortenUrl() was a stub returning the full ~130-character recording URL, alongside a duplicated summary line. 8.5% of messages failed outright — to the same landlines and dead numbers, call after call — and Twilio bills the failed segments too.
| # | Lever | Cons. | Likely | Effort | Status · risk |
|---|---|---|---|---|---|
| 1 | Shrink office SMS: short dashboard call link (/c/:token, ~50 chars) instead of the recording URL, drop empty values and the summary line when the reason field already carries it, collapse blank lines. Measured 8 → 5 segments on real messages. | $900 | $1,500 | Low | merged 25 AugSummary drop is a product call; one constant to tune. |
| 2 | Suppress dead SMS recipients: auto-disable after 3 consecutive permanent failures (landline 30006, dead 30005, invalid 21211, opt-out) or 10 transient; visible in the call log and Settings → Post Call with one-click re-enable. | $150 | $245 | Low | merged 25 AugSavings ramp as the webhook accumulates history. |
| 3 | Negotiate committed-use / volume pricing (~$7.6k/mo, mostly numbers and toll-free SMS) | $500 | $1,200 | Sales cycle | 12-month commitment; shrinks once the levers above land. |
| 4 | Move office SMS from toll-free to 10DLC senders (carrier fee ~$0.003 vs $0.0042 per segment) | $200 | $290 | Medium | Campaign vetting, per-number daily caps, carrier filtering. |
| 5 | Delete 67,959 legacy pre-Retell recordings (92k minutes; none created since May 2026) | $59 | $59 | Low | done 25 AugDeleted without export; playback on pre-June call docs is gone. |
| 6 | Merge after-hours lead + action texts; route monitoring.ts error SMS (with stack traces) to Slack | $40 | $80 | Trivial | None. |
| 7 | Transfers via SIP REFER instead of Retell bridging (21.6k bridged minutes a month) | $50 | $75 | Med–High | Twilio-side saving is small; the real win is ~$1,000–1,500/mo on the Retell bill. Unverified that Retell supports REFER on custom trunks. |
| — | Retell-purchased numbers instead of Twilio | — | — | Not recommended: Retell numbers cost more per number. |
Outbound campaign calls originate from a Retell-owned number, so the $214 termination line is transfers and after-hours dial-outs only.
| Bucket | Conservative | Likely |
|---|---|---|
| Stale-number release | $960 | $2,300 |
| SMS format + failed recipients + after-hours / error texts | $1,090 | $1,825 |
| Recordings | $59 | $59 |
| Toll-free → 10DLC, SIP REFER (Twilio side) | $250 | $365 |
| Total, excluding negotiation | $2,356 | $4,546 |
| Volume-pricing negotiation — overlaps; apply to the residual bill | $500 | $1,200 |
The headline figures ($2,166 / $4,066) are these totals with lever overlap removed — 10DLC and part of the SMS savings shrink once the SMS body shrinks — and negotiation excluded. The Premium Support downgrade ($294) was removed from the plan on 25 Aug.