{"id":"ZI0PxugfKsyepqeH","meta":{"instanceId":"workflow-77424804","versionId":"1.0.0","createdAt":"2025-09-29T07:07:54.444260","updatedAt":"2025-09-29T07:07:54.444272","owner":"n8n-user","license":"MIT","category":"automation","status":"active","priority":"high","environment":"production"},"name":"Shopify order UTM to Baserow","nodes":[{"id":"2ba892fc-59c9-442b-aa21-a5c23b6076e5","name":"Baserow","type":"n8n-nodes-base.baserow","position":[2860,380],"parameters":{"tableId":646,"fieldsUi":{"fieldValues":[{"fieldId":6164,"fieldValue":"={{ $json.order }}"},{"fieldId":6165,"fieldValue":"={{ $json.campaign }}"},{"fieldId":6166,"fieldValue":"={{ $json.content }}"},{"fieldId":6167,"fieldValue":"={{ $json.medium }}"},{"fieldId":6168,"fieldValue":"={{ $json.source }}"},{"fieldId":6170,"fieldValue":"={{ $json.revenue }}"}]},"operation":"create","databaseId":121},"credentials":{"baserowApi":{"id":"VaQgKQ8NPXVMrvMl","name":"Baserow account"}},"typeVersion":1,"notes":"This baserow node performs automated tasks as part of the workflow."},{"id":"e35a0417-7a6a-46bb-8970-20aa7c19d168","name":"No Operation, do nothing","type":"n8n-nodes-base.noOp","position":[2860,720],"parameters":{},"typeVersion":1,"notes":"This noOp node performs automated tasks as part of the workflow."},{"id":"76e327e9-2cc2-42dd-b31a-1aa1e9b02cd1","name":"Set Shopify Subdomain","type":"n8n-nodes-base.set","position":[1900,320],"parameters":{"fields":{"values":[{"name":"Shopify Subdomain","stringValue":"you-domain"}]},"options":{}},"typeVersion":3.2,"notes":"This set node performs automated tasks as part of the workflow."},{"id":"85c0f561-a75d-44a4-a8a5-3791c10a2891","name":"Get orders from Shopify","type":"n8n-nodes-base.graphql","position":[1900,560],"parameters":{"query":"=query yersterdaysOrders {\n  orders(query: \"created_at:{{$today.minus({days: 1})}}\", first: 100) {\n    edges {\n      node {\n        id\n        name\n        totalReceived\n        customerJourneySummary {\n          firstVisit {\n            id\n            source\n            referrerUrl\n            landingPage\n            utmParameters {\n              campaign\n              content\n              medium\n              source\n              term\n            }\n          }\n        }\n      }\n    }\n  }\n}","endpoint":"{{ $env.API_ENDPOINT }}","authentication":"{{ $credentials.headerAuth }}"},"credentials":{"httpHeaderAuth":{"id":"dPZdfPnUTz1YJ54o","name":"Shopify Header Auth - lanakk.com"}},"typeVersion":1,"notes":"This graphql node performs automated tasks as part of the workflow."},{"id":"4ddbe343-6d4f-4079-9c60-bdf2c34fb015","name":"Every day at 00:00","type":"n8n-nodes-base.scheduleTrigger","position":[1660,560],"parameters":{"rule":{"interval":[{}]}},"typeVersion":1.1,"notes":"This scheduleTrigger node performs automated tasks as part of the workflow."},{"id":"6b3dd6f7-a761-4a01-bb77-cb8689fe64a0","name":"Split Shopify data into n8n items","type":"n8n-nodes-base.splitOut","position":[2120,560],"parameters":{"options":{},"fieldToSplitOut":"data.orders.edges"},"typeVersion":1,"notes":"This splitOut node performs automated tasks as part of the workflow."},{"id":"c50ca221-1330-44c9-9877-3b5bd36a05fb","name":"Transform incoming data structure","type":"n8n-nodes-base.set","position":[2340,560],"parameters":{"fields":{"values":[{"name":"order","stringValue":"={{ $json.node.name }}"},{"name":"campaign","stringValue":"={{ $json.node.customerJourneySummary.firstVisit.utmParameters.campaign }}"},{"name":"content","stringValue":"={{ $json.node.customerJourneySummary.firstVisit.utmParameters.content || \"\" }}"},{"name":"medium","stringValue":"={{ $json.node.customerJourneySummary.firstVisit.utmParameters.medium || \"\" }}"},{"name":"source","stringValue":"={{ $json.node.customerJourneySummary.firstVisit.utmParameters.medium || \"\" }}"},{"name":"term","stringValue":"={{ $json.node.customerJourneySummary.firstVisit.utmParameters.term || \"\" }}"},{"name":"revenue","type":"numberValue","numberValue":"={{ $json.node.totalReceived }}"}]},"include":"none","options":{}},"typeVersion":3.2,"notes":"This set node performs automated tasks as part of the workflow."},{"id":"c84c3619-fd41-4d06-8894-1ba7998477fb","name":"Check if \"Campaign\" is present","type":"n8n-nodes-base.if","position":[2560,560],"parameters":{"options":{},"conditions":{"options":{"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"61fe8905-1b9f-45d9-9742-2d5799200d18","operator":{"type":"string","operation":"exists","singleValue":true},"leftValue":"={{ $json.campaign }}","rightValue":""}]}},"typeVersion":2,"notes":"This if node performs automated tasks as part of the workflow."},{"id":"b0f07670-4fdd-4b64-8d77-87ea5cc399ac","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[1240,460],"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":"742d92d7-9c3e-4515-a9ca-d840685d8ebf","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[1720,120],"parameters":{"width":279.1188177339898,"content":"## Set your Shopify Subdomain here"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"a4feb388-0d60-41ee-a269-d39717c6267c","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[1900,760],"parameters":{"width":279.1188177339898,"content":"## Shopify \nThe n8n Shopify node cannot get the customer journey, so we get this from the Shopify GraphQL API"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"adc71ed1-fcb9-40fa-b3c8-ccca7e2fc699","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[3060,360],"parameters":{"width":279.1188177339898,"height":157.78205353137358,"content":"## Baserow\nPlease map the fields coming from the IF node to your own structure in Baserow"},"typeVersion":1,"notes":"This stickyNote node performs automated tasks as part of the workflow."},{"id":"error-c22d44a1","name":"Error Handler","type":"n8n-nodes-base.stopAndError","typeVersion":1,"position":[1000,400],"parameters":{"message":"Workflow execution error","options":{}}}],"active":false,"settings":{"executionOrder":"v1","saveManualExecutions":true,"callerPolicy":"workflowsFromSameOwner","errorWorkflow":null,"timezone":"UTC","executionTimeout":3600,"maxExecutions":1000,"retryOnFail":true,"retryCount":3,"retryDelay":1000},"versionId":"c7fd635a-81e5-461b-885f-5b375bc51138","connections":{"Get orders from Shopify":{"main":[[]]}},"description":"Automated workflow: Shopify order UTM to Baserow. This workflow integrates 8 different services: stickyNote, scheduleTrigger, graphql, splitOut, set. It contains 12 nodes and follows best practices for error handling and security.","notes":"Excellent quality workflow: Shopify order UTM to Baserow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}