Skip to main content

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
SourceTarget
trigger.phonecontact.phone_number
trigger.first_namecontact.first_name
trigger.last_namecontact.last_name
trigger.emailcontact.email
Step 2 — Upsert Contact
  • Match on: phone_number
Step 3 — Upsert Object
  • Object type: appointment
  • Match on: appointment_id = trigger.crm_id
  • Link to contact: Yes
SourceTarget
trigger.crm_idappointment_id
trigger.appointment_datedate
trigger.appointment_timetime
trigger.provider_nameprovider
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
  • SMS type: team
  • Template:
Appointment not confirmed: {{contact.full_name}} for {{objects.appointment.date}} at {{objects.appointment.time}} with {{objects.appointment.provider}}. Call status: {{call.status}}.

Lead Qualification from Web Form

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
SourceTarget
trigger.phonecontact.phone_number
trigger.first_namecontact.first_name
trigger.last_namecontact.last_name
trigger.emailcontact.email
Step 2 — Upsert Contact
  • Match on: email
Step 3 — Upsert Object
  • Object type: hubspot_contact
  • Match on: contact_id = trigger.hubspot_contact_id
  • Link to contact: Yes
SourceTarget
trigger.hubspot_contact_idcontact_id
trigger.companycompany
trigger.interestinterest
trigger.sourcelead_source
Step 4 — Create Call
  • Script: Lead Qualification Script
  • Phone: contact.phone_number
--- after call completes --- Step 5 — Transform: Map call results
SourceTarget
call.call_summarynotes
call.structured_data.qualifiedis_qualified
call.structured_data.budget_rangebudget
call.structured_data.timelinetimeline
call.structured_data.decision_makeris_decision_maker
objects.hubspot_contact.contact_idcontact_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
SourceTarget
trigger.phonecontact.phone_number
trigger.first_namecontact.first_name
trigger.last_namecontact.last_name
Step 2 — Upsert Contact
  • Match on: phone_number
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
  • Template:
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
SourceTarget
trigger.phonecontact.phone_number
trigger.first_namecontact.first_name
trigger.last_namecontact.last_name
trigger.emailcontact.email
Step 2 — Upsert Contact
  • Match on: phone_number
Step 3 — Upsert Object
  • Object type: monday_item
  • Match on: CRM_ID = trigger.crm_id
  • Link to contact: Yes
SourceTarget
trigger.crm_idCRM_ID
trigger.board_idboard_id
trigger.listing_idlisting_id
trigger.property_addressproperty_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
SourceTarget
call.call_summarylong_text_7
call.structured_data.interest_levelstatus_1
call.structured_data.price_feedbacklong_text_9
call.structured_data.next_stepsstatus_3
call.statusstatus_5
objects.monday_item.CRM_IDitem_id
objects.monday_item.board_idboard_id
Step 6 — Destination: Integration Sync
  • Integration: Monday.com
Step 7 — Condition: High interest?
  • Field: call.structured_data.interest_level
  • Operator: eq
  • Value: high
On true: Step 7a — Destination: SMS to team
  • SMS type: team
  • Template:
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
  • Template:
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
SourceTarget
trigger.phonecontact.phone_number
trigger.first_namecontact.first_name
trigger.last_namecontact.last_name
trigger.emailcontact.email
Step 2 — Upsert Contact
  • Match on: email
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
SourceTarget
trigger.phonecontact.phone_number
trigger.first_namecontact.first_name
trigger.last_namecontact.last_name
Step 2 — Upsert Contact
  • Match on: phone_number
Step 3 — Create Call
  • Script: Outage Notification Script
  • Phone: contact.phone_number
--- after call completes --- Step 4 — Destination: SMS to contact
  • Template:
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.*.