{"workflow":{"id":13663,"name":"Update KlickTipp contact tags by tag names","views":2,"recentViews":0,"totalViews":2,"createdAt":"2026-02-24T16:45:03.667Z","description":"![image.png](fileId:4549)\n\n## **Community Node Disclaimer**\nThis workflow uses **KlickTipp community nodes**, available for **self-hosted n8n instances only**.\n\n---\n\n## Introduction\nThis workflow receives a contact email plus two arrays of tag names: one list of tags to add and one list of tags to remove. It loads the full KlickTipp tag list, resolves the provided tag names into tag IDs, and then applies the changes to the contact by tagging and untagging. It is designed to be a reusable \"Contact Tagging\" sub-workflow for any n8n automation.\n\n## Benefits\n- Applies explicit tag changes (add/remove) without requiring full tag synchronization.\n- Automatically resolves tag names to KlickTipp tag IDs.\n- Keeps parent workflows simple (no manual tag ID lookups).\n- Reusable module for consistent tagging behavior across automations.\n\n---\n\n## Key Features\n\n#### Input\nExpects the contact email plus two arrays of tag names.\n\nExample input:\n```\n{\n  \"email\": \"example@email.com\",\n  \"tagNamesToAdd\": [\"Tag name 1\", \"Tag name 2\"],\n  \"tagNamesToRemove\": [\"Tag name 3\"]\n}\n```\n\n## Processing\n- Loads the full KlickTipp tag list.\n- Resolves tagNamesToAdd[] into tagIdsToAdd[].\n- Resolves tagNamesToRemove[] into tagIdsToRemove[].\n- If tagIdsToAdd[] is not empty, adds these tags to the contact.\n- If tagIdsToRemove[] is not empty, splits the array and removes tags from the contact one-by-one.\n\n## Output\nThis workflow updates the contact in KlickTipp by:\n- adding all tags resolved from tagNamesToAdd[]\n- removing all tags resolved from tagNamesToRemove[]\n\n---\n\n## Testing\n- Test with a contact that already exists in KlickTipp.\n- Provide tagNamesToAdd[] containing:\n  - existing KlickTipp tags (should be added to the contact)\n  - non-existing tags (will be ignored unless you add “create tag” logic)\n- Provide tagNamesToRemove[] containing:\n  - existing KlickTipp tags (should be removed from the contact if present)\n  - non-existing tags (will be ignored)\n- Confirm in KlickTipp that:\n  - tags from tagNamesToAdd[] were added\n  - tags from tagNamesToRemove[] were removed","workflow":{"id":"u3Rrbxden8smAQrx","meta":{"instanceId":"95b3ab5a70ab1c8c1906357a367f1b236ef12a1409406fd992f60255f0f95f85","templateCredsSetupCompleted":true},"name":"KlickTipp tag manager: update contact tags by names","tags":[{"id":"15wrq9sti6wyqr6J","name":"TEMPLATE","createdAt":"2025-01-08T16:34:30.163Z","updatedAt":"2025-01-08T16:34:30.163Z"}],"nodes":[{"id":"49694fe4-0bb6-4e89-a386-a661eb7c856c","name":"Input: Email + Tag names","type":"n8n-nodes-base.executeWorkflowTrigger","position":[-16,320],"parameters":{"inputSource":"jsonExample","jsonExample":"{\n  \"email\": \"example@email.com\",\n  \"tagNamesToAdd\": [\"Tag name 1\", \"Tag name 2\"],\n  \"tagNamesToRemove\": [\"Tag name 3\"]\n}"},"typeVersion":1.1},{"id":"cd405fb5-b0f3-4186-8da2-9ecbd7ab8b34","name":"Compare desired vs current tags","type":"n8n-nodes-base.code","position":[368,320],"parameters":{"jsCode":"// Retrieve input variables\nconst allTags = $(\"Get tag list\").all() || [];\nconst input = $('Input: Email + Tag names').first().json || {};\nconst tagNamesToAdd = Array.isArray(input.tagNamesToAdd) ? input.tagNamesToAdd : [];\nconst tagNamesToRemove = Array.isArray(input.tagNamesToRemove) ? input.tagNamesToRemove : [];\n\n// Helpers\nconst normalizeString = (s) => String(s ?? '').trim();\nconst normalizeKey = (s) => normalizeString(s).toLowerCase();;\n\n// Build lookup: tag name -> tag ID\n// allTags items expected like: { label: \"Tag name\", value: \"123\" }\nconst tagNameToId = /** @type {Record<string, number>} */ ({});\nfor (const tag of allTags) {\n  if (!tag || typeof tag.json.value !== 'string') {\n     continue;\n  }\n  const id = Number(tag.json.id);\n\n  if (Number.isNaN(id)) {\n    continue;\n  }\n  tagNameToId[normalizeKey(tag.json.value)] = id;\n}\n\n// Resolve names -> IDs (dedupe, ignore unknown)\nconst getUniqueNormalizedKeys = (arr) => [...new Set(arr.map(normalizeKey).filter(k => k !== ''))];\n\nconst addKeys = getUniqueNormalizedKeys(tagNamesToAdd);\nconst removeKeys = getUniqueNormalizedKeys(tagNamesToRemove);\n\nconst tagIdsToAdd = addKeys\n  .map(k => tagNameToId[k])\n  .filter(id => typeof id === 'number' && !Number.isNaN(id));\n\nconst tagIdsToRemove = removeKeys\n  .map(k => tagNameToId[k])\n  .filter(id => typeof id === 'number' && !Number.isNaN(id));\n\nreturn [{ tagIdsToAdd, tagIdsToRemove }];"},"typeVersion":2},{"id":"e39cf9aa-d4b7-4f2e-8947-45a78da336de","name":"If tags to add","type":"n8n-nodes-base.filter","position":[592,208],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"c22b609f-a2a3-4230-ad2c-ff43565f13ff","operator":{"type":"array","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.tagIdsToAdd }}","rightValue":""}]}},"typeVersion":2.2},{"id":"b9412193-df1f-4731-908b-fb9d43ad14c4","name":"If tags to remove","type":"n8n-nodes-base.filter","position":[592,432],"parameters":{"options":{},"conditions":{"options":{"version":2,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"c22b609f-a2a3-4230-ad2c-ff43565f13ff","operator":{"type":"array","operation":"notEmpty","singleValue":true},"leftValue":"={{ $json.tagIdsToRemove }}","rightValue":""}]}},"typeVersion":2.2},{"id":"0d2bdd22-08e4-4bef-be63-b09d7acd2995","name":"Add tags to contact","type":"n8n-nodes-klicktipp.klicktipp","position":[784,208],"parameters":{"email":"={{ $('Input: Email + Tag names').first().json.email }}","tagId":"={{ $json.tagIdsToAdd }}","resource":"contact-tagging"},"credentials":{"klickTippApi":{"id":"K9JyBdCM4SZc1cXl","name":"DEMO KlickTipp account"}},"typeVersion":3},{"id":"8295bbc0-465d-4543-9446-6e88f5aaa5aa","name":"Split tags to remove","type":"n8n-nodes-base.splitOut","position":[784,432],"parameters":{"options":{},"fieldToSplitOut":"tagIdsToRemove"},"typeVersion":1},{"id":"ed6b2475-6ea9-4a90-ae77-dd7ab0d7f4b2","name":"Remove tag from contact","type":"n8n-nodes-klicktipp.klicktipp","position":[992,432],"parameters":{"email":"={{ $('Input: Email + Tag names').first().json.email }}","tagId":"={{ $json.tagIdsToRemove }}","resource":"contact-tagging","operation":"untag"},"credentials":{"klickTippApi":{"id":"K9JyBdCM4SZc1cXl","name":"DEMO KlickTipp account"}},"typeVersion":3},{"id":"44076f87-9cbc-432b-a633-6c898fcfcc92","name":"Sticky Note4","type":"n8n-nodes-base.stickyNote","position":[-80,144],"parameters":{"color":7,"width":224,"height":496,"content":"## Input"},"typeVersion":1},{"id":"8faa2178-729c-4405-981a-25046c538d8b","name":"Sticky Note1","type":"n8n-nodes-base.stickyNote","position":[160,144],"parameters":{"color":7,"width":160,"height":496,"content":"## Fetch tag list"},"typeVersion":1},{"id":"37393001-dcbb-451c-9309-62870560b7ac","name":"Sticky Note2","type":"n8n-nodes-base.stickyNote","position":[720,144],"parameters":{"color":7,"width":608,"height":224,"content":"## Add missing tags"},"typeVersion":1},{"id":"2341be14-61d8-4c2a-95cd-9bfffbd3a507","name":"Sticky Note3","type":"n8n-nodes-base.stickyNote","position":[720,384],"parameters":{"color":7,"width":608,"height":256,"content":"## Remove extra tags"},"typeVersion":1},{"id":"cb6590d1-22aa-41fa-98ac-f58bfb45f25a","name":"Sticky Note5","type":"n8n-nodes-base.stickyNote","position":[336,144],"parameters":{"color":7,"width":368,"height":496,"content":"## Compare tags and build actions"},"typeVersion":1},{"id":"a01abb7c-12e1-4b75-a0c2-b94b9d9dd3ed","name":"Sticky Note6","type":"n8n-nodes-base.stickyNote","position":[-752,144],"parameters":{"width":656,"height":1344,"content":"### Introduction\nThis workflow receives a contact email plus two arrays of tag names: one list of tags to add and one list of tags to remove. It loads the full KlickTipp tag list, resolves the provided tag names into tag IDs, and then applies the changes to the contact by tagging and untagging. It is designed to be a reusable \"Contact Tagging\" sub-workflow for any n8n automation.\n\n### Benefits\n- Applies explicit tag changes (add/remove) without requiring full tag synchronization.\n- Automatically resolves tag names to KlickTipp tag IDs.\n- Keeps parent workflows simple (no manual tag ID lookups).\n- Reusable module for consistent tagging behavior across automations.\n\n---\n\n### Key Features\n\n#### Input\nExpects the contact email plus two arrays of tag names.\n\nExample input:\n```\n{\n  \"email\": \"example@email.com\",\n  \"tagNamesToAdd\": [\"Tag name 1\", \"Tag name 2\"],\n  \"tagNamesToRemove\": [\"Tag name 3\"]\n}\n```\n\n#### Processing\n- Loads the full KlickTipp tag list.\n- Resolves tagNamesToAdd[] into tagIdsToAdd[].\n- Resolves tagNamesToRemove[] into tagIdsToRemove[].\n- If tagIdsToAdd[] is not empty, adds these tags to the contact.\n- If tagIdsToRemove[] is not empty, splits the array and removes tags from the contact one-by-one.\n\n#### Output\nThis workflow updates the contact in KlickTipp by:\n- adding all tags resolved from tagNamesToAdd[]\n- removing all tags resolved from tagNamesToRemove[]\n\n---\n\n### Testing\n- Test with a contact that already exists in KlickTipp.\n- Provide tagNamesToAdd[] containing:\n  - existing KlickTipp tags (should be added to the contact)\n  - non-existing tags (will be ignored unless you add “create tag” logic)\n- Provide tagNamesToRemove[] containing:\n  - existing KlickTipp tags (should be removed from the contact if present)\n  - non-existing tags (will be ignored)\n- Confirm in KlickTipp that:\n  - tags from tagNamesToAdd[] were added\n  - tags from tagNamesToRemove[] were removed"},"typeVersion":1},{"id":"4a07b3ef-55bf-4422-86b8-49b5d7a8aebb","name":"Get tag list","type":"n8n-nodes-klicktipp.klicktipp","position":[192,320],"parameters":{},"credentials":{"klickTippApi":{"id":"K9JyBdCM4SZc1cXl","name":"DEMO KlickTipp account"}},"typeVersion":3},{"id":"14044bb4-54fc-42ae-9dd8-d7cefb3379d6","name":"Return result to parent workflow","type":"n8n-nodes-base.set","position":[1616,304],"parameters":{"options":{},"assignments":{"assignments":[{"id":"66b091f0-9d62-4adf-9365-3961b0879616","name":"success","type":"boolean","value":"={{\n  $if(\n    $(\"Collect removal results\").isExecuted,\n    (\n      Array.isArray($(\"Collect removal results\").first().json.success)\n        ? $(\"Collect removal results\").first().json.success.every(Boolean)\n        : Boolean($(\"Collect removal results\").first().json.success)\n    ),\n    true\n  )\n  &&\n  $if(\n    $(\"Add tags to contact\").isExecuted,\n    Boolean($(\"Add tags to contact\").first().json.success),\n    true\n  )\n}}"}]}},"typeVersion":3.4},{"id":"950d20e7-9950-44f1-b048-1d6f97bde0a2","name":"Collect removal results","type":"n8n-nodes-base.aggregate","position":[1184,432],"parameters":{"options":{},"fieldsToAggregate":{"fieldToAggregate":[{"fieldToAggregate":"success"}]}},"typeVersion":1},{"id":"d0cca038-e52a-44c4-b0ef-fc0d93e77a72","name":"Sticky Note","type":"n8n-nodes-base.stickyNote","position":[1344,144],"parameters":{"color":7,"width":464,"height":496,"content":"## Compute final success (add + remove)"},"typeVersion":1},{"id":"e93a5a83-b597-4201-9a19-25876d907764","name":"Merge","type":"n8n-nodes-base.merge","position":[1408,304],"parameters":{},"typeVersion":3.2}],"active":true,"pinData":{},"settings":{"executionOrder":"v1"},"versionId":"2efaad98-0f14-470f-ba1e-dcb95e7b4076","connections":{"Merge":{"main":[[{"node":"Return result to parent workflow","type":"main","index":0}]]},"Get tag list":{"main":[[{"node":"Compare desired vs current tags","type":"main","index":0}]]},"If tags to add":{"main":[[{"node":"Add tags to contact","type":"main","index":0}]]},"If tags to remove":{"main":[[{"node":"Split tags to remove","type":"main","index":0}]]},"Add tags to contact":{"main":[[{"node":"Merge","type":"main","index":0}]]},"Split tags to remove":{"main":[[{"node":"Remove tag from contact","type":"main","index":0}]]},"Collect removal results":{"main":[[{"node":"Merge","type":"main","index":1}]]},"Remove tag from contact":{"main":[[{"node":"Collect removal results","type":"main","index":0}]]},"Input: Email + Tag names":{"main":[[{"node":"Get tag list","type":"main","index":0}]]},"Compare desired vs current tags":{"main":[[{"node":"If tags to add","type":"main","index":0},{"node":"If tags to remove","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":18,"nodeTypes":{"n8n-nodes-base.set":{"count":1},"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.merge":{"count":1},"n8n-nodes-base.filter":{"count":2},"n8n-nodes-base.splitOut":{"count":1},"n8n-nodes-base.aggregate":{"count":1},"n8n-nodes-base.stickyNote":{"count":7},"n8n-nodes-klicktipp.klicktipp":{"count":3},"n8n-nodes-base.executeWorkflowTrigger":{"count":1}}},"status":"published","readyToDemo":null,"user":{"name":"KlickTipp","username":"KlickTipp","bio":"Reach more people. 100% GDPR compliant. Quickly create automated email campaigns, SMS and marketing automations. Market your knowledge independently of Google & Co., sell lucrative products and activate your customers.","verified":true,"links":["https://www.klicktipp.com/"],"avatar":"https://gravatar.com/avatar/38677fedcb7c47d414fa2b6ecabb1f51a1f0efaecd06f316971632d6c192e2ff?r=pg&d=retro&size=200"},"nodes":[{"id":24,"icon":"file:merge.svg","name":"n8n-nodes-base.merge","codex":{"data":{"alias":["Join","Concatenate","Wait"],"resources":{"generic":[{"url":"https://n8n.io/blog/how-to-sync-data-between-two-systems/","icon":"🏬","label":"How to synchronize data between two systems (one-way vs. two-way sync"},{"url":"https://n8n.io/blog/supercharging-your-conference-registration-process-with-n8n/","icon":"🎫","label":"Supercharging your conference registration process with n8n"},{"url":"https://n8n.io/blog/migrating-community-metrics-to-orbit-using-n8n/","icon":"📈","label":"Migrating Community Metrics to Orbit using n8n"},{"url":"https://n8n.io/blog/build-your-own-virtual-assistant-with-n8n-a-step-by-step-guide/","icon":"👦","label":"Build your own virtual assistant with n8n: A step by step guide"},{"url":"https://n8n.io/blog/sending-automated-congratulations-with-google-sheets-twilio-and-n8n/","icon":"🙌","label":"Sending Automated Congratulations with Google Sheets, Twilio, and n8n "},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.merge/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Merge"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTc3XzUxOCkiPgo8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNDhDMCAyMS40OTAzIDIxLjQ5MDMgMCA0OCAwSDExMkMxMzguNTEgMCAxNjAgMjEuNDkwMyAxNjAgNDhWNTZIMTk2LjI1MkMyNDAuNDM1IDU2IDI3Ni4yNTIgOTEuODE3MiAyNzYuMjUyIDEzNlYxOTJDMjc2LjI1MiAyMTQuMDkxIDI5NC4xNjEgMjMyIDMxNi4yNTIgMjMySDM1MlYyMjRDMzUyIDE5Ny40OSAzNzMuNDkgMTc2IDQwMCAxNzZINDY0QzQ5MC41MSAxNzYgNTEyIDE5Ny40OSA1MTIgMjI0VjI4OEM1MTIgMzE0LjUxIDQ5MC41MSAzMzYgNDY0IDMzNkg0MDBDMzczLjQ5IDMzNiAzNTIgMzE0LjUxIDM1MiAyODhWMjgwSDMxNi4yNTJDMjk0LjE2MSAyODAgMjc2LjI1MiAyOTcuOTA5IDI3Ni4yNTIgMzIwVjM3NkMyNzYuMjUyIDQyMC4xODMgMjQwLjQzNSA0NTYgMTk2LjI1MiA0NTZIMTYwVjQ2NEMxNjAgNDkwLjUxIDEzOC41MSA1MTIgMTEyIDUxMkg0OEMyMS40OTAzIDUxMiAwIDQ5MC41MSAwIDQ2NFY0MDBDMCAzNzMuNDkgMjEuNDkwMyAzNTIgNDggMzUySDExMkMxMzguNTEgMzUyIDE2MCAzNzMuNDkgMTYwIDQwMFY0MDhIMTk2LjI1MkMyMTMuOTI1IDQwOCAyMjguMjUyIDM5My42NzMgMjI4LjI1MiAzNzZWMzIwQzIyOC4yNTIgMjk0Ljc4NCAyMzguODU5IDI3Mi4wNDQgMjU1Ljg1MyAyNTZDMjM4Ljg1OSAyMzkuOTU2IDIyOC4yNTIgMjE3LjIxNiAyMjguMjUyIDE5MlYxMzZDMjI4LjI1MiAxMTguMzI3IDIxMy45MjUgMTA0IDE5Ni4yNTIgMTA0SDE2MFYxMTJDMTYwIDEzOC41MSAxMzguNTEgMTYwIDExMiAxNjBINDhDMjEuNDkwMyAxNjAgMCAxMzguNTEgMCAxMTJWNDhaTTEwNCA0OEMxMDguNDE4IDQ4IDExMiA1MS41ODE3IDExMiA1NlYxMDRDMTEyIDEwOC40MTggMTA4LjQxOCAxMTIgMTA0IDExMkg1NkM1MS41ODE3IDExMiA0OCAxMDguNDE4IDQ4IDEwNFY1NkM0OCA1MS41ODE3IDUxLjU4MTcgNDggNTYgNDhIMTA0Wk00NTYgMjI0QzQ2MC40MTggMjI0IDQ2NCAyMjcuNTgyIDQ2NCAyMzJWMjgwQzQ2NCAyODQuNDE4IDQ2MC40MTggMjg4IDQ1NiAyODhINDA4QzQwMy41ODIgMjg4IDQwMCAyODQuNDE4IDQwMCAyODBWMjMyQzQwMCAyMjcuNTgyIDQwMy41ODIgMjI0IDQwOCAyMjRINDU2Wk0xMTIgNDA4QzExMiA0MDMuNTgyIDEwOC40MTggNDAwIDEwNCA0MDBINTZDNTEuNTgxNyA0MDAgNDggNDAzLjU4MiA0OCA0MDhWNDU2QzQ4IDQ2MC40MTggNTEuNTgxNyA0NjQgNTYgNDY0SDEwNEMxMDguNDE4IDQ2NCAxMTIgNDYwLjQxOCAxMTIgNDU2VjQwOFoiIGZpbGw9IiM1NEI4QzkiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTc3XzUxOCI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Merge","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":38,"icon":"fa:pen","name":"n8n-nodes-base.set","codex":{"data":{"alias":["Set","JS","JSON","Filter","Transform","Map"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-to-automate-your-factorys-incident-reporting-a-step-by-step-guide/","icon":"🏭","label":"Learn to Automate Your Factory's Incident Reporting: A Step by Step Guide"},{"url":"https://n8n.io/blog/2021-the-year-to-automate-the-new-you-with-n8n/","icon":"☀️","label":"2021: The Year to Automate the New You with n8n"},{"url":"https://n8n.io/blog/automatically-pulling-and-visualizing-data-with-n8n/","icon":"📈","label":"Automatically pulling and visualizing data with n8n"},{"url":"https://n8n.io/blog/database-monitoring-and-alerting-with-n8n/","icon":"📡","label":"Database Monitoring and Alerting with n8n"},{"url":"https://n8n.io/blog/automatically-adding-expense-receipts-to-google-sheets-with-telegram-mindee-twilio-and-n8n/","icon":"🧾","label":"Automatically Adding Expense Receipts to Google Sheets with Telegram, Mindee, Twilio, and n8n"},{"url":"https://n8n.io/blog/no-code-ecommerce-workflow-automations/","icon":"store","label":"6 e-commerce workflows to power up your Shopify s"},{"url":"https://n8n.io/blog/how-to-build-a-low-code-self-hosted-url-shortener/","icon":"🔗","label":"How to build a low-code, self-hosted URL shortener in 3 steps"},{"url":"https://n8n.io/blog/automate-your-data-processing-pipeline-in-9-steps-with-n8n/","icon":"⚙️","label":"Automate your data processing pipeline in 9 steps"},{"url":"https://n8n.io/blog/how-to-get-started-with-crm-automation-and-no-code-workflow-ideas/","icon":"👥","label":"How to get started with CRM automation (with 3 no-code workflow ideas"},{"url":"https://n8n.io/blog/5-tasks-you-can-automate-with-notion-api/","icon":"⚡️","label":"5 tasks you can automate with the new Notion API "},{"url":"https://n8n.io/blog/automate-google-apps-for-productivity/","icon":"💡","label":"15 Google apps you can combine and automate to increase productivity"},{"url":"https://n8n.io/blog/how-uproc-scraped-a-multi-page-website-with-a-low-code-workflow/","icon":" 🕸️","label":"How uProc scraped a multi-page website with a low-code workflow"},{"url":"https://n8n.io/blog/building-an-expense-tracking-app-in-10-minutes/","icon":"📱","label":"Building an expense tracking app in 10 minutes"},{"url":"https://n8n.io/blog/the-ultimate-guide-to-automate-your-video-collaboration-with-whereby-mattermost-and-n8n/","icon":"📹","label":"The ultimate guide to automate your video collaboration with Whereby, Mattermost, and n8n"},{"url":"https://n8n.io/blog/5-workflow-automations-for-mattermost-that-we-love-at-n8n/","icon":"🤖","label":"5 workflow automations for Mattermost that we love at n8n"},{"url":"https://n8n.io/blog/learn-to-build-powerful-api-endpoints-using-webhooks/","icon":"🧰","label":"Learn to Build Powerful API Endpoints Using Webhooks"},{"url":"https://n8n.io/blog/how-a-membership-development-manager-automates-his-work-and-investments/","icon":"📈","label":"How a Membership Development Manager automates his work and investments"},{"url":"https://n8n.io/blog/a-low-code-bitcoin-ticker-built-with-questdb-and-n8n-io/","icon":"📈","label":"A low-code bitcoin ticker built with QuestDB and n8n.io"},{"url":"https://n8n.io/blog/how-to-set-up-a-ci-cd-pipeline-with-no-code/","icon":"🎡","label":"How to set up a no-code CI/CD pipeline with GitHub and TravisCI"},{"url":"https://n8n.io/blog/benefits-of-automation-and-n8n-an-interview-with-hubspots-hugh-durkin/","icon":"🎖","label":"Benefits of automation and n8n: An interview with HubSpot's Hugh Durkin"},{"url":"https://n8n.io/blog/how-goomer-automated-their-operations-with-over-200-n8n-workflows/","icon":"🛵","label":"How Goomer automated their operations with over 200 n8n workflows"},{"url":"https://n8n.io/blog/aws-workflow-automation/","label":"7 no-code workflow automations for Amazon Web Services"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.set/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"input\"]","defaults":{"name":"Edit Fields"},"iconData":{"icon":"pen","type":"icon"},"displayName":"Edit Fields (Set)","typeVersion":3,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":565,"icon":"fa:sticky-note","name":"n8n-nodes-base.stickyNote","codex":{"data":{"alias":["Comments","Notes","Sticky"],"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"input\"]","defaults":{"name":"Sticky Note","color":"#FFD233"},"iconData":{"icon":"sticky-note","type":"icon"},"displayName":"Sticky Note","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":834,"icon":"file:code.svg","name":"n8n-nodes-base.code","codex":{"data":{"alias":["cpde","Javascript","JS","Python","Script","Custom Code","Function"],"details":"The Code node allows you to execute JavaScript in your workflow.","resources":{"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.code/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Code"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTEyIiBoZWlnaHQ9IjUxMiIgdmlld0JveD0iMCAwIDUxMiA1MTIiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xMTcxXzQ0MSkiPgo8cGF0aCBkPSJNMTcwLjI4MyA0OEgxOTYuNUMyMDMuMTI3IDQ4IDIwOC41IDQyLjYyNzQgMjA4LjUgMzZWMTJDMjA4LjUgNS4zNzI1OCAyMDMuMTI3IDAgMTk2LjUgMEgxNzAuMjgzQzEyNi4xIDAgOTAuMjgzIDM1LjgxNzIgOTAuMjgzIDgwVjE3NkM5MC4yODMgMjA2LjkyOCA2NS4yMTA5IDIzMiAzNC4yODMgMjMySDIzQzE2LjM3MjYgMjMyIDExIDIzNy4zNzIgMTEgMjQ0VjI2OEMxMSAyNzQuNjI3IDE2LjM3MjQgMjgwIDIyLjk5OTYgMjgwTDM0LjI4MyAyODBDNjUuMjEwOSAyODAgOTAuMjgzIDMwNS4wNzIgOTAuMjgzIDMzNlY0NDBDOTAuMjgzIDQ3OS43NjQgMTIyLjUxOCA1MTIgMTYyLjI4MyA1MTJIMTk2LjVDMjAzLjEyNyA1MTIgMjA4LjUgNTA2LjYyNyAyMDguNSA1MDBWNDc2QzIwOC41IDQ2OS4zNzMgMjAzLjEyNyA0NjQgMTk2LjUgNDY0SDE2Mi4yODNDMTQ5LjAyOCA0NjQgMTM4LjI4MyA0NTMuMjU1IDEzOC4yODMgNDQwVjMzNkMxMzguMjgzIDMwOS4wMjIgMTI4LjAxMSAyODQuNDQzIDExMS4xNjQgMjY1Ljk2MUMxMDYuMTA5IDI2MC40MTYgMTA2LjEwOSAyNTEuNTg0IDExMS4xNjQgMjQ2LjAzOUMxMjguMDExIDIyNy41NTcgMTM4LjI4MyAyMDIuOTc4IDEzOC4yODMgMTc2VjgwQzEzOC4yODMgNjIuMzI2OSAxNTIuNjEgNDggMTcwLjI4MyA0OFoiIGZpbGw9IiNGRjk5MjIiLz4KPHBhdGggZD0iTTMwNSAzNkMzMDUgNDIuNjI3NCAzMTAuMzczIDQ4IDMxNyA0OEgzNDIuOTc5QzM2MC42NTIgNDggMzc0Ljk3OCA2Mi4zMjY5IDM3NC45NzggODBWMTc2QzM3NC45NzggMjAyLjk3OCAzODUuMjUxIDIyNy41NTcgNDAyLjA5OCAyNDYuMDM5QzQwNy4xNTMgMjUxLjU4NCA0MDcuMTUzIDI2MC40MTYgNDAyLjA5OCAyNjUuOTYxQzM4NS4yNTEgMjg0LjQ0MyAzNzQuOTc4IDMwOS4wMjIgMzc0Ljk3OCAzMzZWNDMyQzM3NC45NzggNDQ5LjY3MyAzNjAuNjUyIDQ2NCAzNDIuOTc5IDQ2NEgzMTdDMzEwLjM3MyA0NjQgMzA1IDQ2OS4zNzMgMzA1IDQ3NlY1MDBDMzA1IDUwNi42MjcgMzEwLjM3MyA1MTIgMzE3IDUxMkgzNDIuOTc5QzM4Ny4xNjEgNTEyIDQyMi45NzggNDc2LjE4MyA0MjIuOTc4IDQzMlYzMzZDNDIyLjk3OCAzMDUuMDcyIDQ0OC4wNTEgMjgwIDQ3OC45NzkgMjgwSDQ5MEM0OTYuNjI3IDI4MCA1MDIgMjc0LjYyOCA1MDIgMjY4VjI0NEM1MDIgMjM3LjM3MyA0OTYuNjI4IDIzMiA0OTAgMjMyTDQ3OC45NzkgMjMyQzQ0OC4wNTEgMjMyIDQyMi45NzggMjA2LjkyOCA0MjIuOTc4IDE3NlY4MEM0MjIuOTc4IDM1LjgxNzIgMzg3LjE2MSAwIDM0Mi45NzkgMEgzMTdDMzEwLjM3MyAwIDMwNSA1LjM3MjU4IDMwNSAxMlYzNloiIGZpbGw9IiNGRjk5MjIiLz4KPC9nPgo8ZGVmcz4KPGNsaXBQYXRoIGlkPSJjbGlwMF8xMTcxXzQ0MSI+CjxyZWN0IHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJ3aGl0ZSIvPgo8L2NsaXBQYXRoPgo8L2RlZnM+Cjwvc3ZnPgo="},"displayName":"Code","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"id":9,"name":"Core Nodes"}]},{"id":837,"icon":"fa:sign-out-alt","name":"n8n-nodes-base.executeWorkflowTrigger","codex":{"data":{"resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.executeworkflowtrigger/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"When Executed by Another Workflow","color":"#ff6d5a"},"iconData":{"icon":"sign-out-alt","type":"icon"},"displayName":"Execute Workflow Trigger","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":844,"icon":"fa:filter","name":"n8n-nodes-base.filter","codex":{"data":{"alias":["Router","Filter","Condition","Logic","Boolean","Branch"],"details":"The Filter node can be used to filter items based on a condition. If the condition is met, the item will be passed on to the next node. If the condition is not met, the item will be omitted. Conditions can be combined together by AND(meet all conditions), or OR(meet at least one condition).","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.filter/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Flow","Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Filter","color":"#229eff"},"iconData":{"icon":"filter","type":"icon"},"displayName":"Filter","typeVersion":2,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1236,"icon":"file:aggregate.svg","name":"n8n-nodes-base.aggregate","codex":{"data":{"alias":["Aggregate","Combine","Flatten","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.aggregate/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Aggregate"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjRkY2RDVBIiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTMyIDE0OGMwLTYuNjI3IDUuMzczLTEyIDEyLTEyaDE0NmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJINDRjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6bTAgOTZjMC02LjYyNyA1LjM3My0xMiAxMi0xMmgxNDZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnYyNGMwIDYuNjI3LTUuMzczIDEyLTEyIDEySDQ0Yy02LjYyNyAwLTEyLTUuMzczLTEyLTEyem0wIDk2YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTQ2YzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkg0NGMtNi42MjcgMC0xMi01LjM3My0xMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjxwYXRoIGQ9Ik03NCA3NmMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDExNi4yMTdjMTcuNjczIDAgMzIgMTQuMzI3IDMyIDMydjU2YzAgMjYuOTc4IDEwLjI3MiA1MS41NTcgMjcuMTE5IDcwLjAzOSA1LjA1NSA1LjU0NSA1LjA1NSAxNC4zNzcgMCAxOS45MjItMTYuODQ3IDE4LjQ4Mi0yNy4xMTkgNDMuMDYxLTI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMtMTQuMzI3IDMyLTMyIDMySDg2Yy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTE2LjIxN2M0NC4xODMgMCA4MC0zNS44MTcgODAtODB2LTU2YzAtMzAuOTI4IDI1LjA3Mi01NiA1Ni01NmE1Ljc4MyA1Ljc4MyAwIDAgMCA1Ljc4My01Ljc4M3YtMzYuNDM0YTUuNzgzIDUuNzgzIDAgMCAwLTUuNzgzLTUuNzgzYy0zMC45MjggMC01Ni0yNS4wNzItNTYtNTZ2LTU2YzAtNDQuMTgzLTM1LjgxNy04MC04MC04MEg4NmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0zNzYgMjQ0YzAtNi42MjcgNS4zNzMtMTIgMTItMTJoMTEyYzYuNjI3IDAgMTIgNS4zNzMgMTIgMTJ2MjRjMCA2LjYyNy01LjM3MyAxMi0xMiAxMkgzODhjLTYuNjI3IDAtMTItNS4zNzMtMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48L2c+PGRlZnM+PGNsaXBQYXRoIGlkPSJhIj48cGF0aCBmaWxsPSIjZmZmIiBkPSJNMCAwaDUxMnY1MTJIMHoiLz48L2NsaXBQYXRoPjwvZGVmcz48L3N2Zz4="},"displayName":"Aggregate","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]},{"id":1239,"icon":"file:splitOut.svg","name":"n8n-nodes-base.splitOut","codex":{"data":{"alias":["Split","Nested","Transform","Array","List","Item"],"details":"","resources":{"generic":[],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.splitout/"}]},"categories":["Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Data Transformation"]}}},"group":"[\"transform\"]","defaults":{"name":"Split Out"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI1MTIiIGhlaWdodD0iNTEyIiBmaWxsPSJub25lIj48ZyBmaWxsPSIjOUI2REQ1IiBjbGlwLXBhdGg9InVybCgjYSkiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQ4MCAxNDhjMC02LjYyNy01LjM3My0xMi0xMi0xMkgzMjJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxNDZjNi42MjcgMCAxMi01LjM3MyAxMi0xMnptMCA5NmMwLTYuNjI3LTUuMzczLTEyLTEyLTEySDMyMmMtNi42MjcgMC0xMiA1LjM3My0xMiAxMnYyNGMwIDYuNjI3IDUuMzczIDEyIDEyIDEyaDE0NmM2LjYyNyAwIDEyLTUuMzczIDEyLTEyem0wIDk2YzAtNi42MjctNS4zNzMtMTItMTItMTJIMzIyYy02LjYyNyAwLTEyIDUuMzczLTEyIDEydjI0YzAgNi42MjcgNS4zNzMgMTIgMTIgMTJoMTQ2YzYuNjI3IDAgMTItNS4zNzMgMTItMTJ6IiBjbGlwLXJ1bGU9ImV2ZW5vZGQiLz48cGF0aCBkPSJNNDM4IDc2YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtMTcuNjczIDAtMzIgMTQuMzI3LTMyIDMydjU2YzAgMjYuOTc4LTEwLjI3MiA1MS41NTctMjcuMTE5IDcwLjAzOS01LjA1NSA1LjU0NS01LjA1NSAxNC4zNzcgMCAxOS45MjIgMTYuODQ3IDE4LjQ4MiAyNy4xMTkgNDMuMDYxIDI3LjExOSA3MC4wMzl2NTZjMCAxNy42NzMgMTQuMzI3IDMyIDMyIDMySDQyNmM2LjYyNyAwIDEyIDUuMzczIDEyIDEydjI0YzAgNi42MjctNS4zNzMgMTItMTIgMTJIMzA5Ljc4M2MtNDQuMTgzIDAtODAtMzUuODE3LTgwLTgwdi01NmMwLTMwLjkyOC0yNS4wNzItNTYtNTYtNTZhNS43ODMgNS43ODMgMCAwIDEtNS43ODMtNS43ODN2LTM2LjQzNGE1Ljc4MyA1Ljc4MyAwIDAgMSA1Ljc4My01Ljc4M2MzMC45MjggMCA1Ni0yNS4wNzIgNTYtNTZ2LTU2YzAtNDQuMTgzIDM1LjgxNy04MCA4MC04MEg0MjZjNi42MjcgMCAxMiA1LjM3MyAxMiAxMnoiLz48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMzYgMjQ0YzAtNi42MjctNS4zNzMtMTItMTItMTJIMTJjLTYuNjI3IDAtMTIgNS4zNzMtMTIgMTJ2MjRjMCA2LjYyNyA1LjM3MyAxMiAxMiAxMmgxMTJjNi42MjcgMCAxMi01LjM3MyAxMi0xMnoiIGNsaXAtcnVsZT0iZXZlbm9kZCIvPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImEiPjxwYXRoIGZpbGw9IiNmZmYiIGQ9Ik01MTIgMEgwdjUxMmg1MTJ6Ii8+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+"},"displayName":"Split Out","typeVersion":1,"nodeCategories":[{"id":9,"name":"Core Nodes"}]}],"categories":[{"id":39,"name":"CRM"}],"image":[{"id":4549,"url":"https://n8niostorageaccount.blob.core.windows.net/n8nio-strapi-blobs-prod/assets/image_ecdc97eeb3.png"}]}}