Event's API does not expose the tracking_sources for the default access_link; Registration Link
Summary
After upgrading from Webinars to Webinar Plus (Zoom Events), we lost critical API functionality for tracking which registration source each registrant came from. The Webinars API exposes tracking sources via a public endpoint, but the Zoom Events API has no equivalent endpoint, it does have tracking source but no way to retrieve these via API
Background & Use Case
We manage webinars/events for multiple employer groups. Each group has a dedicated landing page on our platform that displays upcoming events with a registration link specific to that group. Our backend dynamically pulls upcoming events and resolves the correct registration link per group so we can:
- Display the right link on each group’s page
- Track which group a registrant came from
- Report registration analytics per group
Our registrant base includes employees, spouses, dependents, and referred clients — they do not all share a company email domain, so Zoom’s built-in “Company” field aggregation does not work for our use case.
What works with Webinars (current behavior)
- Each webinar supports up to 50 tracking sources
- Tracking sources are retrievable via the public API: GET /v2/webinars/{webinarId}/tracking_sources https://developers.zoom.us/docs/api/meetings/#tag/webinars/get/webinars/{webinarId}/tracking_sources
- Each tracking source has a unique URL, name, and visitor/registrant counts
- We can programmatically match registrants to their source
What’s broken/missing with Zoom Events
- No public API for tracking sources on Events
The Events default “Registration Link” (access link) supports up to 300 tracking sources configurable in the dashboard, but there is no public API endpoint to retrieve them. The only endpoint that returns this data is a private internal API used by the Zoom Events dashboard:
GET https://events.zoom.us/api/v2/e/events/{eventId}/sources?linkId={linkId}&pageNo=1&pageSize=100
This endpoint returns 401 when called with a Server-to-Server OAuth token or ZAK token — it requires browser session authentication and is not accessible to Zoom Apps.
- No registrant-to-access-link mapping
As a workaround, we attempted to use access links as a substitute for tracking sources — creating a named access link per group (e.g., “GroupName Link”). The links work for registration, but:
- The GET /v2/zoom_events/events/{eventId}/registrants endpoint does not return which access link a registrant used
- The access_link_id query parameter on the registrants endpoint is ignored (returns all registrants regardless)
- The ticket detail endpoint (GET /v2/zoom_events/events/{eventId}/tickets/{ticketId}) does not include an access_link_id or source field
- Multiple group-join access links share the same ticket_type_id, so there is no way to determine which specific link a registrant used
The Zoom Events analytics dashboard also does not appear to display this per-registrant source data, it appears that it still relies on the natural tracking_sources to track each registrant’s source in the Analytics pages and reports, which is fine, but the Event’s tracking sources are not exposed in the API
What we’re asking/requesting
Any one of the following would resolve this:
- Expose tracking sources via the public Events API — equivalent to GET /v2/webinars/{id}/tracking_sources, for the default Registration Link’s tracking sources
- Add an access_link_id field to the registrant/ticket response — so we can map each registrant to the access link they registered through
- Make the private sources endpoint accessible to Server-to-Server OAuth tokens — events.zoom.us/api/v2/e/events/{eventId}/sources
We upgraded to Webinar Plus specifically to use Zoom Events, and this gap means we have less functionality than we had with standard Webinars. We cannot track registration sources per group, which is core to our platform’s reporting and link management. This affects our ability to serve multiple employer groups from a single event.
When we contacted zoom support about this, they replied with this, which sounded like a configuration issue, is this true?
We have confirmed this issue is configuration-related and not within the scope of your account’s Developer Support Plan, as such this case will be closed.
I even tried posting all of the above on the devforum.zoom.us site it’s been a few days and my post is still pending.
