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 →
{
"id": "x2VUvhqV1YTJCIN0",
"tags": [],
"nodes": [
{
"id": "094b9011-a53d-4a50-b44d-ad229612bb06",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
560,
220
],
"parameters": {},
"typeVersion": 1
},
{
"id": "6d9eee1f-995f-4558-8f97-25636e20022c",
"name": "Save campaign.liquid",
"type": "n8n-nodes-base.httpRequest",
"position": [
800,
-100
],
"parameters": {
"url": "=https://{{ $('Set values here!').params[\"fields\"][\"values\"][0][\"stringValue\"] }}.myshopify.com/admin/api/2024-01/themes/{{ $('Set values here!').params[\"fields\"][\"values\"][1][\"stringValue\"] }}/assets.json",
"method": "PUT",
"options": {},
"jsonBody": "={\"asset\":\n {\n \"key\":\"snippets/{{ $('Set values here!').params[\"fields\"][\"values\"][2][\"stringValue\"] }}\",\n \"value\":\"{{ $('Set values here!').params[\"fields\"][\"values\"][3][\"stringValue\"].replace(\"IMAGE\",$('Check').item.json[\"body\"][\"items\"][0][\"Campaign Image\"][0][\"visible_name\"]).replace(/\\\\/g, \"\\\\\\\\\").replace(/\"/g, '\\\\\"').replace(/\\n/g, \"\\\\n\") }}\"}}",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
},
"shopifyAccessTokenApi": {
"name": "<your credential>"
}
},
"typeVersion": 4.1
},
{
"id": "fb3e9410-59ae-4d90-8bb3-1fd95f0e9a43",
"name": "Upload Image",
"type": "n8n-nodes-base.graphql",
"position": [
560,
-100
],
"parameters": {
"query": "mutation fileCreate($files: [FileCreateInput!]!) {\n fileCreate(files: $files) {\n files {\n id\n }\n }\n}",
"endpoint": "=https://{{ $('Set values here!').params[\"fields\"][\"values\"][0][\"stringValue\"] }}.myshopify.com/admin/api/2024-01/graphql.json",
"variables": "={\n \"files\": {\n \"alt\": \"{{ $json.body.items[0].Name }}\",\n \"contentType\": \"IMAGE\",\n\t\"filename\": \"{{ $json.body.items[0]['Campaign Image'][0].visible_name }}\",\n \"originalSource\": \"{{ $json.body.items[0]['Campaign Image'][0].url }}\"\n }\n}",
"requestFormat": "json",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "29f970fe-da65-4b6f-bf0b-1cadbd80f51c",
"name": "Set values here!",
"type": "n8n-nodes-base.set",
"position": [
120,
60
],
"parameters": {
"fields": {
"values": [
{
"name": "Shopify Subdomain",
"stringValue": "n8n-mautic-demo"
},
{
"name": "Theme ID",
"stringValue": "125514514534"
},
{
"name": "Filename",
"stringValue": "campaign.liquid"
},
{
"name": "Content",
"stringValue": "<img src=\"{{ 'IMAGE' | file_img_url: 'grande'}}\">"
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "0bd9327d-4bbd-4884-a9a6-21b0c5b4c3d3",
"name": "Call from Baserow",
"type": "n8n-nodes-base.webhook",
"position": [
-100,
60
],
"parameters": {
"path": "3041fdd6-4cb5-4286-9034-1337dddc3f45",
"options": {},
"httpMethod": "POST"
},
"typeVersion": 1.1
},
{
"id": "6c9d35e8-0738-4d15-a0ff-40077e73d797",
"name": "Check",
"type": "n8n-nodes-base.if",
"position": [
320,
60
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "21262344-6519-4f32-876b-82722a1fab66",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{\nDateTime.fromISO($json[\"body\"][\"items\"][0][\"Last modified\"])\n .diff(DateTime.fromISO($json[\"body\"][\"old_items\"][0][\"Last modified\"]),'minutes')\n .toObject()\n [\"minutes\"]\n}}",
"rightValue": 0.1
},
{
"id": "5c0a176c-5ba9-4060-a4d2-b9207cf47092",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $json.body.items[0].Active }}",
"rightValue": ""
},
{
"id": "f764adc6-e7a1-4df7-861f-94b90a99f2d4",
"operator": {
"type": "array",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json[\"body\"][\"items\"][0][\"Campaign Image\"] }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "f6c17549-4192-4f96-ad81-518c52bdcda7",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-540,
-40
],
"parameters": {
"color": 4,
"width": 360.408084305475,
"height": 315.5897364788551,
"content": "## Shopify API\n\nThis workflow uses GraphQL calls to the Shopify Admin API. In order to get a better understanding for the queries and mutations please check the API Docs.\n\n\n[Shopify GraphQL API docs](https://shopify.dev/docs/api/admin-graphql)\n\nTo make it easy to build queries for the GraphQL API easy please check out the [GraphiQL App for the Admin API](https://shopify.dev/docs/apps/tools/graphiql-admin-api) from Shopify"
},
"typeVersion": 1
},
{
"id": "22743217-0c89-4fd1-b22d-0e00d6ca6854",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
560,
-300
],
"parameters": {
"width": 331.1188177339898,
"content": "## Shopify \nThe n8n Shopify node cannot upload images or theme assets so we need to make custom calls to the GraphQL and REST Api "
},
"typeVersion": 1
},
{
"id": "ca9561aa-85e8-47ad-8bac-60fc3a94f94e",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
80,
-160
],
"parameters": {
"color": 5,
"width": 158.16682590559316,
"content": "## Set values \nPlease edit this node and change the values for your own setup."
},
"typeVersion": 1
}
],
"active": true,
"settings": {
"executionOrder": "v1"
},
"versionId": "c82b43c0-aa47-4086-b7ae-588ee12e5e24",
"connections": {
"Check": {
"main": [
[
{
"node": "Upload Image",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Upload Image": {
"main": [
[
{
"node": "Save campaign.liquid",
"type": "main",
"index": 0
}
]
]
},
"Set values here!": {
"main": [
[
{
"node": "Check",
"type": "main",
"index": 0
}
]
]
},
"Call from Baserow": {
"main": [
[
{
"node": "Set values here!",
"type": "main",
"index": 0
}
]
]
}
}
}
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.
httpHeaderAuthshopifyAccessTokenApi
About this workflow
Webhook Graphql. Uses noOp, httpRequest, graphql, stickyNote. Webhook trigger; 9 nodes.
Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →