Hey Hey,
So @Alex is spot on there, You could use something like Zapier / Make or n8n to handle this. How you do it would depend on your process a bit but a first step could be to have a schedule that runs every hour or daily to get all your Shopify products then take the quantity and add them to a Baserow Table.
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…
This is based on a table that looks 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.