Quick Overview
This workflow listens for Zoom meeting.ended webhooks, fetches past-meeting participants and approved registrants, calculates engagement (including re-joins), and tags contacts in KlickTipp as attended, fully attended, or not attended based on configurable thresholds and per-meeting tag IDs.
How it works
- Receives a Zoom webhook when a meeting ends and either completes Zoom’s endpoint URL validation or immediately responds with an “ok” status to avoid timeouts.
- Waits 60 seconds, then calls the Zoom API to retrieve all past-meeting participants with pagination.
- Calls the Zoom API to retrieve all approved meeting registrants (if registration is enabled) to identify no-shows.
- Aggregates participant sessions by email, resolves missing emails via registrant IDs, calculates attendance ratio against the actual meeting duration, and classifies each person as attended, fully attended, or not attended.
- For attendees, looks up the contact in KlickTipp and either tags existing contacts as attended or subscribes new contacts via the configured opt-in process with the attended tag.
- For fully attended attendees, adds an additional “fully attended” tag in KlickTipp, and for registrants who never joined, applies a “not attended” tag (skipping unknown contacts if they don’t exist in KlickTipp).
Setup
- Create a Zoom app with webhook support, enable the meeting.ended event, and add OAuth access for the required Zoom scopes (including reading past participants and registrants).
- Add your Zoom Secret Token to the HMAC step used for Zoom endpoint URL validation, and connect your Zoom OAuth2 credentials in the Zoom HTTP requests.
- Install/configure the KlickTipp community node credentials, create the attended/fully attended/not attended tags in KlickTipp, and set the correct tag IDs and the opt-in process (listId) in the workflow configuration.
- Update the webinar/topic matching and tag ID mapping in the classification code (and adjust the full-attendance ratio if needed), then copy the n8n webhook URL into your Zoom webhook configuration.