{
  "workflow_name": "Sync every new sheet row into Airtable nightly",
  "workflow_steps": {
    "steps": [
      {
        "id": "1",
        "position": {
          "x": 0,
          "y": 0
        },
        "data": {
          "label": "Every Day",
          "app": {
            "key": "schedule",
            "fm_app": "schedule"
          },
          "eventSlug": "day",
          "eventTitle": "Every Day",
          "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": "schedule",
        "stepID": "1",
        "action": "day",
        "nodeType": "step",
        "actionAppArgs": []
      },
      {
        "id": "2",
        "position": {
          "x": 175,
          "y": 0
        },
        "type": "action",
        "data": {
          "label": "Read new sheet rows",
          "layoutDirection": "horizontal",
          "stepNumber": 2,
          "app": {
            "key": "google_spreadsheets",
            "fm_app": "google_spreadsheets"
          },
          "eventSlug": "get_rows",
          "eventTitle": "Get Rows"
        },
        "parentType": "step",
        "style": {
          "transition": "all 150ms ease-in-out"
        },
        "measured": {
          "width": 82,
          "height": 82
        },
        "actionAppArgs": [],
        "application": "google_spreadsheets",
        "action": "get_rows",
        "nodeType": "step",
        "stepID": "2"
      },
      {
        "id": "3",
        "position": {
          "x": 350,
          "y": 0
        },
        "type": "action",
        "data": {
          "label": "Iterator",
          "layoutDirection": "horizontal",
          "stepNumber": 3,
          "app": {
            "key": "iterator",
            "fm_app": "iterator"
          },
          "eventSlug": "loop_through_array",
          "eventTitle": "Loop Through Array"
        },
        "parentType": "step",
        "style": {
          "transition": "all 150ms ease-in-out"
        },
        "measured": {
          "width": 82,
          "height": 82
        },
        "actionAppArgs": {
          "iteratorArray": "{google_spreadsheets2.rows}",
          "iterator_simple_response": "Yes",
          "iteratorMethod": "single",
          "batchSize": "25"
        },
        "application": "iterator",
        "action": "loop_through_array",
        "nodeType": "step",
        "stepID": "3"
      },
      {
        "id": "4",
        "position": {
          "x": 525,
          "y": 0
        },
        "type": "action",
        "data": {
          "label": "Create matching Airtable record",
          "layoutDirection": "horizontal",
          "stepNumber": 4,
          "app": {
            "key": "airtable",
            "fm_app": "airtable"
          },
          "eventSlug": "create_record",
          "eventTitle": "Create Record"
        },
        "parentType": "step",
        "style": {
          "transition": "all 150ms ease-in-out"
        },
        "measured": {
          "width": 82,
          "height": 82
        },
        "actionAppArgs": [],
        "application": "airtable",
        "action": "create_record",
        "nodeType": "step",
        "stepID": "4"
      },
      {
        "id": "5",
        "position": {
          "x": 700,
          "y": 0
        },
        "type": "action",
        "data": {
          "label": "Notify team on Slack",
          "layoutDirection": "horizontal",
          "stepNumber": 5,
          "app": {
            "key": "slack",
            "fm_app": "slack"
          },
          "eventSlug": "send_message_to_channel",
          "eventTitle": "Send Channel Message"
        },
        "parentType": "step",
        "style": {
          "transition": "all 150ms ease-in-out"
        },
        "measured": {
          "width": 82,
          "height": 82
        },
        "actionAppArgs": {
          "message_text": "🔄 Nightly Sheets→Airtable sync complete."
        },
        "application": "slack",
        "action": "send_message_to_channel",
        "nodeType": "step",
        "stepID": "5"
      },
      {
        "id": "main_end_placeholder",
        "position": {
          "x": 875,
          "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-4",
        "source": "3",
        "target": "4",
        "type": "step",
        "data": []
      },
      {
        "id": "e-4-5",
        "source": "4",
        "target": "5",
        "type": "step",
        "data": []
      },
      {
        "id": "e-5-main_end_placeholder",
        "source": "5",
        "target": "main_end_placeholder",
        "type": "placeholder",
        "data": []
      }
    ]
  },
  "workflow_settings": {
    "name": "Sync every new sheet row into Airtable nightly",
    "folder": "all",
    "description": "Each night, read the new rows from a Google Sheet and loop through them, creating a matching Airtable record for each, then Slack a completion note. Keeps two systems in sync.",
    "status": "off",
    "user_email": "",
    "webhook_queue": "disabled",
    "workflow_auth_key": "",
    "builder_version": "v2",
    "time": "",
    "ai_generated": "yes"
  }
}