
The speed-to-lead problem is real. Studies consistently show that calling a lead within 5 minutes of form submission increases contact rates by 9x compared to waiting 30 minutes. Most agencies and their clients know this. Almost none of them actually do it.
The reason is obvious: nobody wants to staff a human whose entire job is to call leads the second they come in, 24/7, including weekends. The economics don't work unless you're generating hundreds of leads per day.
Voice AI agents solve this. For the past 18 months we've been deploying Retell AI agents for agency clients — roofing companies, medical practices, home services, financial advisors. Here's what we've learned about what actually works.
Why Retell AI Over the Alternatives
There are a handful of voice AI platforms worth considering: VAPI, Bland AI, Retell AI, ElevenLabs Conversational AI. We've tested all of them. Retell is what we standardized on for client deployments for three reasons.
First, latency. Retell's average response latency in production is 600-900ms. Bland and VAPI average 1.2-1.8s on similar infrastructure. That extra second matters more than you'd think — it's the difference between a conversation that feels natural and one that feels like talking to a phone tree.
Second, the dashboard. Retell has the most complete operations view: live call monitoring, transcript review, call analytics by agent, by time of day, by outcome. When a client's agent starts underperforming, you can pull the transcripts and identify exactly where the conversation is breaking down within 10 minutes.
Third, LLM flexibility. Retell lets you connect any LLM — Claude, GPT-4o, Gemini, or fine-tuned models. For clients where call content is highly specific (medical intake, financial services), we swap in a domain-tuned model and keep Retell as the voice/telephony layer.
The Core Architecture
Before touching Retell's dashboard, you need to understand what you're actually building:
Inbound lead (form, ad click, etc.)
→ Webhook fires to n8n
→ n8n checks business hours + lead data
→ Retell API call: initiate outbound call
→ Retell connects call to AI agent
→ Agent qualifies lead per script
→ Transcript + outcome → n8n
→ n8n writes to CRM (GHL, HubSpot, etc.)
→ Follow-up sequence triggered based on outcome
The key piece most people miss: Retell handles the call. n8n handles everything around the call — the trigger, the pre-call enrichment, the post-call routing, the CRM write. Retell's API is the bridge between your automation layer and the actual phone conversation.
The complete flow: inbound leads trigger n8n workflows that validate business hours, enrich lead data, and instantiate Retell voice agents with LLM backends.
Setting Up the Retell Agent
Step 1: Create an agent in Retell dashboard
Go to Retell dashboard → Agents → Create Agent. You'll configure:
- LLM: We default to Claude Sonnet 4.6 for most clients. Good balance of response quality and latency. For simpler scripts, Claude Haiku is fast and cheap.
- Voice: Retell has 100+ voices. We A/B test 3 voices per client before going live. "Alex" and "Sarah" from ElevenLabs tend to have the highest trust ratings in our testing.
- Initial message: The first thing the agent says when the call connects. Keep it under 15 words. "Hi, this is Alex from [Company] — is this [lead name]?" Not: "Hello! I'm so excited to speak with you today about..."
Step 2: Write the system prompt
This is where most deployments fail. A voice AI system prompt is not a chatbot system prompt. Key differences:
❌ Chatbot prompt approach:
"You are a helpful assistant for Acme Roofing. Answer questions about
our services, pricing, and availability..."
✅ Voice agent prompt approach:
"You are Alex, an appointment setter for Acme Roofing.
Your ONLY goal: qualify the lead and book a free estimate.
Qualification criteria (ask in natural conversation, not as a checklist):
1. Do they own the home? (renters can't authorize work)
2. Are they in our service area? (Dallas, Plano, McKinney, Frisco)
3. What's the issue? (storm damage, leak, full replacement, inspection)
4. When are they available? (offer: Mon-Fri 8am-6pm, Sat 9am-2pm)
If qualified AND booked: say "Great, you're all set for [time].
Someone from our team will confirm by text." Then END the call.
If not qualified: "I appreciate your time — I'll let our team know
and someone will follow up if anything changes." Then END the call.
RULES:
- Never quote prices
- Never promise anything beyond the estimate
- If they ask about cost: "Our estimator will give you exact numbers —
that's what the visit is for"
- Max call length: 4 minutes
- If they sound annoyed: "I apologize for the interruption — I'll let
you go. Have a good day." Then end the call.
Notice the structure: goal first, qualification criteria second, explicit outcomes third, hard rules last. The agent needs to know exactly when to end the call.
Step 3: Connect telephony
Retell integrates with Twilio, Vonage, and their own number provisioning. For most clients we use Retell's native numbers (simpler setup, one less API key to manage). For clients who already have a business number, we port it or use call forwarding.
The n8n Trigger Workflow
Here's the n8n workflow that fires the outbound call:
// n8n Code node — fires after lead form submission
const lead = $input.item.json;
// Business hours check (client's timezone)
const now = new Date().toLocaleString('en-US', {
timeZone: 'America/Chicago',
hour: 'numeric',
hour12: false
});
const hour = parseInt(now);
const isBusinessHours = hour >= 8 && hour < 20; // 8am-8pm
// Prepare call data
return {
to_number: lead.phone,
retell_agent_id: 'your_agent_id_here',
metadata: {
lead_name: lead.first_name,
lead_email: lead.email,
source: lead.utm_source || 'direct',
form_submitted_at: new Date().toISOString()
},
call_immediately: isBusinessHours,
scheduled_time: isBusinessHours ? null : 'next_business_morning_8am'
};
The call to Retell's API:
// HTTP Request node
POST https://api.retellai.com/v2/create-phone-call
Headers:
Authorization: Bearer YOUR_RETELL_API_KEY
Body:
{
"from_number": "+19729876543",
"to_number": "{{ $json.to_number }}",
"agent_id": "{{ $json.retell_agent_id }}",
"metadata": "{{ JSON.stringify($json.metadata) }}",
"retell_llm_dynamic_variables": {
"lead_name": "{{ $json.metadata.lead_name }}",
"source": "{{ $json.metadata.source }}"
}
}
The retell_llm_dynamic_variables field is important — it lets you inject lead-specific data into the agent's system prompt at call time. No need to create a new agent for each lead; the same agent gets personalized context per call.
The Retell operations dashboard provides transcript review, call analytics by outcome, and real-time performance monitoring — enabling rapid agent optimization.
Post-Call Webhook Processing
After each call, Retell fires a webhook to your n8n endpoint with the full transcript, call outcome, and any data the agent extracted. This is where you close the loop:
// n8n Code node — processes Retell webhook
const call = $input.item.json;
const transcript = call.transcript;
const metadata = call.metadata ? JSON.parse(call.metadata) : {};
// Extract outcome from transcript using Claude
// (or use Retell's built-in data extraction if you set it up)
const outcome = call.call_analysis?.call_summary || 'unknown';
// Determine next action
let nextAction = 'nurture_sequence';
if (outcome.includes('booked') || outcome.includes('appointment')) {
nextAction = 'send_confirmation_sms';
} else if (outcome.includes('not_interested') || outcome.includes('do_not_call')) {
nextAction = 'mark_dnc';
} else if (outcome.includes('voicemail')) {
nextAction = 'voicemail_follow_up_sequence';
}
return {
contact_id: metadata.contact_id,
call_duration: call.end_timestamp - call.start_timestamp,
outcome,
next_action: nextAction,
transcript: transcript,
recording_url: call.recording_url
};
The next_action field routes to different branches in the same workflow — send SMS confirmation, update CRM status, trigger email sequence, or add to DNC list.
Real Numbers from Client Deployments
For a roofing client in the Dallas area running storm season campaigns:
- Contact rate: 68% of leads reached within 2 minutes of form submission (vs. 23% with human callers on a 15-min SLA)
- Qualification rate: 41% of contacted leads booked an estimate
- Call duration: Average 2.4 minutes for qualified bookings, 1.1 minutes for disqualified
- Cost per booked estimate: $4.20 in API costs vs. $18-22 with a human appointment setter
For a medical practice running new patient acquisition:
- Contact rate: 71% same-day
- Intake completion: 55% of contacted leads completed pre-intake questions on the call
- No-show rate: 12% lower than leads booked through their web form (voice confirmation creates stronger commitment)
The contact rate numbers are where voice AI wins decisively. Human teams can't maintain sub-5-minute response times consistently. The AI agent calls the second the webhook fires, every time, at 2am or on Christmas.
What Doesn't Work
Over-scripted agents. Agents that follow a rigid script fail when leads go off-path — and they always go off-path. The system prompt needs to handle the goal and guardrails, not every possible conversation turn. Trust the LLM to handle natural conversation; script the outcomes.
Long calls. Set a hard maximum. After 4 minutes, conversion rates drop sharply. If a lead hasn't qualified or disqualified in 4 minutes, they're not going to. Have the agent offer a callback with a human.
No voicemail strategy. 30-40% of calls will go to voicemail. Have a specific voicemail message scripted — 15 seconds max, clear callback number, one clear ask. Don't leave the LLM to improvise voicemails.
Calling too late. After 9pm, contact rates collapse and negative sentiment spikes. Hard cutoff at 8pm regardless of when the lead came in. Queue for 8am.
Compliance Note
TCPA and state-level regulations around AI phone calls are evolving. For clients targeting US consumers: get express written consent in your web forms ("By submitting, you consent to be contacted by phone, including by automated means"), use a compliant DNC scrubbing service, and honor opt-outs immediately. This isn't optional — non-compliance exposure is significant.
We're not lawyers and this isn't legal advice, but we don't deploy voice AI for any client without reviewing their consent language first.
Building voice AI lead follow-up for your agency clients? We can review your current setup or build the full stack — Retell, n8n, CRM integration. Book a call to talk through your use case.