Webhook delivery stopped for specific account after user reconnect

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

  • :white_check_mark: OAuth token is valid — we can successfully call GET /v2/users/{user_id} and fetch past meetings via the API
  • :white_check_mark: Our webhook endpoint is up and receiving webhooks from other connected accounts without issues
  • :white_check_mark: The issue is isolated to this one account — all other customers are working fine
  • :white_check_mark: No changes were made to our webhook endpoint or event subscriptions

Events subscribed

  • meeting.participant_joined
  • meeting.participant_left
  • deauthorization

Our app

Our ask

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!

Hi team — following up on this. The issue is impacting our users and blocking webhook-driven time entry creation. Could you prioritize a response?

Hi @Pravin2 , thank you for your patience! You can check the delivery status using this endpoint:

get/marketplace/apps/{appId}/webhook_logs

Given the user has re-authorized the app, can you try using the API to add the subscription for the user?

Marketplace APIs - API - Zoom Developer Docs
post/marketplace/app/event_subscription

Hi @gianni.zoom

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

  1. 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?)
  2. 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.
  3. 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?
  4. 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.

Thanks,
Pravin

@gianni.zoom any update/suggestion on this ?

Hi @gianni.zoom

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!