This workflow corresponds to n8n.io template #10295 — 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 →
{
"id": "dpF5kAGQJ1VEqMOW",
"name": "Synchronize Events & Attendees Between KlickTipp and Google Calendar",
"tags": [
{
"id": "15wrq9sti6wyqr6J",
"name": "TEMPLATE",
"createdAt": "2025-01-08T16:34:30.163Z",
"updatedAt": "2025-01-08T16:34:30.163Z"
}
],
"nodes": [
{
"id": "96a03b91-f33e-4c2b-b023-bf6b6f61b616",
"name": "1. Get event data.",
"type": "n8n-nodes-base.stickyNote",
"position": [
128,
-880
],
"parameters": {
"color": 7,
"width": 256,
"height": 2448,
"content": "## 1. Get event data."
},
"typeVersion": 1
},
{
"id": "b7194548-a42f-4637-b501-f2f3bb5d8823",
"name": "2. Segregate attendees.",
"type": "n8n-nodes-base.stickyNote",
"position": [
400,
-880
],
"parameters": {
"color": 7,
"width": 288,
"height": 2448,
"content": "## 2. Segregate attendees."
},
"typeVersion": 1
},
{
"id": "97735aa7-827c-4073-9428-8c087af11baa",
"name": "5. Check for contact.",
"type": "n8n-nodes-base.stickyNote",
"position": [
1296,
-880
],
"parameters": {
"color": 7,
"width": 272,
"height": 2448,
"content": "## 5. Check for contact."
},
"typeVersion": 1
},
{
"id": "1d5ac6a6-0c4c-4d8c-9e2a-883b42c6ddd5",
"name": "Documentation",
"type": "n8n-nodes-base.stickyNote",
"position": [
-624,
-880
],
"parameters": {
"width": 727,
"height": 2012,
"content": "Community Node Disclaimer: This workflow uses KlickTipp community nodes.\n\n## Introduction\nThis workflow creates a complete two-way synchronization between **KlickTipp** and **Google Calendar**. \nWhen a contact in KlickTipp is tagged, an event is automatically created in Google Calendar. \nIf event status changes or if attendees respond, their RSVP status and event status are reflected in KlickTipp \u2014 keeping your contact database, campaigns, and event insights always up to date.\n\nPerfect for marketers, coaches, or event organizers who want to automatically send event invites and instantly capture participation status without manual updates.\n\n## How it works\n### Google Calendar \u2192 KlickTipp:\nThis template keeps your KlickTipp list in sync with Google Calendar across the **full event lifecycle**. \nFor every incoming event, the workflow follows these steps:\n\n1. **Watch Google Calendar events**\n - Listens for:\n - **Event Created**\n - **Event Updated**\n - **Event Cancelled**\n\n2. **Iterate through attendees**\n - Each attendee is handled as a separate item.\n - This ensures accurate contact updates and tagging even for large events or webinars.\n\n3. **Filter attendees (optional)**\n - Attendees from internal or excluded email domains can be filtered out before any processing.\n\n4. **Check if the attendee already exists in KlickTipp**\n - If the contact exists \u2192 update the contact.\n - If the contact does not exist \u2192 subscribe the contact (with Single or Double Opt-In, depending on action).\n\n5. **Transfer event data to KlickTipp**\n - Event details (summary, description, location, start and end time) are written into KlickTipp custom fields.\n - Contacts always reflect the most recent event information.\n\n6. **Route by attendee response status**\n - Attendees are routed based on their `responseStatus`:\n - `needsAction` \u2192 contact was added to an event\n - `accepted` \u2192 **event confirmed**\n - `declined` \u2192 **event declined**\n - `tentative` \u2192 **event considered**\n\n7. **Apply tags in KlickTipp**\n - Based on event type and attendee status, the workflow applies the corresponding tags:\n - Event created / updated\n - Event canceled\n - Event confirmed\n - Event declined\n - Event considered\n\n### KlickTipp \u2192 Google Calendar:\n- Watches for a tag like **\u201cSend an event invitation via Google Calendar\u201d**.\n- Creates an event in Google Calendar using mapped KlickTipp fields.\n\n## Setup Instructions\n1. **KlickTipp Preparation**\n - Prepare **custom fields**\n - `Google Calendar | event summary`, data type: \"Single line\"\n - `Google Calendar | event description`, data type: \"Single line\"\n - `Google Calendar | event location`, data type: \"Single line\"\n - `Google Calendar | event start datetime`, data type: \"Datetime\"\n - `Google Calendar | event end datetime`, data type: \"Datetime\" \n - Prepare **tags**:\n - `Google Calendar | event created/updated`\n - `Google Calendar | event canceled`\n - `Google Calendar | event declined`\n - `Google Calendar | event confirmed` \n - `Google Calendar | event considered` \n - `Send an event invitation via Google Calendar`\n - Prepare **outbound**:\n - **Activation tag:** `Send an event invitation via Google Calendar`\n - **Activation URL:** webhook URL from trigger\n\n2. **Credential Configuration**\n - Connect your Google Calendar account using **Client ID** and **Client Secret** from the Google Cloud.\n - Authenticate your KlickTipp connection with **username/password** credentials (API access required).\n\n## Customization\n- Recommended poll frequency: every 1\u20135 minutes for near real-time updates.\n- Adjust to your local timezone if necessary. \n- Each trigger works independently, allowing partial deployments if only certain event types are needed. \n- Ensure **End > Start** in your data. If you prefer a fixed duration, compute End from Start + minutes in a Date & Time node. \n- If you want a Meet link, enable \u201cAdd Google Meet video conferencing\u201d in the Calendar node instead of pasting a Calendar URL into Location."
},
"typeVersion": 1
},
{
"id": "220625ca-fcfd-4d74-ae69-429572f2b1a1",
"name": "Transfer attendees cancellations",
"type": "n8n-nodes-klicktipp.klicktipp",
"position": [
2224,
1024
],
"parameters": {
"email": "={{ $json.attendees.email }}",
"tagId": [
""
],
"resource": "contact-tagging"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "5ee831f3-60a6-4715-badc-9401078f5b03",
"name": "Sticky Note9",
"type": "n8n-nodes-base.stickyNote",
"position": [
704,
-880
],
"parameters": {
"color": 7,
"width": 288,
"height": 2448,
"content": "## 3. Filter attendees."
},
"typeVersion": 1
},
{
"id": "2a175aa1-b972-4b54-ae84-e9dab4324d5a",
"name": "Watch updated Google Calendar events",
"type": "n8n-nodes-base.googleCalendarTrigger",
"position": [
208,
432
],
"parameters": {
"options": {
"matchTerm": ""
},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "eventUpdated",
"calendarId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultName": ""
}
},
"credentials": {
"googleCalendarOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "da1d2d6c-1ba0-450d-a86d-52c94f61349b",
"name": "Watch cancelled Google Calendar events",
"type": "n8n-nodes-base.googleCalendarTrigger",
"position": [
208,
1024
],
"parameters": {
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "eventCancelled",
"calendarId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultName": ""
}
},
"credentials": {
"googleCalendarOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "dcfcea72-a971-45df-bcc9-4ad801d30121",
"name": "Transfer the attendees' declines",
"type": "n8n-nodes-klicktipp.klicktipp",
"position": [
2224,
736
],
"parameters": {
"email": "={{ $('Check if attendee exists as contact2').item.json.email }}",
"tagId": [
""
],
"resource": "contact-tagging"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "36364a09-8a5f-4336-b705-58de5803822f",
"name": "Transfer the attendees' acceptances",
"type": "n8n-nodes-klicktipp.klicktipp",
"position": [
2224,
320
],
"parameters": {
"email": "={{ $('Check if attendee exists as contact2').item.json.email }}",
"tagId": [
""
],
"resource": "contact-tagging"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "ce3b6860-e398-46b3-9db0-34b23bc62ba4",
"name": "Transfer the attendees' considerations",
"type": "n8n-nodes-klicktipp.klicktipp",
"position": [
2224,
528
],
"parameters": {
"email": "={{ $('Check if attendee exists as contact2').item.json.email }}",
"tagId": [
""
],
"resource": "contact-tagging"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "5f927c22-ffa4-44e6-b48b-77fbd920c125",
"name": "Iterate through attendees (event canceled)",
"type": "n8n-nodes-base.splitOut",
"position": [
496,
1024
],
"parameters": {
"include": "allOtherFields",
"options": {},
"fieldToSplitOut": "attendees"
},
"typeVersion": 1
},
{
"id": "4021cbec-62c1-4a15-9010-a7fd4c1222ad",
"name": "Route by attendees' status",
"type": "n8n-nodes-base.switch",
"position": [
1952,
304
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "needs action",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "2d5e9141-6682-410d-a7d9-2d670256fe2d",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Iterate through attendees (event updated)').item.json.attendees.responseStatus }}",
"rightValue": "needsAction"
}
]
},
"renameOutput": true
},
{
"outputKey": "accepted",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "3eafe07b-f1f2-433f-9a0e-e017fce32984",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Iterate through attendees (event updated)').item.json.attendees.responseStatus }}",
"rightValue": "accepted"
}
]
},
"renameOutput": true
},
{
"outputKey": "tentative",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "773e0819-7483-4da1-b6b0-ba954a714bd8",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Iterate through attendees (event updated)').item.json.attendees.responseStatus }}",
"rightValue": "tentative"
}
]
},
"renameOutput": true
},
{
"outputKey": "declined",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c8062f1d-5ad9-4b7e-bbc2-ae0ca717ccfd",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $('Iterate through attendees (event updated)').item.json.attendees.responseStatus }}",
"rightValue": "declined"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.3
},
{
"id": "36a99cf5-bda4-428a-8f5c-01a79ff758b7",
"name": "Iterate through attendees (event created)",
"type": "n8n-nodes-base.splitOut",
"position": [
496,
-448
],
"parameters": {
"include": "allOtherFields",
"options": {},
"fieldToSplitOut": "attendees"
},
"typeVersion": 1
},
{
"id": "aa2543af-1790-4ca3-a6ce-d7ce1dde6b00",
"name": "4. Route by status.",
"type": "n8n-nodes-base.stickyNote",
"position": [
1008,
-880
],
"parameters": {
"color": 7,
"width": 272,
"height": 2448,
"content": "## 4. Route by status."
},
"typeVersion": 1
},
{
"id": "03bd393b-c08c-4e91-b442-313e9d24c893",
"name": "Watch new Google Calendar events",
"type": "n8n-nodes-base.googleCalendarTrigger",
"position": [
208,
-448
],
"parameters": {
"options": {},
"pollTimes": {
"item": [
{
"mode": "everyMinute"
}
]
},
"triggerOn": "eventCreated",
"calendarId": {
"__rl": true,
"mode": "list",
"value": "",
"cachedResultName": ""
}
},
"credentials": {
"googleCalendarOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "f5568490-bf98-45b3-aaf1-b00e69b38593",
"name": "Watch Tagging in KlickTipp",
"type": "n8n-nodes-klicktipp.klicktippTrigger",
"position": [
208,
1344
],
"parameters": {
"path": ""
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "5b93b77e-c904-4bb8-84ec-32a7ed949278",
"name": "Create a Google Calendar Event",
"type": "n8n-nodes-base.googleCalendar",
"position": [
1680,
1344
],
"parameters": {
"end": "={{ DateTime\n .fromFormat($json.CustomField223459, 'dd.MM.yyyy HH:mm:ss', { zone: 'Europe/Berlin' })\n .toFormat(\"yyyy-MM-dd'T'HH:mm:ssZZ\") }}",
"start": "={{ DateTime\n .fromFormat($json.CustomField223460, 'dd.MM.yyyy HH:mm:ss', { zone: 'Europe/Berlin' })\n .toFormat(\"yyyy-MM-dd'T'HH:mm:ssZZ\") }}",
"additionalFields": {
"summary": "={{ $json.CustomField223461 }}",
"location": "={{ $json.CustomField224593 }}",
"attendees": [
"={{ $json.email }}"
],
"description": "={{ $json.CustomField223462 }}"
}
},
"credentials": {
"googleCalendarOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 1.3
},
{
"id": "aa0ecce1-84c7-486a-a5e2-b3763c16ad0f",
"name": "Route by attendees' status1",
"type": "n8n-nodes-base.switch",
"position": [
1088,
-448
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "needs action",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "2d5e9141-6682-410d-a7d9-2d670256fe2d",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.attendees.responseStatus }}",
"rightValue": "needsAction"
}
]
},
"renameOutput": true
},
{
"outputKey": "accepted",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "3eafe07b-f1f2-433f-9a0e-e017fce32984",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.attendees.responseStatus }}",
"rightValue": "accepted"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.3
},
{
"id": "e91b4ec2-ad69-4bf0-9791-f8f1b3d2c1be",
"name": "6. Transfer event data.",
"type": "n8n-nodes-base.stickyNote",
"position": [
1584,
-880
],
"parameters": {
"color": 7,
"width": 272,
"height": 2448,
"content": "## 6. Transfer event data."
},
"typeVersion": 1
},
{
"id": "7e4f113f-a6dc-4110-a0bf-2a212595b6d1",
"name": "Check if attendee exists as contact",
"type": "n8n-nodes-klicktipp.klicktipp",
"onError": "continueErrorOutput",
"position": [
1392,
-256
],
"parameters": {
"resource": "subscriber",
"operation": "get",
"lookupEmail": "={{ $json.attendees.email }}"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "066952d2-cd34-4a68-91f1-ee818f5b41b8",
"name": "Transfer the event creation/update",
"type": "n8n-nodes-klicktipp.klicktipp",
"position": [
2224,
-352
],
"parameters": {
"email": "={{ $('Check if attendee exists as contact').item.json.email }}",
"tagId": [
""
],
"resource": "contact-tagging"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "f6ec1e84-b647-43a6-b79f-25dff6c79549",
"name": "8. Segmentation.",
"type": "n8n-nodes-base.stickyNote",
"position": [
2144,
-880
],
"parameters": {
"color": 7,
"width": 256,
"height": 2448,
"content": "## 8. Segmentation."
},
"typeVersion": 1
},
{
"id": "6ec94bab-3ff3-47b5-ae6a-378b33d12522",
"name": "Check if attendee exists as contact1",
"type": "n8n-nodes-klicktipp.klicktipp",
"onError": "continueErrorOutput",
"position": [
1392,
-656
],
"parameters": {
"resource": "subscriber",
"operation": "get",
"lookupEmail": "={{ $json.attendees.email }}"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "a0b91d14-6308-4702-9c9a-4cbcfa5bb867",
"name": "Transfer the attendees' acceptances1",
"type": "n8n-nodes-klicktipp.klicktipp",
"position": [
2224,
-752
],
"parameters": {
"email": "={{ $('Check if attendee exists as contact1').item.json.email }}",
"tagId": [
""
],
"resource": "contact-tagging"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "7ed0dc15-f80e-4d6c-bdec-284ae1d1d171",
"name": "Update contact in Klicktipp",
"type": "n8n-nodes-klicktipp.klicktipp",
"position": [
1680,
-352
],
"parameters": {
"fields": {
"dataFields": [
{
"fieldId": "field223461",
"fieldValue": "={{ $('Watch new Google Calendar events').item.json.summary }}"
},
{
"fieldId": "field223462",
"fieldValue": "={{ $('Watch new Google Calendar events').item.json.description ?? \"\" }}"
},
{
"fieldId": "field224593",
"fieldValue": "={{ $('Watch new Google Calendar events').item.json.location ?? \"\" }}"
},
{
"fieldId": "field223460",
"fieldValue": "={{ Math.round(DateTime.fromISO($('Watch new Google Calendar events').item.json.start.dateTime, { setZone: true }).toSeconds()) }}"
},
{
"fieldId": "field223459",
"fieldValue": "={{ Math.round(DateTime.fromISO($('Watch new Google Calendar events').item.json.end.dateTime, { setZone: true }).toSeconds()) }}"
},
{
"fieldId": "fieldFirstName",
"fieldValue": "={{ $('Watch new Google Calendar events').item.json.displayName ? $('Watch new Google Calendar events').item.json.displayName.split(' ')[0] : '' }}"
},
{
"fieldId": "fieldLastName",
"fieldValue": "={{ $('Watch new Google Calendar events').item.json.displayName ? $('Watch new Google Calendar events').item.json.displayName.split(' ').slice(1).join(' ') : '' }}"
}
]
},
"resource": "subscriber",
"operation": "update",
"lookupEmail": "={{ $json.email }}"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "589bf884-4687-4496-a6a8-efdb987330cc",
"name": "Transfer the event creation/update1",
"type": "n8n-nodes-klicktipp.klicktipp",
"position": [
2224,
112
],
"parameters": {
"email": "={{ $('Check if attendee exists as contact2').item.json.email }}",
"tagId": [
""
],
"resource": "contact-tagging"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "4a9562ba-6343-4b8c-bc5d-516c81b713e3",
"name": "Check if attendee exists as contact2",
"type": "n8n-nodes-klicktipp.klicktipp",
"onError": "continueErrorOutput",
"position": [
1376,
432
],
"parameters": {
"resource": "subscriber",
"operation": "get",
"lookupEmail": "={{ $json.attendees.email }}"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "3a117402-09f3-4fea-a294-900fdf21359a",
"name": "Update contact in Klicktipp1",
"type": "n8n-nodes-klicktipp.klicktipp",
"position": [
1680,
336
],
"parameters": {
"fields": {
"dataFields": [
{
"fieldId": "field223461",
"fieldValue": "={{ $('Watch updated Google Calendar events').item.json.summary }}"
},
{
"fieldId": "field224593",
"fieldValue": "={{ $('Watch updated Google Calendar events').item.json.location ?? \"\" }}"
},
{
"fieldId": "field223462",
"fieldValue": "={{ $('Watch updated Google Calendar events').item.json.description ?? \"\" }}"
},
{
"fieldId": "field223460",
"fieldValue": "={{ Math.round(DateTime.fromISO($('Watch updated Google Calendar events').item.json.start.dateTime, { setZone: true }).toSeconds()) }}"
},
{
"fieldId": "field223459",
"fieldValue": "={{ Math.round(DateTime.fromISO($('Watch updated Google Calendar events').item.json.end.dateTime, { setZone: true }).toSeconds()) }}"
},
{
"fieldId": "fieldFirstName",
"fieldValue": "={{ $('Watch updated Google Calendar events').item.json.displayName ? $('Watch updated Google Calendar events').item.json.displayName.split(' ')[0] : '' }}"
},
{
"fieldId": "fieldLastName",
"fieldValue": "={{ $('Watch updated Google Calendar events').item.json.displayName ? $('Watch updated Google Calendar events').item.json.displayName.split(' ').slice(1).join(' ') : '' }}"
}
]
},
"resource": "subscriber",
"operation": "update",
"lookupEmail": "={{ $json.email }}"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "130d5111-9ee3-464a-a203-376cea5f71c1",
"name": "Update contact in Klicktipp2",
"type": "n8n-nodes-klicktipp.klicktipp",
"position": [
1680,
-752
],
"parameters": {
"fields": {
"dataFields": [
{
"fieldId": "field223461",
"fieldValue": "={{ $('Watch new Google Calendar events').item.json.summary }}"
},
{
"fieldId": "field223462",
"fieldValue": "={{ $('Watch new Google Calendar events').item.json.description ?? \"\" }}"
},
{
"fieldId": "field224593",
"fieldValue": "={{ $('Watch new Google Calendar events').item.json.location ?? \"\" }}"
},
{
"fieldId": "field223460",
"fieldValue": "={{ Math.round(DateTime.fromISO($('Watch new Google Calendar events').item.json.start.dateTime, { setZone: true }).toSeconds()) }}"
},
{
"fieldId": "field223459",
"fieldValue": "={{ Math.round(DateTime.fromISO($('Watch new Google Calendar events').item.json.end.dateTime, { setZone: true }).toSeconds()) }}"
},
{
"fieldId": "fieldFirstName",
"fieldValue": "={{ $('Watch new Google Calendar events').item.json.displayName ? $('Watch new Google Calendar events').item.json.displayName.split(' ')[0] : '' }}"
},
{
"fieldId": "fieldLastName",
"fieldValue": "={{ $('Watch new Google Calendar events').item.json.displayName ? $('Watch new Google Calendar events').item.json.displayName.split(' ').slice(1).join(' ') : '' }}"
}
]
},
"resource": "subscriber",
"operation": "update",
"lookupEmail": "={{ $json.email }}"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "2f3bef18-d873-4374-a5a6-4918da5d9a54",
"name": "Subscribe attendee to KlickTipp with DOI",
"type": "n8n-nodes-klicktipp.klicktipp",
"position": [
1680,
-160
],
"parameters": {
"email": "={{ $json.attendees.email }}",
"tagId": "",
"fields": {
"dataFields": [
{
"fieldId": "field223461",
"fieldValue": "={{ $json.summary }}"
},
{
"fieldId": "field224593",
"fieldValue": "={{ $json.location ?? \"\" }}"
},
{
"fieldId": "field223462",
"fieldValue": "={{ $json.description ?? \"\" }}"
},
{
"fieldId": "field223460",
"fieldValue": "={{ Math.round(DateTime.fromISO($json.start.dateTime, { setZone: true }).toSeconds()) }}"
},
{
"fieldId": "field223459",
"fieldValue": "={{ Math.round(DateTime.fromISO($json.end.dateTime, { setZone: true }).toSeconds()) }}"
},
{
"fieldId": "fieldFirstName",
"fieldValue": "={{ $json.displayName ? $json.displayName.split(' ')[0] : '' }}"
},
{
"fieldId": "fieldLastName",
"fieldValue": "={{ $json.displayName ? $json.displayName.split(' ').slice(1).join(' ') : '' }}"
}
]
},
"listId": "",
"resource": "subscriber",
"operation": "subscribe"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "08cbcc41-833f-4ffc-b600-6695cbf03da1",
"name": "Subscribe attendee to KlickTipp with SOI",
"type": "n8n-nodes-klicktipp.klicktipp",
"position": [
1680,
-560
],
"parameters": {
"email": "={{ $json.attendees.email }}",
"tagId": "",
"fields": {
"dataFields": [
{
"fieldId": "field223461",
"fieldValue": "={{ $json.summary }}"
},
{
"fieldId": "field224593",
"fieldValue": "={{ $json.location ?? \"\" }}"
},
{
"fieldId": "field223462",
"fieldValue": "={{ $json.description ?? \"\" }}"
},
{
"fieldId": "field223460",
"fieldValue": "={{ Math.round(DateTime.fromISO($json.start.dateTime, { setZone: true }).toSeconds()) }}"
},
{
"fieldId": "field223459",
"fieldValue": "={{ Math.round(DateTime.fromISO($json.end.dateTime, { setZone: true }).toSeconds()) }}"
},
{
"fieldId": "fieldFirstName",
"fieldValue": "={{ $json.displayName ? $json.displayName.split(' ')[0] : '' }}"
},
{
"fieldId": "fieldLastName",
"fieldValue": "={{ $json.displayName ? $json.displayName.split(' ').slice(1).join(' ') : '' }}"
}
]
},
"listId": "",
"resource": "subscriber",
"operation": "subscribe"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "025bd479-deb1-4e54-b40a-c02416a8307d",
"name": "Subscribe attendee to KlickTipp with SOI1",
"type": "n8n-nodes-klicktipp.klicktipp",
"position": [
1680,
544
],
"parameters": {
"email": "={{ $json.attendees.email }}",
"tagId": "",
"fields": {
"dataFields": [
{
"fieldId": "field223461",
"fieldValue": "={{ $json.summary }}"
},
{
"fieldId": "field224593",
"fieldValue": "={{ $json.location ?? \"\" }}"
},
{
"fieldId": "field223462",
"fieldValue": "={{ $json.description ?? \"\" }}"
},
{
"fieldId": "field223460",
"fieldValue": "={{ Math.round(DateTime.fromISO($json.start.dateTime, { setZone: true }).toSeconds()) }}"
},
{
"fieldId": "field223459",
"fieldValue": "={{ Math.round(DateTime.fromISO($json.end.dateTime, { setZone: true }).toSeconds()) }}"
},
{
"fieldId": "fieldFirstName",
"fieldValue": "={{ $json.displayName ? $json.displayName.split(' ')[0] : '' }}"
},
{
"fieldId": "fieldLastName",
"fieldValue": "={{ $json.displayName ? $json.displayName.split(' ').slice(1).join(' ') : '' }}"
}
]
},
"listId": "",
"resource": "subscriber",
"operation": "subscribe"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"typeVersion": 3
},
{
"id": "cb687bdc-ed65-4025-8bf5-ce8e3bf35536",
"name": "Filter attendees",
"type": "n8n-nodes-base.filter",
"notes": "Filter out a specific email domain.",
"position": [
800,
-448
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "0a33ede9-0b50-4f87-9f13-758036c5c1f7",
"operator": {
"type": "string",
"operation": "notContains"
},
"leftValue": "={{ $json.attendees.email }}",
"rightValue": "@example.com"
},
{
"id": "400d1282-bf06-4fe8-80f8-4d35ef98ad38",
"operator": {
"type": "boolean",
"operation": "notEquals"
},
"leftValue": "={{ $json.attendees.organizer }}",
"rightValue": true
}
]
}
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "80080f53-6f6a-4540-847b-a27a3e11ec96",
"name": "Filter attendees1",
"type": "n8n-nodes-base.filter",
"notes": "Filter out a specific email domain.",
"position": [
800,
432
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "0a33ede9-0b50-4f87-9f13-758036c5c1f7",
"operator": {
"type": "string",
"operation": "notContains"
},
"leftValue": "={{ $json.attendees.email }}",
"rightValue": "@example.com"
},
{
"id": "d12e2387-ee0b-4c2a-89e9-3b2e081c4094",
"operator": {
"type": "boolean",
"operation": "notEquals"
},
"leftValue": "={{ $json.attendees.organizer }}",
"rightValue": true
}
]
}
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "c2d701d7-adac-47ba-8190-8a41aa086dad",
"name": "Filter attendees2",
"type": "n8n-nodes-base.filter",
"notes": "Filter out a specific email domain.",
"position": [
800,
1024
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "0a33ede9-0b50-4f87-9f13-758036c5c1f7",
"operator": {
"type": "string",
"operation": "notContains"
},
"leftValue": "={{ $json.attendees.email }}",
"rightValue": "@example.com"
},
{
"id": "904af36f-7857-47c8-82c8-bb2d49dba533",
"operator": {
"type": "boolean",
"operation": "notEquals"
},
"leftValue": "={{ $json.attendees.organizer }}",
"rightValue": true
}
]
}
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "46fde7d9-cdbb-47d2-ac0b-e5a573a23d7d",
"name": "Iterate through attendees (event updated)",
"type": "n8n-nodes-base.splitOut",
"position": [
496,
432
],
"parameters": {
"include": "allOtherFields",
"options": {},
"fieldToSplitOut": "attendees"
},
"typeVersion": 1
},
{
"id": "0ec26370-375f-4332-976b-c8e5e2012cc9",
"name": "7. Route by status.",
"type": "n8n-nodes-base.stickyNote",
"position": [
1872,
-880
],
"parameters": {
"color": 7,
"width": 256,
"height": 2448,
"content": "## 7. Route by status."
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "e7a76618-7d56-429a-81bf-41088c1fe3f0",
"connections": {
"Filter attendees": {
"main": [
[
{
"node": "Route by attendees' status1",
"type": "main",
"index": 0
}
]
]
},
"Filter attendees1": {
"main": [
[
{
"node": "Check if attendee exists as contact2",
"type": "main",
"index": 0
}
]
]
},
"Filter attendees2": {
"main": [
[
{
"node": "Transfer attendees cancellations",
"type": "main",
"index": 0
}
]
]
},
"Route by attendees' status": {
"main": [
[
{
"node": "Transfer the event creation/update1",
"type": "main",
"index": 0
}
],
[
{
"node": "Transfer the attendees' acceptances",
"type": "main",
"index": 0
}
],
[
{
"node": "Transfer the attendees' considerations",
"type": "main",
"index": 0
}
],
[
{
"node": "Transfer the attendees' declines",
"type": "main",
"index": 0
}
]
]
},
"Watch Tagging in KlickTipp": {
"main": [
[
{
"node": "Create a Google Calendar Event",
"type": "main",
"index": 0
}
]
]
},
"Route by attendees' status1": {
"main": [
[
{
"node": "Check if attendee exists as contact1",
"type": "main",
"index": 0
}
],
[
{
"node": "Check if attendee exists as contact",
"type": "main",
"index": 0
}
]
]
},
"Update contact in Klicktipp": {
"main": [
[
{
"node": "Transfer the event creation/update",
"type": "main",
"index": 0
}
]
]
},
"Update contact in Klicktipp1": {
"main": [
[
{
"node": "Route by attendees' status",
"type": "main",
"index": 0
}
]
]
},
"Update contact in Klicktipp2": {
"main": [
[
{
"node": "Transfer the attendees' acceptances1",
"type": "main",
"index": 0
}
]
]
},
"Watch new Google Calendar events": {
"main": [
[
{
"node": "Iterate through attendees (event created)",
"type": "main",
"index": 0
}
]
]
},
"Check if attendee exists as contact": {
"main": [
[
{
"node": "Update contact in Klicktipp",
"type": "main",
"index": 0
}
],
[
{
"node": "Subscribe attendee to KlickTipp with DOI",
"type": "main",
"index": 0
}
]
]
},
"Check if attendee exists as contact1": {
"main": [
[
{
"node": "Update contact in Klicktipp2",
"type": "main",
"index": 0
}
],
[
{
"node": "Subscribe attendee to KlickTipp with SOI",
"type": "main",
"index": 0
}
]
]
},
"Check if attendee exists as contact2": {
"main": [
[
{
"node": "Update contact in Klicktipp1",
"type": "main",
"index": 0
}
],
[
{
"node": "Subscribe attendee to KlickTipp with SOI1",
"type": "main",
"index": 0
}
]
]
},
"Watch updated Google Calendar events": {
"main": [
[
{
"node": "Iterate through attendees (event updated)",
"type": "main",
"index": 0
}
]
]
},
"Watch cancelled Google Calendar events": {
"main": [
[
{
"node": "Iterate through attendees (event canceled)",
"type": "main",
"index": 0
}
]
]
},
"Subscribe attendee to KlickTipp with DOI": {
"main": [
[]
]
},
"Iterate through attendees (event created)": {
"main": [
[
{
"node": "Filter attendees",
"type": "main",
"index": 0
}
]
]
},
"Iterate through attendees (event updated)": {
"main": [
[
{
"node": "Filter attendees1",
"type": "main",
"index": 0
}
]
]
},
"Iterate through attendees (event canceled)": {
"main": [
[
{
"node": "Filter attendees2",
"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.
googleCalendarOAuth2ApiklickTippApi
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/10295/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
Community Node Disclaimer: This workflow uses KlickTipp community nodes.
This workflow uses KlickTipp community nodes, available for self-hosted n8n instances only.
Batch-convert CAD/BIM files to analysis-ready XLSX and optional DAE with automatic verification and a clean HTML report. Runs locally via and PowerShell on Windows.
Sync your Linear issues to Todoist automatically with this n8n workflow. When an issue is created, updated, or completed in Linear, a corresponding task is created, updated, or closed in Todoist. Trig
Back up n8n workflows to Google Drive automatically This workflow provides a robust solution for backing up your n8n workflows to Google Drive. It is designed to handle backups for multiple n8n instan