Guides
A practical guide to building Thoughtly lead-call flows that classify objections, capture next-step signals, route opt-outs safely, and hand hot leads to humans.
Last updated
Most lead calls do not fail because the prospect says no. They fail because the first objection sends the flow sideways: the prospect is busy, wants to know the price, asks whether the call is automated, says they already spoke to someone, or asks for a human. If the agent treats all of those as the same objection, good leads get buried with bad ones.
Thoughtly handles this best when objection handling is built as a real call flow, not as one giant prompt. Use the Agent Builder to separate must-say lines, captured variables, outcome routing, mid-call actions, and human handoffHuman handoffThe moment an AI agent transfers context, call details, and the next step to a human rep, licensed specialist, or support team. rules. The result is an agent that can acknowledge the objection, keep the conversation useful, and still protect compliance-critical exits.
This guide shows how to build that flow for high-volume inbound lead conversionInbound lead conversionThe process of turning opted-in inquiries, form fills, calls, and quote requests into qualified conversations, appointments, or transfers. teams in insurance, mortgage, education enrollment, healthcare, home services, real estate, automotive, financial services, and similar funnels.
Start outside the canvas. Pull 25–50 recent conversations or CRMCRMThe system of record for leads, contacts, deals, and activity. Thoughtly reads from and writes to your CRM continuously. notes and group objections by the next best action, not by wording. The same phrase can mean different things depending on context. “I’m not ready” from a mortgage borrower may mean send education and call back; “I’m not interested” after a clear opt-outOpt-outA recipient’s request to stop receiving calls or messages. Compliant systems must capture opt-outs and suppress future outreach where required. should end the workflowWorkflowAn automated, multi-step process — usually triggered by an event (form fill, new lead) and orchestrating one or more voice / SMS / email actions..
For most inbound lead teams, a practical objection map looks like this:
| Objection category | Example caller language | Best next action |
|---|---|---|
| Busy now | I can’t talk right now | Offer a specific callback time and confirm the preferred channel |
| Needs price or rate | What does this cost? | Answer from approved context, then ask one qualifying question |
| Trust or identity | Who is this? Is this a bot? | Identify the company and agent clearly, then restate the reason for the call |
| Already contacted | I already talked to someone | Check CRM context or route to the right human owner |
| Eligibility concern | I’m not sure I qualify | Collect the minimum eligibility fields and branch accordingly |
| Wants a human | Can I talk to a person? | Transfer, book a human callback, or create an alert |
| Stop or opt out | Stop calling me | End the call and suppress future outreach according to your policy |
Keep the first version small. Four to seven high-confidence branches are easier to test than a sprawling taxonomy of every possible phrase.
Open the agent in Thoughtly’s Agent Builder. Thoughtly agents use Start, Speak, Transfer, and End nodes. The Start node opens the conversation and is spoken exactly as written, so keep it short and proofread anything that must be delivered verbatim.
A clean objection-ready skeleton usually looks like this:
Do not ask the agent to improvise every objection inside the Start node. Start should establish trust. Speak nodes should drive the conversation and route it.
Variables let the agent capture caller data and reuse it across nodes, actions, rules, and post-call follow-up. In Thoughtly, variables extract immediately after the caller’s latest reply and before outcome evaluation, which means a fresh value can route the very next branch.
Add variables from the right panel of the Speak node where the caller provides the relevant information. Use tight extraction instructions, not vague labels. For objection handling, start with these:
| Variable | Format | What to extract |
|---|---|---|
| caller_said_stop | Boolean | True only when the caller asks to stop calls, stop texts, unsubscribe, or not be contacted again |
| wants_human | Boolean | True when the caller asks for a person, representative, counselor, producer, loan officer, or advisor |
| callback_time | Text | The specific date, time, or time window the caller requests for a follow-up |
| objection_type | Text | The primary objection category: busy, price, trust, eligibility, already-contacted, human-request, not-interested, or other |
| urgency | Text | The caller’s timing signal, such as today, this week, this month, exploring, or unknown |
| preferred_next_step | Text | The action the caller prefers: call back, text details, email details, book appointment, transfer now, or stop |
For consumer lead flows, avoid defaulting to BANT-style fields. Insurance, mortgage, education, healthcare, home services, and similar funnels usually need intent, urgency, location or service areaService areaThe geography where a business can serve a prospect. Service-area checks prevent routing or booking leads a team cannot actually handle., eligibilityEligibilityThe fit criteria that determine whether a prospect can move forward, such as service area, insurance coverage, loan type, location, age, or program requirements., consent, availability, preferred next step, and vertical-specific details.
Outcomes decide where the conversation goes after a caller response. Thoughtly supports prompt-based outcomes, where AI interprets intent, and rule-based outcomes, where exact logical conditions decide the path. A node can use either prompt-based or rule-based outcomes, not both.
Use prompt-based outcomes when the caller’s wording is open-ended and varied. Use rule-based outcomes for compliance, deterministic checks, and fields that should never be guessed.
A strong pattern is to split the job across two nodes:
caller_said_stop == true, route to an End node and suppression workflow. If wants_human == true, route to Transfer or create a callback task. If a required eligibility field is missing, ask one clarifying question.Put the most important rules first. For example, an opt-out rule should run before a general “not interested” branch. Otherwise the agent may continue a conversation that should have ended.
Each objection branch should have one purpose: answer the concern, ask the next useful question, transfer, or end. Avoid long persuasive monologues. The agent should sound helpful, not trapped in a sales script.
Choose the right Speak node mode for each branch:
Here are practical branch designs:
| Branch | Node behavior |
|---|---|
| Busy now | Acknowledge quickly, offer two callback windows, capture callback_time, then confirm voice/SMS/email follow-up |
| Price or rate question | Give approved framing, explain that the agent needs one or two details to estimate fit, then ask the next qualifying question |
| Trust or identity | Repeat company identity, why the lead is being contacted, and where the inquiry came from if available |
| Eligibility concern | Ask the minimum eligibility question for the vertical, such as service area, program interest, coverage type, or appointment need |
| Wants a human | Transfer if available; otherwise book a human callback and send context to the team |
| Stop or opt out | Confirm the request and end without another pitch |
If the objection involves factual details, attach approved knowledge in the agent’s Genius settings or use a lookup action. Do not rely on the agent to invent pricing, policy details, program requirements, or medical guidance.
Objection handling is not only dialogue. Some objections require work: looking up the CRM owner, checking appointment availability, posting a Slack alert, sending an SMS, or transferring to a human.
Add actions from a Speak node by opening Actions and selecting + Add new action. Thoughtly actions can run mid-call so the agent can look up data, write records, send messages, and automate workflows in real time.
When a Speak node has actions attached, the flow changes: the agent speaks, the action runs, variables update from action results, outcomes evaluate, and the next node executes without waiting for another caller reply. Because of that, use rule-based outcomes that check action results directly.
Useful objection-handling action patterns:
lookup_found or owner fields.callback_time, book or create the callback, then send a confirmation.For actions that take a few seconds, add a short line first: “One moment while I check that.” This prevents awkward silence and sets the caller’s expectation.
Use Test Agent first. It lets you talk to the agent in text and quickly validate outcome paths, variableVariableA named value the voice agent stores during a conversation — caller name, intent, qualifying answers — and uses to drive routing and post-call actions. extraction, action outputs, and node step numbers without placing real calls.
Create a test sheet with 10–15 sample phrases per branch. Include messy phrasing, not just perfect examples:
After text tests pass, use Call Me for a real call. Listen for voice quality, barge-in behavior, endpointing, action timing, and transfer behavior. Thoughtly’s testing docs recommend using Call Me for final checks because text chat does not reveal TTSText-to-Speech (TTS)The system that turns the agent's generated text into spoken audio — the voice the caller actually hears. quality, interruption timing, or background-noise behavior.
Review the call log after each test. Node step numbers help you identify exactly where the conversation went during replay.
Do not send every lead sourceLead sourceThe channel, campaign, marketplace, referral partner, or form that generated a lead. Lead source often determines routing, compliance rules, and follow-up cadence. through a new objection flow on day one. Start with one segment: a specific inbound form, one insurance product line, one mortgage inquiry source, one education program, or one service area. Keep the old process available while you compare outcomes.
For the first week, review calls where the caller raised an objection, asked for a human, or opted out. Look for three things: wrong classification, too much talking, and missing next steps. Most early improvements come from renaming outcomes, tightening variable instructions, and shortening the objection response.
When the agent consistently handles the top branches, add secondary branches one at a time. Objection handling gets weaker when the flow grows faster than your test coverage.
caller_said_stop == true wherever possible.Track objection handling by outcome, not by call completion alone. A completed call can still be a failed lead experience if the agent talked past a human request or missed a callback window.
No. Use one node to classify broad objection intent, then route to focused response nodes. That keeps the flow testable and makes it easier to tune one branch without breaking the rest of the conversation.
Use prompt-based outcomes for open-ended caller intent, such as whether the caller is busy, price-sensitive, confused, or asking for more information. Use rule-based outcomes for deterministic checks, including opt-outs, validated fields, action results, and required handoff rules.
Route to a Transfer node if a live rep is available. If not, book a callback, send a confirmation, and write context back to your CRM or alert channel. Do not make the caller repeat the same objection after they ask for a person.
Start with the four to seven branches that cover the majority of real calls. Add more only after you have tested the current branches with Test Agent, Call Me, and live call review.
Yes, but only from approved context. Use Genius, CRM data, or integration actions for facts the agent needs. If the answer depends on a licensed advisor, producer, counselor, clinician, loan officer, or other human expert, route the lead instead of inventing an answer.