AutomationFlowsGeneral › Resolve and Create Klicktipp Tags From Names with Optional Prefixes

Resolve and Create Klicktipp Tags From Names with Optional Prefixes

ByKlickTipp @KlickTipp on n8n.io

This workflow uses KlickTipp community nodes, available for self-hosted n8n instances only.

Event trigger★★★★☆ complexity17 nodesN8N Nodes KlicktippExecute Workflow Trigger
General Trigger: Event Nodes: 17 Complexity: ★★★★☆ Added:

This workflow corresponds to n8n.io template #13699 — we link there as the canonical source.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "id": "FwFNryEizRyr8yD78weNi",
  "name": "KlickTipp tag manager: resolve & create tags from names",
  "tags": [
    {
      "id": "15wrq9sti6wyqr6J",
      "name": "TEMPLATE",
      "createdAt": "2025-01-08T16:34:30.163Z",
      "updatedAt": "2025-01-08T16:34:30.163Z"
    }
  ],
  "nodes": [
    {
      "id": "5ff44d1d-7c6a-4640-ba43-c63dc98d9fff",
      "name": "Find tags to create",
      "type": "n8n-nodes-base.merge",
      "position": [
        1376,
        16
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "joinMode": "keepNonMatches",
        "outputDataFrom": "input2",
        "fieldsToMatchString": "value"
      },
      "typeVersion": 3.2
    },
    {
      "id": "68a331a6-8f0f-476a-aa78-efaf65359299",
      "name": "Find existing tags",
      "type": "n8n-nodes-base.merge",
      "position": [
        1376,
        -240
      ],
      "parameters": {
        "mode": "combine",
        "options": {},
        "fieldsToMatchString": "value"
      },
      "typeVersion": 3.2
    },
    {
      "id": "269436e9-555f-42b4-b711-586f4b8385de",
      "name": "Combine existing & new tags",
      "type": "n8n-nodes-base.merge",
      "position": [
        1952,
        -112
      ],
      "parameters": {},
      "typeVersion": 3.2
    },
    {
      "id": "571cce04-1614-463c-89dc-63dbccbfac11",
      "name": "Split tagNames into items",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        896,
        32
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "tagNames"
      },
      "typeVersion": 1
    },
    {
      "id": "54bb5dc4-cdb1-4c0d-8c06-df4718723a34",
      "name": "Map tagNames -> value",
      "type": "n8n-nodes-base.set",
      "position": [
        1120,
        32
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "3ba2a4e9-9fbd-4fe4-bc84-3f6cb3a2ff03",
              "name": "value",
              "type": "string",
              "value": "={{ (() => {\n  const prefix = ($('Input: Prefix + tag names').item.json.prefix || '').trim();\n  const tag = String($json.tagNames || '').trim();\n\n  if (!prefix) return tag;\n  return prefix.endsWith(' ') ? prefix + tag : prefix + ' ' + tag;\n})() }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "421aaab3-ab30-45c8-a4f4-2a0d0774127d",
      "name": "Get tag list",
      "type": "n8n-nodes-klicktipp.klicktipp",
      "position": [
        1120,
        -256
      ],
      "parameters": {},
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "7199dbaf-540e-43fd-a0e1-a4dd7744b18f",
      "name": "Create new tag",
      "type": "n8n-nodes-klicktipp.klicktipp",
      "position": [
        1536,
        16
      ],
      "parameters": {
        "name": "={{ $json.value }}",
        "operation": "create"
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "64adf912-f8b2-468d-bbab-ad70498d9e2b",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1888,
        -304
      ],
      "parameters": {
        "color": 7,
        "width": 688,
        "height": 496,
        "content": "## 3. Combine & return tag names"
      },
      "typeVersion": 1
    },
    {
      "id": "20eafcae-ad5a-4fc0-93c9-681f6743b5ba",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1296,
        -48
      ],
      "parameters": {
        "color": 7,
        "width": 576,
        "height": 240,
        "content": "## 2.2. Detect and create missing tags"
      },
      "typeVersion": 1
    },
    {
      "id": "f58ddfa3-dfd6-4365-8b05-56680fea612b",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1296,
        -304
      ],
      "parameters": {
        "color": 7,
        "width": 576,
        "height": 240,
        "content": "## 2.1. Resolve existing tags"
      },
      "typeVersion": 1
    },
    {
      "id": "42c51ab0-531e-4f81-a809-f6c8ca141836",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        864,
        -304
      ],
      "parameters": {
        "color": 7,
        "width": 416,
        "height": 496,
        "content": "## 1. Preparation"
      },
      "typeVersion": 1
    },
    {
      "id": "c6b20033-4dc3-4e5e-bf89-2fb56d68aadc",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        624,
        -304
      ],
      "parameters": {
        "color": 7,
        "width": 224,
        "height": 496,
        "content": "## Input"
      },
      "typeVersion": 1
    },
    {
      "id": "001bc699-3406-486a-a231-35b3b14f24ad",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -48,
        -304
      ],
      "parameters": {
        "width": 656,
        "height": 1712,
        "content": "## Introduction\n\nThis workflow receives an array of tag names, optionally applies a **prefix** to all tags, checks which tags already exist in KlickTipp, creates the missing ones, and returns a unified array of **resolved tag names**. This allows you to reuse the same **get or create tags** logic across multiple automations without duplicating tag-handling logic.\n\nIt\u2019s especially useful when tags are namespaced by a tool or source (for example, `Zoho | Webinar`) and you want to enforce consistent tagging conventions across different workflows.\n\n\n---\n\n## How it works\n\n- Accepts input:\n  - `tagNames[]` \u2014 array of base tag names\n  - `prefix` \u2014 optional string applied to all tag names\n- Splits `tagNames[]` into individual items and builds the **final tag name**:\n  - If `prefix` is provided \u2192 `<prefix><tagName>` (e.g. `Zoho | Webinar`)\n  - If `prefix` is empty \u2192 `<tagName>` (e.g. `Webinar`)\n- Loads the existing KlickTipp tags and matches them by name.\n- Creates tags that do not yet exist.\n- Combines existing and newly created tags.\n- Returns a single aggregated array of **resolved tag names**, without duplicates.\n\n---\n\n## Setup Instructions\n\n### 1) Credentials\n- Configure your **KlickTipp** credentials in the KlickTipp nodes.\n\n### 2) How to call this sub-workflow\n\nFrom a parent workflow, use an **Execute Sub-workflow** node and pass:\n\nWithout prefix  \n```\n{  \n  \"tagNames\": [\"Webinar\", \"Newsletter]  \n}\n```\n\nWith prefix\n```\n{  \n  \"prefix\": \"Zoho | \",  \n  \"tagNames\": [\"Webinar\", \"Newsletter\"]  \n}\n```\n\nResulting tag names resolved or created in KlickTipp:\n- Zoho | Webinar\n- Zoho | Newsletter\n\n---\n\n\n## Output\n\nReturns a unified array of tag names:\n\n```\n{  \n  \"tags\": [\"Zoho | Webinar\", \"Zoho | Newsletter\"]  \n}\n```\n---\n\n## Testing\n\n- Test with a mix of existing and new tag names.\n- Confirm new tags appear in KlickTipp when missing.\n- Verify that the output contains all expected tag names, without duplicates.\n- If a prefix is used, ensure tags are resolved or created under the correct namespace (for example, `Zoho | \u2026`).\n- Reuse the returned `tags[]` in downstream workflows (for example, for filtering, comparison, or further tagging logic)."
      },
      "typeVersion": 1
    },
    {
      "id": "8693e9c6-0bbf-4203-8051-dd38d1045be5",
      "name": "Aggregate tag names",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        2400,
        -112
      ],
      "parameters": {
        "options": {},
        "fieldsToAggregate": {
          "fieldToAggregate": [
            {
              "fieldToAggregate": "tags"
            }
          ]
        }
      },
      "typeVersion": 1
    },
    {
      "id": "5038d685-95aa-490f-9456-3bdb2c71d926",
      "name": "Extract tag name",
      "type": "n8n-nodes-base.set",
      "position": [
        2176,
        -112
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "961d528c-cdd7-42ad-9a19-0e6733bad8f8",
              "name": "tags",
              "type": "string",
              "value": "={{ $json.value }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "d3f50840-6808-49d5-9137-1939588d2501",
      "name": "Input: Prefix + tag names",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        688,
        -112
      ],
      "parameters": {
        "inputSource": "jsonExample",
        "jsonExample": "{\n  \"prefix\": \"Zoho |\",\n  \"tagNames\": [\"Webinar\", \"Newsletter\", \"Lead\"]\n}"
      },
      "typeVersion": 1.1
    },
    {
      "id": "29eacbff-861d-4095-b7c7-991d089a0c04",
      "name": "Set the created tag",
      "type": "n8n-nodes-base.set",
      "position": [
        1712,
        16
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "87abf48e-9a92-4682-8198-aa383163a1ff",
              "name": "id",
              "type": "string",
              "value": "={{ $json.id }}"
            },
            {
              "id": "19e57860-580a-4580-aecb-f2f9a592a1bc",
              "name": "value",
              "type": "string",
              "value": "={{ $('Find tags to create').item.json.value }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    }
  ],
  "active": true,
  "settings": {
    "availableInMCP": false,
    "executionOrder": "v1"
  },
  "versionId": "1b2cb96e-d942-4461-82b8-d5f0211ecf38",
  "connections": {
    "Get tag list": {
      "main": [
        [
          {
            "node": "Find existing tags",
            "type": "main",
            "index": 0
          },
          {
            "node": "Find tags to create",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create new tag": {
      "main": [
        [
          {
            "node": "Set the created tag",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Extract tag name": {
      "main": [
        [
          {
            "node": "Aggregate tag names",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find existing tags": {
      "main": [
        [
          {
            "node": "Combine existing & new tags",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Find tags to create": {
      "main": [
        [
          {
            "node": "Create new tag",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Set the created tag": {
      "main": [
        [
          {
            "node": "Combine existing & new tags",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Map tagNames -> value": {
      "main": [
        [
          {
            "node": "Find existing tags",
            "type": "main",
            "index": 1
          },
          {
            "node": "Find tags to create",
            "type": "main",
            "index": 1
          }
        ]
      ]
    },
    "Input: Prefix + tag names": {
      "main": [
        [
          {
            "node": "Get tag list",
            "type": "main",
            "index": 0
          },
          {
            "node": "Split tagNames into items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split tagNames into items": {
      "main": [
        [
          {
            "node": "Map tagNames -> value",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Combine existing & new tags": {
      "main": [
        [
          {
            "node": "Extract tag name",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

This workflow uses KlickTipp community nodes, available for self-hosted n8n instances only.

Source: https://n8n.io/workflows/13699/ — original creator credit. Request a take-down →

More General workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

General

This workflow uses KlickTipp community nodes, available for self-hosted n8n instances only.

Execute Workflow Trigger, N8N Nodes Klicktipp
General

Agendamiento. Uses n8n-nodes-evolution-api, redis, dataTable, executeWorkflowTrigger. Event-driven trigger; 60 nodes.

N8N Nodes Evolution Api, Redis, Data Table +2
General

Prevent concurrent workflow runs using Redis. Uses executeWorkflowTrigger, manualTrigger, stickyNote, executeWorkflow. Event-driven trigger; 43 nodes.

Execute Workflow Trigger, Redis, Stop And Error
General

This workflow sets a small "lock" value in Redis so that only one copy of a long job can run at the same time. If another trigger fires while the job is still busy, the workflow sees the lock, stops e

Execute Workflow Trigger, Redis, Stop And Error
General

Reputation Engine — Site Refresh. Uses httpRequest, executeWorkflowTrigger. Event-driven trigger; 35 nodes.

HTTP Request, Execute Workflow Trigger