This workflow corresponds to n8n.io template #8418 — 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 →
{
"meta": {
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "1171779b-17d4-4f59-9105-05df49e2065d",
"name": "Crypto",
"type": "n8n-nodes-base.crypto",
"notes": "This node prepares the response to the Zoom endpoint in order to answer to the validation.",
"position": [
-160,
224
],
"parameters": {
"type": "SHA256",
"value": "={{ $json.body.payload.plainToken }}",
"action": "hmac",
"secret": "YOUR_CREDENTIAL_HERE"
},
"notesInFlow": true,
"typeVersion": 1
},
{
"id": "0705f2e2-c80a-490e-b84a-649459579d16",
"name": "Build Validation Body",
"type": "n8n-nodes-base.set",
"notes": "This node builds the body for the response to the Zoom endpoint in order to answer for validation.",
"position": [
64,
224
],
"parameters": {
"values": {
"string": [
{
"name": "plainToken",
"value": "={{ $json.body.payload.plainToken }}"
},
{
"name": "encryptedToken",
"value": "={{ $json.data }}"
}
]
},
"options": {},
"keepOnlySet": true
},
"notesInFlow": true,
"typeVersion": 2
},
{
"id": "db95d054-dbc9-4247-9c3d-b44a59c58b16",
"name": "Respond to Webhook (Validation)",
"type": "n8n-nodes-base.respondToWebhook",
"notes": "This node sends the response back to the Zoom endpoint.",
"position": [
272,
224
],
"parameters": {
"options": {}
},
"notesInFlow": true,
"typeVersion": 1
},
{
"id": "e960b86a-88c9-4c51-b8da-044192df547d",
"name": "Build Normal Event Body",
"type": "n8n-nodes-base.set",
"notes": "This node builds a body for a response to the endpoint in case of a regular event.",
"position": [
-160,
416
],
"parameters": {
"values": {
"string": [
{
"name": "status",
"value": "ok"
}
]
},
"options": {},
"keepOnlySet": true
},
"notesInFlow": true,
"typeVersion": 2
},
{
"id": "cb377d31-34f1-4b27-a202-e771eb36a6ba",
"name": "Respond to Webhook (Events)",
"type": "n8n-nodes-base.respondToWebhook",
"notes": "This node answers to the endpoint in case of regular Zoom events - such as ending meetings in this case.",
"position": [
64,
416
],
"parameters": {
"options": {}
},
"notesInFlow": true,
"typeVersion": 1
},
{
"id": "f1b3a8d2-3d9a-41fc-929b-3b560b922ab1",
"name": "URL Validation check",
"type": "n8n-nodes-base.if",
"notes": "This node checks whether the received data was a ending meeting or a URL validation call by Zoom.",
"position": [
-384,
320
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8516a75f-6aa9-4b72-828a-f5627d066ecc",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.body.event }}",
"rightValue": "endpoint.url_validation"
}
]
}
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "eeebd744-fe21-4a1e-b045-6aee7edf81ea",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-656,
-304
],
"parameters": {
"color": 4,
"width": 1104,
"height": 1472,
"content": "## Webinar data reception\n"
},
"typeVersion": 1
},
{
"id": "0550d6a3-c0fe-4ce4-984d-594b96b3fde5",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
448,
-304
],
"parameters": {
"color": 2,
"width": 448,
"height": 1472,
"content": "## Pulling webinar data - participants and absentees\n\n"
},
"typeVersion": 1
},
{
"id": "fdf9bab2-272f-483d-b891-a82f83253c3b",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
896,
-304
],
"parameters": {
"color": 3,
"width": 1216,
"height": 1472,
"content": "## Segment all participants and absentees from the past webinar\n\n"
},
"typeVersion": 1
},
{
"id": "6323c7fb-26d0-4af1-9a83-bc1185dd71b6",
"name": "Tag participant with full attendance1",
"type": "CUSTOM.klicktipp",
"notes": "This node tags the contacts of your first webinar branch for the full attendance if they have attended more than 90% of the webinar.",
"position": [
1664,
208
],
"parameters": {
"email": "={{ $json.user_email }}",
"tagId": [
"13445224"
],
"resource": "contact-tagging"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 2
},
{
"id": "275e07c7-8e92-448e-99f7-121e9e65dd56",
"name": "Tag participant for general attendance",
"type": "n8n-nodes-klicktipp.klicktipp",
"notes": "This node tags the contacts of your first webinar branch for the full attendance if they have attended less than 90% of the webinar and more than 60%.",
"position": [
1904,
0
],
"parameters": {
"email": "={{ $json.user_email }}",
"tagId": [
"13327964"
],
"resource": "contact-tagging"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 3
},
{
"id": "a31f5450-c672-4a54-9488-0582d7cf7d33",
"name": "Tag participant for full attendance",
"type": "CUSTOM.klicktipp",
"notes": "This node tags the contacts of your first webinar branch for the full attendance if they have attended more than 90% of the webinar.",
"position": [
1664,
-192
],
"parameters": {
"email": "={{ $json.user_email }}",
"tagId": [
"13440472"
],
"resource": "contact-tagging"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 2
},
{
"id": "e5454093-9343-4b54-ae0a-bd47e207a6f0",
"name": "Tag participant for general attendance1",
"type": "n8n-nodes-klicktipp.klicktipp",
"notes": "This node tags the contacts of your first webinar branch for the full attendance if they have attended less than 90% of the webinar and more than 60%.",
"position": [
1904,
384
],
"parameters": {
"email": "={{ $json.user_email }}",
"tagId": [
"13327965"
],
"resource": "contact-tagging"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 3
},
{
"id": "56492c33-aa03-4232-9911-ad7b18cea23e",
"name": "Check general attendance",
"type": "n8n-nodes-base.if",
"notes": "This node checks whether the participants have spent more than 60% in the webinar or not.",
"position": [
1664,
16
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "7b7d2fd5-c72b-49bf-978d-84924490a953",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.duration}}",
"rightValue": "={{ $('Listen to ending Zoom webinars').item.json.body.payload.object.duration * 60 * 0.6 }}"
},
{
"id": "6899a474-e440-4d45-94e9-c5c2e7770b51",
"operator": {
"type": "boolean",
"operation": "false",
"singleValue": true
},
"leftValue": "={{ $json.internal_user }}",
"rightValue": ""
}
]
}
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "2823c3a0-abb6-4b7b-8a24-2ba88fe2c6c4",
"name": "Check general attendance1",
"type": "n8n-nodes-base.if",
"notes": "This node checks whether the participants have spent more than 60% in the webinar or not.",
"position": [
1664,
400
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "5ccc0640-5283-4c99-8df4-1fd128fd8fd6",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.duration }}",
"rightValue": "={{ $('Listen to ending Zoom webinars').item.json.body.payload.object.duration * 60 * 0.6 }}"
},
{
"id": "833a43d6-eb9e-4103-b518-82ec04ba244e",
"operator": {
"type": "boolean",
"operation": "false",
"singleValue": true
},
"leftValue": "={{ $json.internal_user }}",
"rightValue": ""
}
]
}
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "5015d24a-4c84-4854-a7ff-d7d5c361b8b6",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
128,
1184
],
"parameters": {
"color": 7,
"width": 1104,
"height": 1920,
"content": "Community Node Disclaimer: This workflow uses KlickTipp community nodes.\n\n\n### Introduction\nThis workflow automates the end-to-end integration between Zoom and KlickTipp using n8n. It listens to Zoom webinar events (specifically, when a webinar ends), fetches attendance data, and tags participants in KlickTipp based on how long they attended. This enables precise segmentation for follow-ups and campaign automation based on actual user engagement.\n\n### Benefits\n- **Fully automated tagging**: No manual effort\u2014participants are tagged in KlickTipp based on attendance percentage.\n- **Precise segmentation**: Supports differentiated tags for full, partial, or no attendance per webinar type.\n- **Dual-webinar support**: Handles multiple webinar types (e.g. Beginner vs. Expert) in one automated flow.\n\n### Key Features\n- **Zoom Webhook Listener**:\n - Reacts to `webinar.ended` events.\n - Validates Zoom URL on webhook registration using HMAC.\n- **Zoom API Integration**:\n - Pulls past webinar details and participant list using webinar UUID.\n - Uses `duration` fields to calculate attendance.\n- **Conditional Logic**:\n - Uses Switch nodes to differentiate webinars by topic.\n - Filters out internal users.\n - Applies IF logic to check attendance thresholds (e.g. \u2265\u202f90%, \u2265\u202f60%).\n- **KlickTipp Tagging**:\n - Applies different tags for each attendance segment:\n - Full attendance (\u2265\u202f90%)\n - General attendance (60%\u201389%)\n - No attendance\n - Supports tagging per webinar name (ex.: Webinar E-Mail Zustellung f\u00fcr Anf\u00e4nger vs. Webinar E-Mail Zustellung f\u00fcr Experten).\n- **Scalable Structure**:\n - Easily extendable to more webinars by duplicating the Switch and tagging logic.\n\n### Setup Instructions\n**Zoom Preparation**\n - Ensure Zoom API access is enabled.\n - Set up recurring webinars or webinars.\n - Note the webinar IDs or UUIDs used in the flow.\n - Enable webhook event `webinar.ended` for your Zoom webhook and the scopes `webinar:read:webinar`, `webinar:read:list_past_participants` and `webinar:read:list_absentees`.\n\n**KlickTipp Preparation**\n - Create these custom fields (if not already present):\n - `Zoom | webinar selection` (Text)\n- `Zoom | webinar start` (Date & Time)\n- `Zoom | Join URL` (URL)\n- `Zoom | Registration ID` (Text)\n- `Zoom | Duration webinar` (Text)\n - Manually add the following tags:\n - `Zoom webinar E-Mail Zustellung f\u00fcr Anf\u00e4nger`\n - `Zoom webinar E-Mail Zustellung f\u00fcr Anf\u00e4nger attended`\n - `Zoom webinar E-Mail Zustellung f\u00fcr Anf\u00e4nger attended fully`\n - `Zoom webinar E-Mail Zustellung f\u00fcr Anf\u00e4nger not attended`\n - `Zoom webinar E-Mail Zustellung f\u00fcr Experten`\n - `Zoom webinar E-Mail Zustellung f\u00fcr Experten attended`\n - `Zoom webinar E-Mail Zustellung f\u00fcr Experten attended fully`\n - `Zoom webinar E-Mail Zustellung f\u00fcr Experten not attended`\n\n\n**n8n Configuration**\n - Configure the webhook node for the Zoom endpoint and connect it to your webhook.\n - Set up API credentials for Zoom and KlickTipp.\n \n\n### Testing and Deployment\n1. End a Zoom webinar connected to the flow.\n2. Verify:\n - The webhook triggers.\n - Participants are fetched from Zoom.\n - Tags are applied correctly in KlickTipp.\n3. Review KlickTipp contact records for tag and custom field updates.\n\n> \ud83d\udca1 *Pro Tip*: Use test emails and simulate different durations to validate tagging logic.\n\n### Campaign Expansion Ideas\n- Add additional webinar topics and tag logic by extending the Switch node.\n- Trigger personalized email sequences in KlickTipp based on attendance status.\n- Combine this workflow with registration tracking for full-funnel automation.\n- Use conditional routing to send follow-ups only to specific attendance segments.\n\n### Customization\n- Update tag names in the KlickTipp nodes to match your campaign naming convention.\n- Adjust attendance thresholds (e.g. 80% instead of 90%) in IF nodes.\n- Add fallback conditions for missing data or error handling on Zoom API calls.\n- Use more granular time ranges for segmentation (e.g. 0\u201330%, 30\u201360%, etc.).\n"
},
"typeVersion": 1
},
{
"id": "11a2eab3-edc7-41c2-b60c-2af829816b4a",
"name": "Route by meeting name1",
"type": "n8n-nodes-base.switch",
"notes": "This node filters for the different meetings via the name in order to process them.",
"position": [
1184,
704
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "E-Mail Zustellung f\u00fcr Anf\u00e4nger",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8de9cdc6-5393-4daa-acbd-7d14fbcd2586",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $('Listen to ending Zoom webinars').item.json.body.payload.object.topic }}",
"rightValue": "E-Mail Zustellung f\u00fcr Anf\u00e4nger"
}
]
},
"renameOutput": true
},
{
"outputKey": "E-Mail Zustellung f\u00fcr Experten",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "bb59b2cb-b22c-4325-8373-f2a50dcb5ef1",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $('Listen to ending Zoom webinars').item.json.body.payload.object.topic }}",
"rightValue": "E-Mail Zustellung f\u00fcr Experten"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"notesInFlow": true,
"typeVersion": 3.2
},
{
"id": "f49c185b-1abc-487a-b5d1-2415ca8c0667",
"name": "Listen to ending Zoom webinars",
"type": "n8n-nodes-base.webhook",
"notes": "This node is listening to Zoom events and triggers when a webinar was ended.",
"position": [
-608,
320
],
"parameters": {
"path": "zoom",
"options": {},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"notesInFlow": true,
"typeVersion": 2.1
},
{
"id": "10cf5a5a-f9ae-46b3-93a0-1e073ab4ac27",
"name": "Get past Zoom webinar absentees",
"type": "n8n-nodes-base.httpRequest",
"notes": "This node pulls data of the webinar absentees in order to process them.",
"position": [
528,
704
],
"parameters": {
"url": "=https://api.zoom.us/v2/past_webinars/{{ $('Listen to ending Zoom webinars').item.json.body.payload.object.uuid }}/absentees",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "zoomOAuth2Api"
},
"credentials": {
"zoomOAuth2Api": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 4.2
},
{
"id": "ec1e2ef0-6f04-4897-a160-ec156fa76b65",
"name": "Get past Zoom webinar participants",
"type": "n8n-nodes-base.httpRequest",
"notes": "This node pulls data of the webinar participants in order to process them.",
"position": [
512,
80
],
"parameters": {
"url": "=https://api.zoom.us/v2/past_webinars/{{ $('Listen to ending Zoom webinars').item.json.body.payload.object.uuid }}/participants",
"options": {},
"authentication": "predefinedCredentialType",
"nodeCredentialType": "zoomOAuth2Api"
},
"credentials": {
"zoomOAuth2Api": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 4.2
},
{
"id": "46d74f1e-2f14-473d-916a-4d409c4b6b63",
"name": "Tag absentee for non attendance",
"type": "CUSTOM.klicktipp",
"notes": "This node tags the contacts of your first webinar branch for their absence.",
"position": [
1664,
592
],
"parameters": {
"email": "={{ $json.email }}",
"tagId": [
"13445226"
],
"resource": "contact-tagging"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 2
},
{
"id": "22b9c4ae-42c4-48de-860f-626a4ccde70e",
"name": "Tag absentee for non attendance1",
"type": "CUSTOM.klicktipp",
"notes": "This node tags the contacts of your first webinar branch for their absence.",
"position": [
1664,
816
],
"parameters": {
"email": "={{ $json.email }}",
"tagId": [
"13445225"
],
"resource": "contact-tagging"
},
"credentials": {
"klickTippApi": {
"name": "<your credential>"
}
},
"notesInFlow": true,
"typeVersion": 2
},
{
"id": "c3d8eada-45ca-4b43-b439-31d444641a78",
"name": "Filter internal users",
"type": "n8n-nodes-base.filter",
"notes": "This node filters out internal users from the webinar such as the host.",
"position": [
976,
80
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "6c66e073-723a-44a2-83c7-0ece10385a3b",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{ $('Split webinar participants').item.json.internal_user }}",
"rightValue": ""
}
]
}
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "8c99b292-15fe-440e-9555-a411a13092aa",
"name": "Split webinar absentees",
"type": "n8n-nodes-base.splitOut",
"notes": "This node iterates through all absentees.",
"position": [
752,
704
],
"parameters": {
"options": {},
"fieldToSplitOut": "registrants"
},
"notesInFlow": true,
"typeVersion": 1
},
{
"id": "788a36d9-476e-4268-875f-db04f4db31a4",
"name": "Split webinar participants",
"type": "n8n-nodes-base.splitOut",
"notes": "This node iterates through all participants.",
"position": [
752,
80
],
"parameters": {
"options": {},
"fieldToSplitOut": "participants"
},
"notesInFlow": true,
"typeVersion": 1
},
{
"id": "d2367ac1-c5d4-4afb-ab3b-f9f20f7aea9f",
"name": "Route by webinar name",
"type": "n8n-nodes-base.switch",
"notes": "This node filters for the different webinars via the name in order to process them.",
"position": [
1184,
80
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "E-Mail Zustellung f\u00fcr Anf\u00e4nger",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8de9cdc6-5393-4daa-acbd-7d14fbcd2586",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $('Listen to ending Zoom webinars').item.json.body.payload.object.topic }}",
"rightValue": "E-Mail Zustellung f\u00fcr Anf\u00e4nger"
}
]
},
"renameOutput": true
},
{
"outputKey": "E-Mail Zustellung f\u00fcr Experten",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "bb59b2cb-b22c-4325-8373-f2a50dcb5ef1",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $('Listen to ending Zoom webinars').item.json.body.payload.object.topic }}",
"rightValue": "E-Mail Zustellung f\u00fcr Experten"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"notesInFlow": true,
"typeVersion": 3.2
},
{
"id": "569abe79-d847-4252-b44a-abc89903d5a6",
"name": "Check full attendance",
"type": "n8n-nodes-base.if",
"notes": "This node checks whether the participants have spent more than 90% in the webinar or not.",
"position": [
1440,
-96
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "55a73ac0-4754-4ae4-b6ac-cc3b46b19580",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.duration }}",
"rightValue": "={{ $('Listen to ending Zoom webinars').item.json.body.payload.object.duration * 60 * 0.9 }}"
}
]
}
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "834b0581-0e43-4c4a-bd0a-5d32423778db",
"name": "Check full attendance1",
"type": "n8n-nodes-base.if",
"notes": "This node checks whether the participants have spent more than 90% in the webinar or not.",
"position": [
1440,
288
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "4501fc2a-fbe9-48f9-9828-132f3969bca0",
"operator": {
"type": "boolean",
"operation": "false",
"singleValue": true
},
"leftValue": "={{ $json.internal_user }}",
"rightValue": ""
},
{
"id": "f3673baa-a23b-4f19-91d9-5b1bac26e064",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.duration }}",
"rightValue": "={{ $('Listen to ending Zoom webinars').item.json.body.payload.object.duration * 60 * 0.9 }}"
}
]
}
},
"notesInFlow": true,
"typeVersion": 2.2
},
{
"id": "7b303b1d-8bc5-4767-9b0e-ffa9a46f1d68",
"name": "Wait 1 second",
"type": "n8n-nodes-base.wait",
"notes": "This node waits 1 second to avoid calling the past webinar to early before it is available.",
"position": [
272,
416
],
"parameters": {
"amount": 1
},
"notesInFlow": true,
"typeVersion": 1.1
}
],
"connections": {
"Crypto": {
"main": [
[
{
"node": "Build Validation Body",
"type": "main",
"index": 0
}
]
]
},
"Wait 1 second": {
"main": [
[
{
"node": "Get past Zoom webinar absentees",
"type": "main",
"index": 0
},
{
"node": "Get past Zoom webinar participants",
"type": "main",
"index": 0
}
]
]
},
"URL Validation check": {
"main": [
[
{
"node": "Crypto",
"type": "main",
"index": 0
}
],
[
{
"node": "Build Normal Event Body",
"type": "main",
"index": 0
}
]
]
},
"Build Validation Body": {
"main": [
[
{
"node": "Respond to Webhook (Validation)",
"type": "main",
"index": 0
}
]
]
},
"Check full attendance": {
"main": [
[
{
"node": "Tag participant for full attendance",
"type": "main",
"index": 0
}
],
[
{
"node": "Check general attendance",
"type": "main",
"index": 0
}
]
]
},
"Filter internal users": {
"main": [
[
{
"node": "Route by webinar name",
"type": "main",
"index": 0
}
]
]
},
"Route by webinar name": {
"main": [
[
{
"node": "Check full attendance",
"type": "main",
"index": 0
}
],
[
{
"node": "Check full attendance1",
"type": "main",
"index": 0
}
]
]
},
"Check full attendance1": {
"main": [
[
{
"node": "Tag participant with full attendance1",
"type": "main",
"index": 0
}
],
[
{
"node": "Check general attendance1",
"type": "main",
"index": 0
}
]
]
},
"Route by meeting name1": {
"main": [
[
{
"node": "Tag absentee for non attendance",
"type": "main",
"index": 0
}
],
[
{
"node": "Tag absentee for non attendance1",
"type": "main",
"index": 0
}
]
]
},
"Build Normal Event Body": {
"main": [
[
{
"node": "Respond to Webhook (Events)",
"type": "main",
"index": 0
}
]
]
},
"Split webinar absentees": {
"main": [
[
{
"node": "Route by meeting name1",
"type": "main",
"index": 0
}
]
]
},
"Check general attendance": {
"main": [
[
{
"node": "Tag participant for general attendance",
"type": "main",
"index": 0
}
]
]
},
"Check general attendance1": {
"main": [
[
{
"node": "Tag participant for general attendance1",
"type": "main",
"index": 0
}
]
]
},
"Split webinar participants": {
"main": [
[
{
"node": "Filter internal users",
"type": "main",
"index": 0
}
]
]
},
"Respond to Webhook (Events)": {
"main": [
[
{
"node": "Wait 1 second",
"type": "main",
"index": 0
}
]
]
},
"Listen to ending Zoom webinars": {
"main": [
[
{
"node": "URL Validation check",
"type": "main",
"index": 0
}
]
]
},
"Get past Zoom webinar absentees": {
"main": [
[
{
"node": "Split webinar absentees",
"type": "main",
"index": 0
}
]
]
},
"Get past Zoom webinar participants": {
"main": [
[
{
"node": "Split webinar participants",
"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.
klickTippApizoomOAuth2Api
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/8418/ — 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.
Community Node Disclaimer: This workflow uses KlickTipp community nodes.
Community Node Disclaimer: This workflow uses KlickTipp community nodes.
Struggling with inaccurate Meta Ads tracking due to iOS 14+ and ad blockers? 📉 This workflow is your solution. It provides a robust, server-side endpoint to reliably send conversion events directly to
Community Node Disclaimer: This workflow uses KlickTipp community nodes.