AutomationFlowsGeneral › Ai-powered Contact Management in Klicktipp with Mcp Server

Ai-powered Contact Management in Klicktipp with Mcp Server

ByKlickTipp @KlickTipp on n8n.io

Community Node Disclaimer: This workflow uses KlickTipp community nodes.

Event trigger★★★★★ complexityAI-powered31 nodesMcp TriggerTool CodeN8N Nodes Klicktipp
General Trigger: Event Nodes: 31 Complexity: ★★★★★ AI nodes: yes Added:
Ai-powered Contact Management in Klicktipp with Mcp Server — n8n workflow card showing Mcp Trigger, Tool Code, N8N Nodes Klicktipp integration

This workflow corresponds to n8n.io template #5884 — 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": "j1FtJoAyaYNpmJzT",
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "name": "Manage contacts in KlickTipp via MCP server",
  "tags": [
    {
      "id": "15wrq9sti6wyqr6J",
      "name": "TEMPLATE",
      "createdAt": "2025-01-08T16:34:30.163Z",
      "updatedAt": "2025-01-08T16:34:30.163Z"
    }
  ],
  "nodes": [
    {
      "id": "f77dc3f1-296f-407f-998c-d0c962462c99",
      "name": "MCP Server Trigger",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        -560,
        -260
      ],
      "parameters": {
        "path": "klicktipp-mcp"
      },
      "typeVersion": 1
    },
    {
      "id": "341d39bc-7e6c-487d-9272-1d5820c054b1",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2340,
        -280
      ],
      "parameters": {
        "width": 580,
        "height": 1680,
        "content": "### How It Works\n\n**AI-Driven Contact Management with MCP and KlickTipp Integration:**\nThis workflow connects an MCP Server with the KlickTipp contact management platform and integrates it with an LLM (e.g. Claude etc.) to enable intelligent querying and segmentation of contact data. It covers all major KlickTipp API endpoints, providing a comprehensive toolkit for automated contact handling and campaign targeting.\n\n### Key Features\n**MCP Server Trigger:**\n- Initiates the workflow via the MCP server, listening for incoming requests related to contact queries or segmentation actions.\n\n\n**LLM Interaction Setup:**\n- Interacts with an OpenAI or Claude model to handle natural language queries such as contact lookups, tagging, and segmentation tasks.\n\n\n**KlickTipp Integration:**\nComplete set of KlickTipp API endpoints included:\n  - **Contact Management:** Add, update, get, list, delete, and unsubscribe contacts.\n  - **Contact Tagging:** Tag, untag, list tagged contacts.\n  - **Tag Operations:** Create, get, update, delete, list tags.\n  - **Opt-In Processes:** List and retrieve opt-in process details.\n  - **Data Fields:** List and get custom data fields.\n  - **Redirects:** Retrieve redirect URLs.\n\n\n**Use Cases Supported:**\n- Query contact information via email or name.\n- Identify and segment contacts by city, region, or behavior.\n- Create or update contacts from the provided data.\n- Dynamically apply or remove tags to initiate campaigns.\n- Automate targeted outreach based on contact attributes.\n\n\n### Setup Instructions\n**Install and Configure Nodes:**\n- Set up MCP Server.\n- Configure the LLM connection (e.g., Claude Desktop configuration).\n- Add and authenticate all KlickTipp nodes using valid API credentials.\n\n\n**Define Tagging and Field Mapping:**\n- Identify which fields and tags are relevant to your use cases.\n- Ensure necessary tags and custom fields are already created in KlickTipp.\n\n\n**Workflow Logic:**\n1. **Trigger via MCP Server:** A prompt or webhook call activates the server listener.\n2. **Query Handling via LLM Agent:** AI interprets the natural language input and determines the action.\n3. **Contact Search & Segmentation:** Searches contacts using identifiers (email, address) or criteria.\n4. **Data Operations:** Retrieves, updates, or manages contact and tag data based on interpreted command.\n5. **Campaign Preparation:** Applies tags or sends campaign triggers depending on query results.\n\n\n**Benefits:**\n- **AI-Powered Automation:** Reduces manual contact search and tagging efforts through intelligent processing.\n- **Scalable Integration:** Built-in support for full range of KlickTipp operations allows diverse use-case handling.\n- **Data Consistency:** Ensures structured data flows between MCP, AI, and KlickTipp, minimizing errors.\n\n\n**Testing and Deployment:**\nUse defined prompts such as:\n- \u201cTell me something about the contact with email address X\u201d\n- \u201cTag all contacts from region Y\u201d\n- \u201cSend campaign Z to customers in area A\u201d\nValidate expected actions in KlickTipp after prompt execution.\n\n\n**Notes:**\n- **Customization:** Adjust tag logic, AI prompts, and contact field mappings based on project needs.\n- **Extensibility:** The template can be expanded with further logic for Google Sheets input or campaign feedback loops"
      },
      "typeVersion": 1
    },
    {
      "id": "5bf83c00-cfb6-442e-8a5f-adda11bcb3a6",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -700,
        20
      ],
      "parameters": {
        "color": 7,
        "width": 640,
        "height": 420,
        "content": "## Contact Management"
      },
      "typeVersion": 1
    },
    {
      "id": "d29e652f-41f8-4470-8279-1fd93dc8d251",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1720,
        20
      ],
      "parameters": {
        "color": 7,
        "width": 300,
        "height": 240,
        "content": "## Opt-in Processes\n"
      },
      "typeVersion": 1
    },
    {
      "id": "19fc7ac8-b04b-4a64-84b3-fc725097ac7f",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        220,
        20
      ],
      "parameters": {
        "color": 7,
        "width": 620,
        "height": 220,
        "content": "## Tag Operations\n"
      },
      "typeVersion": 1
    },
    {
      "id": "126266e7-aa4b-429c-8af6-6c01c5fbe047",
      "name": "Sticky Note11",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1380,
        20
      ],
      "parameters": {
        "color": 7,
        "width": 300,
        "height": 240,
        "content": "## Data Fields\n"
      },
      "typeVersion": 1
    },
    {
      "id": "c7a6da61-07a5-4cb2-ac01-569976db2d5b",
      "name": "Sticky Note12",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1040,
        20
      ],
      "parameters": {
        "color": 7,
        "width": 300,
        "height": 240,
        "content": "## Contact Tagging\n"
      },
      "typeVersion": 1
    },
    {
      "id": "6585112d-c646-4374-94f4-221bb797a915",
      "name": "Sticky Note13",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -20,
        20
      ],
      "parameters": {
        "color": 7,
        "width": 200,
        "height": 220,
        "content": "## Redirects\n"
      },
      "typeVersion": 1
    },
    {
      "id": "2bdb8896-4f51-4f70-a0b9-6592272aa201",
      "name": "Timestamp to date",
      "type": "@n8n/n8n-nodes-langchain.toolCode",
      "onError": "continueRegularOutput",
      "position": [
        920,
        100
      ],
      "parameters": {
        "jsCode": "const raw = query;\nconst secs = Number(raw);\nconst isTimestamp = Number.isFinite(secs) && /^[+-]?\\d{8,13}$/.test(String(raw));\n\nif (!isTimestamp) {\n  return '';\n}\n\nconst ms = secs * 1000;\n\nconst formatted = DateTime\n  .fromMillis(ms, { zone: 'UTC' })\n  .setZone('Europe/Berlin')\n  .toFormat('dd.MM.yyyy HH:mm:ss ZZZ');\n\nreturn String(formatted);",
        "description": "Call this tool to convert an incoming Unix\u2010seconds timestamp to a UTC date string."
      },
      "typeVersion": 1.2,
      "alwaysOutputData": false
    },
    {
      "id": "a184f160-951a-4b64-8dc0-41a143b6b2b4",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        880,
        20
      ],
      "parameters": {
        "color": 7,
        "width": 360,
        "height": 220,
        "content": "## Additional Tools"
      },
      "typeVersion": 1
    },
    {
      "id": "d67f04aa-5821-4ab0-b68f-e33eac33338f",
      "name": "Date to timestamp",
      "type": "@n8n/n8n-nodes-langchain.toolCode",
      "position": [
        1100,
        100
      ],
      "parameters": {
        "jsCode": "const raw = query || 'N/A';\n\nconst formats = [\n  'd.LL.yyyy HH:mm:ss',\n  'd.LL.yyyy',           \n  'd LLLL yyyy HH:mm:ss',\n  'd LLLL yyyy',  \n  'd LLL yyyy',\n  'yyyy-MM-dd',\n  'LLLL d, yyyy',\n  'd-M-yyyy',\n];\n\nlet dt = null;\nfor (const fmt of formats) {\n  dt = DateTime.fromFormat(raw, fmt, {\n    zone  : 'Europe/Berlin',\n    locale: 'en',\n  });\n  if (dt.isValid) break;\n}\n\nif (!dt?.isValid) {\n  dt = DateTime.fromISO(raw, { zone: 'Europe/Berlin' });\n}\n\nif (!dt?.isValid) {\n  dt = DateTime.fromSQL?.(raw, { zone: 'Europe/Berlin' });\n}\n\nif (!dt?.isValid) {\n  return 'N/A';\n}\n\nconst timestamp = Math.floor(dt.toUTC().toSeconds());\n\nreturn timestamp;",
        "description": "Call this tool to converts a human-readable date string (e.g. 05.05.2025 01:00:00) into a Unix timestamp in seconds.\nPass the date through the parameter `query` as a string."
      },
      "typeVersion": 1.2,
      "alwaysOutputData": true
    },
    {
      "id": "bc2ddd85-5df9-412e-ba4f-cefea205bde5",
      "name": "Get Contact ID",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        -180,
        100
      ],
      "parameters": {
        "email": "={{ $fromAI(\"email\", \"The contact's email address.\", \"string\", \"\") }}",
        "resource": "subscriber",
        "operation": "search",
        "descriptionType": "manual",
        "toolDescription": "Returns the contact ID for an email address."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "a16c8d05-433e-4459-a0a9-3c4453f2c86a",
      "name": "Get Contact",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        -340,
        100
      ],
      "parameters": {
        "resource": "subscriber",
        "operation": "get",
        "subscriberId": "={{ $fromAI(\"contactId\", \"The contact's ID\", \"string\", \"\") }}",
        "descriptionType": "manual",
        "toolDescription": "Returns the complete data of a contact by ID."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "65dcfb83-65c7-48d6-8f8f-3a8be88c00ea",
      "name": "Add or Update Contact",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        -500,
        100
      ],
      "parameters": {
        "email": "={{ $fromAI(\"email\", \"The contact's email address.\", \"string\", \"\") }}",
        "tagId": "={{ $fromAI(\"tagId\", \"The tag ID.\", \"number\", \"\") }}",
        "fields": {
          "dataFields": [
            {
              "fieldId": "fieldFirstName",
              "fieldValue": "={{ $fromAI(\"fieldFirstName\", \"Contact\u2019s first name.\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldLastName",
              "fieldValue": "={{ $fromAI(\"fieldLastName\", \"Contact\u2019s last name.\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldCompanyName",
              "fieldValue": "={{ $fromAI(\"fieldCompany\", \"Contact\u2019s company name.\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldStreet1",
              "fieldValue": "={{ $fromAI(\"fieldAddress1\", \"Contact\u2019s primary street address\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldStreet2",
              "fieldValue": "={{ $fromAI(\"fieldAddress2\", \"Contact\u2019s secondary street address\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldCity",
              "fieldValue": "={{ $fromAI(\"fieldCity\", \"Contact\u2019s city\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldState",
              "fieldValue": "={{ $fromAI(\"fieldState\", \"Contact\u2019s state or region\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldZip",
              "fieldValue": "={{ $fromAI(\"fieldZip\", \"Contact\u2019s ZIP or postal code\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldCountry",
              "fieldValue": "={{ $fromAI(\"fieldCountry\", \"Contact\u2019s country\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldMobilePhone",
              "fieldValue": "={{ $fromAI(\"fieldMobilePhone\", \"Contact\u2019s mobile phone in international format starting with '00' (e.g., 00491631737743)\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldPrivatePhone",
              "fieldValue": "={{ $fromAI(\"fieldPrivatePhone\", \"Contact\u2019s private phone in international format starting with '00' (e.g., 00491631737743)\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldFax",
              "fieldValue": "={{ $fromAI(\"fieldFax\", \"Contact\u2019s fax number in international format starting with '00' (e.g., 0049301234567)\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldBirthday",
              "fieldValue": "={{ $fromAI(\n     \"fieldBirthday\",\n     \"Unix seconds for the contact\u2019s birthday \u2014 supply **only** when the user explicitly asks to set a birthday (keywords: birthday / birth date / set birthday). Otherwise leave undefined.\",\n     \"number\",\n     undefined\n) ?? undefined }}"
            },
            {
              "fieldId": "fieldLeadValue",
              "fieldValue": "={{ $fromAI(\"fieldLeadValue\", \"Estimated lead value as a number\", \"number\", \"\") }}"
            },
            {
              "fieldId": "fieldWebsite",
              "fieldValue": "={{ $fromAI(\"fieldWebsite\", \"Contact\u2019s website URL\", \"string\", \"\") }}"
            }
          ]
        },
        "listId": "={{ $fromAI(\"optInId\", \"The opt-in process ID.\", \"number\", \"\") }}",
        "resource": "subscriber",
        "operation": "subscribe",
        "smsNumber": "={{ $fromAI(\"smsNumber\", \"The contact's SMS number.\", \"string\", \"\") }}",
        "descriptionType": "manual",
        "toolDescription": "Adds a new contact. If a contact with the same email already exists, it will be updated."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "d1d2384f-d798-41e7-9af1-01b2fe787b94",
      "name": "List Contacts",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        -660,
        100
      ],
      "parameters": {
        "resource": "subscriber",
        "descriptionType": "manual",
        "toolDescription": "Fetch contact IDs"
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "0a1a32e3-88c9-4a37-82b9-0d52f9284119",
      "name": "Update Contact",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        -660,
        280
      ],
      "parameters": {
        "email": "={{ $fromAI(\"email\", \"The contact's email address.\", \"string\", \"\") }}",
        "fields": {
          "dataFields": [
            {
              "fieldId": "fieldFirstName",
              "fieldValue": "={{ $fromAI(\"fieldFirstName\", \"Contact\u2019s first name.\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldLastName",
              "fieldValue": "={{ $fromAI(\"fieldLastName\", \"Contact\u2019s last name.\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldCompanyName",
              "fieldValue": "={{ $fromAI(\"fieldCompany\", \"Contact\u2019s company name.\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldStreet1",
              "fieldValue": "={{ $fromAI(\"fieldAddress1\", \"Contact\u2019s primary street address\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldStreet2",
              "fieldValue": "={{ $fromAI(\"fieldAddress2\", \"Contact\u2019s secondary street address\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldCity",
              "fieldValue": "={{ $fromAI(\"fieldCity\", \"Contact\u2019s city\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldState",
              "fieldValue": "={{ $fromAI(\"fieldState\", \"Contact\u2019s state or region\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldZip",
              "fieldValue": "={{ $fromAI(\"fieldZip\", \"Contact\u2019s ZIP or postal code\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldCountry",
              "fieldValue": "={{ $fromAI(\"fieldCountry\", \"Contact\u2019s country\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldPrivatePhone",
              "fieldValue": "={{ $fromAI(\"fieldPrivatePhone\", \"Contact\u2019s private phone in international format starting with '00' (e.g., 00491631737743)\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldMobilePhone",
              "fieldValue": "={{ $fromAI(\"fieldMobilePhone\", \"Contact\u2019s mobile phone in international format starting with '00' (e.g., 00491631737743)\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldFax",
              "fieldValue": "={{ $fromAI(\"fieldFax\", \"Contact\u2019s fax number in international format starting with '00' (e.g., 0049301234567)\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldWebsite",
              "fieldValue": "={{ $fromAI(\"fieldWebsite\", \"Contact\u2019s website URL\", \"string\", \"\") }}"
            },
            {
              "fieldId": "fieldBirthday",
              "fieldValue": "={{ $fromAI(\"fieldBirthday\", \"Contact\u2019s birthday as Unix seconds.\", \"number\", \"\") }}"
            },
            {
              "fieldId": "fieldLeadValue",
              "fieldValue": "={{ $fromAI(\"fieldLeadValue\", \"Estimated lead value as a number\", \"number\", \"\") }}"
            }
          ]
        },
        "resource": "subscriber",
        "operation": "update",
        "smsNumber": "={{ $fromAI(\"smsNumber\", \"The contact's SMS number.\", \"string\", \"\") }}",
        "subscriberId": "={{ $fromAI(\"contactId\", \"The contact's ID.\", \"number\", \"\") }}",
        "descriptionType": "manual",
        "toolDescription": "Updates a contact by contact ID."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "5bbf6355-3037-4d59-b893-f6de4e3e4527",
      "name": "Delete Contact",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        -500,
        280
      ],
      "parameters": {
        "resource": "subscriber",
        "operation": "delete",
        "subscriberId": "={{ $fromAI(\"contactId\", \"The contact's ID.\", \"string\", \"\") }}",
        "descriptionType": "manual",
        "toolDescription": "Deletes a contact."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "49313a57-acc9-4244-b273-ffbf86c9b625",
      "name": "Unsubscribe Contact",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        -340,
        280
      ],
      "parameters": {
        "email": "={{ $fromAI(\"email\", \"The contact's email address.\", \"string\", \"\") }}",
        "resource": "subscriber",
        "operation": "unsubscribe",
        "descriptionType": "manual",
        "toolDescription": "Unsubscribes a contact, preventing further communication."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "f23efcff-e9a1-4e28-9005-4d3e2d217ca9",
      "name": "List Tagged Contacts",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        -180,
        280
      ],
      "parameters": {
        "tagId": "={{ $fromAI(\"tagId\", \"The tag ID.\", \"number\", \"\") }}",
        "resource": "subscriber",
        "operation": "tagged",
        "descriptionType": "manual",
        "toolDescription": "Lists the IDs and tagging timestamps of all tagged contacts."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "3b4d7467-faf8-4c9a-a80d-23154008544b",
      "name": "Tag Contact",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        -860,
        100
      ],
      "parameters": {
        "email": "={{ $fromAI(\"email\", \"The contact's email address.\", \"string\", \"\") }}",
        "tagId": "={{ \n  JSON.parse(\n    $fromAI(\n      \"tagIds\",\n      \"Return ONLY a JSON array of numeric tag IDs. \"\n      + \"Absolutely nothing else \u2014 no markdown, no back-ticks. \"\n      + \"Example: [12042204,12054769]\",\n      \"string\"\n    )\n  )\n  .map(Number)\n}}\n",
        "resource": "contact-tagging",
        "descriptionType": "manual",
        "toolDescription": "Adds one or more tags to a contact.\nYou can pass a single tag or a list of tags to apply multiple tags in one call."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "906017de-8a73-4e2d-892c-79792e3e4f26",
      "name": "Untag Contact",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        -1000,
        100
      ],
      "parameters": {
        "email": "={{ $fromAI(\"email\", \"The contact's email address.\", \"string\", \"\") }}",
        "tagId": "={{ $fromAI(\"tagId\", \"The tag ID.\", \"number\", \"\") }}",
        "resource": "contact-tagging",
        "operation": "untag",
        "descriptionType": "manual",
        "toolDescription": "Removes a tag from a contact."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "b45bfda8-7a10-4456-bd16-cf7254eec398",
      "name": "Get Data Field",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        -1200,
        100
      ],
      "parameters": {
        "resource": "field",
        "operation": "get",
        "apiFieldId": "={{ $fromAI(\"fieldId\", \"The data field ID.\", \"string\", \"\") }}",
        "descriptionType": "manual",
        "toolDescription": "Gets the ID and the name of a data field."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "1c33eb1b-f0e7-4e76-ba2e-925737a80196",
      "name": "List Data Fields",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        -1340,
        100
      ],
      "parameters": {
        "resource": "field",
        "descriptionType": "manual",
        "toolDescription": "Lists the IDs and names of all data fields."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "53627bbf-b097-4e58-b1cc-1013c1f00481",
      "name": "List Opt-in Processes",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        -1700,
        100
      ],
      "parameters": {
        "resource": "opt-in",
        "descriptionType": "manual",
        "toolDescription": "Lists the IDs and names of all opt-in processes."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "e7de706e-00c8-4b63-a703-8fbe30a03303",
      "name": "Get Opt-in Process",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        -1560,
        100
      ],
      "parameters": {
        "listId": "={{ $fromAI(\"optInId\", \"The opt-in process ID.\", \"number\", \"\") }}",
        "resource": "opt-in",
        "operation": "get",
        "descriptionType": "manual",
        "toolDescription": "Returns the complete data of an opt-in process by ID."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "ee7e4a59-fc33-4315-80e0-b30b914e9749",
      "name": "Get Redirect URL",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        40,
        100
      ],
      "parameters": {
        "email": "={{ $fromAI(\"email\", \"The contact's email address.\", \"string\", \"\") }}",
        "listId": "={{ $fromAI(\"optInId\", \"The opt-in process ID.\", \"number\", \"\") }}",
        "resource": "opt-in",
        "operation": "getRedirect",
        "descriptionType": "manual",
        "toolDescription": "Gets the redirection URL for a specific opt-in process."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "5741d612-c22b-4395-8ab1-f037f4d17381",
      "name": "List Tags",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        260,
        100
      ],
      "parameters": {
        "descriptionType": "manual",
        "toolDescription": "Lists the IDs and names of all tags."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "2f8e5766-d62a-4252-ac5b-41a6c2bf7dc4",
      "name": "Create Tag",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        380,
        100
      ],
      "parameters": {
        "name": "={{ $fromAI(\"tagName\", \"The tag name\", \"string\", \"\") }}",
        "operation": "create",
        "description": "={{ $fromAI(\"tagDescription\", \"The tag description\", \"string\", \"\") }}",
        "descriptionType": "manual",
        "toolDescription": "Creates a new manual tag."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "7597bdf8-033b-40ac-8a3f-3729bbf94d92",
      "name": "Get Tag",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        500,
        100
      ],
      "parameters": {
        "tagId": "={{ $fromAI(\"tagId\", \"The tag ID\", \"number\", \"\") }}",
        "operation": "get",
        "descriptionType": "manual",
        "toolDescription": "Returns the name and description of a tag."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "4e50743f-af39-4f28-9125-0df08802dc10",
      "name": "Delete Tag",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        620,
        100
      ],
      "parameters": {
        "tagId": "={{ $fromAI(\"tagId\", \"The tag ID\", \"number\", \"\") }}",
        "operation": "delete",
        "descriptionType": "manual",
        "toolDescription": "Deletes a tag."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    },
    {
      "id": "054c7fcb-efff-4ce0-ac95-70514385c6f0",
      "name": "Update Tag",
      "type": "n8n-nodes-klicktipp.klicktippTool",
      "position": [
        740,
        100
      ],
      "parameters": {
        "name": "={{ $fromAI(\"tagName\", \"The tag name\", \"string\", \"\") }}",
        "tagId": "={{ $fromAI(\"tagId\", \"The tag ID\", \"number\", \"\") }}",
        "operation": "update",
        "description": "={{ $fromAI(\"tagDescription\", \"The tag description\", \"string\", \"\") }}",
        "descriptionType": "manual",
        "toolDescription": "Updates a tag."
      },
      "credentials": {
        "klickTippApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2
    }
  ],
  "active": true,
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "6b23235b-34c2-4d5b-a73c-297929347484",
  "connections": {
    "Get Tag": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "List Tags": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Create Tag": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Delete Tag": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Update Tag": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get Contact": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Tag Contact": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "List Contacts": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Untag Contact": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Delete Contact": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get Contact ID": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get Data Field": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Update Contact": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get Redirect URL": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "List Data Fields": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Date to timestamp": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Timestamp to date": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get Opt-in Process": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Unsubscribe Contact": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "List Tagged Contacts": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Add or Update Contact": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "List Opt-in Processes": {
      "ai_tool": [
        [
          {
            "node": "MCP Server Trigger",
            "type": "ai_tool",
            "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

Community Node Disclaimer: This workflow uses KlickTipp community nodes.

Source: https://n8n.io/workflows/5884/ — 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

Stickynote Executeworkflow. Uses executeWorkflowTrigger, stickyNote, mcpTrigger, toolCode. Event-driven trigger; 16 nodes.

Execute Workflow Trigger, Mcp Trigger, Tool Code +1
General

Need help? Want access to this workflow + many more paid workflows + live Q&A sessions with a top verified n8n creator?

Mcp Trigger, Monica Crm Tool
General

Need help? Want access to this workflow + many more paid workflows + live Q&A sessions with a top verified n8n creator?

Mcp Trigger, Harvest Tool
General

Need help? Want access to this workflow + many more paid workflows + live Q&A sessions with a top verified n8n creator?

Mcp Trigger, Misp Tool
General

Need help? Want access to this workflow + many more paid workflows + live Q&A sessions with a top verified n8n creator?

Mcp Trigger, Trello Tool