Webhook events not being delivered for beta-approved OAuth app

I’m building an OAuth app that processes Zoom meeting transcripts. The app has been approved for beta testing. I’m using production credentials.

I’ve subscribed to recording.transcript_completed and meeting.ended events, but no webhook events are being delivered. The Webhook Logs page in the Marketplace dashboard shows “No data” — Zoom isn’t even attempting delivery.

App details:

What works:

  • OAuth tokens are valid — API calls to /v2/users/me/settings and /v2/users/me/meetings succeed
  • The app shows as installed in my Installed Apps (Subscribed Mar 02)
  • Endpoint URL validation succeeds — Zoom sent endpoint.url_validation and got a 200 response
  • “Create audio transcript” is enabled in my Zoom recording settings
  • Cloud recording is enabled with auto-recording set to cloud

What doesn’t work:

  • No meeting.ended events after ending meetings
  • No recording.transcript_completed events after transcripts are ready (I receive the email notification from Zoom, but no webhook)
  • Webhook Logs page shows “No data” for the last 7 days

Debugging steps I’ve tried:

  1. Verified the endpoint is publicly accessible via curl:
    curl -X POST https://us-central1-ignite-coach.cloudfunctions.net/zoomWebhook -H "Content-Type: application/json" -d '{"event":"test","payload":{}}'
    Returns 401 (expected — no valid Zoom signature). Server logs confirm the request was received.

  2. Deleted and recreated the event subscription. Re-validated the endpoint URL (got 200). Still no events delivered.

  3. Disconnected and reconnected Zoom through the app (full OAuth re-authorization flow). Still no events.

  4. Confirmed the meeting host is the same account the app is installed on.

  5. Added server-side logging to the webhook handler — no incoming requests from Zoom at all (only the endpoint validation POST).

  6. Checked both Development and Production tabs — event subscription is configured on Production with the correct URL and events.

The endpoint validation works, API calls work, but actual event delivery never happens. This appears to be a Zoom-side routing issue. Any help would be appreciated.

Hi @scottyf based on all the setup steps you’ve taken, I would expect you to be receiving Zoom webhooks, so I’m wondering if this has anything to do with the fact that you’re Beta Test approved and using production credentials.

Can you confirm whether your event subscriptions fire when the app is installed only on your own Zoom account in the app’s development flow, before involving beta distribution at all? If webhooks are missing even there, that points to a config or install issue in the active environment. If they work on your own account but stop once you move to the beta install path, that makes the beta distribution state or authorization flow the more likely cause. As a second sanity check, make sure the event is subscribed in the same environment where the app was installed and tested via the authorization URL.

Also, if you’re looking for an alternative way to pull transcripts from Zoom meetings, you could also consider using a Meeting Bot API or Desktop Recording SDK from Recall.ai, depending on whether you want bot-join or on-device capture.

Hi @amanda-recallai, thanks for your response.

I hosted and ended a meeting on my own Zoom account (the developer/owner account), but haven’t seen them fire. I also tried the following just now:

Environment verification: Confirmed event subscriptions (meeting.ended and recording.transcript_completed) are configured under the Production tab, which matches the Client ID my app uses (G4Pg....). Endpoint URL is correct: https://us-central1-ignite-coach.cloudfunctions.net/zoomWebhook.

Reinstall test: Uninstalled the app from my Zoom account via Marketplace → Installed Apps → Remove, then re-authorized through the OAuth flow. Hosted another test meeting and ended it. Still no webhook delivery — nothing in Webhook Logs, nothing hitting my endpoint.

What works: API calls succeed (tokens are valid, /v2/users/me, /v2/users/me/settings, /v2/users/me/meetings all return 200). Endpoint validation passed when I set it up. My server logs confirm no POST requests from Zoom for any meeting events.

No matter what I try, the “Webhook Logs” remain empty and nothing hits my server.

I swapped to my Development credentials (Client ID + Secret), re-authorized, and ran another test meeting. Same result — no webhook delivery.

I also noticed my server logs show several non-POST requests hitting the webhook endpoint (returning 405) around the time I re-authorized. I’ve since updated the endpoint to return 200 on GET/HEAD in case Zoom uses those as health checks, but haven’t been able to get them to fire again. The docs state Zoom uses POST for everything though so I doubt thats it.