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
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
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 →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Code. Uses httpRequest, graphql, stickyNote. Webhook trigger; 15 nodes.
Unique QRcode coupon assignment and validation for Lead Generation system. Uses httpRequest, formTrigger, googleSheets, stickyNote. Webhook trigger; 29 nodes.
Line Save File to Google Drive and Log File's URL. Uses googleSheets, googleDrive, httpRequest, stickyNote. Webhook trigger; 27 nodes.
Webhook Respondtowebhook. Uses executeWorkflow, httpRequest, stickyNote, respondToWebhook. Webhook trigger; 23 nodes.
Webhook Respondtowebhook. Uses executeWorkflow, httpRequest, stickyNote, respondToWebhook. Webhook trigger; 23 nodes.