{"workflow":{"id":13621,"name":"Capture vCard QR code contacts with AllCodeRelay and add them to KlickTipp","views":19,"recentViews":0,"totalViews":19,"createdAt":"2026-02-23T09:49:39.928Z","description":"![Transfer scanned vCard QR codes data to KlickTipp.png](fileId:4510)\nCommunity Node Disclaimer: This workflow uses KlickTipp community nodes.\n\n## Introduction\nThis workflow captures **vCard contact data from a scanned QR code** using **AllCodeRelay** and automatically **creates a contact in KlickTipp**. It is built for event lead capture and fast contact transfer: scan a vCard QR code, send the scan result to a webhook, parse the vCard into clean contact fields, and submit the contact to KlickTipp with **Double Opt-In (DOI)**.\n\nThis template is ideal for marketers, sales teams, and event staff who want a frictionless way to digitize business cards and subscribe contacts into KlickTipp in real time.\n\n## How it works\n1. **Trigger: Scan Webhook from AllCodeRelay**\n   - AllCodeRelay sends the scan payload to an n8n webhook endpoint.\n2. **Filter: vCard Only**\n   - Only payloads containing a valid vCard are processed (e.g., `BEGIN:VCARD ... END:VCARD`).\n3. **Parse: vCard → Contact Fields**\n   - Extracts and normalizes these fields for mapping:\n     - `firstName`, `lastName`, `email`, `mobile`, `fax`, `phone`\n     - `company`, `position`\n     - `street`, `city`, `state`, `zip`, `country`\n     - `website`\n4. **KlickTipp: Add Contact with DOI**\n   - Creates or updates the subscriber and triggers DOI.\n\n## Setup Instructions\n1. **AllCodeRelay configuration**\n   - Install AllCodeRelay on your phone.\n   - Create a webhook destination pointing to the n8n webhook URL from Step 2.\n   - Scan a **static vCard QR code**.\n\n2. **n8n configuration**\n   - Open the first node (Webhook) and copy the **Test URL** (or Production URL after publishing).\n   - In AllCodeRelay, paste the URL as the webhook target.\n   - Run a test scan and verify that the workflow receives `BEGIN:VCARD` payloads.\n\n3. **KlickTipp configuration**\n   - Create a segmentation **tag** (e.g., `vCard QR code scan`)\n   - Authenticate your KlickTipp connection with **username/password** credentials (API access required).\n   - Map the parsed fields to the **\"KlickTipp: Add Contact with DOI\"** node.\n   - Select DOI opt-in process and tag **\"vCard QR code scan\"**.\n\n## Notes\n- This template supports **vCard QR codes** where the QR content is the vCard text itself (static/offline vCard).\n- If your QR code resolves to a short URL (dynamic QR), the scan will only return the URL and will not contain embedded vCard data.\n- Extend parsing to support additional vCard fields if needed (e.g., multiple emails, additional addresses).\n","workflow":{"id":"G5K8zclSBhyHKgrPEox1M","meta":{},"name":"Transfer scanned vCard QR codes data to KlickTipp","tags":[{"id":"15wrq9sti6wyqr6J","name":"TEMPLATE","createdAt":"2025-01-08T16:34:30.163Z","updatedAt":"2025-01-08T16:34:30.163Z"}],"nodes":[{"id":"fe60251e-5a6a-44db-97ea-f7f562cadfc3","name":"Documentation","type":"n8n-nodes-base.stickyNote","position":[-1184,-352],"parameters":{"width":695,"height":1164,"content":"Community Node Disclaimer: This workflow uses KlickTipp community nodes.\n\n## Introduction\nThis workflow captures **vCard contact data from a scanned QR code** using **AllCodeRelay** and automatically **creates a contact in KlickTipp**. It is built for event lead capture and fast contact transfer: scan a vCard QR code, send the scan result to a webhook, parse the vCard into clean contact fields, and submit the contact to KlickTipp with **Double Opt-In (DOI)**.\n\nThis template is ideal for marketers, sales teams, and event staff who want a frictionless way to digitize business cards and subscribe contacts into KlickTipp in real time.\n\n## How it works\n1. **Trigger: Scan Webhook from AllCodeRelay**\n   - AllCodeRelay sends the scan payload to an n8n webhook endpoint.\n2. **Filter: vCard Only**\n   - Only payloads containing a valid vCard are processed (e.g., `BEGIN:VCARD ... END:VCARD`).\n3. **Parse: vCard → Contact Fields**\n   - Extracts and normalizes these fields for mapping:\n     - `firstName`, `lastName`, `email`, `mobile`, `fax`, `phone`\n     - `company`, `position`\n     - `street`, `city`, `state`, `zip`, `country`\n     - `website`\n4. **KlickTipp: Add Contact with DOI**\n   - Creates or updates the subscriber and triggers DOI.\n\n## Setup Instructions\n1. **AllCodeRelay configuration**\n   - Install AllCodeRelay on your phone.\n   - Create a webhook destination pointing to the n8n webhook URL from Step 2.\n   - Scan a **static vCard QR code**.\n\n2. **n8n configuration**\n   - Open the first node (Webhook) and copy the **Test URL** (or Production URL after publishing).\n   - In AllCodeRelay, paste the URL as the webhook target.\n   - Run a test scan and verify that the workflow receives `BEGIN:VCARD` payloads.\n\n3. **KlickTipp configuration**\n   - Create a segmentation **tag** (e.g., `vCard QR code scan`)\n   - Authenticate your KlickTipp connection with **username/password** credentials (API access required).\n   - Map the parsed fields to the **\"KlickTipp: Add Contact with DOI\"** node.\n   - Select DOI opt-in process and tag **\"vCard QR code scan\"**.\n\n## Notes\n- This template supports **vCard QR codes** where the QR content is the vCard text itself (static/offline vCard).\n- If your QR code resolves to a short URL (dynamic QR), the scan will only return the URL and will not contain embedded vCard data.\n- Extend parsing to support additional vCard fields if needed (e.g., multiple emails, additional addresses).\n"},"typeVersion":1},{"id":"ff10f325-29df-41b6-9344-f8dced91f5c6","name":"3. Parse data","type":"n8n-nodes-base.stickyNote","position":[-32,-352],"parameters":{"color":7,"width":216,"height":364,"content":"## 3. Parse data"},"typeVersion":1},{"id":"6a51df39-d4a8-4b78-8947-96b1c496af10","name":"4. Save data","type":"n8n-nodes-base.stickyNote","position":[192,-352],"parameters":{"color":7,"width":248,"height":364,"content":"## 4. Save data"},"typeVersion":1},{"id":"b56bab82-0950-4744-b4bb-f5d0d7abfa0f","name":"2. Filter data","type":"n8n-nodes-base.stickyNote","position":[-240,-352],"parameters":{"color":7,"width":200,"height":364,"content":"## 2. Filter data"},"typeVersion":1},{"id":"6fbefa0f-9d6e-4a8f-803e-6e81e7c8318a","name":"1. Get data","type":"n8n-nodes-base.stickyNote","position":[-480,-352],"parameters":{"color":7,"width":232,"height":364,"content":"## 1. Get data"},"typeVersion":1},{"id":"805e3da5-52e2-48a6-9458-e7a6d2a674e7","name":"Filter: vCard Only","type":"n8n-nodes-base.filter","position":[-192,-208],"parameters":{"options":{},"conditions":{"options":{"version":3,"leftValue":"","caseSensitive":true,"typeValidation":"strict"},"combinator":"and","conditions":[{"id":"1bebea66-1800-4d98-b610-9caaf215b579","operator":{"type":"string","operation":"startsWith"},"leftValue":"={{ $json.body.code }}","rightValue":"BEGIN:VCARD"},{"id":"58da7eab-7eb8-4f0c-84e1-cded0e704bf6","operator":{"type":"string","operation":"endsWith"},"leftValue":"={{ $json.body.code }}","rightValue":"END:VCARD"}]}},"typeVersion":2.3},{"id":"ec1aa8d3-2523-469c-b9e1-74cc182d13e7","name":"Parse: vCard → Contact Fields","type":"n8n-nodes-base.code","position":[32,-208],"parameters":{"jsCode":"const items = $input.all();\n\nconst normalize = (s) =>\n  String(s ?? \"\")\n    .replace(/\\r\\n/g, \"\\n\")\n    .replace(/\\r/g, \"\\n\")\n    .trim();\n\n// vCard folded lines: newline + space/tab continues previous line\nconst unfold = (s) => s.replace(/\\n[ \\t]/g, \"\");\n\nconst pickFirst = (arr) => (arr && arr.length ? arr[0].value : \"\");\n\nconst hasParam = (entry, param) =>\n  (entry.params || []).some((p) => String(p).toUpperCase() === param);\n\nconst pickTel = (telEntries, wantedParam) => {\n  if (!telEntries?.length) return \"\";\n  const found = telEntries.find((e) => hasParam(e, wantedParam));\n  return found?.value || \"\";\n};\n\nconst pickEmail = (emailEntries) => {\n  if (!emailEntries?.length) return \"\";\n  // prefer WORK if present, else first\n  const work = emailEntries.find((e) => hasParam(e, \"WORK\"));\n  return (work || emailEntries[0]).value || \"\";\n};\n\nreturn items.map((item) => {\n  const body = item.json.body;\n\n  // Most common shape (your screenshot): body is object and vCard is in body.code\n  const vcardRaw =\n    (typeof body === \"object\" && body?.code) ? body.code :\n    (typeof body === \"string\") ? body :\n    item.json.code || \"\";\n\n  const vcard = unfold(normalize(vcardRaw));\n  if (!vcard.startsWith(\"BEGIN:VCARD\")) throw new Error(\"No vCard found in payload\");\n\n  // Parse into: { KEY: [ { params:[], value:\"...\" }, ... ] }\n  const parsed = {};\n  for (const line of vcard.split(\"\\n\")) {\n    if (!line || line.startsWith(\"BEGIN:\") || line.startsWith(\"END:\") || line.startsWith(\"VERSION:\")) continue;\n\n    const idx = line.indexOf(\":\");\n    if (idx === -1) continue;\n\n    const left = line.slice(0, idx);\n    const value = line.slice(idx + 1).trim();\n\n    const parts = left.split(\";\");\n    const key = parts[0].toUpperCase();\n    const params = parts.slice(1).map((p) => String(p).toUpperCase());\n\n    if (!parsed[key]) parsed[key] = [];\n    parsed[key].push({ params, value });\n  }\n\n  // Name\n  let firstName = \"\";\n  let lastName = \"\";\n\n  const nVal = pickFirst(parsed.N); // \"Last;First;...\"\n  if (nVal) {\n    const [ln = \"\", fn = \"\"] = nVal.split(\";\");\n    firstName = fn;\n    lastName = ln;\n  } else {\n    // fallback: split FN\n    const fn = pickFirst(parsed.FN).trim();\n    if (fn) {\n      const seg = fn.split(/\\s+/);\n      if (seg.length >= 2) {\n        lastName = seg.pop();\n        firstName = seg.join(\" \");\n      } else {\n        firstName = fn;\n      }\n    }\n  }\n\n  // Address (ADR: POBOX;EXT;STREET;CITY;REGION;POSTAL;COUNTRY)\n  const adrVal = pickFirst(parsed.ADR);\n  let street = \"\", city = \"\", state = \"\", zip = \"\", country = \"\";\n  if (adrVal) {\n    const adrParts = adrVal.split(\";\");\n    street = adrParts[2] || \"\";\n    city   = adrParts[3] || \"\";\n    state  = adrParts[4] || \"\";\n    zip    = adrParts[5] || \"\";\n    country= adrParts[6] || \"\";\n  }\n\n  // Phones\n  const tel = parsed.TEL || [];\n  const mobile = pickTel(tel, \"CELL\") || pickTel(tel, \"MOBILE\");\n  const fax = pickTel(tel, \"FAX\");\n  const phone = pickTel(tel, \"WORK\") || pickTel(tel, \"VOICE\") || (tel[0]?.value || \"\");\n\n  // Email / Company / Position / Website\n  const email = pickEmail(parsed.EMAIL);\n  const company = pickFirst(parsed.ORG);\n  const position = pickFirst(parsed.TITLE);\n  const website = pickFirst(parsed.URL);\n\n  return {\n    json: {\n      firstName,\n      lastName,\n      email,\n      mobile,\n      fax,\n      phone,\n      company,\n      position,\n      street,\n      city,\n      state,\n      country,\n      zip,\n      website,\n    },\n  };\n});"},"typeVersion":2},{"id":"15e80a2a-dd05-4d7b-a374-aeef1bcfa6a4","name":"AllCodeRelay: Scan Webhook","type":"n8n-nodes-base.webhook","position":[-416,-208],"webhookId":"f2b94807-3312-4e76-a77c-8110bc7d490a","parameters":{"path":"qr-code-scanner","options":{},"httpMethod":"POST"},"typeVersion":2.1},{"id":"f2ed5fa0-276d-473c-9de1-9feba4679e9d","name":"KlickTipp: Add Contact with DOI","type":"n8n-nodes-klicktipp.klicktipp","position":[256,-208],"parameters":{"email":"={{ $json.email }}","tagId":"14145915","fields":{"dataFields":[{"fieldId":"fieldFirstName","fieldValue":"={{ $json.firstName }}"},{"fieldId":"fieldLastName","fieldValue":"={{ $json.lastName }}"},{"fieldId":"fieldCompanyName","fieldValue":"={{ $json.company }}"},{"fieldId":"fieldPhone","fieldValue":"={{ $json.phone }}"},{"fieldId":"fieldMobilePhone","fieldValue":"={{ $json.mobile }}"},{"fieldId":"fieldFax","fieldValue":"={{ $json.fax }}"},{"fieldId":"fieldWebsite","fieldValue":"={{ $json.website }}"},{"fieldId":"fieldStreet1","fieldValue":"={{ $json.street }}"},{"fieldId":"fieldCity","fieldValue":"={{ $json.city }}"},{"fieldId":"fieldState","fieldValue":"={{ $json.state }}"},{"fieldId":"fieldCountry","fieldValue":"={{ $json.country }}"},{"fieldId":"fieldZip","fieldValue":"={{ $json.zip }}"}]},"listId":"358895","resource":"subscriber","operation":"subscribe","smsNumber":"={{ $json.phone }}"},"credentials":{},"typeVersion":3}],"active":false,"pinData":{},"settings":{"availableInMCP":false,"executionOrder":"v1"},"versionId":"a5c02d70-688a-49bd-baf1-462007049441","connections":{"Filter: vCard Only":{"main":[[{"node":"Parse: vCard → Contact Fields","type":"main","index":0}]]},"AllCodeRelay: Scan Webhook":{"main":[[{"node":"Filter: vCard Only","type":"main","index":0}]]},"Parse: vCard → Contact Fields":{"main":[[{"node":"KlickTipp: Add Contact with DOI","type":"main","index":0}]]}}},"lastUpdatedBy":1,"workflowInfo":{"nodeCount":9,"nodeTypes":{"n8n-nodes-base.code":{"count":1},"n8n-nodes-base.filter":{"count":1},"n8n-nodes-base.webhook":{"count":1},"n8n-nodes-base.stickyNote":{"count":5},"n8n-nodes-klicktipp.klicktipp":{"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":47,"icon":"file:webhook.svg","name":"n8n-nodes-base.webhook","codex":{"data":{"alias":["HTTP","API","Build","WH"],"resources":{"generic":[{"url":"https://n8n.io/blog/learn-how-to-automatically-cross-post-your-content-with-n8n/","icon":"✍️","label":"Learn how to automatically cross-post your content with n8n"},{"url":"https://n8n.io/blog/running-n8n-on-ships-an-interview-with-maranics/","icon":"🛳","label":"Running n8n on ships: An interview with Maranics"},{"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/what-are-apis-how-to-use-them-with-no-code/","icon":" 🪢","label":"What are APIs and how to use them with no code"},{"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/how-a-digital-strategist-uses-n8n-for-online-marketing/","icon":"💻","label":"How a digital strategist uses n8n for online marketing"},{"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/how-to-automatically-give-kudos-to-contributors-with-github-slack-and-n8n/","icon":"👏","label":"How to automatically give kudos to contributors with GitHub, Slack, 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/why-this-product-manager-loves-workflow-automation-with-n8n/","icon":"🧠","label":"Why this Product Manager loves workflow automation with n8n"},{"url":"https://n8n.io/blog/creating-custom-incident-response-workflows-with-n8n/","label":"How to automate every step of an incident response workflow"},{"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/learn-how-to-use-webhooks-with-mattermost-slash-commands/","icon":"🦄","label":"Learn how to use webhooks with Mattermost slash commands"},{"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"}],"primaryDocumentation":[{"url":"https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.webhook/"}]},"categories":["Development","Core Nodes"],"nodeVersion":"1.0","codexVersion":"1.0","subcategories":{"Core Nodes":["Helpers"]}}},"group":"[\"trigger\"]","defaults":{"name":"Webhook"},"iconData":{"type":"file","fileBuffer":"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0OCIgaGVpZ2h0PSI0OCI+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTM1IDM3Yy0yLjIgMC00LTEuOC00LTRzMS44LTQgNC00IDQgMS44IDQgNC0xLjggNC00IDQiLz48cGF0aCBmaWxsPSIjMzc0NzRmIiBkPSJNMzUgNDNjLTMgMC01LjktMS40LTcuOC0zLjdsMy4xLTIuNWMxLjEgMS40IDIuOSAyLjMgNC43IDIuMyAzLjMgMCA2LTIuNyA2LTZzLTIuNy02LTYtNmMtMSAwLTIgLjMtMi45LjdsLTEuNyAxTDIzLjMgMTZsMy41LTEuOSA1LjMgOS40YzEtLjMgMi0uNSAzLS41IDUuNSAwIDEwIDQuNSAxMCAxMFM0MC41IDQzIDM1IDQzIi8+PHBhdGggZmlsbD0iIzM3NDc0ZiIgZD0iTTE0IDQzQzguNSA0MyA0IDM4LjUgNCAzM2MwLTQuNiAzLjEtOC41IDcuNS05LjdsMSAzLjlDOS45IDI3LjkgOCAzMC4zIDggMzNjMCAzLjMgMi43IDYgNiA2czYtMi43IDYtNnYtMmgxNXY0SDIzLjhjLS45IDQuNi01IDgtOS44IDgiLz48cGF0aCBmaWxsPSIjZTkxZTYzIiBkPSJNMTQgMzdjLTIuMiAwLTQtMS44LTQtNHMxLjgtNCA0LTQgNCAxLjggNCA0LTEuOCA0LTQgNCIvPjxwYXRoIGZpbGw9IiMzNzQ3NGYiIGQ9Ik0yNSAxOWMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNCA0IDEuOCA0IDQtMS44IDQtNCA0Ii8+PHBhdGggZmlsbD0iI2U5MWU2MyIgZD0ibTE1LjcgMzQtMy40LTIgNS45LTkuN2MtMi0xLjktMy4yLTQuNS0zLjItNy4zIDAtNS41IDQuNS0xMCAxMC0xMHMxMCA0LjUgMTAgMTBjMCAuOS0uMSAxLjctLjMgMi41bC0zLjktMWMuMS0uNS4yLTEgLjItMS41IDAtMy4zLTIuNy02LTYtNnMtNiAyLjctNiA2YzAgMi4xIDEuMSA0IDIuOSA1LjFsMS43IDF6Ii8+PC9zdmc+"},"displayName":"Webhook","typeVersion":2,"nodeCategories":[{"id":5,"name":"Development"},{"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":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"}]}],"categories":[{"id":37,"name":"Lead Generation"}],"image":[{"id":4510,"url":"https://n8niostorageaccount.blob.core.windows.net/n8nio-strapi-blobs-prod/assets/Transfer_scanned_v_Card_QR_codes_data_to_Klick_Tipp_9e96f8d5fd.png"}]}}