Twilio Integration
Connect Twilio to Expedify for AI-powered voice calling globally. Make and receive calls worldwide with AI agents, automate customer support across countries, and build intelligent voice workflows.
What is Twilio?
Twilio is the world's leading cloud communications platform that provides:
- Global Voice Calling: Make and receive calls in 100+ countries
- Programmable Phone Numbers: Virtual numbers from any country
- Call Recording: Automatic recording and storage
- TwiML: Powerful XML-based call flow scripting
- Advanced Analytics: Real-time call metrics and insights
Why Use Twilio with Expedify?
- Global Reach: Call customers anywhere in the world with local numbers
- AI Voice Agents: Build intelligent bots that converse naturally in multiple languages
- Automated Outbound Calling: Trigger AI calls from workflows (reminders, surveys, follow-ups)
- Smart Inbound Routing: Route calls to AI agents or teams based on complex logic
- Call Transcription: Convert all calls to searchable text automatically
- Reliability: Enterprise-grade uptime and call quality
- Workflow Integration: Seamless CRM and automation integration
Prerequisites
Before setting up Twilio integration, you need:
- Twilio Account: Active account with verified identity
- Account Credentials: Account SID and Auth Token
- Phone Number: At least one Twilio phone number (purchased from Twilio)
- Billing Credits: Sufficient balance for calls and phone number rental
- Verified Caller IDs: For outbound calls (if not using Twilio number)
Getting Your Twilio Account Credentials
Step 1: Log into Twilio Console
- Go to Twilio Console
- Log in with your Twilio account credentials
Step 2: Find Your Account Credentials
On the Twilio Console homepage, you'll see your Account Info panel:
| Credential | Description | Format | Where to Find |
|---|---|---|---|
| Account SID | Your unique account identifier | Starts with AC | Console homepage, top section |
| Auth Token | Authentication token for API access | 32-character string | Console homepage (click "Show" to reveal) |
Important Notes:
- Account SID: Always visible, starts with
AC(e.g.,ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx) - Auth Token: Hidden by default - click the eye icon or Show button to reveal
- Keep these credentials secure - they provide full access to your Twilio account
- Never share them publicly or commit to version control
Step 3: Copy Your Credentials
- Click Copy next to Account SID
- Click Show to reveal Auth Token, then Copy
- Save both in a secure location (you'll need them in Expedify)
Getting Twilio Phone Numbers
Option 1: Purchase a New Phone Number
- In Twilio Console, click Phone Numbers → Manage → Buy a number
- Select your country (e.g., United States, United Kingdom, India)
- Choose number type:
- Local: City-specific number (e.g., New York: +1 212...)
- Toll-Free: Free for callers (e.g., +1 800...)
- Mobile: Mobile-friendly number
- Filter by capabilities needed:
- ✅ Voice: For making/receiving calls (required)
- Search for available numbers
- Click Buy on your preferred number
- Confirm purchase (you'll be charged monthly rental + usage)
Number Rental Costs (approximate):
- US/Canada Local: $1/month
- US/Canada Toll-Free: $2/month
- International: Varies by country ($1-$10/month)
Option 2: Use an Existing Number
If you already have Twilio phone numbers:
- Go to Phone Numbers → Manage → Active numbers
- You'll see your list of purchased numbers
- Note the phone numbers you want to use with Expedify
Phone Number Format: All Twilio numbers are in E.164 format
- Example US:
+12025551234 - Example UK:
+442071234567 - Example India:
+919876543210
Setting Up Twilio Integration in Expedify
Step 1: Open Twilio Integration Settings
- In Expedify, go to Settings → Integrations
- Find Twilio under the Telephony category
- Click Configure
Step 2: Enter API Credentials
In the integration configuration modal, fill in:
| Field | Description | Example | Notes |
|---|---|---|---|
| Integration Name | Name to identify this integration | "My Twilio Account" | Your choice |
| Account SID | Your Twilio Account SID | AC1234567890abcdef1234567890abcd | From Console homepage |
| Auth Token | Your Twilio Auth Token | a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6 | From Console (click Show) |
Step 3: Add Phone Numbers (Caller IDs)
In the Phone Numbers section:
- Click Add Phone Number
- Enter your Twilio phone number in E.164 format
- Important format rules:
- ✅ Include country code:
+12025551234 - ✅ Include + symbol:
+442071234567 - ❌ No spaces or dashes: NOT
+1-202-555-1234 - ❌ No parentheses: NOT
+1 (202) 555-1234
- ✅ Include country code:
- Set as Primary (optional - for default outbound calling)
- Click Add
- Repeat to add multiple phone numbers
You can add multiple phone numbers for:
- Different countries (US, UK, India numbers)
- Different departments (Sales, Support)
- Different campaigns (Marketing, Customer Service)
Step 4: Enable Call Features (Optional)
Configure optional features:
| Feature | Description | When to Enable |
|---|---|---|
| Call Recording | Automatically record all calls | Always recommended for quality/compliance |
| Call Transcription | Convert recordings to text | If you need searchable call content |
Step 5: Save Integration
- Click Save at the bottom
- Wait for confirmation: "Twilio integration configured successfully"
- Status will show as Connected (green indicator)
Step 6: Copy Status Callback URL
After saving, Expedify displays a Status Callback URL needed for call updates:
- Status Callback URL: For call status updates (answered, completed, failed, etc.)
Keep this URL handy - you'll configure it in Twilio phone number settings for inbound calls.
Testing Manual Calls
Before setting up AI automation, verify basic calling works:
Make a Test Outbound Call
- In Expedify, go to any Contact in your CRM
- Click the Call button (phone icon)
- Select your Twilio integration
- Choose which Twilio phone number to call from
- The call will be initiated immediately
- Verify the call connects successfully
Verify Call Logs
After the call:
- Go to Calls → Call History in Expedify
- You should see the call record with:
- Duration
- Status (completed, busy, no-answer, failed)
- Recording (if enabled)
- Cost (billed by Twilio)
Also check Twilio Console:
- Go to Monitor → Logs → Calls
- Verify the call appears in Twilio's call log
- Check billing details
If calls fail, check:
- Account SID and Auth Token are correct
- Twilio account has sufficient credits
- Phone number is active (not suspended)
- Phone number has Voice capability enabled
- Recipient number is valid and reachable
Setting Up AI Outbound Calling
To make AI-powered outbound calls that hold intelligent conversations:
Overview: What You'll Build
When you trigger an outbound AI call from Expedify:
- Expedify tells Twilio to make the call
- When customer answers, Twilio connects to Expedify's AI
- AI agent converses with the customer naturally
- Call recording and transcript saved automatically
- Call outcome updates your CRM
Create Outbound Call Workflow in Expedify
Step 1: Create Workflow
- In Expedify, go to Automation → Workflows
- Click Create Workflow
- Name it: "AI Outbound Call - [Purpose]" (e.g., "AI Outbound Call - Appointment Reminders")
Step 2: Add Trigger
Choose a trigger based on your use case:
- Scheduled: Run at specific time (e.g., daily at 9 AM)
- Contact Created: When new lead added
- Deal Stage Changed: When deal moves to "Follow-up" stage
- Button Click: Manual trigger from CRM
- Database Trigger: When record updated
Step 3: Add Make Outbound Call Node
- Click Add Node → Voice Actions → Make Outbound Call
- Configure the node:
| Field | Value | Example / Notes |
|---|---|---|
| Integration | Select Twilio integration | From dropdown |
| To | Recipient's phone number | {{contact.phone}} or +12025551234 |
| From | Your Twilio phone number | Select from your configured numbers |
| Voice Agent | Select AI agent | Choose which AI will talk |
| Language | Agent language | English, Spanish, French, etc. |
| Voice | AI voice type | Male/Female, accent options |
| Max Duration | Call timeout | 300 seconds (5 min) default |
Important: Ensure the To number is in E.164 format (+ followed by country code and number)
Step 4: Configure AI Agent Behavior
In the Voice Agent settings:
- Persona: Define how AI should behave
- Example: "You are a friendly customer service representative from Acme Corp"
- Opening Line: What AI says first
- Example: "Hi, this is Sarah from Acme. I'm calling about your recent order."
- Knowledge Base: Information AI can reference
- Link relevant documents, FAQs, product info
- Actions: What AI can do during call
- Create tasks, update CRM fields, transfer to human, schedule callbacks
- Transfer Options: When/how to transfer to human
- Keywords: "speak to a person", "manager", "human"
- Conditions: Complex queries AI can't handle
Step 5: Add Post-Call Actions (Optional)
After the call node, add actions based on call outcome:
If call status = "completed" and duration > 60 seconds:
├─ Update contact status to "Contacted"
├─ Create task: "Follow up on AI call"
└─ Log call outcome
If call status = "no-answer" or "busy":
├─ Update contact status to "No Answer"
└─ Schedule retry call in 2 hours
Step 6: Test the Workflow
- Click Save and Publish
- Click Test or manually trigger
- Call should be made to test number
- AI should converse when call is answered
- Check Workflow Execution Logs for details
Note: For outbound calls, Expedify handles all webhook routing automatically. You only need to configure the Status Callback URL for inbound calls (covered in next section).
Setting Up AI Inbound Calling
To handle incoming calls with AI agents:
Overview: What You'll Build
When someone calls your Twilio number:
- Twilio receives the call
- Twilio connects to Expedify based on webhook configuration
- Expedify's AI agent answers and converses
- Call recording and transcript saved
- CRM updated with call details
Part 1: Configure Phone Number for Inbound
Step 1: Access Phone Number Settings
- In Twilio Console, go to Phone Numbers → Manage → Active numbers
- Click on the phone number you want to configure for inbound AI
Step 2: Configure Voice Webhook
Scroll to Voice & Fax section:
| Setting | Value | Notes |
|---|---|---|
| Accept Incoming | Voice Calls | ✅ Enable |
| Configure With | Webhooks | Select this option |
| A Call Comes In | Paste Inbound Voice URL from Expedify | This is the webhook URL |
| Method | HTTP POST | Required |
| Primary Handler Fails | (Optional) Fallback URL | Backup if Expedify unreachable |
| Fallback Method | HTTP POST | If using fallback |
Where to get Inbound Voice URL:
- Go to Expedify → Settings → Integrations → Twilio
- Copy the Inbound Voice URL (looks like:
https://api.expedify.ai/voice/twilio/inbound/...)
Step 3: Configure Status Callback
Still in Voice & Fax section, scroll to Call Status Changes:
| Setting | Value | Notes |
|---|---|---|
| Status Callback URL | Paste Status Callback URL from Expedify | For call status updates |
| Method | HTTP POST | Required |
| Events | Select all: Ringing, Answered, Completed | ✅ Check all |
Step 4: Enable Call Recording
In Call Recording section:
| Setting | Value | Notes |
|---|---|---|
| Record Calls | Record from Answer | Recommended |
| Recording Channels | Mono or Dual | Mono is sufficient |
| Trim Silence | ✅ Enable (optional) | Removes silence from recordings |
Why Record from Answer?:
- "Record from Ringing" includes ring time (unnecessary)
- "Record from Answer" starts when call is answered (saves storage)
Step 5: Save Configuration
- Scroll to bottom and click Save
- Your phone number is now configured to route inbound calls to Expedify AI
Part 2: Configure Default AI Agent in Expedify
Step 1: Set Default Inbound Agent
- In Expedify, go to Settings → Integrations → Twilio
- Find Default Inbound Agent setting
- Select your AI voice agent from dropdown
- This agent handles all inbound calls unless a workflow overrides it
- Click Save
Step 2: Create AI Voice Agent (If Needed)
If you haven't created a voice agent yet:
- Go to Automation → AI Agents → Create Agent
- Select Voice Agent type
- Configure:
| Setting | Example | Notes |
|---|---|---|
| Name | "Customer Support AI" | Internal name |
| Language | English (US) | Or your language |
| Voice | Female, Professional | Choose from available voices |
| Persona | "You are a helpful support agent..." | How AI should behave |
| Greeting | "Thanks for calling Acme Corp, how can I help you today?" | First thing AI says |
| Knowledge Base | Select relevant KBs | Info AI can reference |
| Actions | Create Task, Update Contact, Transfer Call | What AI can do |
- Click Save and Publish
Part 3: Create Inbound Call Routing Workflow (Advanced)
For intelligent call routing based on conditions:
Step 1: Create Workflow
- Go to Automation → Workflows → Create Workflow
- Name: "Inbound Call Router"
Step 2: Add Inbound Call Trigger
- Set trigger: Inbound Call Received
- Configure:
- Integration: Twilio
- Phone Number: Specific number or "Any"
Step 3: Add Routing Logic
Example routing workflow:
Trigger: Inbound Call Received
├─ Check business hours
│ ├─ If business hours (9 AM - 5 PM):
│ │ ├─ Check caller's contact record
│ │ │ ├─ If existing customer:
│ │ │ │ ├─ Check recent tickets
│ │ │ │ ├─ Route to Support AI (with context)
│ │ │ │ └─ Create support ticket
│ │ │ └─ If new caller:
│ │ │ ├─ Route to Sales AI
│ │ │ ├─ Create new contact
│ │ │ └─ Qualify lead
│ └─ If after hours:
│ ├─ Route to After-Hours AI
│ ├─ AI: "We're currently closed. Can I take a message?"
│ ├─ Collect caller info
│ └─ Create task for next day
Routing Conditions:
- Time of day (business hours vs after hours)
- Day of week (weekday vs weekend)
- Caller phone number (existing contact vs new)
- IVR menu selection (if using digit input)
- Call queue availability
- Agent availability
Step 4: Test Inbound Calling
- From your mobile phone, call your Twilio number
- AI should answer and greet you
- Have a conversation to test AI responses
- Verify in Expedify:
- Call Logs: See call record with details
- Recording: Play the call recording
- Transcript: Read what was said
- CRM Update: Check if contact was created/updated
Call Recording & Transcription
Automatic Call Recording
When Recording is Enabled:
- All calls (inbound and outbound) are automatically recorded
- Recordings stored in Twilio (up to retention period)
- Expedify fetches and displays recordings in call logs
- Play recordings directly in Expedify interface
Recording Settings:
- Mono: Single channel (both speakers mixed)
- Dual: Two channels (caller and agent separate)
- Trim Silence: Removes silent periods (saves storage)
Recording Retention:
- Twilio stores recordings based on your account settings
- Default: 30 days (can extend with Twilio settings)
- Download important recordings to permanent storage
Call Transcription
Expedify can automatically transcribe Twilio call recordings:
To Enable Transcription:
- Go to Settings → Integrations → Twilio
- Check Enable Call Transcription
- Select transcription language (English, Spanish, etc.)
- Save integration
Transcription Features:
- Speech-to-text conversion (90%+ accuracy)
- Speaker diarization (identifies who said what)
- Timestamps for each statement
- Keyword search across all transcripts
- Sentiment analysis (positive/negative tone detection)
- Action item extraction (AI identifies tasks mentioned)
Transcription Processing:
- Starts automatically after call ends
- Takes 2-5 minutes depending on call length
- Appears in call logs when ready
- Transcript is searchable and analyzable
Transcription Costs:
- Charged per minute of audio
- Typical rate: $0.02-0.05 per minute
- Check your Expedify plan for exact pricing
Using Twilio in Workflows
Outbound Call Actions
AI-Powered Calls:
- Use Case: Appointment reminders, lead qualification, surveys
- Trigger: Scheduled, contact created, deal stage changed
- Node: Make Outbound Call → Select Voice Agent
- Result: AI converses naturally, updates CRM automatically
Manual Calls (Click-to-Call):
- Use Case: Sales rep wants to call from CRM
- Trigger: Button click, manual execution
- Node: Make Outbound Call → No AI agent (connects to rep)
- Result: Call placed immediately, logged automatically
Inbound Call Triggers
Call Received Trigger:
- Event: Inbound Call Received
- Conditions: Time of day, caller identity, phone number
- Actions: Route to AI, create ticket, notify team, update CRM
Call Completed Trigger:
- Event: Call Ended
- Conditions: Call duration, outcome, caller satisfaction
- Actions: Create follow-up task, score lead, send email
Example Workflows
Appointment Reminder with Confirmation
Trigger: Scheduled (1 day before appointment)
├─ Make Outbound Call (AI)
│ ├─ AI: "Hi, reminder about your appointment tomorrow at 2 PM. Can you confirm?"
│ ├─ Customer: "Yes" → Update appointment status: Confirmed
│ └─ Customer: "Need to reschedule" → AI collects new time
└─ Update CRM with call outcome
Lead Qualification Call
Trigger: New Lead Created (from website form)
├─ Wait: 5 minutes (give them time to expect call)
├─ Make Outbound Call (AI)
│ ├─ AI asks qualifying questions:
│ │ ├─ Budget range?
│ │ ├─ Timeline?
│ │ ├─ Decision maker?
│ ├─ AI scores lead based on responses
│ └─ Updates lead score in CRM
├─ If lead score > 70 (hot lead):
│ ├─ Assign to sales rep immediately
│ ├─ Send email notification to rep
│ └─ Create high-priority task
└─ If lead score < 30 (cold lead):
└─ Add to nurture campaign
Customer Support Escalation
Trigger: Inbound Call Received
├─ Route to Support AI
├─ AI attempts to resolve issue
├─ If AI can't resolve:
│ ├─ AI: "Let me transfer you to a specialist"
│ ├─ Transfer to human agent
│ ├─ Include call context (what customer said)
│ └─ Create support ticket with AI summary
└─ If AI resolves:
├─ AI confirms solution with customer
├─ Mark ticket as resolved
└─ Create follow-up task
Phone Number Formats
Twilio uses E.164 international format for all phone numbers:
E.164 Format Rules
✅ Correct Format:
- Structure:
++ Country Code + Number (no spaces, dashes, or parentheses) - US:
+12025551234 - UK:
+442071234567 - India:
+919876543210 - Australia:
+61212345678 - France:
+33123456789
❌ Incorrect Formats:
(202) 555-1234(no parentheses or dashes)+1-202-555-1234(no dashes)+1 202 555 1234(no spaces)2025551234(missing + and country code)001-202-555-1234(use +1, not 001)
Common Country Codes
| Country | Code | Example |
|---|---|---|
| United States / Canada | +1 | +12025551234 |
| United Kingdom | +44 | +442071234567 |
| India | +91 | +919876543210 |
| Australia | +61 | +61212345678 |
| Germany | +49 | +4930123456 |
| France | +33 | +33123456789 |
| Brazil | +55 | +5511987654321 |
| Japan | +81 | +81312345678 |
Auto-Formatting in Expedify
When you save contact phone numbers:
- Expedify automatically converts to E.164 format
- Adds country code if missing (based on your account settings)
- Removes spaces, dashes, and parentheses
- Validates phone number is callable
Best Practice: Always store numbers in E.164 format in your CRM to avoid issues.
Pricing & Billing
Twilio Call Pricing
Outbound Calling Rates (per minute, approximate):
| Destination | Rate | Notes |
|---|---|---|
| US/Canada Mobile | $0.013 | Competitive rate |
| US/Canada Landline | $0.011 | Slightly cheaper |
| UK Mobile | $0.019 | Europe rates |
| UK Landline | $0.016 | |
| India Mobile | $0.0059 | Very affordable |
| India Landline | $0.0129 | |
| International | Varies | $0.01-$0.50/min |
Inbound Calling Rates (per minute):
- US/Canada Local: $0.0085/min
- US/Canada Toll-Free: $0.022/min
- International: Varies by country
Phone Number Rental:
- US/Canada Local: $1.00/month
- US/Canada Toll-Free: $2.00/month
- International: $1-$10/month depending on country
Recording & Storage:
- Call Recording: $0.0025/min
- Storage: Free for 30 days, then archival fees
Note: Check Twilio Pricing for exact, up-to-date rates.
Expedify Pricing
| Feature | Cost | Notes |
|---|---|---|
| Twilio Integration | Free | No setup or monthly fee |
| AI Voice Agent | Per minute of conversation | Based on your Expedify plan |
| Call Transcription | $0.02-$0.05/min | Optional feature |
| Storage | Included | Call logs, recordings, transcripts |
Total Call Cost = Twilio (connectivity) + Expedify (AI + transcription)
Example Cost Breakdown:
- 10-minute AI call to US mobile:
- Twilio: $0.13 (10 min × $0.013)
- Expedify AI: $0.50 (varies by plan)
- Transcription: $0.30 (10 min × $0.03)
- Total: $0.93 per call
Troubleshooting
Integration Not Connecting
Issue: "Failed to connect to Twilio" error when saving integration
Solutions:
- Verify credentials: Double-check Account SID and Auth Token
- Account SID should start with
AC - Auth Token should be exactly 32 characters
- No extra spaces before/after when pasting
- Account SID should start with
- Check account status: Ensure Twilio account is active (not suspended)
- Verify payment: Confirm credit card is valid and account has credits
- API access: Make sure API access isn't restricted in Twilio settings
- Try regenerating: Generate a new Auth Token in Twilio Console
Outbound Calls Not Working
Issue: Calls fail or don't connect
Solutions:
- Check account balance: Ensure sufficient Twilio credits
- Verify phone number: Confirm "From" number is active in Twilio
- Number format: Ensure "To" number is in E.164 format (
+12025551234) - Number capabilities: Verify phone number has Voice capability enabled
- Geographic permissions: Check if you're allowed to call destination country
- Go to Twilio Console → Voice → Settings → Geo Permissions
- Enable countries you want to call
- Caller ID verification: For some countries, verify your caller ID with Twilio
Inbound Calls Not Routing to AI
Issue: Incoming calls don't reach Expedify, no AI answer
Solutions:
- Check webhook URL: Verify Inbound Voice URL is correctly configured in phone number settings
- Webhook format: Ensure URL is exactly as shown in Expedify (no extra characters)
- HTTP Method: Confirm webhook is set to HTTP POST (not GET)
- Test webhook: Call the number and check Twilio debugger
- Go to Monitor → Logs → Errors
- Look for webhook errors
- Default agent set: Ensure Default Inbound Agent is selected in Expedify
- Network reachable: Verify Expedify webhook URL is publicly accessible
Call Quality Issues
Issue: Poor audio quality, delays, or choppy voice
Solutions:
- Check network: Ensure stable internet connection
- Server location: Use Twilio edge locations closest to your users
- Codec settings: Use preferred audio codec (OPUS recommended)
- Call region: Set preferred region in Twilio settings for better routing
- Monitor metrics: Check Twilio's Voice Insights for quality metrics
No Call Recording
Issue: Calls complete but recordings not available
Solutions:
- Recording enabled: Check "Record Calls" is enabled in phone number settings
- Recording method: Ensure "Record from Answer" or "Record from Ringing" is selected
- Processing time: Recordings take 1-2 minutes to process, wait and refresh
- Storage limit: Verify you haven't exceeded Twilio storage quota
- Permissions: Check Twilio account has recording permissions
Transcription Not Generated
Issue: Recordings exist but no transcript
Solutions:
- Feature enabled: Verify "Enable Call Transcription" is checked in Expedify
- Processing time: Transcripts take 2-5 minutes, be patient
- Audio quality: Poor quality audio can't be transcribed accurately
- Language: Ensure correct language is selected for transcription
- Credits: Verify sufficient Expedify credits for transcription
AI Agent Not Responding
Issue: Call connects but AI doesn't speak
Solutions:
- Agent published: Ensure Voice Agent is published (not draft)
- Agent selected: Verify agent is selected in workflow node or default settings
- Webhook timeout: Check Twilio timeout settings (should be 60+ seconds)
- Check logs: Review Workflow Execution logs for error messages
- Test agent: Use "Test Agent" feature in Expedify to verify AI works
Best Practices
Call Quality & Reliability
Do:
- ✅ Test calls in different network conditions before going live
- ✅ Set up fallback URLs in case primary webhook fails
- ✅ Monitor call quality metrics in Twilio Console
- ✅ Use dedicated phone numbers for different purposes
- ✅ Keep AI agent instructions clear and concise
Don't:
- ❌ Make calls during customer's night hours (respect time zones)
- ❌ Use personal phone numbers for business calling
- ❌ Ignore failed call logs (investigate issues promptly)
- ❌ Overload AI with too much information (keep it focused)
AI Voice Agent Design
Effective Voice Agents:
- Natural greeting: "Hi, this is Alex from Acme Support. How can I help you?"
- Clear speech: Short sentences, avoid jargon
- Active listening: Pause after questions, let customer speak
- Confirmation: "Just to confirm, you said..."
- Helpful handoff: "I'll transfer you to our specialist, John"
Avoid:
- Long monologues (break into chunks)
- Complex menu trees (keep it simple)
- Ignoring customer interruptions
- Overly robotic language
Security & Compliance
Protect Credentials:
- ✅ Store Account SID and Auth Token securely
- ✅ Never commit credentials to code repositories
- ✅ Rotate Auth Token every 6 months
- ✅ Use different credentials for dev/staging/production
- ✅ Monitor API usage for anomalies
Call Recording Compliance:
- ✅ Inform callers that calls are recorded (required in many jurisdictions)
- ✅ Example: "This call may be recorded for quality and training purposes"
- ✅ Comply with two-party consent laws (check your state/country)
- ✅ Store recordings securely (encrypt at rest)
- ✅ Delete recordings according to retention policy
Do Not Call (DNC) Compliance:
- ✅ Check numbers against DNC registries before calling
- ✅ Maintain your own opt-out list
- ✅ Honor opt-out requests immediately
- ✅ Provide clear unsubscribe mechanism
- ✅ Don't call cell phones without consent (TCPA in US)
Cost Optimization
Reduce Costs:
- ✅ Use local numbers for local calling (cheaper than international)
- ✅ Optimize AI conversation length (be efficient)
- ✅ Set max call duration limits to prevent runaway costs
- ✅ Monitor usage regularly and set budget alerts
Avoid Waste:
- ❌ Calling invalid/disconnected numbers repeatedly
- ❌ Long hold times or transfers (optimize routing)
- ❌ Recording unnecessary calls (only when needed)
Advanced Features
Multi-Language Support
Twilio supports calls in 30+ languages:
Supported Languages:
- English (US, UK, Australian, Indian accents)
- Spanish (Spain, Mexico, Latin America)
- French, German, Italian, Portuguese
- Hindi, Tamil, Telugu (India)
- Mandarin, Cantonese (China)
- Japanese, Korean
- Arabic, Hebrew
- And more...
Configuration:
- In Voice Agent settings, select Language
- Choose Voice (accent/gender)
- AI will speak in selected language
- Transcription will use same language
Call Transfer to Human
Warm Transfer (AI introduces customer):
AI detects escalation needed
├─ AI: "I'll connect you with our specialist"
├─ AI calls agent internally
├─ AI briefs agent on context
├─ AI bridges customer and agent
└─ AI exits, customer now talking to agent
Cold Transfer (direct):
AI detects escalation
├─ AI: "Transferring you now"
├─ AI transfers call directly
└─ Agent answers blind (no context)
Configuration:
- Add transfer numbers in Voice Agent settings
- Configure transfer triggers (keywords, conditions)
- Set transfer type (warm/cold)
IVR (Interactive Voice Response)
Build multi-level phone menus:
Example IVR Flow:
Customer calls
├─ AI: "Press 1 for Sales, 2 for Support, 3 for Billing"
├─ Customer presses 1:
│ └─ Transfer to Sales team
├─ Customer presses 2:
│ ├─ AI: "Press 1 for Technical Support, 2 for General Questions"
│ ├─ Presses 1: Route to Tech AI
│ └─ Presses 2: Route to General AI
└─ Customer presses 3:
└─ Transfer to Billing department
Setup:
- Create workflow with Inbound Call trigger
- Use Gather Digits action to collect input
- Use Condition nodes to route based on input
- Route to appropriate AI agent or team
Call Queues
Manage high call volumes:
Queue Setup:
- Create queue in Twilio Console
- Assign agents to queue
- Configure wait music/messages
- Set maximum wait time
- Route overflow to voicemail or callback
Smart Queue Features:
- Priority routing (VIP customers first)
- Estimated wait time announcements
- Callback option (customer gets call back)
- Queue position announcements
Call Analytics & Reporting
Track detailed metrics:
Available Metrics:
- Call Volume: Inbound/outbound by time
- Call Duration: Average, min, max
- Success Rate: Connected vs failed calls
- Geographic Distribution: Calls by country/region
- Cost Analysis: Per call, per campaign, per agent
- AI Performance: Customer satisfaction, transfer rate
- Peak Times: Busiest calling hours/days
Custom Reports:
- Go to Analytics → Voice Analytics in Expedify
- Select date range, filters
- View charts and tables
- Export to CSV/Excel
- Schedule automated reports
Voice Insights (Twilio)
Advanced call quality monitoring:
Metrics Tracked:
- Audio quality scores
- Jitter and packet loss
- Latency (delay)
- Codec used
- Network issues
Access:
- Twilio Console → Voice → Insights
- View individual call quality
- Identify problematic calls
- Fix network/configuration issues
Use Cases & Examples
Customer Support Automation
Scenario: Handle common support queries with AI 24/7
Setup:
- AI Agent: "Customer Support AI"
- Knowledge Base: Help articles, troubleshooting guides
- Capabilities: Check account status, troubleshoot basic issues, create tickets
Workflow:
Customer calls support number
├─ AI: "Thanks for calling Acme Support, I'm here to help"
├─ AI asks: "What can I help you with today?"
├─ Customer describes issue
├─ AI searches knowledge base
├─ AI provides solution
│ ├─ If resolved: "Is there anything else I can help with?"
│ └─ If not resolved: "Let me connect you with a specialist"
│ └─ Transfer to human agent with context
└─ Create support ticket automatically
Benefits:
- 24/7 support availability
- Instant response (no hold time)
- Handles 60-70% of common issues
- Frees human agents for complex cases
- Full call logging and transcripts
Appointment Confirmation & Reminders
Scenario: Reduce no-shows with automated confirmation calls
Setup:
- Workflow triggers 24 hours before appointment
- AI calls to confirm or reschedule
- Updates calendar automatically
Workflow:
24 hours before appointment:
├─ AI calls customer
├─ AI: "Hi, this is a reminder about your appointment tomorrow at 2 PM with Dr. Smith"
├─ AI: "Can you confirm you'll be there?"
├─ Customer responds:
│ ├─ "Yes" → Update appointment: Confirmed
│ ├─ "Need to reschedule" → AI: "What day/time works better?"
│ │ ├─ AI collects new preferred time
│ │ ├─ AI: "Let me check availability..."
│ │ ├─ AI offers available slots
│ │ └─ Updates appointment with new time
│ └─ "Cancel" → Update appointment: Cancelled
└─ Log outcome in CRM
Results:
- 40% reduction in no-shows
- Automatic rescheduling
- Optimized calendar
- Better patient experience
Lead Qualification & Scoring
Scenario: Qualify leads before sales team contact
Setup:
- New lead triggers outbound call after 5 minutes
- AI asks qualifying questions
- Scores lead based on responses
- Hot leads routed to sales immediately
Workflow:
Lead submits form on website
├─ Wait 5 minutes
├─ AI calls lead
├─ AI: "Hi, I'm calling about your recent inquiry on our website"
├─ AI asks qualifying questions:
│ ├─ "What's your budget range?" → Score based on answer
│ ├─ "What's your timeline?" → Score based on urgency
│ ├─ "Are you the decision maker?" → Authority check
│ └─ "What challenges are you facing?" → Needs assessment
├─ AI calculates lead score (0-100)
├─ If score > 70 (hot lead):
│ ├─ Immediate notification to sales rep
│ ├─ Create high-priority task
│ ├─ Send lead details to rep's phone
│ └─ AI: "A sales specialist will call you within 15 minutes"
└─ If score < 30 (cold lead):
├─ Add to nurture email campaign
└─ Schedule follow-up call in 2 weeks
Benefits:
- 24/7 lead response (no delays)
- Consistent qualification
- Sales team focuses on hot leads
- Higher conversion rates
Payment Collections
Scenario: Friendly payment reminders for overdue invoices
Setup:
- Workflow checks for invoices due in 3 days
- AI makes courtesy reminder call
- Updates invoice status based on response
Workflow:
3 days before invoice due:
├─ AI calls customer
├─ AI: "Hi, this is a courtesy reminder that invoice #12345 is due on June 10th"
├─ AI: "The amount due is $500. Would you like me to send a payment link?"
├─ Customer responds:
│ ├─ "Already paid" → AI: "Great! Can you share the payment reference?"
│ │ └─ Update invoice status
│ ├─ "Send link" → Create task: Send payment link
│ ├─ "Need extension" → AI: "How much time do you need?"
│ │ ├─ AI collects extension details
│ │ └─ Create task for billing team to approve
│ └─ "Can't pay" → AI: "Let me connect you with our billing department"
│ └─ Transfer to billing team
└─ Log call outcome in CRM
Results:
- Higher payment collection rate
- Professional, friendly reminders
- Reduces manual follow-up calls
- Improves cash flow
Getting Help
Expedify Support
- In-App Chat: Click chat icon in bottom right
- Email: support@expedify.ai
- Documentation: docs.expedify.ai
- Community: community.expedify.ai
Twilio Support
- Support Portal: support.twilio.com
- Documentation: www.twilio.com/docs
- API Reference: www.twilio.com/docs/voice
- Status Page: status.twilio.com
- Phone Support: Available for paid accounts
Helpful Resources
- Twilio Voice API Docs: www.twilio.com/docs/voice/api
- TwiML Guide: www.twilio.com/docs/voice/twiml
- Expedify Voice Agents: Voice Agent Guide
- Expedify Workflows: Workflow Guide
Next Steps
After setting up Twilio integration:
- ✅ Purchase a phone number from Twilio (if you haven't already)
- ✅ Test manual calling to verify basic connectivity
- ✅ Create your first AI voice agent for specific use case
- ✅ Configure inbound routing with webhook URLs
- ✅ Build one simple workflow (e.g., appointment reminder)
- ✅ Review call recordings and refine AI instructions
- ✅ Monitor call quality in Twilio Insights
- ✅ Scale up to more advanced use cases
Ready to start calling? Go to Settings → Integrations and configure Twilio now!
Need help? Contact Expedify support or check the Voice Calling guide for more details.