For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Build a call routing workflow for property management that dynamically routes calls based on tenant status, inquiry type, and agent availability.
This example uses Workflows. For new builds, use Squads with a router assistant and domain specialists. See: Squad - Property Management Routing.
Overview
Build a property management call routing workflow that determines transfer destinations dynamically using tenant verification, inquiry type analysis, and real-time agent availability. This approach uses visual workflow nodes with API Request nodes for maximum routing flexibility.
Workflow Capabilities:
Tenant status verification and prioritization
Inquiry type classification for specialist routing
Real-time agent availability and queue management
Emergency routing for urgent maintenance issues
What You’ll Build:
Visual workflow with conditional routing logic
API Request nodes for dynamic destination logic
Tenant verification with CRM integration
Emergency escalation with priority queuing
Quick Start: Create the Complete Workflow
Use this cURL command to create the entire property management workflow in one shot:
Complete Workflow Creation
$
curl -X POST https://api.vapi.ai/workflow \
>
-H "Authorization: Bearer $VAPI_API_KEY" \
>
-H "Content-Type: application/json" \
>
-d '{
>
"name": "Property Management Call Router",
>
"nodes": [
>
{
>
"type": "conversation",
>
"name": "Initial Greeting",
>
"isStart": true,
>
"prompt": "You are a helpful property management assistant for Riverside Property Management. Start by greeting the caller and asking how you can help them today. Listen to determine: Is this an emergency/urgent maintenance issue? What type of inquiry is this (maintenance, lease, rent, general)? Keep responses under 25 words and be professional.",
"description": "Caller phone number for tenant lookup"
>
}
>
}
>
}
>
}
>
},
>
{
>
"type": "conversation",
>
"name": "Emergency Handling",
>
"prompt": "This is an emergency maintenance situation. Tell the caller you understand this is an emergency and that you are immediately connecting them with emergency maintenance. Keep the interaction brief and gather only essential details about the emergency.",
>
"model": {
>
"provider": "openai",
>
"model": "gpt-4"
>
},
>
"variableExtractionPlan": {
>
"schema": {
>
"type": "object",
>
"properties": {
>
"emergency_details": {
>
"type": "string",
>
"description": "Brief description of emergency"
>
}
>
}
>
}
>
}
>
},
>
{
>
"type": "tool",
>
"name": "Transfer to General Office",
>
"tool": {
>
"type": "transferCall",
>
"destinations": [
>
{
>
"type": "number",
>
"number": "+12025551234",
>
"message": "Connecting you to our office team who will assist you with your inquiry."
>
}
>
]
>
}
>
}
>
],
>
"edges": [
>
{
>
"from": "Initial Greeting",
>
"to": "Emergency Handling",
>
"condition": {
>
"type": "ai",
>
"prompt": "Route to emergency handling if the caller has an emergency or urgent maintenance issue"
>
}
>
},
>
{
>
"from": "Initial Greeting",
>
"to": "Transfer to General Office",
>
"condition": {
>
"type": "ai",
>
"prompt": "Route to transfer for all non-emergency inquiries (maintenance, lease, rent, general)"
>
}
>
},
>
{
>
"from": "Emergency Handling",
>
"to": "Transfer to General Office",
>
"condition": {
>
"type": "ai",
>
"prompt": "After gathering emergency details, transfer to office"
>
}
>
}
>
]
>
}'
Replace $VAPI_API_KEY with your actual API key from the Vapi Dashboard. Update the phone number in the transferCall destination to your actual office number.
Once created, you can retrieve the workflow ID and attach it to a phone number for testing.
Test Workflow Creation
After creating the workflow, you can test it and get the workflow ID:
$
# First, create the workflow using the command above, then:
We will build a call routing workflow for Riverside Property Management that intelligently routes tenant calls based on their status, inquiry type, and agent availability.
You are a helpful property management assistant for Riverside Property Management. Start by greeting the caller and asking how you can help them today. Listen to determine: Is this an emergency/urgent maintenance issue? What type of inquiry is this (maintenance, lease, rent, general)? Keep responses under 25 words and be professional.
I understand this is an emergency. Let me immediately connect you with our emergency maintenance team. Please stay on the line.
System Prompt:
This is an emergency maintenance situation. Confirm the emergency details quickly and route to emergency maintenance immediately. Keep interaction brief.
If agents available: Direct transfer to agent
If queue exists: Inform caller of wait time and offer callback
If all busy: Route to voicemail or priority callback system
Destination: Main office line
Message: “Let me connect you with our general team who can assist you.”
Transfer Plan: “Call requires general assistance - routing details unavailable”
Condition: All agents busy and caller declines callback
Message: “Please leave a detailed voicemail including your name, property address, and the nature of your request. We’ll call you back within 4 hours.”