AutomationFlowsAI & RAG › Airtable Triggered Record Updates

Airtable Triggered Record Updates

Original n8n title: Update Table

Update table. Uses airtableTrigger, airtable. Event-driven trigger; 5 nodes.

Event trigger★★★★☆ complexity5 nodesAirtable TriggerAirtable
AI & RAG Trigger: Event Nodes: 5 Complexity: ★★★★☆ Added:

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "name": "Update table",
  "nodes": [
    {
      "parameters": {
        "pollTimes": {
          "item": [
            {
              "mode": "everyMinute"
            }
          ]
        },
        "authentication": "airtableTokenApi",
        "baseId": {
          "__rl": true,
          "value": "appew9jlYGrM5OYtv",
          "mode": "id"
        },
        "tableId": {
          "__rl": true,
          "value": "tblEfvAEJnuRjzKSR",
          "mode": "id"
        },
        "triggerField": "updatedTime",
        "additionalFields": {
          "fields": ""
        }
      },
      "type": "n8n-nodes-base.airtableTrigger",
      "typeVersion": 1,
      "position": [
        -360,
        140
      ],
      "id": "fccbec4e-0112-4abc-ac5d-9e79e894b30b",
      "name": "Airtable Trigger",
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "assignments": {
          "assignments": [
            {
              "id": "9db895c8-c5a4-4d3d-9ade-b57d06af7d14",
              "name": "startTime",
              "value": "={{ $json.fields.Time }}",
              "type": "string"
            },
            {
              "id": "161dbc05-afae-40fe-a111-1241e453f560",
              "name": "tableId",
              "value": "={{ $json.fields['Table ID'] }}",
              "type": "string"
            },
            {
              "id": "1161c6b8-a588-495a-bc8d-f2b27f5cf0f0",
              "name": "date",
              "value": "={{ $json.fields.Date }}",
              "type": "string"
            },
            {
              "id": "dd7c2494-a16f-4978-941e-34035e25831d",
              "name": "resId",
              "value": "={{ $json.fields[\"Res ID\"] }}",
              "type": "string"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.set",
      "typeVersion": 3.4,
      "position": [
        -140,
        140
      ],
      "id": "1b6644b1-5754-4592-98ce-a4e4e433a39b",
      "name": "Edit Fields"
    },
    {
      "parameters": {
        "jsCode": "const reservation = $input.first().json;\nconst startTime = reservation.startTime;  \nconst tableId = reservation.tableId;\nconst date = reservation.date;\nconst resId = reservation.resId\n\n// Generate the 4 time slots that need to be updated\nfunction getNextSlot(time) {\n    const [hours, minutes] = time.split(':').map(Number);\n    const date = new Date();\n    date.setHours(hours, minutes + 30);\n    return `${String(date.getHours()).padStart(2, '0')}:${String(date.getMinutes()).padStart(2, '0')}`;\n}\n\nlet timesToUpdate = [startTime];\nlet currentTime = startTime;\nfor(let i = 0; i < 3; i++) {\n    currentTime = getNextSlot(currentTime);\n    timesToUpdate.push(currentTime);\n}\n\n// Format records for Airtable update\nlet records = timesToUpdate.map(timeSlot => ({\n        \"Date\": date,\n        \"Time Slot\": timeSlot,\n        \"Table ID\": tableId,\n        \"Status\": \"Unavailable\",\n         \"Reservation ID\": resId  \n}));\n\n\n\n\nreturn records\n\n"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        80,
        140
      ],
      "id": "c4d4cdd0-84b8-4ce6-8420-29bd1958e07a",
      "name": "generateRecords"
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        320,
        140
      ],
      "id": "ee997336-ce74-4c61-88e3-ae7f38454597",
      "name": "Loop Over Items"
    },
    {
      "parameters": {
        "operation": "upsert",
        "base": {
          "__rl": true,
          "value": "appew9jlYGrM5OYtv",
          "mode": "list",
          "cachedResultName": "Restaurant_Management",
          "cachedResultUrl": "https://airtable.com/appew9jlYGrM5OYtv"
        },
        "table": {
          "__rl": true,
          "value": "tblAxvB06ZIIZMnUA",
          "mode": "list",
          "cachedResultName": "Table_Availability",
          "cachedResultUrl": "https://airtable.com/appew9jlYGrM5OYtv/tblAxvB06ZIIZMnUA"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Date": "={{ $json.Date }}",
            "Table ID": "={{ $json['Table ID'] }}",
            "Time Slot": "={{ $json['Time Slot'] }}",
            "Status": "={{ $json.Status }}",
            "Reservation ID": "={{ $json['Reservation ID'] }}"
          },
          "matchingColumns": [
            "id"
          ],
          "schema": [
            {
              "id": "id",
              "displayName": "id",
              "required": false,
              "defaultMatch": true,
              "display": true,
              "type": "string",
              "readOnly": true
            },
            {
              "id": "Date",
              "displayName": "Date",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Table ID",
              "displayName": "Table ID",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "options",
              "options": [
                {
                  "name": "T1",
                  "value": "T1"
                },
                {
                  "name": "T3",
                  "value": "T3"
                },
                {
                  "name": "T5",
                  "value": "T5"
                },
                {
                  "name": "T2",
                  "value": "T2"
                },
                {
                  "name": "T4",
                  "value": "T4"
                }
              ],
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Time Slot",
              "displayName": "Time Slot",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "options",
              "options": [
                {
                  "name": "11:00",
                  "value": "11:00"
                },
                {
                  "name": "11:30",
                  "value": "11:30"
                },
                {
                  "name": "12:00",
                  "value": "12:00"
                },
                {
                  "name": "12:30",
                  "value": "12:30"
                },
                {
                  "name": "13:00",
                  "value": "13:00"
                },
                {
                  "name": "13:30",
                  "value": "13:30"
                },
                {
                  "name": "14:00",
                  "value": "14:00"
                },
                {
                  "name": "14:30",
                  "value": "14:30"
                },
                {
                  "name": "19:00",
                  "value": "19:00"
                },
                {
                  "name": "19:30",
                  "value": "19:30"
                },
                {
                  "name": "20:00",
                  "value": "20:00"
                },
                {
                  "name": "20:30",
                  "value": "20:30"
                },
                {
                  "name": "18:30",
                  "value": "18:30"
                },
                {
                  "name": "21:00",
                  "value": "21:00"
                },
                {
                  "name": "18:00",
                  "value": "18:00"
                },
                {
                  "name": "21:30",
                  "value": "21:30"
                }
              ],
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Status",
              "displayName": "Status",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "options",
              "options": [
                {
                  "name": "Unavailable",
                  "value": "Unavailable"
                },
                {
                  "name": "Available",
                  "value": "Available"
                }
              ],
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Reservation ID",
              "displayName": "Reservation ID",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "reservation",
              "displayName": "reservation",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "array",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "table",
              "displayName": "table",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "array",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Table ID (from table)",
              "displayName": "Table ID (from table)",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": true,
              "removed": true
            },
            {
              "id": "Date (from reservation)",
              "displayName": "Date (from reservation)",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": true,
              "removed": true
            },
            {
              "id": "Time (from reservation)",
              "displayName": "Time (from reservation)",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": true,
              "removed": true
            },
            {
              "id": "Guests (from reservation)",
              "displayName": "Guests (from reservation)",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": true,
              "removed": true
            },
            {
              "id": "Reservations",
              "displayName": "Reservations",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "array",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Tables",
              "displayName": "Tables",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "array",
              "readOnly": false,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2.1,
      "position": [
        560,
        160
      ],
      "id": "83ac3c27-7a6a-47ad-825b-37d26cdccfe1",
      "name": "Airtable1",
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    }
  ],
  "connections": {
    "Airtable Trigger": {
      "main": [
        [
          {
            "node": "Edit Fields",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Edit Fields": {
      "main": [
        [
          {
            "node": "generateRecords",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "generateRecords": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "Airtable1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Airtable1": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "f4e9d381-570e-480a-a643-2ed8e0c9ca29",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "id": "uAxTPE3CPKCOprZs",
  "tags": [
    {
      "createdAt": "2025-02-26T09:17:48.643Z",
      "updatedAt": "2025-02-26T09:17:48.643Z",
      "id": "2JZs1TZAuBnwITKy",
      "name": "restaurant agent"
    },
    {
      "createdAt": "2025-02-26T09:36:53.009Z",
      "updatedAt": "2025-02-26T09:36:53.009Z",
      "id": "3BEoUihyAzJ3cKsJ",
      "name": "airtable"
    }
  ]
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Update table. Uses airtableTrigger, airtable. Event-driven trigger; 5 nodes.

Source: https://github.com/Ayushsinha2004/new_agent/blob/4f0adc05e2deeaabac2dcbe82940ddf4ca6a573c/n8n/Update_table.json — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

ContentCalendar. Uses airtableTrigger, lmChatOpenRouter, airtable, outputParserStructured. Event-driven trigger; 41 nodes.

Airtable Trigger, OpenRouter Chat, Airtable +4
AI & RAG

This n8n workflow automates sales processes using AI agents integrated with Airtable as a CRM and Gmail for email handling. It consists of two main workflows: one for handling Airtable status changes

Airtable Trigger, Agent, OpenAI Chat +9
AI & RAG

Instead of staring at a blank page, this workflow scrapes top-performing content, breaks down the psychological hooks, rewrites it for your specific audience, and drafts a custom text graphic. Once yo

Twitter, Facebook Graph Api, LinkedIn +8
AI & RAG

CompetitorAnalysis. Uses perplexityTool, agent, lmChatOpenRouter, airtableTrigger. Event-driven trigger; 33 nodes.

Perplexity Tool, Agent, OpenRouter Chat +2
AI & RAG

This workflow automatically analyzes hotel guest reviews using OpenAI and updates the sentiment, summary, and confidence score directly in Airtable. It helps hospitality teams monitor guest satisfacti

OpenAI Chat, Chain Llm, Airtable Trigger +2