feat: add folder support for workflows (fixes #70)

This commit is contained in:
Praveen Mudalgeri
2025-08-05 09:40:47 +05:30
parent 307d530f9b
commit c4885eee92
2057 changed files with 985290 additions and 974268 deletions

View File

@@ -0,0 +1,56 @@
{
"id": "13",
"name": "Receive updates when a form is submitted in Mautic, and send a confirmation SMS",
"nodes": [
{
"name": "Mautic Trigger",
"type": "n8n-nodes-base.mauticTrigger",
"position": [
510,
300
],
"webhookId": "9dce2b84-33fe-4816-ae4b-301c208b5384",
"parameters": {
"events": [
"mautic.form_on_submit"
]
},
"credentials": {
"mauticApi": "mautic"
},
"typeVersion": 1
},
{
"name": "Twilio",
"type": "n8n-nodes-base.twilio",
"position": [
710,
300
],
"parameters": {
"to": "={{$node[\"Mautic Trigger\"].json[\"mautic.form_on_submit\"][0][\"submission\"][\"results\"][\"phone_number\"]}}",
"from": "1234",
"message": "=Hey, {{$node[\"Mautic Trigger\"].json[\"mautic.form_on_submit\"][0][\"submission\"][\"results\"][\"first_name\"]}} 👋\nThank you for signing up for the Webinar - Getting Started with n8n. The webinar will start at 1800 CEST on 31st October 2020.\nSee you there!"
},
"credentials": {
"twilioApi": "twilio"
},
"typeVersion": 1
}
],
"active": false,
"settings": {},
"connections": {
"Mautic Trigger": {
"main": [
[
{
"node": "Twilio",
"type": "main",
"index": 0
}
]
]
}
}
}

View File

@@ -0,0 +1,82 @@
{
"meta": {
"instanceId": "237600ca44303ce91fa31ee72babcdc8493f55ee2c0e8aa2b78b3b4ce6f70bd9"
},
"nodes": [
{
"id": "4da16859-d29b-4eb7-90a4-3904c1bfff68",
"name": "Create item",
"type": "n8n-nodes-base.mondayCom",
"position": [
620,
240
],
"parameters": {
"name": "={{$node[\"On created contact\"].json[\"mautic.lead_post_save_new\"][0][\"contact\"][\"fields\"][\"core\"][\"firstname\"][\"value\"]}} {{$node[\"On created contact\"].json[\"mautic.lead_post_save_new\"][0][\"contact\"][\"fields\"][\"core\"][\"lastname\"][\"value\"]}}",
"boardId": "3461879764",
"groupId": "topics",
"resource": "boardItem",
"additionalFields": {
"columnValues": "={\n \"email\": {\n \"email\": \"{{$node[\"On created contact\"].json[\"mautic.lead_post_save_new\"][0][\"contact\"][\"fields\"][\"core\"][\"email\"][\"value\"]}}\",\n \"text\" : \"{{$node[\"On created contact\"].json[\"mautic.lead_post_save_new\"][0][\"contact\"][\"fields\"][\"core\"][\"email\"][\"value\"]}}\"\n }\n}"
}
},
"credentials": {
"mondayComApi": {
"id": "26",
"name": "[UPDATE ME]"
}
},
"typeVersion": 1
},
{
"id": "88655428-439e-4324-8d8f-865625650c7a",
"name": "On created contact",
"type": "n8n-nodes-base.mauticTrigger",
"position": [
400,
240
],
"webhookId": "8c80d932-4c37-4ebe-92ad-e456249db2c5",
"parameters": {
"events": [
"mautic.lead_post_save_new"
]
},
"credentials": {
"mauticApi": {
"id": "34",
"name": "[UPDATE ME]"
}
},
"typeVersion": 1
},
{
"id": "bff916e6-2ddc-456b-a8fa-c8841f47abed",
"name": "Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
620,
400
],
"parameters": {
"width": 301,
"height": 309,
"content": "## How to add more fields to Monday\nBy default, this `Create item` node only adds the name of the item and the email to Monday (provided that there is an email field already created).\n\nIdeally, you would like to share more fields than just the name and email. Refer to the [community discussion here](https://community.n8n.io/t/change-multiple-column-values-with-monday/4262) for more information on how to set up more column values in the `Create item` Monday node."
},
"typeVersion": 1
}
],
"connections": {
"On created contact": {
"main": [
[
{
"node": "Create item",
"type": "main",
"index": 0
}
]
]
}
}
}

View File

@@ -0,0 +1,426 @@
{
"meta": {
"instanceId": "f0efd559def66ddc761033b0b2eb86ed3edec31121f2c1aa92ed05e63303529a"
},
"name": "Unsubscribe Mautic contacts from automated unsubscribe emails",
"tags": [],
"nodes": [
{
"id": "55d6a64b-88e2-4162-a93a-b31ad32b94fd",
"name": "Gmail Trigger",
"type": "n8n-nodes-base.gmailTrigger",
"position": [
140,
860
],
"parameters": {
"filters": {
"includeSpamTrash": true
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
}
},
"credentials": {
"gmailOAuth2": {
"id": "3",
"name": "Gmail account"
}
},
"typeVersion": 1
},
{
"id": "a697b58c-e0c8-42e0-8211-49caf46ce222",
"name": "Is automated unsubscribe?",
"type": "n8n-nodes-base.if",
"position": [
460,
1000
],
"parameters": {
"conditions": {
"string": [
{
"value1": "= {{ $json[\"To\"] }}",
"value2": "unsubscribe",
"operation": "contains"
},
{
"value1": "={{ $json[\"From\"] }}",
"value2": "={{ $node[\"Edit Fields\"].json[\"emailAddress\"] }}",
"operation": "notEqual"
}
]
}
},
"typeVersion": 1,
"alwaysOutputData": false
},
{
"id": "72c76f4b-50da-481a-9c3e-204158f3a016",
"name": "Add to unsubscribed segment",
"type": "n8n-nodes-base.mautic",
"position": [
1520,
720
],
"parameters": {
"resource": "contactSegment",
"contactId": "={{ $json[\"id\"] }}",
"segmentId": 3,
"authentication": "oAuth2"
},
"credentials": {
"mauticOAuth2Api": {
"id": "4",
"name": "Mautic account"
}
},
"typeVersion": 1
},
{
"id": "44c85f57-0716-476f-bea5-00efeddf908f",
"name": "Remove newsletter segment",
"type": "n8n-nodes-base.mautic",
"position": [
1520,
920
],
"parameters": {
"resource": "contactSegment",
"contactId": "={{ $json[\"id\"] }}",
"operation": "remove",
"segmentId": 1,
"authentication": "oAuth2"
},
"credentials": {
"mauticOAuth2Api": {
"id": "4",
"name": "Mautic account"
}
},
"typeVersion": 1
},
{
"id": "b26ddbb9-3209-458b-8e94-2854ed8bf8de",
"name": "Reply Unsubscribe Message",
"type": "n8n-nodes-base.gmail",
"position": [
1520,
1140
],
"parameters": {
"message": "={{$node[\"Edit Fields\"].json[\"unsubscribeMessage\"]}}",
"options": {},
"messageId": "={{ $node[\"Gmail Trigger\"].json[\"id\"] }}",
"operation": "reply"
},
"credentials": {
"gmailOAuth2": {
"id": "3",
"name": "Gmail account"
}
},
"typeVersion": 2
},
{
"id": "34fc931b-f692-4383-a75b-76502c11452b",
"name": "Add to Do Not Contact List",
"type": "n8n-nodes-base.mautic",
"disabled": true,
"position": [
1520,
520
],
"parameters": {
"contactId": "{{ $json[\"id\"] }}",
"operation": "editDoNotContactList",
"authentication": "oAuth2",
"additionalFields": {}
},
"credentials": {
"mauticOAuth2Api": {
"id": "4",
"name": "Mautic account"
}
},
"typeVersion": 1
},
{
"id": "b5dd2d22-c367-4f30-a1b3-e3a767aec96b",
"name": "Extract Email from 'From' Field",
"type": "n8n-nodes-base.code",
"position": [
640,
840
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "var fromField = $input.item.json.From;\nvar extractedEmail;\nif (fromField.includes('<') && fromField.includes('>')) {\n // From field is wrapped in carets\n var regex = /[^< ]+(?=>)/g;\n extractedEmail = fromField.match(regex)[0];\n} else {\n // From field is not wrapped in carets\n extractedEmail = fromField;\n}\nreturn {json: {extractedEmail}}"
},
"typeVersion": 1
},
{
"id": "f11e57b5-7834-4654-8793-42b1aa297730",
"name": "Extract Unique Email Addresses",
"type": "n8n-nodes-base.code",
"position": [
820,
1000
],
"parameters": {
"jsCode": "// Access the input data using all() method\nconst inputData = $input.all();\nconst uniqueEmailsSet = new Set();\n\n// Loop through each item, extract the email, and add it to the Set\ninputData.forEach(item => {\n uniqueEmailsSet.add(item.json.extractedEmail);\n});\n\n// Convert the Set to an array of objects in the n8n format\nconst uniqueEmailsArray = Array.from(uniqueEmailsSet).map(email => {\n return { json: { extractedEmail: email } };\n});\n\nreturn uniqueEmailsArray;\n"
},
"typeVersion": 2
},
{
"id": "5e168e07-1a6b-4140-81b9-9d9ffb852f61",
"name": "Get Mautic Contact ID from Email Address",
"type": "n8n-nodes-base.mautic",
"position": [
1020,
840
],
"parameters": {
"limit": 1,
"options": {
"search": "=email:{{ $json[\"extractedEmail\"] }}",
"rawData": false
},
"operation": "getAll",
"authentication": "oAuth2"
},
"credentials": {
"mauticOAuth2Api": {
"id": "4",
"name": "Mautic account"
}
},
"typeVersion": 1,
"alwaysOutputData": false
},
{
"id": "ad1a7b7a-230a-4098-b419-c93e3a6398a1",
"name": "If Contact Exists in Mautic",
"type": "n8n-nodes-base.if",
"position": [
1180,
1060
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{ $json[\"id\"] }}",
"operation": "isNotEmpty"
}
]
}
},
"typeVersion": 1
},
{
"id": "17b999f9-9c50-488a-b5d2-d98bbd566048",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
200,
500
],
"parameters": {
"content": "## Step 1\nSet your email address and unsubscribe message in the edit fields node"
},
"typeVersion": 1
},
{
"id": "11d28571-7335-4e53-a691-973412b6daef",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
140,
1020
],
"parameters": {
"content": "## Step 2\nSet your credentials in the Gmail trigger"
},
"typeVersion": 1
},
{
"id": "2874fbc3-5735-471c-8c34-70854e0770bd",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
940,
660
],
"parameters": {
"content": "## Step 3\nSet credentials in the mautic nodes"
},
"typeVersion": 1
},
{
"id": "1e51f13f-3fba-4b5b-8c88-eb792c4c0b40",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1240,
460
],
"parameters": {
"content": "## Step 4\nEdit segments (add or remove) in the mautic nodes, optionally add to do not contact list."
},
"typeVersion": 1
},
{
"id": "3b5f94df-864b-480c-a6f2-d572345e7d9a",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
580,
440
],
"parameters": {
"width": 237.7703390037576,
"height": 194.55974544175768,
"content": "## Unsubscribe Mautic contacts from automated unsubscribe emails"
},
"typeVersion": 1
},
{
"id": "69496c4b-254d-4a89-8ab1-9fe80cfaea14",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
300,
700
],
"parameters": {
"fields": {
"values": [
{
"name": "emailAddress",
"stringValue": "hello@example.com"
},
{
"name": "unsubscribeMessage",
"stringValue": "Your have successfully opted out from our marketing campaigns. Please reply if you believe this is an error."
}
]
},
"options": {}
},
"typeVersion": 3.2
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "",
"connections": {
"Edit Fields": {
"main": [
[
{
"node": "Is automated unsubscribe?",
"type": "main",
"index": 0
}
]
]
},
"Gmail Trigger": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Is automated unsubscribe?": {
"main": [
[
{
"node": "Extract Email from 'From' Field",
"type": "main",
"index": 0
}
]
]
},
"If Contact Exists in Mautic": {
"main": [
[
{
"node": "Add to unsubscribed segment",
"type": "main",
"index": 0
},
{
"node": "Remove newsletter segment",
"type": "main",
"index": 0
},
{
"node": "Reply Unsubscribe Message",
"type": "main",
"index": 0
},
{
"node": "Add to Do Not Contact List",
"type": "main",
"index": 0
}
],
[
{
"node": "Reply Unsubscribe Message",
"type": "main",
"index": 0
}
]
]
},
"Extract Unique Email Addresses": {
"main": [
[
{
"node": "Get Mautic Contact ID from Email Address",
"type": "main",
"index": 0
}
]
]
},
"Extract Email from 'From' Field": {
"main": [
[
{
"node": "Extract Unique Email Addresses",
"type": "main",
"index": 0
}
]
]
},
"Get Mautic Contact ID from Email Address": {
"main": [
[
{
"node": "If Contact Exists in Mautic",
"type": "main",
"index": 0
}
]
]
}
}
}

View File

@@ -0,0 +1,534 @@
{
"nodes": [
{
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
-550,
450
],
"parameters": {
"path": "PuHq2RQsmc3HXB/hook",
"options": {
"rawBody": false
},
"httpMethod": "POST"
},
"typeVersion": 1
},
{
"name": "Mautic",
"type": "n8n-nodes-base.mautic",
"position": [
1260,
180
],
"parameters": {
"email": "={{$node[\"@MAIN STUDENT DATA\"].json[\"student\"][\"email\"]}}",
"company": 1,
"options": {},
"lastName": "={{$node[\"@MAIN STUDENT DATA\"].json[\"student\"][\"lastName\"]}}",
"firstName": "={{$node[\"@MAIN STUDENT DATA\"].json[\"student\"][\"firstName\"]}}",
"authentication": "oAuth2",
"additionalFields": {}
},
"credentials": {
"mauticOAuth2Api": "OAuth2 Mautic"
},
"typeVersion": 1,
"alwaysOutputData": false
},
{
"name": "Find User",
"type": "n8n-nodes-base.mautic",
"position": [
170,
260
],
"parameters": {
"limit": 1,
"options": {
"search": "={{$node[\"Set Webhook Request\"].json[\"student\"][\"email\"]}}"
},
"operation": "getAll",
"authentication": "oAuth2"
},
"credentials": {
"mauticOAuth2Api": "OAuth2 Mautic"
},
"notesInFlow": false,
"typeVersion": 1,
"alwaysOutputData": false
},
{
"name": "Update User",
"type": "n8n-nodes-base.mautic",
"position": [
1560,
250
],
"parameters": {
"options": {},
"contactId": "={{$node[\"@MAIN STUDENT DATA\"].json[\"userFound\"]}}",
"operation": "update",
"updateFields": {
"email": "={{$node[\"@MAIN STUDENT DATA\"].json[\"student\"][\"email\"]}}",
"lastName": "={{$node[\"@MAIN STUDENT DATA\"].json[\"student\"][\"lastName\"]}}",
"firstName": "={{$node[\"@MAIN STUDENT DATA\"].json[\"student\"][\"firstName\"]}}"
},
"authentication": "oAuth2"
},
"credentials": {
"mauticOAuth2Api": "OAuth2 Mautic"
},
"typeVersion": 1
},
{
"name": "Tag User",
"type": "n8n-nodes-base.mautic",
"position": [
430,
670
],
"parameters": {
"options": {},
"contactId": "={{$node[\"Find User To Tag Sale\"].json[\"id\"]}}",
"operation": "update",
"updateFields": {
"tags": "={{$node[\"Set Webhook Request\"].json[\"student\"][\"course\"][\"name\"]}}"
},
"authentication": "oAuth2"
},
"credentials": {
"mauticOAuth2Api": "OAuth2 Mautic"
},
"typeVersion": 1
},
{
"name": "Unsubscribe User",
"type": "n8n-nodes-base.mautic",
"position": [
2170,
410
],
"parameters": {
"options": {},
"contactId": "={{$node[\"@MAIN STUDENT DATA\"].json[\"userFound\"]}}",
"operation": "update",
"updateFields": {
"tags": "=#unsubscribe"
},
"authentication": "oAuth2"
},
"credentials": {
"mauticOAuth2Api": "OAuth2 Mautic"
},
"typeVersion": 1
},
{
"name": "Split Full Name",
"type": "n8n-nodes-base.function",
"position": [
340,
420
],
"parameters": {
"functionCode": "const student = items[0].json.student\nstudent.firstName = student.name ? student.name.split(' ').slice(0, -1).join(' ') : ''\nstudent.lastName= student.name ? student.name.split(' ').slice(-1).join(' ') : ''\nitems[0].json.student = student\nreturn items;"
},
"typeVersion": 1
},
{
"name": "If not found return -1",
"type": "n8n-nodes-base.function",
"position": [
450,
260
],
"parameters": {
"functionCode": "items[0].json.id = items[0].json.id || -1\nreturn items"
},
"typeVersion": 1
},
{
"name": "@MAIN STUDENT DATA",
"type": "n8n-nodes-base.merge",
"position": [
900,
400
],
"parameters": {
"join": "inner",
"mode": "mergeByIndex"
},
"typeVersion": 1
},
{
"name": "Remove unsubscribe",
"type": "n8n-nodes-base.mautic",
"position": [
1770,
500
],
"parameters": {
"options": {},
"contactId": "={{$node[\"@MAIN STUDENT DATA\"].json[\"userFound\"]}}",
"operation": "update",
"updateFields": {
"tags": "=-#unsubscribe"
},
"authentication": "oAuth2"
},
"credentials": {
"mauticOAuth2Api": "OAuth2 Mautic"
},
"typeVersion": 1
},
{
"name": "Find User To Tag Sale",
"type": "n8n-nodes-base.mautic",
"position": [
190,
670
],
"parameters": {
"limit": 1,
"options": {
"search": "={{$node[\"Set Webhook Request\"].json[\"student\"][\"user\"][\"email\"]}}"
},
"operation": "getAll",
"authentication": "oAuth2"
},
"credentials": {
"mauticOAuth2Api": "OAuth2 Mautic"
},
"notesInFlow": false,
"typeVersion": 1,
"alwaysOutputData": false
},
{
"name": "Set userFound",
"type": "n8n-nodes-base.set",
"position": [
700,
260
],
"parameters": {
"values": {
"string": [
{
"name": "userFound",
"value": "={{$node[\"If not found return -1\"].json[\"id\"]}}"
}
]
},
"options": {},
"keepOnlySet": true
},
"typeVersion": 1
},
{
"name": "Switch Webhook Types",
"type": "n8n-nodes-base.switch",
"position": [
-70,
450
],
"parameters": {
"rules": {
"rules": [
{
"value2": "User.",
"operation": "contains"
},
{
"output": 1,
"value2": "Sale.",
"operation": "contains"
}
]
},
"value1": "={{$node[\"Set Webhook Request\"].json[\"type\"]}}",
"dataType": "string"
},
"typeVersion": 1
},
{
"name": "Set Webhook Request",
"type": "n8n-nodes-base.set",
"position": [
-310,
450
],
"parameters": {
"values": {
"string": [
{
"name": "student",
"value": "={{$node[\"Webhook\"].json[\"body\"][\"object\"]}}"
},
{
"name": "type",
"value": "={{$node[\"Webhook\"].json[\"body\"][\"type\"]}}"
}
]
},
"options": {},
"keepOnlySet": true
},
"typeVersion": 1
},
{
"name": "IF NOT userFound",
"type": "n8n-nodes-base.if",
"position": [
1090,
400
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$node[\"@MAIN STUDENT DATA\"].json[\"userFound\"]}}",
"value2": "-1",
"operation": "regex"
}
]
}
},
"typeVersion": 1
},
{
"name": "Switch User.type",
"type": "n8n-nodes-base.switch",
"position": [
1380,
420
],
"parameters": {
"rules": {
"rules": [
{
"value2": "User.updated"
},
{
"output": 1,
"value2": "User.unsubscribe_from_marketing_emails"
},
{
"output": 2,
"value2": "=User.subscribe_to_marketing_emails"
}
]
},
"value1": "={{$node[\"@MAIN STUDENT DATA\"].json[\"type\"]}}",
"dataType": "string"
},
"typeVersion": 1
},
{
"name": "IF unsubscribe_from_marketing_emails",
"type": "n8n-nodes-base.if",
"position": [
1770,
250
],
"parameters": {
"conditions": {
"string": [],
"boolean": [
{
"value1": "={{$node[\"@MAIN STUDENT DATA\"].json[\"student\"][\"unsubscribe_from_marketing_emails\"]}}",
"value2": true
}
]
}
},
"typeVersion": 1
}
],
"connections": {
"Webhook": {
"main": [
[
{
"node": "Set Webhook Request",
"type": "main",
"index": 0
}
]
]
},
"Find User": {
"main": [
[
{
"node": "If not found return -1",
"type": "main",
"index": 0
}
]
]
},
"Update User": {
"main": [
[
{
"node": "IF unsubscribe_from_marketing_emails",
"type": "main",
"index": 0
}
]
]
},
"Set userFound": {
"main": [
[
{
"node": "@MAIN STUDENT DATA",
"type": "main",
"index": 0
}
]
]
},
"Split Full Name": {
"main": [
[
{
"node": "@MAIN STUDENT DATA",
"type": "main",
"index": 1
}
]
]
},
"IF NOT userFound": {
"main": [
[
{
"node": "Mautic",
"type": "main",
"index": 0
}
],
[
{
"node": "Switch User.type",
"type": "main",
"index": 0
}
]
]
},
"Switch User.type": {
"main": [
[
{
"node": "Update User",
"type": "main",
"index": 0
}
],
[
{
"node": "Unsubscribe User",
"type": "main",
"index": 0
}
],
[
{
"node": "Remove unsubscribe",
"type": "main",
"index": 0
}
]
]
},
"@MAIN STUDENT DATA": {
"main": [
[
{
"node": "IF NOT userFound",
"type": "main",
"index": 0
}
]
]
},
"Set Webhook Request": {
"main": [
[
{
"node": "Switch Webhook Types",
"type": "main",
"index": 0
}
]
]
},
"Switch Webhook Types": {
"main": [
[
{
"node": "Find User",
"type": "main",
"index": 0
},
{
"node": "Split Full Name",
"type": "main",
"index": 0
}
],
[
{
"node": "Find User To Tag Sale",
"type": "main",
"index": 0
}
]
]
},
"Find User To Tag Sale": {
"main": [
[
{
"node": "Tag User",
"type": "main",
"index": 0
}
]
]
},
"If not found return -1": {
"main": [
[
{
"node": "Set userFound",
"type": "main",
"index": 0
}
]
]
},
"IF unsubscribe_from_marketing_emails": {
"main": [
[
{
"node": "Unsubscribe User",
"type": "main",
"index": 0
}
],
[
{
"node": "Remove unsubscribe",
"type": "main",
"index": 0
}
]
]
}
}
}

View File

@@ -0,0 +1,107 @@
{
"nodes": [
{
"name": "GS Read Data2",
"type": "n8n-nodes-base.googleSheets",
"position": [
240,
750
],
"parameters": {
"range": "Data!A:P",
"options": {
"valueRenderMode": "FORMATTED_VALUE"
},
"sheetId": "1jKYwPE9DMFOYf1AeDuTvQ3GSM2GqaEJhGYNoisxSLpM"
},
"credentials": {
"googleApi": "n8n API"
},
"typeVersion": 1
},
{
"name": "Mautic",
"type": "n8n-nodes-base.mautic",
"position": [
450,
750
],
"parameters": {
"email": "={{$node[\"GS Read Data2\"].json[\"email\"]}}",
"options": {},
"firstName": "={{$node[\"GS Read Data2\"].json[\"firstname\"]}}",
"additionalFields": {
"mobile": "={{$node[\"GS Read Data2\"].json[\"mobile\"]}}"
}
},
"credentials": {
"mauticApi": "MauticAPI"
},
"notesInFlow": false,
"typeVersion": 1
},
{
"name": "GS Read Data2",
"type": "n8n-nodes-base.googleSheets",
"position": [
240,
750
],
"parameters": {
"range": "Data!A:P",
"options": {
"valueRenderMode": "FORMATTED_VALUE"
},
"sheetId": "1jKYwPE9DMFOYf1AeDuTvQ3GSM2GqaEJhGYNoisxSLpM"
},
"credentials": {
"googleApi": "n8n API"
},
"typeVersion": 1
},
{
"name": "Cron",
"type": "n8n-nodes-base.cron",
"position": [
40,
750
],
"parameters": {
"triggerTimes": {
"item": [
{
"mode": "everyX",
"unit": "minutes",
"value": 5
}
]
}
},
"typeVersion": 1
}
],
"connections": {
"Cron": {
"main": [
[
{
"node": "GS Read Data2",
"type": "main",
"index": 0
}
]
]
},
"GS Read Data2": {
"main": [
[
{
"node": "Mautic",
"type": "main",
"index": 0
}
]
]
}
}
}

View File

@@ -0,0 +1,164 @@
{
"id": 83,
"name": "New WooCommerce Customer to Mautic",
"nodes": [
{
"name": "Check for Existing",
"type": "n8n-nodes-base.mautic",
"position": [
280,
480
],
"parameters": {
"options": {
"search": "={{$json[\"email\"]}}"
},
"operation": "getAll",
"authentication": "oAuth2"
},
"credentials": {
"mauticOAuth2Api": {
"id": "54",
"name": "Mautic account"
}
},
"typeVersion": 1,
"alwaysOutputData": true
},
{
"name": "If New",
"type": "n8n-nodes-base.if",
"position": [
460,
480
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$json[\"id\"]}}",
"operation": "isEmpty"
}
]
}
},
"typeVersion": 1
},
{
"name": "Create Contact",
"type": "n8n-nodes-base.mautic",
"position": [
680,
320
],
"parameters": {
"email": "={{$node[\"Customer Created\"].json[\"email\"]}}",
"company": "={{$node[\"Customer Created\"].json[\"billing\"][\"company\"]}}",
"options": {},
"lastName": "={{$node[\"Customer Created\"].json[\"last_name\"]}}",
"firstName": "={{$node[\"Customer Created\"].json[\"first_name\"]}}",
"authentication": "oAuth2",
"additionalFields": {}
},
"credentials": {
"mauticOAuth2Api": {
"id": "54",
"name": "Mautic account"
}
},
"typeVersion": 1
},
{
"name": "Update Contact",
"type": "n8n-nodes-base.mautic",
"position": [
680,
580
],
"parameters": {
"options": {},
"contactId": "={{$json[\"id\"]}}",
"operation": "update",
"updateFields": {
"lastName": "={{$node[\"Customer Created or Updated\"].json[\"last_name\"]}}",
"firstName": "={{$node[\"Customer Created or Updated\"].json[\"first_name\"]}}"
},
"authentication": "oAuth2"
},
"credentials": {
"mauticOAuth2Api": {
"id": "54",
"name": "Mautic account"
}
},
"typeVersion": 1
},
{
"name": "Customer Created or Updated",
"type": "n8n-nodes-base.wooCommerceTrigger",
"position": [
100,
480
],
"webhookId": "5d89e322-a5e0-4cce-9eab-185e8375175b",
"parameters": {
"event": "customer.updated"
},
"credentials": {
"wooCommerceApi": {
"id": "48",
"name": "WooCommerce account"
}
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"saveManualExecutions": true,
"saveExecutionProgress": true,
"saveDataSuccessExecution": "all"
},
"connections": {
"If New": {
"main": [
[
{
"node": "Create Contact",
"type": "main",
"index": 0
}
],
[
{
"node": "Update Contact",
"type": "main",
"index": 0
}
]
]
},
"Check for Existing": {
"main": [
[
{
"node": "If New",
"type": "main",
"index": 0
}
]
]
},
"Customer Created or Updated": {
"main": [
[
{
"node": "Check for Existing",
"type": "main",
"index": 0
}
]
]
}
}
}

View File

@@ -0,0 +1,191 @@
{
"id": 86,
"name": "Check for valid Mautic contact email",
"nodes": [
{
"name": "If is not new contact",
"type": "n8n-nodes-base.if",
"position": [
780,
460
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$json[\"mautic.lead_post_save_new\"]}}",
"operation": "isEmpty"
}
]
}
},
"typeVersion": 1
},
{
"name": "On Contact Identified",
"type": "n8n-nodes-base.mauticTrigger",
"position": [
600,
460
],
"webhookId": "a3ee0f93-2870-44e2-bb2f-0175433263b3",
"parameters": {
"events": [
"mautic.lead_post_save_new"
],
"authentication": "oAuth2"
},
"credentials": {
"mauticOAuth2Api": {
"id": "54",
"name": "Mautic account"
}
},
"typeVersion": 1
},
{
"name": "extract information",
"type": "n8n-nodes-base.itemLists",
"position": [
980,
480
],
"parameters": {
"options": {},
"fieldToSplitOut": "mautic.lead_post_save_new"
},
"typeVersion": 1
},
{
"name": "validate email",
"type": "n8n-nodes-base.oneSimpleApi",
"position": [
1180,
480
],
"parameters": {
"resource": "utility",
"emailAddress": "={{$json[\"lead\"][\"fields\"][\"core\"][\"email\"][\"value\"]}}"
},
"credentials": {
"oneSimpleApi": {
"id": "33",
"name": "One Simple account"
}
},
"typeVersion": 1
},
{
"name": "If the email is suspicious",
"type": "n8n-nodes-base.if",
"notes": "IF\ndeliverability is not good\nOR\nDomain is not valid\nOR\nEmail is Disposable",
"position": [
1360,
480
],
"parameters": {
"conditions": {
"string": [
{
"value1": "={{$json[\"deliverability\"]}}",
"value2": "GOOD",
"operation": "notEqual"
}
],
"boolean": [
{
"value1": "={{$json[\"is_domain_valid\"]}}"
},
{
"value1": "={{$json[\"is_email_disposable\"]}}",
"value2": true
}
]
},
"combineOperation": "any"
},
"typeVersion": 1
},
{
"name": "Send to Slack",
"type": "n8n-nodes-base.slack",
"position": [
1560,
460
],
"parameters": {
"text": "=:warning: New Contact with Suspicious Email :warning:\n*Name: * {{$node[\"extract information\"].json[\"contact\"][\"fields\"][\"core\"][\"firstname\"][\"normalizedValue\"]}} {{$node[\"extract information\"].json[\"contact\"][\"fields\"][\"core\"][\"lastname\"][\"normalizedValue\"]}}\n*Email: * {{$node[\"extract information\"].json[\"contact\"][\"fields\"][\"core\"][\"email\"][\"normalizedValue\"]}}\n*Link: * https://mautic.my.domain.com/s/contacts/view/{{$node[\"extract information\"].json[\"contact\"][\"id\"]}}\n*Creator: * {{$node[\"extract information\"].json[\"contact\"][\"createdByUser\"]}}",
"channel": "#mautic-alerts",
"attachments": [],
"otherOptions": {}
},
"credentials": {
"slackApi": {
"id": "53",
"name": "Slack Access Token"
}
},
"typeVersion": 1
}
],
"active": false,
"settings": {},
"connections": {
"validate email": {
"main": [
[
{
"node": "If the email is suspicious",
"type": "main",
"index": 0
}
]
]
},
"extract information": {
"main": [
[
{
"node": "validate email",
"type": "main",
"index": 0
}
]
]
},
"If is not new contact": {
"main": [
[],
[
{
"node": "extract information",
"type": "main",
"index": 0
}
]
]
},
"On Contact Identified": {
"main": [
[
{
"node": "If is not new contact",
"type": "main",
"index": 0
}
]
]
},
"If the email is suspicious": {
"main": [
[
{
"node": "Send to Slack",
"type": "main",
"index": 0
}
]
]
}
}
}

View File

@@ -0,0 +1,758 @@
{
"id": "JiSesGjDIXIPYtbt",
"meta": {
"instanceId": "e2c978396c9c745cf0aaa9ed3abe4464dbcef93c5fe2df809b9e14440e628df6"
},
"name": "Shopify + Mautic",
"tags": [],
"nodes": [
{
"id": "592b2608-e77e-4988-8f77-8820645b56ee",
"name": "Shopify Trigger",
"type": "n8n-nodes-base.shopifyTrigger",
"position": [
540,
320
],
"webhookId": "252052f3-e844-4500-8c34-c57f583d4432",
"parameters": {
"topic": "customers/update",
"authentication": "accessToken"
},
"credentials": {
"shopifyAccessTokenApi": {
"id": "WbxXaLMHozAgY3Rz",
"name": "Shopify Access Token account"
}
},
"typeVersion": 1
},
{
"id": "f2e6931d-0279-4142-9b9e-1092657d91e2",
"name": "Accepts Marketing?",
"type": "n8n-nodes-base.if",
"position": [
1240,
180
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8e207eec-212a-48a9-b64e-2d15094c987f",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Shopify Trigger').item.json.email_marketing_consent.state }}",
"rightValue": "subscribed"
}
]
}
},
"typeVersion": 2
},
{
"id": "2a31657b-f1b3-4e4a-8f6a-3d3ee15aa052",
"name": "Accepts Marketing?1",
"type": "n8n-nodes-base.if",
"position": [
1240,
500
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8e207eec-212a-48a9-b64e-2d15094c987f",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Shopify Trigger').item.json.email_marketing_consent.state }}",
"rightValue": "subscribed"
}
]
}
},
"typeVersion": 2
},
{
"id": "266a07ca-915a-4afd-9a0a-60eb974ee263",
"name": "No Operation, do nothing",
"type": "n8n-nodes-base.noOp",
"position": [
1540,
720
],
"parameters": {},
"typeVersion": 1
},
{
"id": "b9aee974-4d75-4b1e-80b7-8aab9d4f403d",
"name": "Add to confirmed segment",
"type": "n8n-nodes-base.mautic",
"position": [
1840,
40
],
"parameters": {
"resource": "contactSegment",
"contactId": "={{ $json.id }}",
"segmentId": 1,
"authentication": "oAuth2"
},
"credentials": {
"mauticOAuth2Api": {
"id": "cBmAMa80nofah9QG",
"name": "Mautic account"
}
},
"typeVersion": 1
},
{
"id": "a0fbd9e7-a60d-430b-b5df-4ec063e181c9",
"name": "Remove from confirmed segment",
"type": "n8n-nodes-base.mautic",
"position": [
1840,
300
],
"parameters": {
"resource": "contactSegment",
"contactId": "={{ $json.id }}",
"operation": "remove",
"segmentId": 1,
"authentication": "oAuth2"
},
"credentials": {
"mauticOAuth2Api": {
"id": "cBmAMa80nofah9QG",
"name": "Mautic account"
}
},
"typeVersion": 1
},
{
"id": "0bc8fc06-3bf5-4c49-acc2-1ed499a07ea1",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
540,
1500
],
"webhookId": "6485fca6-c641-4067-b19a-192709b88e45",
"parameters": {
"path": "6485fca6-c641-4067-b19a-192709b88e45",
"options": {
"rawBody": true
},
"httpMethod": "POST"
},
"typeVersion": 1.1
},
{
"id": "001eff12-6f14-4fb2-afdd-e6b7956437bf",
"name": "Crypto",
"type": "n8n-nodes-base.crypto",
"position": [
760,
1500
],
"parameters": {
"type": "SHA256",
"action": "hmac",
"secret": "a031f434181d2bce0a81694c11fafb5887c78a48c50da98d62b7ab7c6d57080c",
"encoding": "base64",
"binaryData": true
},
"typeVersion": 1
},
{
"id": "6cde7c3c-e1f9-4584-908c-9b4a82e4f2a4",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
980,
1500
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "eb322a60-a1e6-46ed-b7b9-539373f9d881",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Webhook').item.json.headers['webhook-signature'] }}",
"rightValue": "={{ $json.data }}"
}
]
}
},
"typeVersion": 2
},
{
"id": "e848a1d3-2f9b-4d27-8862-b3284654f818",
"name": "No Operation, do nothing1",
"type": "n8n-nodes-base.noOp",
"position": [
1260,
1700
],
"parameters": {},
"typeVersion": 1
},
{
"id": "ff27ee31-c13d-4a52-a260-aef9df8c64a6",
"name": "GraphQL",
"type": "n8n-nodes-base.graphql",
"position": [
1260,
1480
],
"parameters": {
"query": "=query {\n customers(first: 1, query: \"email:'{{ $json[\"body\"][\"mautic.lead_channel_subscription_changed\"][0][\"contact\"][\"fields\"][\"core\"][\"email\"][\"value\"] }}'\") {\n edges {\n node {\n id\n state\n }\n }\n }\n}\n",
"endpoint": "=https://{{ $('Set Shopify Subdomain').params[\"fields\"][\"values\"][0][\"stringValue\"] }}.myshopify.com/admin/api/2024-01/graphql.json",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "Z98cM8akgh1jPtG7",
"name": "Header Auth Shopify"
}
},
"typeVersion": 1
},
{
"id": "168b255b-f796-426c-80fd-c2fe79ef973f",
"name": "Marketing Consent - subscribed",
"type": "n8n-nodes-base.graphql",
"position": [
2120,
1160
],
"parameters": {
"query": "mutation customerEmailMarketingConsentUpdate($input: CustomerEmailMarketingConsentUpdateInput!) {\n customerEmailMarketingConsentUpdate(input: $input) {\n customer {\n id\n }\n userErrors {\n field\n message\n }\n }\n}\n",
"endpoint": "=https://{{ $('Set Shopify Subdomain').params[\"fields\"][\"values\"][0][\"stringValue\"] }}.myshopify.com/admin/api/2024-01/graphql.json",
"variables": "={\n \"input\": {\n \"customerId\": \"{{ $json[\"data\"][\"customers\"][\"edges\"][0][\"node\"][\"id\"] }}\",\n \"emailMarketingConsent\": {\n \"consentUpdatedAt\": \"{{ $now }}\",\n \"marketingOptInLevel\": \"CONFIRMED_OPT_IN\",\n \"marketingState\": \"SUBSCRIBED\"\n }\n }\n}\n",
"requestFormat": "json",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "Z98cM8akgh1jPtG7",
"name": "Header Auth Shopify"
}
},
"typeVersion": 1
},
{
"id": "f7db8ec3-27d4-41f7-a0c9-6249bf6e805a",
"name": "Marketing Consent - unsubscribed",
"type": "n8n-nodes-base.graphql",
"position": [
2120,
1500
],
"parameters": {
"query": "mutation customerEmailMarketingConsentUpdate($input: CustomerEmailMarketingConsentUpdateInput!) {\n customerEmailMarketingConsentUpdate(input: $input) {\n customer {\n id\n }\n userErrors {\n field\n message\n }\n }\n}\n",
"endpoint": "=https://{{ $('Set Shopify Subdomain').params[\"fields\"][\"values\"][0][\"stringValue\"] }}.myshopify.com/admin/api/2024-01/graphql.json",
"variables": "={\n \"input\": {\n \"customerId\": \"{{ $json[\"data\"][\"customers\"][\"edges\"][0][\"node\"][\"id\"] }}\",\n \"emailMarketingConsent\": {\n \"consentUpdatedAt\": \"{{ $now }}\",\n \"marketingOptInLevel\": \"CONFIRMED_OPT_IN\",\n \"marketingState\": \"UNSUBSCRIBED\"\n }\n }\n}\n",
"requestFormat": "json",
"authentication": "headerAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "Z98cM8akgh1jPtG7",
"name": "Header Auth Shopify"
}
},
"typeVersion": 1
},
{
"id": "ff62697d-29d0-4b7e-b695-cd90535e5fa8",
"name": "Mautic - Accepts Marketing?",
"type": "n8n-nodes-base.if",
"position": [
1820,
1180
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "960e386c-4198-4b04-88a6-715162729064",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Webhook').item.json.body['mautic.lead_channel_subscription_changed'][0].new_status }}",
"rightValue": "contactable"
}
]
}
},
"typeVersion": 2
},
{
"id": "8515256f-c49b-4000-9a1e-be9958720dd6",
"name": "Customer exists?",
"type": "n8n-nodes-base.if",
"position": [
1540,
1480
],
"parameters": {
"options": {
"looseTypeValidation": false
},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "4d2f02ab-f5e3-437d-8a35-f301888a8597",
"operator": {
"type": "array",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.data.customers.edges }}",
"rightValue": 0
}
]
}
},
"typeVersion": 2
},
{
"id": "616ae364-82a0-456a-abaf-b8855ca56f8f",
"name": "No Operation, do nothing2",
"type": "n8n-nodes-base.noOp",
"position": [
1820,
1640
],
"parameters": {},
"typeVersion": 1
},
{
"id": "afdeb330-06d0-4fdf-9f42-1d8ce74d483d",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
540,
1680
],
"parameters": {
"width": 580.807881773399,
"content": "## Webhook Validation\nWe use the same key shared with Mautic to hash the incoming request. If the computed hash is identical to the one delivered the request is valid and can be processed"
},
"typeVersion": 1
},
{
"id": "38633539-cc9a-4bde-92f7-39e697bd803f",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
2040,
40
],
"parameters": {
"width": 279.1188177339898,
"height": 383.7477832512317,
"content": "## Mautic Segments\nThe n8n Shopify node cannot Please make sure to select your segment on both nodes"
},
"typeVersion": 1
},
{
"id": "4107ce14-58bc-4171-87bb-5fc74a506e38",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
1080,
1300
],
"parameters": {
"width": 279.1188177339898,
"content": "## Shopify \nThe n8n Shopify node cannot get customer marketing consent, so we get this from the Shopify GraphQL API"
},
"typeVersion": 1
},
{
"id": "33f97be7-a4bf-42ee-96ae-dbbe54f5248f",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
580,
1140
],
"parameters": {
"width": 279.1188177339898,
"content": "## Set your Shopify Subdomain here"
},
"typeVersion": 1
},
{
"id": "7f203946-a365-44a3-8de0-1fe0b1964eab",
"name": "Set Shopify Subdomain",
"type": "n8n-nodes-base.set",
"position": [
760,
1320
],
"parameters": {
"fields": {
"values": [
{
"name": "Shopify Subdomain",
"stringValue": "n8n-mautic-demo"
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "544a4da2-11a4-465b-a30e-02ed618a77a6",
"name": "Search for Contact by Email",
"type": "n8n-nodes-base.mautic",
"position": [
760,
320
],
"parameters": {
"limit": 1,
"options": {
"search": "={{ $json.email }}"
},
"operation": "getAll",
"authentication": "oAuth2"
},
"credentials": {
"mauticOAuth2Api": {
"id": "cBmAMa80nofah9QG",
"name": "Mautic account"
}
},
"typeVersion": 1,
"alwaysOutputData": true
},
{
"id": "1332db6d-99ab-4d38-89b8-7f7ba25d4cf1",
"name": "Contact exists?",
"type": "n8n-nodes-base.if",
"position": [
980,
320
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "5872c5d4-655f-4cd6-9b21-622acdcb0814",
"operator": {
"type": "number",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json.id }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "488494df-6e8c-4f8c-b7ed-5d6d67f083c8",
"name": "Create a new contact",
"type": "n8n-nodes-base.mautic",
"position": [
1540,
480
],
"parameters": {
"email": "={{ $('Shopify Trigger').item.json.email }}",
"company": "=",
"options": {},
"lastName": "={{ $('Shopify Trigger').item.json.last_name }}",
"firstName": "={{ $('Shopify Trigger').item.json.first_name }}",
"authentication": "oAuth2",
"additionalFields": {}
},
"credentials": {
"mauticOAuth2Api": {
"id": "cBmAMa80nofah9QG",
"name": "Mautic account"
}
},
"typeVersion": 1
},
{
"id": "586c736b-cd46-4c5c-ac2f-c4380cf465bb",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
1420
],
"parameters": {
"color": 4,
"width": 360.408084305475,
"height": 315.5897364788551,
"content": "## Mautic to Shopify\n\nThis part 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\nExamples from the Shopify Docs used in this workflow:\n\n[Get the first ten customers with an enabled customer account](https://shopify.dev/docs/api/admin-graphql/2024-01/queries/customers#examples-Get_the_first_ten_customers_with_an_enabled_customer_account)\n\n\n[Mutation to update the Email Marketing consent](https://shopify.dev/docs/api/admin-graphql/2024-01/mutations/customerEmailMarketingConsentUpdate)"
},
"typeVersion": 1
},
{
"id": "47e8a011-b2ba-4839-ac85-24dd45e18020",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
20,
220
],
"parameters": {
"color": 4,
"width": 360.408084305475,
"height": 315.5897364788551,
"content": "## Shopify to Mautic\n\nThis part uses the Shopify Trigger to watch for changes on customer data.\n\nTo use the Mautic nodes please make sure you have the API enabled in your Mautic Instance."
},
"typeVersion": 1
}
],
"active": true,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "71208adf-ebfb-4961-b23b-fb46c86ca09f",
"connections": {
"If": {
"main": [
[
{
"node": "GraphQL",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing1",
"type": "main",
"index": 0
}
]
]
},
"Crypto": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"GraphQL": {
"main": [
[
{
"node": "Customer exists?",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "Crypto",
"type": "main",
"index": 0
},
{
"node": "Set Shopify Subdomain",
"type": "main",
"index": 0
}
]
]
},
"Contact exists?": {
"main": [
[
{
"node": "Accepts Marketing?",
"type": "main",
"index": 0
}
],
[
{
"node": "Accepts Marketing?1",
"type": "main",
"index": 0
}
]
]
},
"Shopify Trigger": {
"main": [
[
{
"node": "Search for Contact by Email",
"type": "main",
"index": 0
}
]
]
},
"Customer exists?": {
"main": [
[
{
"node": "Mautic - Accepts Marketing?",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing2",
"type": "main",
"index": 0
}
]
]
},
"Accepts Marketing?": {
"main": [
[
{
"node": "Add to confirmed segment",
"type": "main",
"index": 0
}
],
[
{
"node": "Remove from confirmed segment",
"type": "main",
"index": 0
}
]
]
},
"Accepts Marketing?1": {
"main": [
[
{
"node": "Create a new contact",
"type": "main",
"index": 0
}
],
[
{
"node": "No Operation, do nothing",
"type": "main",
"index": 0
}
]
]
},
"Create a new contact": {
"main": [
[
{
"node": "Add to confirmed segment",
"type": "main",
"index": 0
}
]
]
},
"Mautic - Accepts Marketing?": {
"main": [
[
{
"node": "Marketing Consent - subscribed",
"type": "main",
"index": 0
}
],
[
{
"node": "Marketing Consent - unsubscribed",
"type": "main",
"index": 0
}
]
]
},
"Search for Contact by Email": {
"main": [
[
{
"node": "Contact exists?",
"type": "main",
"index": 0
}
]
]
}
}
}