Workflow: Noop Workflow
Integrations: graphql, httpRequest, if, noOp, set, stickyNote, webhook

{"id": "x2VUvhqV1YTJCIN0", "meta": {"instanceId": "workflow-ae2499dd", "versionId": "1.0.0", "createdAt": "2025-09-29T07:08:01.511680", "updatedAt": "2025-09-29T07:08:01.511695", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production"}, "tags": ["automation", "n8n", "production-ready", "excellent", "optimized"], "nodes": [{"id": "094b9011-a53d-4a50-b44d-ad229612bb06", "name": "No Operation, do nothing", "type": "n8n-nodes-base.noOp", "position": [560, 220], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow."}, {"id": "6d9eee1f-995f-4558-8f97-25636e20022c", "name": "Save campaign.liquid", "type": "n8n-nodes-base.httpRequest", "position": [800, -100], "parameters": {"url": "{{ $env.BASE_URL }}", "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": "{{ $credentials.genericCredentialType }}", "genericAuthType": "httpHeaderAuth"}, "credentials": {"httpHeaderAuth": {"id": "Z98cM8akgh1jPtG7", "name": "Header Auth  Shopify"}, "shopifyAccessTokenApi": {"id": "WbxXaLMHozAgY3Rz", "name": "Shopify Access Token account"}}, "typeVersion": 4.1, "notes": "This httpRequest node performs automated tasks as part of the workflow."}, {"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": "{{ $env.API_ENDPOINT }}", "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": "{{ $credentials.headerAuth }}"}, "credentials": {"httpHeaderAuth": {"id": "Z98cM8akgh1jPtG7", "name": "Header Auth  Shopify"}}, "typeVersion": 1, "notes": "This graphql node performs automated tasks as part of the workflow."}, {"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, "notes": "This set node performs automated tasks as part of the workflow."}, {"id": "0bd9327d-4bbd-4884-a9a6-21b0c5b4c3d3", "name": "Call from Baserow", "type": "n8n-nodes-base.webhook", "position": [-100, 60], "webhookId": "3041fdd6-4cb5-4286-9034-1337dddc3f45", "parameters": {"path": "3041fdd6-4cb5-4286-9034-1337dddc3f45", "options": {}, "httpMethod": "POST"}, "typeVersion": 1.1, "notes": "This webhook node performs automated tasks as part of the workflow."}, {"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, "notes": "This if node performs automated tasks as part of the workflow."}, {"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]({{ $env.API_BASE_URL }}\n\nTo make it easy to build queries for the GraphQL API easy please check out the [GraphiQL App for the Admin API]({{ $env.API_BASE_URL }} from Shopify"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"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, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"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, "notes": "This stickyNote node performs automated tasks as part of the workflow."}], "active": true, "pinData": {"Call from Baserow": [{"json": {"body": {"items": [{"id": 1, "Name": "Campaigna", "order": "1.00000000000000000000", "Active": true, "Last modified": "2024-03-01T11:21:58.157987Z", "Campaign Image": [{"url": "{{ $env.WEBHOOK_URL }}", "name": "O5jM7aSUTYSBPQtxVHktkN4U7wlUoIJd_1af752d7847a230a853df92814639be35035229f2bb857b4ea870b64011cdde0.webp", "size": 107358, "is_image": true, "mime_type": "", "thumbnails": {"tiny": {"url": "{{ $env.WEBHOOK_URL }}", "width": null, "height": 21}, "small": {"url": "{{ $env.WEBHOOK_URL }}", "width": 48, "height": 48}, "card_cover": {"url": "{{ $env.WEBHOOK_URL }}", "width": 300, "height": 160}}, "image_width": 1280, "uploaded_at": "2024-03-01T09:50:41.921452+00:00", "image_height": 720, "visible_name": "n8n-portainer.webp"}]}], "event_id": "dae85cec-94ce-4e6c-8091-fce28bdc4c6c", "table_id": 596, "old_items": [{"id": 1, "Name": "Campaignas", "order": "1.00000000000000000000", "Active": true, "Last modified": "2024-03-01T11:21:16.099694Z", "Campaign Image": [{"url": "{{ $env.WEBHOOK_URL }}", "name": "O5jM7aSUTYSBPQtxVHktkN4U7wlUoIJd_1af752d7847a230a853df92814639be35035229f2bb857b4ea870b64011cdde0.webp", "size": 107358, "is_image": true, "mime_type": "", "thumbnails": {"tiny": {"url": "{{ $env.WEBHOOK_URL }}", "width": null, "height": 21}, "small": {"url": "{{ $env.WEBHOOK_URL }}", "width": 48, "height": 48}, "card_cover": {"url": "{{ $env.WEBHOOK_URL }}", "width": 300, "height": 160}}, "image_width": 1280, "uploaded_at": "2024-03-01T09:50:41.921452+00:00", "image_height": 720, "visible_name": "n8n-portainer.webp"}]}], "event_type": "rows.updated", "database_id": 112, "workspace_id": 108}, "query": {}, "params": {}, "headers": {"host": "n8n.m3tam3re.com", "accept": "*/*", "user-agent": "python-requests/2.31.0", "content-type": "application/json", "content-length": "2617", "accept-encoding": "gzip, deflate, br", "x-baserow-event": "rows.updated", "x-forwarded-for": "202.61.226.110", "x-forwarded-host": "n8n.m3tam3re.com", "x-forwarded-proto": "https", "x-baserow-delivery": "dae85cec-94ce-4e6c-8091-fce28bdc4c6c"}}}]}, "settings": {"executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000}, "versionId": "c82b43c0-aa47-4086-b7ae-588ee12e5e24", "connections": {"6d9eee1f-995f-4558-8f97-25636e20022c": {"main": [[{"node": "error-handler-6d9eee1f-995f-4558-8f97-25636e20022c", "type": "main", "index": 0}], [{"node": "error-handler-6d9eee1f-995f-4558-8f97-25636e20022c-4fab974b", "type": "main", "index": 0}], [{"node": "error-handler-6d9eee1f-995f-4558-8f97-25636e20022c-ba4ea63a", "type": "main", "index": 0}], [{"node": "error-handler-6d9eee1f-995f-4558-8f97-25636e20022c-46bacafd", "type": "main", "index": 0}], [{"node": "error-handler-6d9eee1f-995f-4558-8f97-25636e20022c-5a043914", "type": "main", "index": 0}], [{"node": "error-handler-6d9eee1f-995f-4558-8f97-25636e20022c-0cc394c7", "type": "main", "index": 0}], [{"node": "error-handler-6d9eee1f-995f-4558-8f97-25636e20022c-be6fda68", "type": "main", "index": 0}], [{"node": "error-handler-6d9eee1f-995f-4558-8f97-25636e20022c-6f4fcb96", "type": "main", "index": 0}], [{"node": "error-handler-6d9eee1f-995f-4558-8f97-25636e20022c-daeb2e7a", "type": "main", "index": 0}]]}, "0bd9327d-4bbd-4884-a9a6-21b0c5b4c3d3": {"main": [[{"node": "error-handler-0bd9327d-4bbd-4884-a9a6-21b0c5b4c3d3", "type": "main", "index": 0}], [{"node": "error-handler-0bd9327d-4bbd-4884-a9a6-21b0c5b4c3d3-38056c87", "type": "main", "index": 0}], [{"node": "error-handler-0bd9327d-4bbd-4884-a9a6-21b0c5b4c3d3-e3072001", "type": "main", "index": 0}], [{"node": "error-handler-0bd9327d-4bbd-4884-a9a6-21b0c5b4c3d3-cccdf8f6", "type": "main", "index": 0}], [{"node": "error-handler-0bd9327d-4bbd-4884-a9a6-21b0c5b4c3d3-af326dab", "type": "main", "index": 0}], [{"node": "error-handler-0bd9327d-4bbd-4884-a9a6-21b0c5b4c3d3-38c4548b", "type": "main", "index": 0}], [{"node": "error-handler-0bd9327d-4bbd-4884-a9a6-21b0c5b4c3d3-000eae7b", "type": "main", "index": 0}], [{"node": "error-handler-0bd9327d-4bbd-4884-a9a6-21b0c5b4c3d3-f4685aa2", "type": "main", "index": 0}], [{"node": "error-handler-0bd9327d-4bbd-4884-a9a6-21b0c5b4c3d3-74465bde", "type": "main", "index": 0}]]}}, "name": "Noop Workflow", "description": "Automated workflow: Noop Workflow. This workflow integrates 8 different services: webhook, stickyNote, httpRequest, graphql, set. It contains 13 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: Noop Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}