AutomationFlowsData & Sheets › Google Sheets Inventory CRUD Workflow

Google Sheets Inventory CRUD Workflow

Original n8n title: Barin Alp - Inventory Crud

BARIN ALP - Inventory CRUD. Uses googleSheets. Webhook trigger; 9 nodes.

Webhook trigger★★★☆☆ complexity9 nodesGoogle Sheets
Data & Sheets Trigger: Webhook Nodes: 9 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": "BARIN ALP - Inventory CRUD",
  "nodes": [
    {
      "parameters": {
        "httpMethod": "GET",
        "path": "inventory",
        "options": {
          "allowedOrigins": "*"
        }
      },
      "id": "webhook-get-inventory",
      "name": "GET Inventory",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        250,
        200
      ]
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "inventory",
        "options": {
          "allowedOrigins": "*"
        }
      },
      "id": "webhook-post-tool",
      "name": "POST Tool",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        250,
        500
      ]
    },
    {
      "parameters": {
        "httpMethod": "POST",
        "path": "inventory/transfer",
        "options": {
          "allowedOrigins": "*"
        }
      },
      "id": "webhook-transfer",
      "name": "Transfer Tool",
      "type": "n8n-nodes-base.webhook",
      "typeVersion": 2,
      "position": [
        250,
        800
      ]
    },
    {
      "parameters": {
        "operation": "read",
        "documentId": {
          "__rl": true,
          "value": "1Mvg9vxzp7LyYwNor0i8o8LvqYiF0ID4WD3Af58zkVTo",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": "Inventory",
          "mode": "list"
        }
      },
      "id": "sheets-get-inventory",
      "name": "Read Inventory",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.4,
      "position": [
        470,
        200
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "append",
        "documentId": {
          "__rl": true,
          "value": "1Mvg9vxzp7LyYwNor0i8o8LvqYiF0ID4WD3Af58zkVTo",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": "Inventory",
          "mode": "list"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "id": "={{ $json.body.id }}",
            "name": "={{ $json.body.name }}",
            "category": "={{ $json.body.category }}",
            "status": "={{ $json.body.status }}",
            "assignedTo": "={{ $json.body.assignedTo }}",
            "assignedToName": "={{ $json.body.assignedToName }}",
            "objectId": "={{ $json.body.objectId }}",
            "objectName": "={{ $json.body.objectName }}",
            "photos": "={{ JSON.stringify($json.body.photos || []) }}"
          }
        }
      },
      "id": "sheets-append-tool",
      "name": "Append Tool",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.4,
      "position": [
        470,
        500
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "operation": "update",
        "documentId": {
          "__rl": true,
          "value": "1Mvg9vxzp7LyYwNor0i8o8LvqYiF0ID4WD3Af58zkVTo",
          "mode": "id"
        },
        "sheetName": {
          "__rl": true,
          "value": "Inventory",
          "mode": "list"
        },
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "id": "={{ $json.body.toolId }}",
            "status": "={{ $json.body.newStatus }}",
            "assignedTo": "={{ $json.body.newAssignedTo }}",
            "assignedToName": "={{ $json.body.newAssignedToName }}",
            "objectId": "={{ $json.body.newObjectId }}",
            "objectName": "={{ $json.body.newObjectName }}"
          }
        },
        "options": {
          "cellFormat": "USER_ENTERED",
          "dataLocationOnSheet": {
            "values": {
              "lookupColumn": "id",
              "lookupValue": "={{ $json.body.toolId }}"
            }
          }
        }
      },
      "id": "sheets-update-tool",
      "name": "Update Tool",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.4,
      "position": [
        470,
        800
      ],
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      }
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ $input.all().map(item => ({\n  id: parseInt(item.json.id),\n  name: item.json.name,\n  category: item.json.category,\n  status: item.json.status,\n  assignedTo: item.json.assignedTo ? parseInt(item.json.assignedTo) : null,\n  assignedToName: item.json.assignedToName || null,\n  objectId: item.json.objectId ? parseInt(item.json.objectId) : null,\n  objectName: item.json.objectName || null,\n  photos: item.json.photos ? JSON.parse(item.json.photos) : []\n})) }}",
        "options": {
          "responseHeaders": {
            "entries": [
              {
                "name": "Access-Control-Allow-Origin",
                "value": "*"
              }
            ]
          }
        }
      },
      "id": "respond-get-inventory",
      "name": "Respond Inventory List",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [
        690,
        200
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ { success: true, tool: $('POST Tool').first().json.body } }}",
        "options": {
          "responseHeaders": {
            "entries": [
              {
                "name": "Access-Control-Allow-Origin",
                "value": "*"
              }
            ]
          }
        }
      },
      "id": "respond-post-tool",
      "name": "Respond Tool Created",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [
        690,
        500
      ]
    },
    {
      "parameters": {
        "respondWith": "json",
        "responseBody": "={{ { success: true, message: 'Tool transferred successfully' } }}",
        "options": {
          "responseHeaders": {
            "entries": [
              {
                "name": "Access-Control-Allow-Origin",
                "value": "*"
              }
            ]
          }
        }
      },
      "id": "respond-transfer",
      "name": "Respond Transfer",
      "type": "n8n-nodes-base.respondToWebhook",
      "typeVersion": 1.1,
      "position": [
        690,
        800
      ]
    }
  ],
  "connections": {
    "GET Inventory": {
      "main": [
        [
          {
            "node": "Read Inventory",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "POST Tool": {
      "main": [
        [
          {
            "node": "Append Tool",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Transfer Tool": {
      "main": [
        [
          {
            "node": "Update Tool",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read Inventory": {
      "main": [
        [
          {
            "node": "Respond Inventory List",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append Tool": {
      "main": [
        [
          {
            "node": "Respond Tool Created",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Tool": {
      "main": [
        [
          {
            "node": "Respond Transfer",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "settings": {
    "executionOrder": "v1"
  }
}

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

BARIN ALP - Inventory CRUD. Uses googleSheets. Webhook trigger; 9 nodes.

Source: https://github.com/Georgi-Piskov/barin-alp-pwa/blob/e075dc84be1bb3ab00948c90ae754447771adaa5/n8n-workflows/04-inventory-crud.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

This workflow is a fully automated AI video production pipeline. It accepts a raw script or topic via webhook, uses Claude AI to break the script into optimized video scenes, generates AI images for e

HTTP Request, Google Sheets
Data & Sheets

This n8n template helps you automatically analyze URLs for phishing and malicious activity using VirusTotal’s multi-engine threat intelligence platform. It validates incoming URLs, submits them for sc

HTTP Request, Google Sheets
Data & Sheets

This workflow automatically saves files received via LINE Messaging API into Google Drive and logs the file details into a Google Sheet. It checks the file type against allowed types, organizes files

Google Sheets, Google Drive, HTTP Request
Data & Sheets

This workflow turns your n8n instance into a portfolio management API using a webhook and Google Sheets. You can add, update or delete assets via a simple POST request and it automatically calculates

Google Sheets
Data & Sheets

This workflow is a fully automated AI-powered business intelligence agent. It accepts a research topic or company name via webhook, autonomously collects data from multiple live sources (web search, n

HTTP Request, Google Sheets