Register your numbers with the carriers, from inside the app
An unregistered number gets labelled "Spam Likely" and the campaign dies before your agent says a word. Registering one meant clicking through the Twilio Console for each number, every time. There's now a Caller ID vetting panel on the Phone numbers page that reads your Twilio account and shows, per number, exactly which carrier registrations it actually carries — and a button that registers the ones that don't. It also sets up the trust products themselves: your business name on the handset display (CNAM), Voice Integrity, and SHAKEN/STIR call signing. Creating the business profile itself stays in the Twilio Console, because it asks for your EIN and legal documents. One thing this immediately answers: numbers you imported rather than bought through us were never registered, and nothing used to tell you.
Put a lead back in the queue in one click
When the AI books a time or promises a callback, we deliberately stop dialing that person — we said we'd call at a particular time, so we don't chase them in the meantime. That's right for a real lead and awkward while you're testing your own agent, where every practice call could leave someone parked for a week. The lead's detail panel now has Cancel promises & re-queue: it cancels the appointment and the callback and puts them back in the queue in one step. It never touches anyone's do-not-call status, and it can't start a call on its own — the campaign still has to be running.
What the caller said, on the booking
When the AI books a time it also writes down anything the person mentioned — that they'd rather talk after three, that it's their spouse who handles the policy, whatever came up. That note was being saved and never shown. It now appears under the booking, so whoever takes the call knows how to open it.
An Appointments screen — see every time the AI has booked
Bookings were being made and kept without anywhere to look at them. There's now an Appointments page: every time the AI agreed, who it's with and how to reach them, which buyer's line is being held, and what happened when we called back. If a booked time passes without a call going out, the row says so plainly rather than leaving you to work it out from the lead's history. You can cancel a booking from there too, which frees that buyer's line for someone else immediately. Underneath, a board shows each buyer's lines hour by hour, so you can see at a glance which slots are genuinely sold out and which the AI can still fill.
The AI books a time on the call — and we dial it back at that time
Not every lead wants to speak to a buyer the moment they fill out a form, and not every buyer is free when the lead is. Campaigns can now run in appointment mode: the AI asks when suits, books a real time during the conversation, and we call the lead back at that moment and warm-transfer them to the buyer who was held for it. Each buyer's slots are seats sized to how many calls they can take at once, so the same slot can never be sold twice — if three calls reach for the last seat together, exactly one gets it and the others are offered times that are actually free. A lead who doesn't show releases the seat and goes back in the queue to book a new time. Because appointment campaigns aren't waiting on a live buyer, they dial several leads at once, and every call identifies itself when it books, so the right caller gets the booking even with four conversations running.
"Take me off your list" now works, however someone says it
Almost nobody says the words "stop calling." They say "I'm not interested, don't contact me again," or just "take me off your list." The agent now recognises a refusal by what it means rather than by matching a phrase, and adds that number to your suppression list on the spot — nothing dials it again. We hardened it in the other direction too: an answering-machine greeting can never trigger a suppression, so a recording can't put a real person on your do-not-call list.
A health verdict for every caller ID
No carrier and no API will sell you a number's spam-flag status, so the Phone numbers page now scores each caller ID on the evidence you already own — its own dial history. A run of "busy" results with no ring is how a carrier quietly rejects a number, and a high rate of screener pickups is a reputation signal. Each number gets a plain verdict on whether it's actually reaching handsets, so you can rotate a burned number before it costs you a day of dialing. A single handset returning busy no longer counts against a number on its own — that's one person on another call, not a blocked caller ID.
The agent stops thinking out loud, and answers questions about itself
A handful of fixes that all make the agent sound like a person doing a job. It no longer reads its own reasoning aloud — a rule that existed before but lost to a later paragraph in its own instructions telling it it could emit non-spoken text; that permission is gone. It answers a caller who asks who it is, and a caller who asks to be put through when there's nobody to put them through to. It asks the qualifying question instead of reciting the criterion behind it, so it says "how old are you?" rather than reading out the age bracket it's checking against. And while a transfer connects it says one line and then goes quiet, instead of filling the silence.
Choose the model behind your agent
The language model driving an agent is now pinned rather than left to whatever the voice provider defaults to, and it can be swapped without a redeploy — useful because models differ far more in how they behave on a call than in what they cost. In our own testing the cheapest models were not the worst: two hung up on a call screener within ten seconds, one narrated its reasoning aloud, and the one we run now was both the most natural-sounding and among the cheapest. The agent also stops asking "are you still there?" after two unanswered checks rather than looping at silence.
Callbacks understand times the way people say them
Asking for a callback at "four o'clock in the afternoon" used to be scheduled for one in the afternoon, and "4:00 tomorrow" for ten in the morning — silently, while reporting success. Spelled-out hours, bare times with no am/pm, and phrases like "tomorrow afternoon" are all now read the way a person means them, assuming business hours when nothing else is stated. This affected every callback the AI promised, not just appointments.
Voicemail detection and per-call costs
The platform now detects when an answering machine picks up by reading the voicemail greeting ("you have reached…", "at the tone please record…", "the mailbox is full"). Before, those calls counted as answered conversations, which inflated your answer rate and stopped retries — the lead was marked contacted and never tried again. Now the lead goes back in the queue for a later attempt, and the live board shows "Voicemail detected" on the activity feed and the call's badge. Every call now also records what it cost, so your voice spend is counted alongside the calls that earned it.
One-click rule updates for existing ElevenLabs agents
As we learn from live calls, we refine the standard prompt rules every new agent gets — how to handle voicemail, holding through a transfer, never repeating a question. A new Update rules button on the AI Agents page now brings an agent you already built up to the current rule set in one click. Anything you've written or edited yourself is left untouched, and if the agent is already current, we tell you that instead of changing anything.
Voicemail control, and callbacks that always answer
New per-campaign Voicemails setting: stay silent on machines (the default), leave one short message on the final attempt only, or leave one on every attempt — each worded differently so repeat messages never sound canned. And every number you buy, rotate, or import now automatically gets your AI agent attached for incoming calls, so a lead returning a missed call always reaches the agent instead of dead air.
Rotate a spam-flagged number in one click
Rotate… on any phone number buys a fresh number in the same area code, moves over the label, daily cap, and rotation-pool memberships, then releases the old number so its monthly charge stops. Call history is kept. Area-code suggestions in the Buy panel now also rank where your uncalled leads are and mark which codes you already cover.
Buy and release phone numbers in the dashboard
On the Phone numbers page, click Buy a number to search available inventory by area code and purchase directly into your Twilio account (~$1.15/month, billed by Twilio). Numbers are automatically registered in Trust Hub for CNAM, Voice Integrity, and SHAKEN/STIR; linked to ElevenLabs for AI calls; and set with a 75-calls/day starter cap. When you no longer need a number, the Release… option removes it from Twilio and your pools while keeping the call history for your records.
Local-presence caller ID
Pool rotation now automatically calls from a number matching the lead's area code, then any number in their state, then the least-used number. This happens with no configuration — just add numbers to more area codes and local-presence calling works automatically. Local coverage grows automatically as you add numbers in more area codes; daily caps and text-message caller-ID matching always take priority.
Call transcripts show why each call ended
Every call transcript now ends with a plain-language line explaining the call's outcome: "[Call ended — the lead hung up]", "the agent ended the call", "voicemail was reached", "the call was transferred", or similar. See at a glance why each call finished without reading the full conversation.
Faster, more reliable call outcomes
Unanswered calls are now confirmed against phone-carrier records within seconds, so the dialer moves to the next lead quickly instead of waiting. The automatic double-dial (immediate second try) now also triggers when a phone's call-screening assistant answers or an answering machine picks up — not just after no-answers — since the phone has just seen the caller identify itself, the second try often rings through.
Simultaneous dialing, bounded by your buyers
Campaigns now make one call at a time by default — the next lead isn't dialed until the current call ends, which is gentle on your caller-ID reputation and can never send a transfer nowhere. When you're ready for more volume, switch a campaign to match buyer capacity: it dials as many leads at once as your buyers can actually take, using each destination's "calls at once" setting as the limit. A buyer set to 3 can hold three calls, so three leads dial in parallel; when every buyer is full, new leads wait. Buyers now default to one call at a time too — there's no such thing as an unlimited buyer — and an optional calls-per-minute cap adds a speed limit while a new number builds reputation.
Analytics: date-range reports you can take with you
A new Analytics page pulls a full report for any date range — today, last 7 or 30 days, any month, or custom dates. Summary tiles cover the whole funnel plus the money: revenue, estimated revenue, call costs, platform fees, and a profit line. Day-by-day charts show calls, transfers, and revenue trends, and sortable breakdowns by day, campaign, lead source, or buyer each download as a CSV that opens straight in Excel or Google Sheets.
Caller-ID number pools — rotate numbers, dodge spam labels
The new Phone numbers page imports your Twilio numbers, groups them into rotation pools, and lets a campaign call from the least-used number in the pool instead of hammering one line. Optional per-number daily caps (reset at midnight Eastern) keep volume gentle while a number builds reputation, and each number shows its own 14-day answer rate with a health chip — so a spam-flagged number stands out before it drags your whole answer rate down. Texts stay consistent automatically: the pre-call heads-up and every follow-up text come from the same number that calls that lead.
Route to the buyer paying the most per call
A fifth routing strategy, highest revenue, ranks your buyers by real dollars earned per transfer sent over the last 30 days — from your revenue postbacks, so buyers who reject calls or don't answer naturally rank lower. New buyers without enough history are ranked by their configured payout, and until postback revenue exists at all it simply routes to the highest advertised payout. As always, only buyers who are open and under their caps are considered for each call.
Buyer answer rates you can trust
"Did the buyer actually pick up the transfer?" is now answered from phone records, not guesswork: every transfer's buyer leg is verified against your own Twilio call log, and the buyer-acceptance panel shows answered-of-sent per buyer with explicit no-answer and busy counts. If a buyer stops answering their tracking number, you'll see it the same day — with revenue figures corrected to match what really connected.
The AI keeps its callback promises
When someone tells your agent "call me tomorrow after 3", that answer no longer disappears into a transcript. The agent asks for a concrete day and time, repeats it back, and the platform turns the phrase into a scheduled callback in the lead's own time zone — always inside legal calling hours. The lead is held out of dialing until the promised window opens, then called inside it, even if their regular retries were used up. A callback queue on the Leads page shows every pending promise in the person's own words, with one-click cancel. Retry settings also grew up: set a different wait before each attempt — quick second try, next-day third — instead of one fixed gap. And to be clear about how retries work: they only ever apply to calls nobody answered. Once a person picks up, they're never called again unless they asked to be.
Call-screener detection — and agents that hang up properly
iPhone and Android call screening answer the phone before the person ever hears it ring, which used to make "a robot took the pitch" look identical to "a real conversation happened". Every call is now judged after the fact: did a live human actually speak, or only a screener, voicemail, or IVR? Your funnel gains a "Human reached" stage, the live view flags screener-answered calls, and each campaign shows how many of its answered calls reached real people — so a caller-ID reputation problem can't hide inside a healthy-looking answer rate. Agents also gained the ability to hang up on their own: the moment a screener says the person is unavailable or a voicemail tone plays, the call ends — no more paying for minutes spent talking to a recording.
Live transcripts, a second live board, and a buyer clock
Click any call on the live board — in progress or recently finished — and its transcript opens right there, growing every few seconds while the call is still happening. There are now two live-board looks to choose from: the classic mission-control layout and a new terminal-style board (linked from the classic one's header) — both run on the same real data. And when a call is bridged to a buyer, the row's timer now counts time with the buyer, so you can watch it cross your billable-seconds threshold as it happens.
Dialing waits for an available buyer
If every buyer on a campaign is busy on other transfers, at its caps, or outside its accepting hours, new leads are simply not dialed — they wait, and calling resumes automatically the moment a buyer frees up or opens. No more spending a lead's one good answer on a call that had nowhere to send them. The campaign readiness panel now shows buyer availability live, so a waiting campaign always explains itself. (The take-a-message and callback fallbacks still apply to campaigns that have no buyer set up at all.)
Prepaid platform-fee balance — no more month-end bills
The per-minute platform fee is now prepaid instead of billed after the fact. Every new account starts with $10 in free credit, and the cost is drawn from your balance in real time as AI-call minutes are used. Add funds any time, or switch on optional auto-recharge to top up automatically when your balance runs low. If it ever reaches $0, calling simply pauses until you add more — no debt, no surprise invoice.
Revenue postbacks — actual dollars on every transfer
Your call-routing platform (LeadRouter today; Ringba/Retreaver-style formats accepted) can now post call results back to a per-account postback URL. We match each result to the right transfer by caller ID and time window, so transfers show confirmed revenue, buyer name, and billable status — not just estimates. The endpoint is forgiving about field names and formats on purpose; paste the URL into your platform and it works.
Buyer routing engine + warm transfer, four strategies
Campaigns now route qualified consumers to the right buyer destination automatically: priority order, round-robin, weighted split, or schedule-based. The engine honors each destination's accepting hours, concurrency, and hourly/daily/monthly caps. When a transfer starts, your buyer hears a whisper message built from the lead's own fields — name, state, anything custom — before the bridge connects.
No-buyer fallbacks: callbacks, messages, dispositions
When every destination is closed or capped, you choose what happens: the AI offers the consumer a callback window (and we re-dial inside it automatically), takes a message and emails it to your team, or simply records the disposition. No more qualified consumers evaporating because a buyer went to lunch.
The dialer engine — with the compliance rails welded on
The core calling engine is live: automatic retries with spacing, per-campaign pacing and concurrency, and calling windows. Calls are only ever placed 8am–9pm in the lead's local time, leads are re-scrubbed against your DNC provider if they've aged in the queue, and a double-dial guard makes sure nobody gets two simultaneous calls. These gates fail closed — if the system can't verify it's allowed to dial, it doesn't.
Signed outbound webhooks + full-funnel stats
Subscribe your systems to platform events — lead created, call started/completed, lead qualified, transfer initiated/bridged — delivered with HMAC signatures and automatic retries. Alongside it: a stats API and dashboard covering the whole funnel (ingested → dialed → connected → qualified → transferred → billable) grouped by day, campaign, source, or destination, with CSV export.
Retell integration: paste a key, pick your agent
Connect your Retell account with one API key — we validate it live, auto-discover your agents into a dropdown, and ingest call events (dispositions, transcripts, transfer events) in real time. Final end-to-end call verification is in progress before we mark it fully live. ElevenLabs is next.
DNC scrubbing with your own provider account
Connect TCPA Litigator List (Blacklist Alliance and DNC.com are on deck) and every incoming lead is scrubbed automatically. Prefer to run without one? You'll have to say so explicitly — the acknowledgment is recorded, and the app shows a persistent warning until a provider is connected. Provider credentials are stored AES-256-GCM encrypted.
CSV import with column mapping — plus the lead intake API
Upload any lead file, map your columns visually, and get a per-row report of what imported, what was deduplicated, and what was held back (missing consent, suppressed, DNC). The same normalization runs on the public HTTP API: phone numbers to a canonical format, state-based timezones, 30-day dedupe, and consent checking on every lead regardless of source.
Campaigns, destinations, and team accounts
The foundation release: passwordless magic-link sign-in, organizations with four team roles, campaign builder with progressive disclosure (simple by default, powerful when opened up), buyer destinations with schedules and payout configuration, suppression lists, API keys, and Stripe billing. Every action lands in the audit log from day one.