Documentation Index
Fetch the complete documentation index at: https://docs.voxworks.ai/llms.txt
Use this file to discover all available pages before exploring further.
These examples show complete automation pipelines for real business scenarios. Each one includes the trigger configuration, every step in order, and the exact field mappings you would use. Adapt them to your own Scripts, CRM fields, and business rules.
Appointment Reminder with Confirmation
Industry: Healthcare, Professional Services, Automotive
Scenario: 24 hours before a scheduled appointment, call the patient or client to confirm. If they confirm, update the CRM. If they cancel or don’t answer, alert the team.
Trigger: Inbound Webhook (fired by your scheduling system or a cron-based integration)
Webhook payload:
{
"phone": "+61400222333",
"first_name": "Sarah",
"last_name": "Chen",
"email": "sarah@example.com",
"appointment_date": "2026-03-07",
"appointment_time": "10:30 AM",
"provider_name": "Dr. Williams",
"crm_id": "apt-9921"
}
Steps
Step 1 — Transform
| Source | Target |
|---|
trigger.phone | contact.phone_number |
trigger.first_name | contact.first_name |
trigger.last_name | contact.last_name |
trigger.email | contact.email |
Step 2 — Upsert Contact
Step 3 — Upsert Object
- Object type:
appointment
- Match on:
appointment_id = trigger.crm_id
- Link to contact: Yes
| Source | Target |
|---|
trigger.crm_id | appointment_id |
trigger.appointment_date | date |
trigger.appointment_time | time |
trigger.provider_name | provider |
Step 4 — Create Call
- Script: Appointment Reminder Script
- Phone:
contact.phone_number
--- after call completes ---
Step 5 — Condition: Did the contact confirm?
- Field:
call.structured_data.confirmed
- Operator:
eq
- Value:
true
On true:
Step 5a — Destination: Webhook (update CRM status to “Confirmed”)
- URL:
https://your-system.example.com/api/appointments/confirm
- Method:
POST
- Body:
{
"appointment_id": "{{objects.appointment.appointment_id}}",
"status": "confirmed"
}
On false:
Step 5b — Destination: SMS to team
Appointment not confirmed: {{contact.full_name}} for {{objects.appointment.date}} at {{objects.appointment.time}} with {{objects.appointment.provider}}. Call status: {{call.status}}.
Industry: SaaS, Financial Services, Education
Scenario: A prospect fills out a form on your website. Voxworks calls them within minutes to qualify the lead, then routes qualified leads to your sales team and updates your CRM.
Trigger: Inbound Webhook (fired by your form builder — Typeform, HubSpot Forms, or a custom form)
Webhook payload:
{
"phone": "+61400555666",
"first_name": "Marcus",
"last_name": "Rivera",
"email": "marcus@company.com",
"company": "Acme Corp",
"interest": "Enterprise plan",
"source": "pricing_page",
"hubspot_contact_id": "hs-12345"
}
Steps
Step 1 — Transform
| Source | Target |
|---|
trigger.phone | contact.phone_number |
trigger.first_name | contact.first_name |
trigger.last_name | contact.last_name |
trigger.email | contact.email |
Step 2 — Upsert Contact
Step 3 — Upsert Object
- Object type:
hubspot_contact
- Match on:
contact_id = trigger.hubspot_contact_id
- Link to contact: Yes
| Source | Target |
|---|
trigger.hubspot_contact_id | contact_id |
trigger.company | company |
trigger.interest | interest |
trigger.source | lead_source |
Step 4 — Create Call
- Script: Lead Qualification Script
- Phone:
contact.phone_number
--- after call completes ---
Step 5 — Transform: Map call results
| Source | Target |
|---|
call.call_summary | notes |
call.structured_data.qualified | is_qualified |
call.structured_data.budget_range | budget |
call.structured_data.timeline | timeline |
call.structured_data.decision_maker | is_decision_maker |
objects.hubspot_contact.contact_id | contact_id |
Step 6 — Destination: Webhook (update CRM with qualification data)
- URL:
https://your-api.example.com/leads/qualify
- Method:
POST
- Body:
{
"contact_id": "{{mapped.contact_id}}",
"qualified": "{{mapped.is_qualified}}",
"budget": "{{mapped.budget}}",
"timeline": "{{mapped.timeline}}",
"decision_maker": "{{mapped.is_decision_maker}}",
"summary": "{{mapped.notes}}"
}
Step 7 — Condition: Is the lead qualified?
- Field:
call.structured_data.qualified
- Operator:
eq
- Value:
true
On true:
Step 7a — Destination: Email to team
- To:
team
- Members: Sales team members
- Subject:
Qualified lead: {{contact.full_name}} at {{objects.hubspot_contact.company}}
- Body:
New qualified lead from {{objects.hubspot_contact.lead_source}}.
Contact: {{contact.full_name}} ({{contact.email}})
Company: {{objects.hubspot_contact.company}}
Budget: {{call.structured_data.budget_range}}
Timeline: {{call.structured_data.timeline}}
Call summary:
{{call.call_summary}}
On false:
Step 7b — Destination: Email to contact
- Subject:
Thanks for your interest, {{contact.first_name}}
- Body:
Hi {{contact.first_name}},
Thanks for chatting with us. Based on our conversation, it sounds like the timing might not be right just yet.
We'll keep you updated on new features and pricing options. In the meantime, feel free to reach out if anything changes.
Best regards,
The Sales Team
Payment Reminder with Escalation
Industry: Financial Services, Utilities, Insurance
Scenario: Call customers with overdue payments. If they commit to paying, log it. If they don’t answer or refuse, escalate to a collections team member.
Trigger: Inbound Webhook (fired by your billing system for each overdue account)
Webhook payload:
{
"phone": "+61400777888",
"first_name": "David",
"last_name": "Park",
"account_number": "ACC-20456",
"amount_due": "245.00",
"due_date": "2026-02-28",
"days_overdue": 6
}
Steps
Step 1 — Transform
| Source | Target |
|---|
trigger.phone | contact.phone_number |
trigger.first_name | contact.first_name |
trigger.last_name | contact.last_name |
Step 2 — Upsert Contact
Step 3 — Create Call
- Script: Payment Reminder Script
- Phone:
contact.phone_number
--- after call completes ---
Step 4 — Destination: Webhook (log call result to billing system)
- URL:
https://billing.example.com/api/collection-calls
- Method:
POST
- Body:
{
"account_number": "{{trigger.account_number}}",
"call_status": "{{call.status}}",
"end_reason": "{{call.end_reason}}",
"payment_promised": "{{call.structured_data.payment_committed}}",
"promised_date": "{{call.structured_data.payment_date}}",
"summary": "{{call.call_summary}}"
}
Step 5 — Condition: Did the customer commit to paying?
- Field:
call.structured_data.payment_committed
- Operator:
eq
- Value:
true
On true:
Step 5a — Destination: SMS to contact
Hi {{contact.first_name}}, thanks for confirming your payment of ${{trigger.amount_due}} for account {{trigger.account_number}}. If you need help, reply to this message.
On false:
Step 5b — Destination: Email to team
- To:
team
- Members: Collections team
- Subject:
Escalation: {{contact.full_name}} - ${{trigger.amount_due}} overdue
- Body:
Payment reminder call to {{contact.full_name}} did not result in a commitment.
Account: {{trigger.account_number}}
Amount: ${{trigger.amount_due}}
Days overdue: {{trigger.days_overdue}}
Call status: {{call.status}}
Summary:
{{call.call_summary}}
Post-Inspection Callback (Real Estate)
Industry: Real Estate
Scenario: After a property inspection, call the attendee to gauge their interest, collect feedback, and update the CRM with their response. Alert the agent if the buyer is highly interested.
Trigger: Inbound Webhook (fired when an inspection is marked complete in your property management system)
Webhook payload:
{
"phone": "+61400111999",
"first_name": "Emma",
"last_name": "Taylor",
"email": "emma.taylor@email.com",
"property_address": "42 Harbour St, Sydney NSW 2000",
"inspection_date": "2026-03-06",
"listing_agent": "James Morton",
"listing_id": "PRP-8834",
"crm_id": "monday-55023",
"board_id": "1234567890"
}
Steps
Step 1 — Transform
| Source | Target |
|---|
trigger.phone | contact.phone_number |
trigger.first_name | contact.first_name |
trigger.last_name | contact.last_name |
trigger.email | contact.email |
Step 2 — Upsert Contact
Step 3 — Upsert Object
- Object type:
monday_item
- Match on:
CRM_ID = trigger.crm_id
- Link to contact: Yes
| Source | Target |
|---|
trigger.crm_id | CRM_ID |
trigger.board_id | board_id |
trigger.listing_id | listing_id |
trigger.property_address | property_address |
Step 4 — Create Call
- Script: Post-Inspection Callback Script
- Phone:
contact.phone_number
--- after call completes ---
Step 5 — Transform: Map results to CRM fields
| Source | Target |
|---|
call.call_summary | long_text_7 |
call.structured_data.interest_level | status_1 |
call.structured_data.price_feedback | long_text_9 |
call.structured_data.next_steps | status_3 |
call.status | status_5 |
objects.monday_item.CRM_ID | item_id |
objects.monday_item.board_id | board_id |
Step 6 — Destination: Integration Sync
Step 7 — Condition: High interest?
- Field:
call.structured_data.interest_level
- Operator:
eq
- Value:
high
On true:
Step 7a — Destination: SMS to team
Hot lead: {{contact.full_name}} is highly interested in {{objects.monday_item.property_address}}. Next steps: {{call.structured_data.next_steps}}. Call summary: {{call.call_summary}}
Step 7b — Destination: Email to contact
- Subject:
Thanks for inspecting {{objects.monday_item.property_address}}, {{contact.first_name}}
- Body:
Hi {{contact.first_name}},
Thanks for attending the inspection at {{objects.monday_item.property_address}} on {{trigger.inspection_date}}.
Your listing agent {{trigger.listing_agent}} will be in touch shortly to discuss next steps.
If you have any questions in the meantime, feel free to reply to this email.
Kind regards,
The Team
Customer Satisfaction Survey
Industry: Any (Retail, Hospitality, SaaS, Healthcare)
Scenario: After a support interaction or service delivery, call the customer to collect a satisfaction rating and feedback. Push the results to your analytics system and flag negative experiences.
Trigger: Call Completed
- Script filter: Customer Satisfaction Survey Script
- Status filter:
completed
Steps
Step 1 — Destination: Webhook (send structured survey results to analytics)
- URL:
https://analytics.example.com/api/survey-results
- Method:
POST
- Body:
{
"contact_phone": "{{contact.phone_number}}",
"contact_name": "{{contact.full_name}}",
"satisfaction_rating": "{{call.structured_data.rating}}",
"nps_score": "{{call.structured_data.nps_score}}",
"feedback": "{{call.structured_data.feedback}}",
"would_recommend": "{{call.structured_data.would_recommend}}",
"improvement_suggestions": "{{call.structured_data.improvements}}",
"call_duration": "{{call.duration}}",
"call_id": "{{call.id}}"
}
Step 2 — Condition: Negative experience?
- Field:
call.structured_data.rating
- Operator:
lte
- Value:
2
On true:
Step 2a — Destination: Email to team
- To:
team
- Members: Customer success team
- Subject:
Low satisfaction: {{contact.full_name}} rated {{call.structured_data.rating}}/5
- Body:
{{contact.full_name}} ({{contact.phone_number}}) gave a satisfaction rating of {{call.structured_data.rating}}/5.
Feedback: {{call.structured_data.feedback}}
Improvement suggestions: {{call.structured_data.improvements}}
Full call summary:
{{call.call_summary}}
Step 2b — Destination: SMS to contact
Hi {{contact.first_name}}, thank you for your feedback. We're sorry to hear about your experience. A member of our team will reach out to you shortly to make things right.
On false:
Step 2c — Destination: Email to contact
- Subject:
Thanks for your feedback, {{contact.first_name}}
- Body:
Hi {{contact.first_name}},
Thank you for taking the time to share your feedback. We're glad to hear about your experience!
Your input helps us continue improving our service. If you ever need anything, don't hesitate to reach out.
Best regards,
The Team
Enrollment Follow-Up (Education)
Industry: Education, Training Providers
Scenario: When a prospective student submits an enquiry, call them to discuss programs, answer questions, and guide them toward enrollment. Sync the outcome to your student management system.
Trigger: Inbound Webhook (fired by your enquiry form or student management system)
Webhook payload:
{
"phone": "+61400333444",
"first_name": "Liam",
"last_name": "Johnson",
"email": "liam.j@email.com",
"program_interest": "Graduate Diploma in Data Science",
"start_date": "July 2026",
"enquiry_source": "website",
"student_id": "STU-20789"
}
Steps
Step 1 — Transform
| Source | Target |
|---|
trigger.phone | contact.phone_number |
trigger.first_name | contact.first_name |
trigger.last_name | contact.last_name |
trigger.email | contact.email |
Step 2 — Upsert Contact
Step 3 — Create Call
- Script: Enrollment Enquiry Script
- Phone:
contact.phone_number
--- after call completes ---
Step 4 — Destination: Webhook (update student management system)
- URL:
https://sms.example.edu/api/enquiries/update
- Method:
POST
- Body:
{
"student_id": "{{trigger.student_id}}",
"call_status": "{{call.status}}",
"end_reason": "{{call.end_reason}}",
"interest_level": "{{call.structured_data.interest_level}}",
"preferred_program": "{{call.structured_data.confirmed_program}}",
"preferred_start": "{{call.structured_data.preferred_intake}}",
"questions_asked": "{{call.structured_data.questions}}",
"next_action": "{{call.structured_data.next_steps}}",
"summary": "{{call.call_summary}}"
}
Step 5 — Condition: Ready to enroll?
- Field:
call.structured_data.ready_to_enroll
- Operator:
eq
- Value:
true
On true:
Step 5a — Destination: Email to contact
- Subject:
Your enrollment next steps — {{call.structured_data.confirmed_program}}
- Body:
Hi {{contact.first_name}},
Great speaking with you! As discussed, here are your next steps to enroll in {{call.structured_data.confirmed_program}} for the {{call.structured_data.preferred_intake}} intake:
1. Complete the online application at [your enrollment link]
2. Submit your supporting documents
3. Our admissions team will confirm your place within 5 business days
If you have any questions, reply to this email or call us directly.
Best regards,
Student Services
Step 5b — Destination: Email to team
- To:
team
- Members: Admissions team
- Subject:
Enrollment intent: {{contact.full_name}} — {{call.structured_data.confirmed_program}}
- Body:
{{contact.full_name}} ({{contact.email}}) is ready to enroll.
Program: {{call.structured_data.confirmed_program}}
Preferred intake: {{call.structured_data.preferred_intake}}
Call summary:
{{call.call_summary}}
Outage Notification with Callback (Utilities)
Industry: Utilities, Energy, Telecommunications
Scenario: When a service outage is reported, call affected customers to notify them, collect any additional information, and send a confirmation SMS.
Trigger: Inbound Webhook (fired by your outage management system for each affected customer)
Webhook payload:
{
"phone": "+61400888999",
"first_name": "Rachel",
"last_name": "Kim",
"account_number": "UTL-33201",
"outage_area": "Northern suburbs",
"estimated_restoration": "2026-03-06 6:00 PM",
"outage_type": "power"
}
Steps
Step 1 — Transform
| Source | Target |
|---|
trigger.phone | contact.phone_number |
trigger.first_name | contact.first_name |
trigger.last_name | contact.last_name |
Step 2 — Upsert Contact
Step 3 — Create Call
- Script: Outage Notification Script
- Phone:
contact.phone_number
--- after call completes ---
Step 4 — Destination: SMS to contact
Hi {{contact.first_name}}, as discussed, there is a {{trigger.outage_type}} outage in the {{trigger.outage_area}} area. Estimated restoration: {{trigger.estimated_restoration}}. Account: {{trigger.account_number}}. For updates, visit our website or call our hotline.
Step 5 — Condition: Customer reported an issue?
- Field:
call.structured_data.reported_issue
- Operator:
exists
On true:
Step 5a — Destination: Webhook (log customer-reported issue)
- URL:
https://ops.example.com/api/outage-reports
- Method:
POST
- Body:
{
"account_number": "{{trigger.account_number}}",
"outage_area": "{{trigger.outage_area}}",
"customer_report": "{{call.structured_data.reported_issue}}",
"severity": "{{call.structured_data.severity}}",
"contact_phone": "{{contact.phone_number}}",
"call_summary": "{{call.call_summary}}"
}
Tips for Adapting These Examples
- Replace field names with your actual CRM column IDs, API endpoints, and Schema fields.
- Adjust the Script referenced in Create Call steps to match your own Scripts.
- Start with fewer steps. Get the basic trigger-to-call flow working first, then add post-call destinations and conditions.
- Use Test Webhook to send a sample payload and verify field mappings before enabling the automation.
- Check structured data field names in your Script’s data collection settings — these determine what’s available under
call.structured_data.*.