If there is a bit more to it like maybe a processed order is put into Baserow and you wanted to validate it you could call out to an automation platform using a webhook that could then check the stock level and update the table in Baserow and maybe send an email to your order team so they know there is something that needs to be changed.
A quick n8n workflow that would take the data from Shopify and Baserow then update the Quantity would look something like this…
Workflow JSON
{
"meta": {
"instanceId": "8c8c5237b8e37b006a7adce87f4369350c58e41f3ca9de16196d3197f69eabcd"
},
"nodes": [
{
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"id": "9bf175ef-0cc3-40d0-81e5-bb1674a33a73",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"typeVersion": 1,
"position": [
840,
420
]
},
{
"parameters": {
"resource": "product",
"operation": "getAll",
"returnAll": true,
"additionalFields": {}
},
"id": "f6cd7dcb-67e6-42cb-9b10-68478a46284c",
"name": "Shopify",
"type": "n8n-nodes-base.shopify",
"typeVersion": 1,
"position": [
1040,
420
],
"credentials": {
"shopifyApi": {
"id": "138",
"name": "Shopify account"
}
}
},
{
"parameters": {
"keepOnlySet": true,
"values": {
"string": [
{
"name": "productTitle",
"value": "={{ $json.title }}"
}
],
"number": [
{
"name": "productId",
"value": "={{ $json.id }}"
},
{
"name": "stockQty",
"value": "={{ $json.variants[0].inventory_quantity }}"
}
]
},
"options": {}
},
"id": "1e847ee9-2ffe-4c9e-9611-1dd28000e6a2",
"name": "Extract only the fields needed",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
1240,
420
]
},
{
"parameters": {
"databaseId": 50813,
"tableId": 138992,
"returnAll": true,
"additionalOptions": {}
},
"id": "a5af3ee8-dad7-4a57-9c93-1c805b7edd17",
"name": "Baserow",
"type": "n8n-nodes-base.baserow",
"typeVersion": 1,
"position": [
1040,
620
],
"credentials": {
"baserowApi": {
"id": "31",
"name": "[hosted] 86-88"
}
}
},
{
"parameters": {
"keepOnlySet": true,
"values": {
"number": [
{
"name": "rowId",
"value": "={{ $json.id }}"
},
{
"name": "productId",
"value": "={{ Number($json.productId) }}"
}
]
},
"options": {}
},
"id": "66dd69bc-da62-4091-9152-faba20b0e5bb",
"name": "Set",
"type": "n8n-nodes-base.set",
"typeVersion": 1,
"position": [
1240,
620
]
},
{
"parameters": {
"mode": "combine",
"mergeByFields": {
"values": [
{
"field1": "productId",
"field2": "productId"
}
]
},
"joinMode": "keepEverything",
"options": {}
},
"id": "a6ca88fd-44fe-48cc-bdce-a56dd275d89e",
"name": "Merge",
"type": "n8n-nodes-base.merge",
"typeVersion": 2,
"position": [
1480,
520
]
},
{
"parameters": {
"operation": "update",
"databaseId": 50813,
"tableId": 138992,
"rowId": "={{ $json.rowId }}",
"dataToSend": "autoMapInputData",
"inputsToIgnore": "rowId"
},
"id": "32466538-43de-4cce-97ff-7e4f0d8be3a5",
"name": "Update Qty",
"type": "n8n-nodes-base.baserow",
"typeVersion": 1,
"position": [
1700,
520
],
"credentials": {
"baserowApi": {
"id": "31",
"name": "[hosted] 86-88"
}
}
}
],
"connections": {
"Schedule Trigger": {
"main": [
[
{
"node": "Shopify",
"type": "main",
"index": 0
}
]
]
},
"Shopify": {
"main": [
[
{
"node": "Extract only the fields needed",
"type": "main",
"index": 0
}
]
]
},
"Extract only the fields needed": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"Baserow": {
"main": [
[
{
"node": "Set",
"type": "main",
"index": 0
}
]
]
},
"Set": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Update Qty",
"type": "main",
"index": 0
}
]
]
}
}
}
The good thing with automation tools is there could be many ways you can do this, Another idea is if you have the CSV file anyway you could put that into Google Drive or email it and have a process that picks it up from there to then do the update.