# Zoom

Pipedream provides a serverless programming platform for building event-driven workflows that integrate apps. Pipedream comes with prebuilt actions for interacting with the Zoom API, and allows you to listen for Zoom events in your account and trigger code when they happen.

Pipedream is fully programmable - you can write any Node.js code to control your workflows - but also fully-managed: Pipedream runs your code, so you don't have to manage any infrastructure and can focus on your workflow's logic.

# Overview

Pipedream workflows allow you to run any Node.js code that connects to the Zoom API. Just create a new workflow (opens new window), then add prebuilt Zoom actions (create a meeting, send a chat message, etc.) or write your own Node code. These workflows can be triggered by HTTP requests, timers, email, or on any app-based event (new tweets, a Github PR, Zoom events, etc).

How Pipedream works

Pipedream event sources expose real-time event streams for any Zoom event (opens new window) - just connect your Zoom account, and get an event stream. Event sources can trigger workflows, running custom code each time an event occurs in Zoom. For example, to run a workflow each time a meeting ends, you can create a Meeting Ended source. This source emits an event as soon as a meeting ends in your account, which can trigger a workflow that pulls participant stats, emails those participants a survey, or anything else you'd like.

How Zoom Event sources work

You can also subscribe to a private SSE stream that lets you listen for these events in your own application, in real time. This allows you to use Pipedream to host the event source, which can trigger existing code in your own infrastructure (vs. a Pipedream workflow).

Listen for an SSE event in your own app

# Zoom vs. Zoom Admin app

Zoom users can be classified into two groups: non-admins and admins. Admins have account-level permissions that users do not, and Zoom has corresponding admin-level scopes that aren't relevant for normal users. Therefore, Pipedream exposes two apps — Zoom and Zoom Admin — to serve the two groups.

Zoom and Zoom Admin apps

In the Zoom Marketplace, these apps are named Pipedream (opens new window), and Pipedream for Zoom Admins (opens new window), respectively.

Non-admins have permissions (opens new window) to manage standard Zoom resources in their account: meetings, webinars, recordings, and more. If you're a non-admin, you'll want to use the Zoom app.

Zoom admins have permissions (opens new window) to manage account-level resources, like users and reports. They can also manage webinars and meetings across their organization. If you're an admin and need to manage these resources via API, you'll want to use the Zoom Admin app.

The Zoom API docs on permissions (opens new window) provide detailed information on these permissions and their associated OAuth scopes.

# Connecting to Zoom from Pipedream

  1. First, sign up for Pipedream at https://pipedream.com (opens new window).
  2. Visit https://pipedream.com/accounts (opens new window).
  3. Click the button labeled Click Here to Connect an App.
  4. Search for "Zoom" and select either Zoom or Zoom Admin (see the differences above):
Zoom and Zoom Admin apps in Connect an App Modal

This will open up a new window prompting you to authorize Pipedream's access to your Zoom account. Once you authorize access, you should see your Zoom account listed among your apps.

  1. Create a new workflow (opens new window), add a new step, search for "Zoom" or "Zoom Admin". Once you've selected either app, you can choose to either "Run Node.js code" or select one of the prebuilt actions for performing common API operations.
  2. At this stage, you'll be asked to link the Zoom account you connected above, authorizing the request to the Zoom API with your credentials:
Connect Zoom Account

# Zoom Event Sources

Pipedream event sources expose real-time event streams for any Zoom event (opens new window) - just connect your Zoom account, and get an event stream.

Event sources can trigger workflows, running custom code each time an event occurs in Zoom. For example, to run a workflow each time a meeting ends, you can create a Meeting Ended source. This source emits an event as soon as a meeting ends in your account, which can trigger a workflow that pulls participant stats, emails those participants a survey, or anything else you'd like.

There are two categories of Zoom event sources:

  • Event-specific sources listen for a specific Zoom event (Meeting Created, Recording Completed, etc). Event-specific sources exist only for the most common Zoom events, but you can request another source here (opens new window).
  • The Custom Events source allows you to listen for any event from Zoom, and even lets you listen for multiple events at the same time. For example, if you want to run a workflow on both Meeting Started and Webinar Started events, you can create a custom source that listens for them both, and use that event source as your workflow's trigger.

# Creating a Zoom event source

  1. Visit https://pipedream.com/sources (opens new window).
  2. Click the Create Source button.
  3. In the Select an App drop-down, select either Zoom or Zoom Admin (see the difference above).
  4. In the Select a Source drop-down, you can either choose from the list of sources tied to a specific event (Meeting Created, Recording Completed, etc.), or create an event source that listens for any Zoom event by selecting the Zoom Custom Events or Zoom Admin Custom Events source.
List of Zoom event sources

# Event-specific sources

You can create event sources tied to common Zoom events, like Meeting Created and Recording Completed, by selecting one of the corresponding event sources. These event sources are built to process specific events, and emit data in a format that makes sense for the event type.

For example, the Recording Completed source lets you filter on options specific to recordings:

Recording Completed Source

and it emits each recording file as its own event - that is, if you're listening for video, audio, and chat recordings, this source will emit up to 3 events for each meeting: one for each file type.

You can find the source code for each of these event sources in the PipedreamHQ/pipedream (opens new window) Github repo:

If you can't find the source you're looking for, you can use the Zoom Custom Events source to listen for any events from Zoom. You can also request another source here (opens new window), or develop your own Zoom source and open up a pull request in the PipedreamHQ/pipedream (opens new window) Github repo to add that source to the Pipedream platform for anyone to use.

# Zoom Custom Events source

The Zoom Custom Events or Zoom Admin Custom Events source allows you to listen for any event from Zoom, and even lets you listen for multiple events at the same time.

For example, if you want to run a workflow on both Meeting Started and Webinar Started events, you can create a custom source that listens for them both, and use that event source as your workflow's trigger. Just create the Zoom Custom Events source and select meeting.started and webinar.started from the list of events in the Zoom Events drop-:down:

Zoom Events drop-down

# List of Custom Events

Below, you'll find a full list of the events that you can listen for, with links to the corresponding Zoom docs. Some events are also only available for either the Zoom or Zoom Admin apps, which is indicated by the Zoom and Zoom Admin columns.

Event Description Zoom Zoom Admin
account.created (opens new window) New Sub Account created
account.updated (opens new window) An Account or a Sub Account's profile is updated
account.settings_updated (opens new window) An account or a Sub Account’s settings are updated
account.disassociated (opens new window) Sub Account Disassociated from a Master Account
meeting.alert (opens new window) Meeting service issue encountered
meeting.created (opens new window) Meeting created in my Zoom account
meeting.created.by_me (opens new window) Meeting created by me
meeting.created.for_me (opens new window) Meeting created where I'm the host
meeting.updated (opens new window) Meeting updated
meeting.deleted (opens new window) Meeting deleted in my Zoom account
meeting.deleted.by_me (opens new window) Meeting deleted by me
meeting.deleted.for_me (opens new window) Meeting deleted where I was the host
meeting.started (opens new window) Meeting started
meeting.ended (opens new window) Meeting ended
meeting.registration_created (opens new window) User registered for meeting
meeting.registration_approved (opens new window) Meeting registration approved
meeting.registration_cancelled (opens new window) Meeting registration cancelled
meeting.registration_denied Meeting registration denied
meeting.sharing_started (opens new window) A host or attendee shared their screen
meeting.sharing_started.host (opens new window) A host shared their screen
meeting.sharing_started.participant (opens new window) An attendee shared their screen
meeting.sharing_ended (opens new window) A host or attendee stopped sharing their screen
meeting.sharing_ended.host (opens new window) A host stopped sharing their screen
meeting.sharing_ended.participant (opens new window) An attendee stopped sharing their screen
meeting.participant_jbh_joined (opens new window) Attendee joined meeting before host
meeting.participant_jbh_waiting (opens new window) Attendee waiting for host to join meeting
meeting.participant_joined (opens new window) Host or attendee joined meeting
meeting.participant_joined_waiting_room (opens new window) Participant joined waiting room
meeting.participant_admitted (opens new window) Participant was admitted to meeting from waiting room
meeting.participant_put_in_waiting_room (opens new window) Participant placed in waiting room from meeting
meeting.participant_left_waiting_room (opens new window) Participant left waiting room, or was removed
recording.started (opens new window) Recording started
recording.paused (opens new window) Recording paused
recording.resumed (opens new window) Recording resumed
recording.stopped (opens new window) Recording stopped
recording.completed (opens new window) Recording completed
recording.renamed (opens new window) Recording renamed
recording.renamed.by_me (opens new window) Recording renamed by me
recording.renamed (opens new window) Recording renamed for an event where I was the host
recording.trashed (opens new window) Recording trashed
recording.trashed.by_me (opens new window) Recording trashed by me
recording.trashed.for_me (opens new window) Recording trashed for an event where I was the host
recording.deleted (opens new window) Recording deleted
recording.deleted.by_me (opens new window) Recording deleted by me
recording.deleted.for_me (opens new window) Recording deleted for an event where I was the host
recording.recovered (opens new window) Recording recovered
recording.recovered (opens new window) Recording recovered by me
recording.recovered (opens new window) Recording recovered for an event where I was the host
recording.transcript_completed (opens new window) Recording transcript completed
recording.registration_completed (opens new window) User registered for an on-demand recording
recording.registration_approved (opens new window) User approved to view recording
recording.registration_denied (opens new window) User denied access to cloud recording
user.created (opens new window) User created
user.invitation_accepted (opens new window) User accepted account invitation
user.updated (opens new window) User profile updated
user.settings_updated (opens new window) User settings updated
user.activated (opens new window) User activated
user.deactivated (opens new window) User deactivated
user.disassociated (opens new window) User disassociated
user.deleted (opens new window) User deleted
user.signed_in (opens new window) User signed in
user.signed_out (opens new window) User signed out
webinar.created (opens new window) Webinar created in my account
webinar.created.by_me (opens new window) Webinar created by me
webinar.created.for_me (opens new window) Webinar created where I'm the host
webinar.updated (opens new window) Webinar updated
webinar.deleted (opens new window) Webinar deleted in my account
webinar.deleted.by_me (opens new window) Webinar deleted by me
webinar.deleted (opens new window) Webinar deleted where I'm the host
webinar.started (opens new window) Webinar started
webinar.ended (opens new window) Webinar ended
webinar.alert (opens new window) Webinar service issue encountered
webinar.sharing_started (opens new window) A host or attendee shared their screen
webinar.sharing_started.host (opens new window) A host shared their screen
webinar.sharing_started.participant (opens new window) An attendee shared their screen
webinar.sharing_ended (opens new window) A host or attendee stopped sharing their screen
webinar.registration_created (opens new window) User registered for webinar
webinar.registration_approved (opens new window) Webinar registration approved
webinar.registration_cancelled (opens new window) Webinar registration cancelled
webinar.registration_denied (opens new window) Webinar registration denied
webinar.participant_joined (opens new window) Host or attendee joined webinar
webinar.participant_left (opens new window) Host or attendee left webinar

# Example workflows

You can copy any of the workflows below by clicking Copy in the top-right corner of the workflow. This will create a copy of the workflow in your account, where you can connect your Zoom account.

# Common Issues

If you encounter any issues connecting to Zoom with Pipedream, please reach out to our Support team (opens new window).

# My Zoom event source isn't receiving events

It's likely that you need to re-authorize Pipedream's access to your Zoom account to start receiving events. Here's how to do that:

  1. Visit https://pipedream.com/sources (opens new window)
  2. Select your event source, and click on the Configuration tab.
  3. Press unlink next to your connected Zoom account, then press the Connect Zoom button.
  4. When your list of connected Zoom accounts appears, click New. This will prompt you to authorize Pipedream's access to your Zoom account again, creating a new auth grant.
  5. This should renew the link between your Zoom account and Pipedream. Try triggering your Zoom event again.

# Removing Pipedream's access to your Zoom account

You can revoke Pipedream's access to your Zoom account by visiting your list of installed apps in Zoom (opens new window).

As soon as you do, any Pipedream workflows that connect to Zoom will immediately fail to work.

You can delete any Zoom connected accounts in your list of Pipedream Accounts (opens new window), as well.

# Usage

Please see the section on Connecting to Zoom from Pipedream to create a Pipedream workflow that connects to the Zoom API.

Pipedream's Zoom app requests all Zoom user-managed App Scopes (opens new window).

Pipedream's Zoom Admin app requests all Zoom account-level App Scopes (opens new window).

Still have questions?

Please reach out if this doc didn't answer your question. We're happy to help!