AutomationFlowsData & Sheets › Automate Airtable Updates via HTTP Request

Automate Airtable Updates via HTTP Request

Original n8n title: D20 Code

d20-code. Uses httpRequest, airtable, executeWorkflowTrigger. Event-driven trigger; 15 nodes.

Event trigger★★★★☆ complexity15 nodesHTTP RequestAirtableExecute Workflow Trigger
Data & Sheets Trigger: Event Nodes: 15 Complexity: ★★★★☆ Added:

This workflow follows the Airtable → Execute Workflow Trigger recipe pattern — see all workflows that pair these two integrations.

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
{
  "createdAt": "2025-09-16T02:07:01.369Z",
  "updatedAt": "2025-09-16T03:03:31.107Z",
  "id": "WrKYPXUDzkKoGkq4",
  "name": "d20-code",
  "active": false,
  "isArchived": false,
  "nodes": [
    {
      "parameters": {},
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        -176,
        432
      ],
      "id": "6a6e537d-4fa3-4cad-bd42-a390ed5544b5",
      "name": "When clicking \u2018Execute workflow\u2019"
    },
    {
      "parameters": {
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "title",
              "cssSelector": "article > h3 > a",
              "returnValue": "attribute",
              "attribute": "title",
              "returnArray": true
            },
            {
              "key": "url",
              "cssSelector": "article > h3 > a",
              "returnValue": "attribute",
              "attribute": "href",
              "returnArray": true
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.html",
      "typeVersion": 1.2,
      "position": [
        272,
        432
      ],
      "id": "c0267842-9250-463d-85e8-5d1013274de6",
      "name": "HTML"
    },
    {
      "parameters": {
        "url": "https://books.toscrape.com",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        48,
        432
      ],
      "id": "4b101ef7-a11e-45f7-a931-a9de43f9be0e",
      "name": "HTTP Request"
    },
    {
      "parameters": {
        "mode": "combine",
        "combineBy": "combineByPosition",
        "options": {}
      },
      "type": "n8n-nodes-base.merge",
      "typeVersion": 3.2,
      "position": [
        720,
        432
      ],
      "id": "8c2dc973-f34c-4abf-88ad-be3554f24092",
      "name": "Merge"
    },
    {
      "parameters": {
        "operation": "upsert",
        "base": {
          "__rl": true,
          "value": "app9OzbgVsNaZQ4fI",
          "mode": "list",
          "cachedResultName": "Base",
          "cachedResultUrl": "https://airtable.com/app9OzbgVsNaZQ4fI"
        },
        "table": {
          "__rl": true,
          "value": "tbly1AxVFBHA7dMTG",
          "mode": "list",
          "cachedResultName": "Table",
          "cachedResultUrl": "https://airtable.com/app9OzbgVsNaZQ4fI/tbly1AxVFBHA7dMTG"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Title": "={{ $json.title }}",
            "URL": "={{ $json.url }}"
          },
          "matchingColumns": [
            "Title"
          ],
          "schema": [
            {
              "id": "id",
              "displayName": "id",
              "required": false,
              "defaultMatch": true,
              "display": true,
              "type": "string",
              "readOnly": true,
              "removed": false
            },
            {
              "id": "Title",
              "displayName": "Title",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "URL",
              "displayName": "URL",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Classification",
              "displayName": "Classification",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": true
            },
            {
              "id": "Price",
              "displayName": "Price",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": true
            },
            {
              "id": "Availability",
              "displayName": "Availability",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": true
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2.1,
      "position": [
        944,
        432
      ],
      "id": "14aa367f-2011-4b89-ae06-318bfc3f9054",
      "name": "Create or update a record",
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "fieldToSplitOut": "title",
        "options": {}
      },
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        496,
        336
      ],
      "id": "05ba0fc7-9903-4f49-89b6-09840b3f0a56",
      "name": "title Split Out"
    },
    {
      "parameters": {
        "fieldToSplitOut": "url",
        "options": {}
      },
      "type": "n8n-nodes-base.splitOut",
      "typeVersion": 1,
      "position": [
        496,
        528
      ],
      "id": "ee270c02-66bf-43e2-8ab2-97540af68dfd",
      "name": "url Split Out"
    },
    {
      "parameters": {
        "inputSource": "passthrough"
      },
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "typeVersion": 1.1,
      "position": [
        -176,
        824
      ],
      "id": "31a67c79-89a4-4d32-a0a9-e639ca431056",
      "name": "When Executed by Another Workflow"
    },
    {
      "parameters": {
        "operation": "search",
        "base": {
          "__rl": true,
          "value": "app9OzbgVsNaZQ4fI",
          "mode": "list",
          "cachedResultName": "Base",
          "cachedResultUrl": "https://airtable.com/app9OzbgVsNaZQ4fI"
        },
        "table": {
          "__rl": true,
          "value": "tbly1AxVFBHA7dMTG",
          "mode": "list",
          "cachedResultName": "Table",
          "cachedResultUrl": "https://airtable.com/app9OzbgVsNaZQ4fI/tbly1AxVFBHA7dMTG"
        },
        "options": {}
      },
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2.1,
      "position": [
        48,
        824
      ],
      "id": "2790d901-8ccd-4a19-b375-5e6084e78a25",
      "name": "Search records",
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "extractHtmlContent",
        "extractionValues": {
          "values": [
            {
              "key": "Classification",
              "cssSelector": "body > div > div > ul > li:nth-child(3) > a"
            },
            {
              "key": "Price",
              "cssSelector": "#content_inner > article > div.row > div.col-sm-6.product_main > p.price_color"
            },
            {
              "key": "Availability",
              "cssSelector": "#content_inner > article > div.row > div.col-sm-6.product_main > p.instock.availability"
            }
          ]
        },
        "options": {}
      },
      "type": "n8n-nodes-base.html",
      "typeVersion": 1.2,
      "position": [
        720,
        752
      ],
      "id": "42705221-c912-43cc-a5a6-0908a032321f",
      "name": "HTML1"
    },
    {
      "parameters": {
        "url": "=https://books.toscrape.com/{{ $json.URL }}",
        "options": {}
      },
      "type": "n8n-nodes-base.httpRequest",
      "typeVersion": 4.2,
      "position": [
        496,
        752
      ],
      "id": "74228da8-9abc-4d21-84ad-6229af03477a",
      "name": "HTTP Request1"
    },
    {
      "parameters": {
        "operation": "upsert",
        "base": {
          "__rl": true,
          "value": "app9OzbgVsNaZQ4fI",
          "mode": "list",
          "cachedResultName": "Base",
          "cachedResultUrl": "https://airtable.com/app9OzbgVsNaZQ4fI"
        },
        "table": {
          "__rl": true,
          "value": "tbly1AxVFBHA7dMTG",
          "mode": "list",
          "cachedResultName": "Table",
          "cachedResultUrl": "https://airtable.com/app9OzbgVsNaZQ4fI/tbly1AxVFBHA7dMTG"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "Title": "={{ $('Search records').item.json.Title }}",
            "URL": "={{ $('Search records').item.json.URL }}",
            "Classification": "={{ $json.Classification }}",
            "Price": "={{ $json.Price }}",
            "Availability": "={{ $('HTML1').item.json.Availability }}",
            "Number": "={{ $json.Number }}"
          },
          "matchingColumns": [
            "Title"
          ],
          "schema": [
            {
              "id": "id",
              "displayName": "id",
              "required": false,
              "defaultMatch": true,
              "display": true,
              "type": "string",
              "readOnly": true,
              "removed": false
            },
            {
              "id": "Title",
              "displayName": "Title",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "URL",
              "displayName": "URL",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Classification",
              "displayName": "Classification",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Price",
              "displayName": "Price",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Availability",
              "displayName": "Availability",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "string",
              "readOnly": false,
              "removed": false
            },
            {
              "id": "Number",
              "displayName": "Number",
              "required": false,
              "defaultMatch": false,
              "canBeUsedToMatch": true,
              "display": true,
              "type": "number",
              "readOnly": false,
              "removed": false
            }
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {}
      },
      "type": "n8n-nodes-base.airtable",
      "typeVersion": 2.1,
      "position": [
        1168,
        824
      ],
      "id": "82d6217a-4457-4e03-b4f3-f1340c81e8a8",
      "name": "Create or update a record1",
      "credentials": {
        "airtableTokenApi": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "options": {}
      },
      "type": "n8n-nodes-base.splitInBatches",
      "typeVersion": 3,
      "position": [
        272,
        824
      ],
      "id": "07f6fbc1-789d-497b-ae84-5e63e3b29a36",
      "name": "Loop Over Items"
    },
    {
      "parameters": {
        "workflowId": {
          "__rl": true,
          "value": "WrKYPXUDzkKoGkq4",
          "mode": "list",
          "cachedResultName": "d20-code"
        },
        "workflowInputs": {
          "mappingMode": "defineBelow",
          "value": {},
          "matchingColumns": [],
          "schema": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": true
        },
        "options": {}
      },
      "type": "n8n-nodes-base.executeWorkflow",
      "typeVersion": 1.2,
      "position": [
        1168,
        432
      ],
      "id": "df5c81c4-ff0d-40da-b595-3bbad3ec66ce",
      "name": "Call 'd20-code'"
    },
    {
      "parameters": {
        "jsCode": "return items.map(item => {\n  const data = item.json;\n\n  // \u7528\u6b63\u5247\u6293\u53d6\u6578\u5b57\n  const match = data.Availability.match(/\\((\\d+)\\s+available\\)/);\n  const number = match ? parseInt(match[1], 10) : 0;\n\n  return {\n    json: {\n      Classification: data.Classification,\n      Price: data.Price,\n      Number: number\n    }\n  };\n});\n"
      },
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        944,
        752
      ],
      "id": "4490a59e-d384-4923-83df-4fd266454575",
      "name": "Code in JavaScript"
    }
  ],
  "connections": {
    "When clicking \u2018Execute workflow\u2019": {
      "main": [
        [
          {
            "node": "HTTP Request",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTML": {
      "main": [
        [
          {
            "node": "title Split Out",
            "type": "main",
            "index": 0
          },
          {
            "node": "url Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request": {
      "main": [
        [
          {
            "node": "HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Merge": {
      "main": [
        [
          {
            "node": "Create or update a record",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create or update a record": {
      "main": [
        [
          {
            "node": "Call 'd20-code'",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "title Split Out": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "url Split Out": {
      "main": [
        [
          {
            "node": "Merge",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Search records",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Search records": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTML1": {
      "main": [
        [
          {
            "node": "Code in JavaScript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "HTTP Request1": {
      "main": [
        [
          {
            "node": "HTML1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create or update a record1": {
      "main": [
        [
          {
            "node": "Loop Over Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Loop Over Items": {
      "main": [
        [],
        [
          {
            "node": "HTTP Request1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Code in JavaScript": {
      "main": [
        [
          {
            "node": "Create or update a record1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  },
  "staticData": null,
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "versionId": "13d94d8a-0a2a-4db6-88b7-baa79d4dcb84",
  "triggerCount": 0,
  "shared": [
    {
      "createdAt": "2025-09-16T02:07:01.369Z",
      "updatedAt": "2025-09-16T02:07:01.369Z",
      "role": "workflow:owner",
      "workflowId": "WrKYPXUDzkKoGkq4",
      "projectId": "6NV7foKyOeJG8Mz6"
    }
  ],
  "tags": [
    {
      "createdAt": "2025-09-14T06:27:04.834Z",
      "updatedAt": "2025-09-14T06:27:04.834Z",
      "id": "S14KyMmdLj6QsyYh",
      "name": "ithome"
    }
  ]
}

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

d20-code. Uses httpRequest, airtable, executeWorkflowTrigger. Event-driven trigger; 15 nodes.

Source: https://github.com/021up/n8n-learning/blob/main/ITHome/WrKYPXUDzkKoGkq4.json — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

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

Data & Sheets

Lmchatopenai Workflow. Uses noOp, stickyNote, executeWorkflowTrigger, airtable. Event-driven trigger; 41 nodes.

Execute Workflow Trigger, Airtable, HTTP Request
Data & Sheets

This n8n workflow retrieves an Airtable record along with its related child records in a hierarchical structure. It can fetch up to 3 levels of linked records and assembles them into a comprehensive J

Execute Workflow Trigger, Airtable, HTTP Request
Data & Sheets

d16-Web-Scraper-Data-Flow. Uses httpRequest, airtable, executeWorkflowTrigger. Event-driven trigger; 20 nodes.

HTTP Request, Airtable, Execute Workflow Trigger
Data & Sheets

Web-Scraper-Data-Flow. Uses httpRequest, airtable, executeWorkflowTrigger. Event-driven trigger; 19 nodes.

HTTP Request, Airtable, Execute Workflow Trigger
Data & Sheets

d21-set. Uses httpRequest, airtable, executeWorkflowTrigger. Event-driven trigger; 19 nodes.

HTTP Request, Airtable, Execute Workflow Trigger