Webhook delivery stopped for specific account after user reconnect
Hi,
We’re a published Zoom Marketplace app (Timely — time tracking integration) experiencing a webhook delivery issue affecting a specific customer account.
What happened
A customer’s Zoom integration was working normally, syncing meetings for all workspace users
The workspace admin disconnected and reconnected the integration
After reconnecting, no webhooks are being delivered for any users in that account
This has persisted for over a month now (since around February 23, 2026)
What we’ve verified on our end
OAuth token is valid — we can successfully call GET /v2/users/{user_id} and fetch past meetings via the API
Our webhook endpoint is up and receiving webhooks from other connected accounts without issues
The issue is isolated to this one account — all other customers are working fine
No changes were made to our webhook endpoint or event subscriptions
Could someone from the Zoom team check the webhook delivery logs for our app for this specific account? We believe webhooks stopped being dispatched after the reconnect.
Happy to share app credentials and affected account details via DM or private ticket.
Thanks for the suggestion. Before we go down this path I wanted to confirm a few things, as we’re hitting some unknowns trying to use the Marketplace event_subscription endpoints.
Our setup
We have a single user-managed OAuth2 Marketplace app (published) used to connect end-customer Zoom accounts to Timely
The scopes currently enabled on the app are meeting:read:admin and user:read:admin
We do not have a Server-to-Server OAuth app
What’s working / not working /What we tried
Webhooks are being delivered correctly on our staging environment — the same code, deployed to staging, receives meeting.participant_joined / meeting.participant_left
events without issue
Using a refreshed user access token from a customer who reconnected, we called:
GET https://api.zoom.us/v2/marketplace/app/event_subscription?account_id=<account_id>
Authorization: Bearer <user_token>
Response:
401 {“code”:201,“message”:“Invalid access token, does not contain scopes:[marketplace:read:list_event_subscriptions].”}
Questions
Is there a specific reason event subscription registration is broken for accounts that re-authorize an existing installation? (i.e. why doesn’t the original subscription remain active across re-auths?)
What scopes does POST /v2/marketplace/app/event_subscription (and the corresponding GET / PATCH / DELETE) require? The marketplace:* scopes don’t appear in our app’s
scope picker in the Marketplace build flow.
Are these endpoints intended to be called with a user OAuth token at all, or only with Server-to-Server OAuth credentials? If S2S is required, can you confirm that’s
the supported path for programmatically (re-)registering subscriptions on user re-auth?
If user OAuth tokens are supported, can you enable the relevant marketplace:* scopes on our existing app (App ID: <APP_ID>) so they show up in the consent flow?
Goal on our side: register/refresh the event subscription automatically whenever a customer (re-)connects their Zoom account, so we don’t keep losing webhook delivery for
re-authorized installations.
Following up on our earlier conversation about enabling programmatic event-subscription management for our Marketplace app.
App client_id: sU0rhvETC2RPRN0CBMvrg
We tried calling GET ``https://api.zoom.us/v2/marketplace/app/event_subscription with an access token from our app, and got back:
401 Unauthorized
{“code”:201,“message”:“Invalid access token, does not contain scopes:[marketplace:read:list_event_subscriptions].”}
The error confirms the endpoint is correct; we’re just missing the scope on the token. Could you please enable the following scopes on our app so they get included on new OAuth tokens?
marketplace:read:list_event_subscriptions
marketplace:write:event_subscription (or whichever the corresponding write/create scope name is — happy to follow up with the exact one once
read is granted and we try the POST)
these scopes are tied to the app on Zoom’s side and aren’t self-serviceable from the Marketplace app’s Scopes tab — hence the ask.
Goal: register and manage event subscriptions for our app programmatically rather than via the dashboard, so we can wire up
meeting.participant_joined / meeting.participant_left etc. for our integration without manual configuration drift.
Let me know if you need anything else from our side. Thanks!