Zoom Webhook: recording.completed Event Not Triggering After Meeting Ends

Hi everyone,

I’m integrating Zoom’s Cloud Recording functionality in our platform and relying on the recording.completed and meeting.ended webhook events to trigger follow-up workflows (e.g., download recording, notify user).

Here’s my setup:

  • App type: Account-Level OAuth / Webhook-Only app

  • Subscribed events: recording.completed, meeting.ended

  • Meeting gets recorded and ends successfully, recording appears in Zoom cloud

The problem:

  • The webhook event sometimes doesn’t fire (even though recording is listed)

  • Or the event arrives very late (several hours) which breaks our workflow

  • No error returned in Zoom dashboard, and no obvious pattern of which recordings fail

What I’ve tried so far:

  • Verified callback URL and SSL certificate + zoom verification test is passing

  • Checked Zoom dashboard → App → Event Subscriptions → “Test” shows success

  • Confirmed user account has proper recording permissions and cloud storage enabled

Questions:

  • Has anyone else experienced inconsistent webhooks for recording.completed or meeting.ended?

  • Are there any known limitations (region, meeting size, account type) that affect webhook delivery?

  • What logging or retry mechanisms do you recommend for production-grade handling of missing events?

Thanks in advance for any pointers or sample flows.

Hi @Jon_Harry, recording.completed only fires after Zoom finishes processing the cloud recording, which can sometimes take hours under load. I’ve seen threads that report it can take up to 24 hours in some cases, so don’t treat meeting.ended as availability of files. How long have you waited for the events that aren’t firing, is it possible that these are just highly delayed?

As another debug step, I would also suggest that you double check the app’s Event Subscriptions are active for the right app (dev vs prod) and that cloud recording is enabled on the account that hosts the meeting.

Also, if you’re interested in receiving a webhook immediately after a meeting has ended, and you want to be able to access the recording immediately, I’d recommend checking out the Recall.ai. It’s a simple 3rd-party API that allows you record meetings and receive this information in real time.

Let me know if you have any questions about this!