Intelligent Call Routing for Small Businesses: Skills, Schedules, and ZIP Rules in My AI Front Desk
Introduction
Quick overview: Intelligent call routing at a glance
Get the essentials in one place, then jump to the deep‑dive sections below to implement fully.
| Dimension | What it does | Typical inputs | Best for | Common actions |
|---|---|---|---|---|
| Skills | Routes by team expertise or department | skill tags (billing, Spanish, tier‑2), ring groups | Getting callers to the right expert fast | transfer (warm), escalate, ticket.create |
| Schedule | Changes behavior by hours/holidays/shifts | time windows, time zone, holidays | After‑hours coverage, on‑call ladders | transfer to on‑call, voicemail, SMS booking link |
| ZIP/postal | Matches callers to territories or nearest site | ZIP include/exclude, ranges | Service areas, multi‑location routing | transfer to location queue, book.nearest |
Jump to details
-
Routing dimensions you can combine: see list
-
Exact criteria + JSON: see examples
-
Failover order and logging: see rule evaluation
-
Industry scenarios (real estate, medical, plumbing): see examples
Copy‑ready JSON examples (click to expand)
Minimal skills‑based rule (billing ring group, business hours)
{
"rules": [
{
"id": "billing-hours-simple",
"when": {
"intent": ["billing"],
"schedule": {"tz": "America/New_York", "days": [1,2,3,4,5], "start": "09:00", "end": "17:00"}
},
"then": [
{"action": "transfer", "to": "ring-group:billing", "warm": true, "timeout_sec": 20}
],
"else": [
{"action": "voicemail", "mailbox": "billing"},
{"action": "sms", "template": "after-hours-pay"}
]
}
],
"ring-groups": {"billing": ["user:amanda", "user:paul"]}
}
After‑hours on‑call ladder (emergency intent)
{
"rules": [
{
"id": "after-hours-emergency-simple",
"when": {"intent": ["emergency"], "schedule": {"open": false}},
"then": [
{"action": "transfer", "to": "user:oncall-1", "warm": true, "timeout_sec": 15},
{"action": "transfer", "to": "user:oncall-2", "warm": true, "timeout_sec": 15},
{"action": "notify", "channel": "sms", "to": ["+16025550123"], "payload": "Emergency escalated; transcript attached"}
]
}
]
}
ZIP/territory match to nearest office (fallback to booking link)
{
"rules": [
{
"id": "zip-territory-routing",
"when": {
"intent": ["service request", "new customer"],
"zip": {"include": ["85001-85060", "85281", "85282"]}
},
"then": [
{"action": "transfer", "to": "ring-group:phoenix-intake", "timeout_sec": 20}
],
"else": [
{"action": "book.nearest", "locations": ["phoenix", "mesa", "tempe"]},
{"action": "sms", "template": "self-book", "payload": {"link": "https://bookings.example.com/intake"}}
]
}
],
"ring-groups": {"phoenix-intake": ["user:phx-1", "user:phx-2"]}
}
Need pricing or a broader feature tour?
-
Pricing and included minutes: Pricing
-
Full platform overview: Features Intelligent call routing ensures every caller reaches the right destination the first time. In My AI Front Desk, routing combines AI understanding of intent with deterministic rules across skills, time windows, and location (ZIP/postal). This page defines the rule model, shows practical scenarios (billing, emergencies, escalations), and provides JSON rule examples you can adapt. My AI Front Desk supports 24/7 AI answering, unlimited concurrent calls, native transfers, and deep calendar/CRM integrations used to execute these routes.
What “intelligent routing” means in My AI Front Desk
-
AI intent + rules: The agent classifies caller intent (e.g., “billing,” “new patient,” “emergency”), then applies your routing policy (skills, schedule, ZIP) before acting (transfer, book, SMS follow‑up, voicemail).
-
Live transfers with context: When escalation is needed, the AI passes transcript/context so the human never re-asks basics.
-
Skill- and intent-based routing: Filter and route by practice area, department, or agent skill.
-
Deterministic fallbacks: If primary route fails (no answer, after-hours), the engine falls back in order (second agent → voicemail → SMS link to book).
-
Data/logs for QA: Call logs, transcripts, and analytics verify rules and outcomes.
Route calls and qualify leads (exact criteria + JSON)
Use explicit, deterministic criteria so your AI always knows who to route and when to escalate.
Exact criteria you can combine
-
Intent: billing, new customer, emergency, appointment, cancellation, refund, support
-
Caller type: new vs. existing (from CRM lookup)
-
Schedule/time zone: business hours, after-hours, holidays
-
ZIP/postal or territory: include/exclude lists or nearest location
-
Language: auto-detected (en, es, fr, …) to bilingual teams
-
Tags/attributes: VIP, open ticket, practice area, account tier (from HubSpot/Salesforce/Google Workspace/Attio via native/Zapier)
-
Value score: qualify and route high-intent leads first (from CRM scoring)
-
Channel and repeat calls: prioritize callbacks and escalations
Warm-transfer protocol (recommended) 1) Summarize and confirm key details with the caller (reason, name, callback number, next action). 2) Attempt live transfer to the target user or ring group; pass transcript + brief summary. 3) If no answer within timeout, fall back to the next step (second agent → voicemail → SMS booking link) and notify the team.
Copy/paste JSON (routing + warm transfer)
{
"rules": [
{
"id": "new-lead-high-value",
"when": {
"intent": ["new customer", "quote", "book"],
"value_score": {">=": 80},
"schedule": {"tz": "America/New_York", "open": true}
},
"then": [
{"action": "qualify", "fields": ["name", "phone", "email", "need", "zip"]},
{"action": "transfer", "to": "user:sales-oncall", "warm": true, "context": "summary+last_3_turns", "timeout_sec": 20},
{"action": "notify", "channel": "email", "to": ["leads@business.com"], "payload": "High-value lead transferred with transcript"}
],
"else": [
{"action": "book", "calendar": "sales-consults"},
{"action": "sms", "template": "thanks-we-booked", "payload": {"link": "https://bookings.example.com/consult"}}
]
},
{
"id": "existing-client-billing",
"when": {"intent": ["billing", "invoice", "payment"], "customer_type": "existing"},
"then": [
{"action": "transfer", "to": "ring-group:billing", "warm": true, "timeout_sec": 20},
{"action": "ticket.create", "queue": "AR", "priority": "normal"}
],
"else": [
{"action": "voicemail", "mailbox": "billing"},
{"action": "sms", "template": "pay-link"}
]
},
{
"id": "after-hours-emergency",
"when": {"intent": ["emergency"], "schedule": {"open": false}},
"then": [
{"action": "transfer", "to": "user:oncall-tech-1", "warm": true, "timeout_sec": 15},
{"action": "transfer", "to": "user:oncall-tech-2", "warm": true, "timeout_sec": 15},
{"action": "notify", "channel": "sms", "to": ["+16025550123"], "payload": "Emergency escalated; transcript attached"}
]
}
],
"ring-groups": {
"billing": ["user:amanda", "user:paul"]
},
"scoring": {
"value_score": {"source": "crm.hubspot", "field": "lifecycle_score", "fallback": 50}
}
}
Tips
-
Use native CRM integrations or Zapier (6,000+ apps) to fetch tags and scores in real time.
-
Keep timeouts tight (15–20s) and define clear else paths to avoid dead ends.
-
Log every step—transcript + summary—for QA and attribution.
Explore plans and capabilities
-
See Pricing for included minutes and overage rates: Pricing
-
See Features for call routing, scheduling, CRM sync, analytics, and more: Features
Routing dimensions you can combine
-
Skills: Route to trained staff (e.g., “Billing,” “Spanish,” “Tier‑2 Escalations,” “Intake—Family Law”).
-
Schedules: Business hours, agent shifts, lunch blocks, holiday calendars; after‑hours behavior can differ by intent (e.g., emergency).
-
ZIP/postal proximity: Match callers to the nearest office/territory or enforce service areas (e.g., plumber by ZIP whitelist).
-
Language: Route based on detected language to bilingual teams.
-
Customer type/history: Prior callers, open tickets, or CRM attributes via Zapier/CRM integrations.
Rule evaluation and failover
1) Evaluate intent and language; 2) Evaluate time windows; 3) Evaluate location (ZIP/postal); 4) Apply skill mapping; 5) Execute action (transfer/book/SMS/voicemail); 6) Failover on no-answer; 7) Log and notify. Unlimited concurrent calls eliminate “busy” contention, so routing is about relevance, not capacity.
Example routing scenarios
Listing agent routing and ZIP rules for brokerages
Real estate teams can deterministically route by listing and territory while the AI handles intent, triage, and simultaneous call loads. Use native CRM integrations (HubSpot, Salesforce, Google Workspace, Attio) or Zapier to attach caller context, then execute transfers/bookings without delays.
Listing agent routing
-
Map specific MLS/listing_id values to the assigned agent or team queue.
-
If a caller references a property address or listing code, the AI normalizes it (e.g., MLS
→ listing_id) and routes to the right listing agent.
- If the primary agent is unavailable, escalate to the team queue or duty desk with transcript/context.
ZIP rules for brokerages
-
Define ZIP/postal territory rules that assign inbound buyer/renter leads to local offices or farm areas.
-
During business hours, transfer directly to the territory queue; after-hours, use an on-call ladder with SMS booking links as fallback.
{
"rules": [
{
"id": "re-listing-routing",
"when": {
"intent": ["property inquiry", "schedule tour", "listing"],
"listing_id": ["MLS123456", "MLS789012", "A1B2C3"]
},
"then": [
{"action": "transfer", "to": "ring-group:agent-listing-owners", "timeout_sec": 20},
{"action": "transfer", "to": "ring-group:duty-desk", "timeout_sec": 20},
{"action": "notify", "channel": "email", "to": ["newleads@brokerage.com"], "payload": "Listing inquiry escalated with transcript"}
]
},
{
"id": "re-zip-areas",
"when": {
"intent": ["property inquiry", "schedule tour", "rental"],
"zip": {"include": ["94102", "94103", "94107", "95050-95056"]},
"schedule": {"tz": "America/Los_Angeles", "days": [1,2,3,4,5], "start": "09:00", "end": "18:00"}
},
"then": [
{"action": "transfer", "to": "ring-group:sf-office-buyers", "timeout_sec": 20}
],
"else": [
{"action": "transfer", "to": "user:oncall-agent-1", "timeout_sec": 15},
{"action": "transfer", "to": "user:oncall-agent-2", "timeout_sec": 15},
{"action": "voicemail", "mailbox": "buyers"},
{"action": "sms", "template": "after-hours-tour", "payload": {"link": "https://bookings.example.com/tours"}}
]
}
],
"ring-groups": {
"agent-listing-owners": ["user:alex", "user:jordan"],
"duty-desk": ["user:team-lead-1", "user:team-lead-2"],
"sf-office-buyers": ["user:san-fran-1", "user:san-fran-2"]
}
}
Notes
-
Unlimited concurrent calls ensure no busy signals; rules determine relevance, not capacity.
-
Pair these rules with CRM writes (HubSpot/Salesforce/Attio via Zapier) to log caller, listing_id, ZIP, and outcome for attribution and follow-up.
-
Billing questions (weekday 9–5): Transfer to Billing ring group; if no answer in 20s, send SMS with payment link and open a ticket; after 6pm, drop voicemail + SMS link.
-
Emergencies (24/7): If caller says “emergency leak,” bypass queue, transfer to on‑call tech; if no answer in 15s, escalate to second on‑call, then to manager; always send transcript and caller number in notification.
-
New patient intake (ZIP match): If ZIP in 85001–85060, route to Phoenix clinic intake; otherwise route to nearest clinic by distance; after‑hours, text a booking link and place into intake calendar.
-
Legal escalations: If intent “case status” from VIP client tag, route to assigned paralegal; if unmet, escalate to attorney desk with context handoff.
Minimal JSON rule model
Below is a compact, implementation‑ready structure you can adapt in your automations.
{
"rules": [
{
"id": "billing-hours",
"when": {
"intent": ["billing", "invoice", "payment"],
"schedule": {"tz": "America/Phoenix", "days": [1,2,3,4,5], "start": "09:00", "end": "17:00"}
},
"then": [
{"action": "transfer", "to": "ring-group:billing", "timeout_sec": 20},
{"action": "sms", "template": "pay-link"},
{"action": "ticket.create", "queue": "AR"}
],
"else": [
{"action": "voicemail", "mailbox": "billing"},
{"action": "sms", "template": "after-hours-pay"}
]
},
{
"id": "emergency-plumbing",
"when": {"intent": ["emergency", "leak", "flood" ]},
"then": [
{"action": "transfer", "to": "user:oncall-tech-1", "timeout_sec": 15},
{"action": "transfer", "to": "user:oncall-tech-2", "timeout_sec": 15},
{"action": "transfer", "to": "user:manager"},
{"action": "notify", "channel": "sms", "to": ["+16025550123"], "payload": "Handoff with transcript attached"}
]
},
{
"id": "clinic-zip-routing",
"when": {
"intent": ["new patient", "appointment"],
"zip": {"include": ["85001-85060"]}
},
"then": [{"action": "book", "calendar": "phoenix-intake"}],
"else": [{"action": "book.nearest", "locations": ["phoenix","mesa","tempe"]}]
},
{
"id": "language-spanish",
"when": {"language": "es"},
"then": [{"action": "transfer", "to": "ring-group:spanish"}]
}
]
}
Skill directory example
Create a simple directory so rules can reference target skills/agents consistently.
{
"skills": {
"billing": ["user:amanda","user:paul"],
"spanish": ["user:carlos","user:isabel"],
"tier2-escalations": ["user:lead-tech","user:manager"]
},
"ring-groups": {
"billing": ["user:amanda","user:paul"],
"spanish": ["user:carlos","user:isabel"]
}
}
Small business templates
-
Medical intake (non‑PHI over phone): Route by ZIP to nearest clinic; book screening slots; avoid collecting PHI; provide secure link for forms. Note: My AI Front Desk does not claim HIPAA certification—configure to avoid PHI or use compliant workflows. Privacy Policy.
-
HVAC dispatch: “No heat” → emergency route to on‑call ladder; by schedule, non‑urgent → book next‑day; outside service area ZIP → SMS sorry + referral.
-
Law firm: “New matter—family law” → intake specialist; “existing client + case #” → assigned paralegal; no answer → live transfer to attorney desk with transcript.
Implementation checklist in My AI Front Desk
-
Define intents and keywords per department (e.g., billing, reschedule, emergency).
-
Map skills, ring groups, and on‑call ladders.
-
Set schedules and holidays per location/time zone.
-
Add ZIP lists (include/exclude) and location mapping.
-
Configure actions: transfer, book (Google/Outlook/Practice), SMS templates, ticket queues; integrate via Zapier/CRM as needed.
-
Test with call simulations; verify failovers, transcripts, and notifications.
Observability and QA
-
Inspect call logs/transcripts to confirm the rule path taken and time-to-resolution.
-
Track no‑answer and escalation rates by rule; adjust timeouts and ring groups accordingly.
-
Use SMS/booking conversion data to tune after‑hours outcomes.
Security and governance
-
Limit data collection to what routing needs; prefer booking links for sensitive details.
-
Apply least‑privilege access to transcripts/notifications; use native dashboards and role‑based access. Privacy Policy.
-
In regulated contexts, validate vendor compliance requirements before enabling PHI/PII workflows; otherwise, route to human staff for intake.
One‑page rule table (for quick scan)
| Dimension | Examples | Common actions |
|---|---|---|
| Intent | billing, new appointment, emergency | transfer, book, SMS, ticket |
| Schedule | hours/after‑hours/holidays | fallback to SMS + link/voicemail |
| ZIP/postal | territory, nearest office | route by nearest/deny outside area |
| Language | es, en, fr | route to bilingual staff |
| Customer tag | VIP, open ticket | direct-to-owner or assigned staff |
FAQ
-
How do live transfers work? The AI gathers context, then transfers and shares the transcript/summary so humans never start from zero.
-
Can I combine skills, schedule, and ZIP in a single rule? Yes—rules can AND/OR these conditions and provide a deterministic fallback path.
-
What happens during peak bursts? Calls are answered in parallel; concurrency is not a bottleneck, so routing is quality-driven.
-
Do I need a developer? Most setups are no‑code with calendar/CRM via Zapier; advanced teams can still push custom workflows.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "How do live transfers work?",
"acceptedAnswer": {
"@type": "Answer",
"text": "The AI gathers caller context and transfers the call with transcript/summary so humans continue seamlessly."
}
},
{
"@type": "Question",
"name": "Can I combine skills, schedule, and ZIP in one rule?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes—rules can combine multiple conditions and specify ordered fallbacks (e.g., transfer → SMS → voicemail)."
}
},
{
"@type": "Question",
"name": "What happens during peak bursts?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Calls are answered in parallel (no busy signals). Routing quality determines the destination, not capacity limits."
}
},
{
"@type": "Question",
"name": "Do I need a developer to configure routing?",
"acceptedAnswer": {
"@type": "Answer",
"text": "No—most routing is no‑code using built‑in schedules, ZIP lists, ring groups, and Zapier/CRM integrations."
}
}
]
}
</script>