Automation Builder Guide

Build automated front desk workflows visually with the drag-and-drop Automation Builder.

Overview

The Automation Builder provides a visual canvas where you connect trigger, condition, and action nodes to create workflows. Automations run server-side and execute automatically when their trigger conditions are met.

A typical workflow starts with a trigger node (the event that kicks off the automation), optionally passes through condition nodes (to branch logic), and ends with one or more action nodes (the operations to perform).

Trigger Nodes

Every automation starts with exactly one trigger node. Drag a trigger from the node palette onto the canvas to begin.

ParameterTypeDescription
call.endedeventFires when any call ends. Includes call data, caller info, duration, and summary.
call.missedeventFires when a call is missed or goes unanswered. Includes caller phone and timestamp.
lead.createdeventFires when a new lead is added to the system from any source.
lead.statusChangedeventFires when a lead's status changes (e.g. new to contacted).
appointment.bookedeventFires when a new appointment is booked.
appointment.cancelledeventFires when an appointment is cancelled.
appointment.remindereventFires at a configured time before an appointment (e.g. 24 hours).
schedulecronFires on a cron schedule. Configure the schedule in the node settings.
Trigger node example (JSON)json
{
  "id": "trigger_1",
  "type": "trigger",
  "event": "call.missed",
  "conditions": {
    "during_hours": true,
    "is_new_caller": true
  }
}

Action Nodes

Action nodes perform operations using FrontDeskOS tools and external services. Connect them to a trigger or condition node to define what happens when the automation runs.

ParameterTypeDescription
send_emailactionSend an email using a template or custom HTML body.
send_smsactionSend an SMS message to a phone number.
create_leadactionCreate a new lead record with name, phone, source, and notes.
update_leadactionUpdate fields on an existing lead.
create_callbackactionCreate a callback request for the front desk team.
book_appointmentactionBook an appointment for a contact.
cancel_appointmentactionCancel an existing appointment.
http_requestactionSend an HTTP request to an external URL (webhook).
delayactionPause the workflow for a specified duration (minutes, hours, or days).
score_leadactionRun lead scoring and output the score for use in conditions.
Action node examplejson
{
  "id": "action_1",
  "type": "action",
  "action": "send_sms",
  "config": {
    "to": "{{trigger.caller_phone}}",
    "message": "Hi {{trigger.caller_name}}, we missed your call! Reply BOOK to schedule an appointment or we'll call you back shortly."
  }
}

Condition Nodes

Condition nodes branch the workflow into different paths based on data. Each condition has a "true" and "false" output that you connect to different action nodes.

Condition node examplejson
{
  "id": "condition_1",
  "type": "condition",
  "conditionType": "if_else",
  "expression": {
    "field": "trigger.is_existing_patient",
    "operator": "equals",
    "value": true
  },
  "trueBranch": "action_send_welcome_back",
  "falseBranch": "action_create_new_lead"
}

Building a Workflow

Here is a complete example of a missed-call follow-up workflow that creates a lead, sends an SMS, and schedules a callback:

Complete workflowjson
{
  "name": "Missed Call Follow-Up",
  "description": "Capture missed calls as leads and send an SMS",
  "nodes": [
    {
      "id": "trigger",
      "type": "trigger",
      "event": "call.missed",
      "conditions": { "during_hours": true }
    },
    {
      "id": "check_existing",
      "type": "condition",
      "conditionType": "if_else",
      "expression": {
        "field": "trigger.is_existing_patient",
        "operator": "equals",
        "value": false
      },
      "trueBranch": "create_lead",
      "falseBranch": "send_sms"
    },
    {
      "id": "create_lead",
      "type": "action",
      "action": "create_lead",
      "config": {
        "name": "{{trigger.caller_name}}",
        "phone": "{{trigger.caller_phone}}",
        "source": "missed_call"
      },
      "next": "send_sms"
    },
    {
      "id": "send_sms",
      "type": "action",
      "action": "send_sms",
      "config": {
        "to": "{{trigger.caller_phone}}",
        "message": "We missed your call. Reply BOOK to schedule or we'll call you back soon!"
      },
      "next": "create_callback"
    },
    {
      "id": "create_callback",
      "type": "action",
      "action": "create_callback",
      "config": {
        "phone": "{{trigger.caller_phone}}",
        "callerName": "{{trigger.caller_name}}",
        "priority": "high",
        "reason": "Missed call - return ASAP"
      }
    }
  ],
  "edges": [
    { "from": "trigger", "to": "check_existing" },
    { "from": "check_existing", "to": "create_lead", "label": "New caller" },
    { "from": "check_existing", "to": "send_sms", "label": "Existing" },
    { "from": "create_lead", "to": "send_sms" },
    { "from": "send_sms", "to": "create_callback" }
  ]
}

Testing Automations

Test your automation before deploying it to production. The builder includes a test mode that simulates trigger events with sample data.

Test via APIbash
# Trigger a test run with sample data
curl -X POST https://api.frontdeskos.com/v1/automations/auto_abc123/test \
  -H "Authorization: Bearer sk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "sampleData": {
      "caller_name": "Test User",
      "caller_phone": "+1-555-0000",
      "is_existing_patient": false,
      "during_hours": true
    }
  }'

The test run executes each node in sequence and returns the result of every step, including any errors. SMS and email actions are sent to a sandbox instead of real recipients during test mode.

Visual Test Mode
In the drag-and-drop builder, click the "Test" button in the toolbar. The canvas highlights each node as it executes so you can visually follow the workflow path.

Deploying to Production

Once you have tested your automation, deploy it to start processing real events:

Deploy automationbash
# Deploy to production
curl -X POST https://api.frontdeskos.com/v1/automations/auto_abc123/deploy \
  -H "Authorization: Bearer sk_live_your_api_key"

# Check deployment status
curl https://api.frontdeskos.com/v1/automations/auto_abc123 \
  -H "Authorization: Bearer sk_live_your_api_key"

Deployed automations can be paused, resumed, or rolled back at any time. Each deployment creates a version so you can revert to a previous configuration if needed.

Production Safety
Automations that send SMS or email will consume your messaging quota. Monitor usage in the dashboard under Settings > Usage to avoid unexpected charges.

Search Documentation

Search for pages, tools, and guides