{
  "id": "x2VUvhqV1YTJCIN0",
  "meta": {
    "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"
      },
      "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 }}"
      },
      "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."
}