{
  "workflow_name": "Text a confirmation with Twilio for each new Airtable booking",
  "workflow_steps": {
    "steps": [
      {
        "id": "1",
        "position": {
          "x": 0,
          "y": 0
        },
        "data": {
          "label": "New Booking Record",
          "app": {
            "key": "airtable",
            "fm_app": "airtable"
          },
          "eventSlug": "new_record",
          "eventTitle": "New Record",
          "layoutDirection": "horizontal",
          "stepNumber": 1
        },
        "targetPosition": "bottom",
        "type": "trigger",
        "stepNumber": 1,
        "expanded": true,
        "style": {
          "transition": "all 150ms ease-in-out"
        },
        "measured": {
          "width": 82,
          "height": 82
        },
        "application": "airtable",
        "stepID": "1",
        "action": "new_record",
        "nodeType": "step",
        "actionAppArgs": [],
        "captureResponse": {
          "record_id": "recT8wQ2LmN4",
          "name": "Owen Hart",
          "phone": "+15557778899",
          "service": "Initial consultation",
          "appointment_time": "Tue 28 Oct, 3:30 PM",
          "location": "Studio B, 14 Elm Street"
        },
        "responses": [
          {
            "letter": "A",
            "time": "01/07/2026, 10:00:00",
            "response": {
              "record_id": "recT8wQ2LmN4",
              "name": "Owen Hart",
              "phone": "+15557778899",
              "service": "Initial consultation",
              "appointment_time": "Tue 28 Oct, 3:30 PM",
              "location": "Studio B, 14 Elm Street"
            }
          }
        ],
        "activeResponseIndex": 0
      },
      {
        "id": "2",
        "position": {
          "x": 175,
          "y": 0
        },
        "type": "action",
        "data": {
          "label": "Filter Conditions",
          "layoutDirection": "horizontal",
          "stepNumber": 2,
          "app": {
            "key": "filter",
            "fm_app": "filter"
          },
          "eventSlug": "continue_if",
          "eventTitle": "Continue If Condition Meet",
          "customLabel": "Only records with a phone number"
        },
        "parentType": "step",
        "style": {
          "transition": "all 150ms ease-in-out"
        },
        "measured": {
          "width": 82,
          "height": 82
        },
        "actionAppArgs": {
          "filterConditions": {
            "1": [
              {
                "key": "{airtable1.phone}",
                "condition": "is_not_empty",
                "value": ""
              }
            ]
          }
        },
        "application": "filter",
        "action": "continue_if",
        "nodeType": "step",
        "stepID": "2",
        "filterConditions": {
          "filterConditions": {
            "1": [
              {
                "key": "{airtable1.phone}",
                "condition": "is_not_empty",
                "value": ""
              }
            ]
          }
        }
      },
      {
        "id": "3",
        "position": {
          "x": 350,
          "y": 0
        },
        "type": "action",
        "data": {
          "label": "Send confirmation SMS",
          "layoutDirection": "horizontal",
          "stepNumber": 3,
          "app": {
            "key": "twilio",
            "fm_app": "twilio"
          },
          "eventSlug": "send_sms",
          "eventTitle": "Send SMS"
        },
        "parentType": "step",
        "style": {
          "transition": "all 150ms ease-in-out"
        },
        "measured": {
          "width": 82,
          "height": 82
        },
        "actionAppArgs": {
          "to": "{airtable1.phone}",
          "message": "Hi {airtable1.name}, your {airtable1.service} is booked for {airtable1.appointment_time} at {airtable1.location}. Reply to this text if you need to change it."
        },
        "application": "twilio",
        "action": "send_sms",
        "nodeType": "step",
        "stepID": "3"
      },
      {
        "id": "main_end_placeholder",
        "position": {
          "x": 525,
          "y": 0
        },
        "type": "placeholder",
        "data": {
          "label": "+",
          "layoutDirection": "horizontal",
          "stepNumber": null,
          "app": []
        },
        "measured": {
          "width": 40,
          "height": 82
        },
        "stepID": "main_end_placeholder",
        "nodeType": "placeholder",
        "actionAppArgs": []
      }
    ],
    "edges": [
      {
        "id": "e-1-2",
        "source": "1",
        "target": "2",
        "type": "step",
        "data": []
      },
      {
        "id": "e-2-3",
        "source": "2",
        "target": "3",
        "type": "step",
        "data": []
      },
      {
        "id": "e-3-main_end_placeholder",
        "source": "3",
        "target": "main_end_placeholder",
        "type": "placeholder",
        "data": []
      }
    ]
  },
  "workflow_settings": {
    "name": "Text a confirmation with Twilio for each new Airtable booking",
    "folder": "all",
    "description": "When a new booking record lands in your Airtable base, FlowMattic sends the customer an SMS confirmation through Twilio with the date and time from the record. Clinics, studios and service teams that keep bookings in Airtable can confirm every appointment without texting by hand. After import, point the trigger at your table and match the phone, name and time fields.",
    "status": "off",
    "user_email": "",
    "webhook_queue": "disabled",
    "workflow_auth_key": "",
    "builder_version": "v2",
    "time": "",
    "ai_generated": "yes"
  }
}