Connect Zoom to Mattermost#
Available on all plans
Cloud and self-hosted deployments
Reduce friction and time lost to coordinating meetings and switching between apps by integrating Zoom with Mattermost. Make it easy for your teams to start both spontaneous and scheduled video calls directly from Mattermost channels.
Setup#
Setup starts in Zoom and configuration ends in Mattermost.
Register an OAuth app in Zoom#
A Zoom system admin must perform the following steps in Zoom.
Zoom supports OAuth authentication, and there are 2 types of OAuth Zoom Apps you can register: Account-Level and User-Level. You can use either type based on your organization’s security and preferences.
Account-Level: Individual users in Mattermost are verified by checking their Mattermost email and requesting their Personal Meeting ID via the Zoom API. The user’s email address in both Mattermost and Zoom must match. Create a User Level Zoom app instead if you prefer that each user to authorize individually.
User-Managed: Individual users in Mattermost are required to authorize the Mattermost App to access their Zoom account. Create an Account-Level app instead if you prefer that an admin authorizes access on behalf of the whole Zoom organization.
Complete the following steps to create an account-level Zoom app for Mattermost.
Go to https://marketplace.zoom.us/ and log in as an admin.
In the top left, select Develop and then select Build App.
Under Choose your app type, select OAuth.
Enter a name for your app.
Choose Account-level app as the app type.
Choose whether to publish this app on Zoom Marketplace. In most cases you’ll want this disabled. See notes below for details on publishing the app on the Zoom Marketplace.
Select Create.
Note
To publish the account level Zoom app on the Zoom Marketplace, go to the App Credentials tab on the left. - Copy the production values for Client ID and Client Secret. You’ll provide these values during Mattermost configuration.
Enter a valid Redirect URL for OAuth
https://YOUR-MATTERMOST-URL.COM/plugins/zoom/oauth2/complete, replacinghttps://YOUR-MATTERMOST-URL.COMwith your Mattermost URL. This value must match the Mattermost server URL you use to log in.Add the same
https://YOUR-MATTERMOST-URL.COMunder Add Allow List.To set up a deauthorization URL to deauthorize users directly from Zoom, go to the Information tab on the left. Under Deauthorization Notification, enter a valid Endpoint URL
https://YOUR-MATTERMOST-URL.COM/plugins/zoom/deauthorization?secret=WEBHOOKSECRET, replacinghttps://YOUR-MATTERMOST-URL.COMwith your Mattermost URL.WEBHOOKSECRETis generated during Mattermost configuration.
To add user scopes to the OAuth app, go to the Scopes tab on the left. Add the following scopes:
meeting:read:meeting:admin,meeting:write:meeting:admin,anduser:read:user:admin.Zoom has one last option called Install. There is no need to perform this action. However, if you perform this action inadvertently, you’ll see an error on Mattermost. This is expected.
Complete the following steps to create a user-managed Zoom app for Mattermost.
Go to https://marketplace.zoom.us/ and log in as an admin.
In the top left, select Develop and then select Build Legacy App.
Under Choose your app type, select OAuth.
Enter a name for your app.
Choose User-managed app as the app type.
Choose whether topublish this app on Zoom Marketplace. In most cases you’ll want this disabled. See notes below for details on publishing the app on the Zoom Marketplace.
Select Create.
Note
To publish the user level Zoom app on the Zoom Marketplace, go to the App Credentials tab on the left.
Copy the production values for Client ID and Client Secret. You’ll provide these values during Mattermost configuration.
Enter a valid Redirect URL for OAuth
https://YOUR-MATTERMOST-URL.COM/plugins/zoom/oauth2/complete, replacinghttps://YOUR-MATTERMOST-URL.COMwith your Mattermost URL. This value must match the Mattermost server URL you use to log in.Add the same
https://YOUR-MATTERMOST-URL.COMunder Add Allow List.To set up a deauthorization URL to deauthorize users directly from Zoom, go to the Information tab on the left. Under Deauthorization Notification, enter a valid Endpoint URL
https://YOUR-MATTERMOST-URL.COM/plugins/zoom/deauthorization?secret=WEBHOOKSECRET, replacinghttps://YOUR-MATTERMOST-URL.COMwith your Mattermost URL.WEBHOOKSECRETis generated during Mattermost configuration.
To add user scopes to the OAuth app, go to the Scopes tab on the left. Add the following scopes:
meeting:read:meeting,meeting:write:meeting,anduser:read:user.Zoom has one last option called Install. There is no need to perform this action. However, if you perform this action inadvertently, you’ll see an error on Mattermost. This is expected.
Important
If you’ve been using an older version of the Zoom plugin prior to release v1.4, you likely have a legacy webhook-type app configured in Zoom.
Legacy webhook apps are no longer supported by Zoom or Mattermost and aren’t compatible prior to release v1.4.
You may experience issues with the meeting status message information not being updated when a meeting ends. This is because the webhook endpoint expects a JSON format request, and newer webhooks use different formats.
From version 1.4 of this integration, you can configure and associate your webhooks with an app you’ve already created. We recommend removing the previous webhook app before configuring a new webhook.
Configure webhook events#
When a Zoom meeting ends, the original link shared in the channel can be changed to indicate the meeting has ended and how long it lasted. To enable this functionality, create a webhook subscription in Zoom that tells the Mattermost server every time a meeting ends. The Mattermost server then updates the original Zoom message.
While logged in to https://marketplace.zoom.us/ as an admin, go to the Feature tab on the left.
Enable Event Subscriptions.
Select Add New Event Subscription, and give it a name, such as
Meeting Ended.Enter a valid Event notification endpoint URL
https://SITEURL/plugins/zoom/webhook?secret=WEBHOOKSECRET, replacinghttps://YOUR-MATTERMOST-URL.COMwith your Mattermost URL.WEBHOOKSECRETis generated during Mattermost configuration.Select Add events, and then select the End Meeting event.
Select Done and then save your app.
Mattermost configuration#
Enable settings for overriding usernames and overriding profile picture icons.
A Mattermost system admin needs to enable and configure GitHub by going to System Console > Plugins > Zoom.
For Mattermost Cloud deployments, leave the Zoom API URL and Zoom URL fields blank.
For self-hosted Mattermost deployments, enter the Zoom URL and Zoom API URL for the Zoom server when you’re using a self-hosted private cloud or on-premises Zoom server, such as
https://YOUR-ZOOM.comandhttps://api.YOUR-ZOOM.com/v2respectively, replacingYOUR-ZOOMwith your Zoom server URL. Leave this field blank if you’re using Zoom’s vendor-hosted SaaS service.If you’ve created an account level Zoom app for Mattermost, set OAuth by Account Level App to true. Leave this value as false if you’ve created a user level Zoom app for Mattermost.
Connect your users to Zoom using OAuth. Enter the Client ID and Client Secret generated when registering the oauth app in Zoom.
Select Regenerate next to the At Rest Token Encryption Key field to generate an AES encryption key.
If you’re configuring webhook events, or setting up deauthorization, select Regenerate next to the Webhook Secret field. Configure this secret as the Zoom Webhook Secret on the Features tab in Zoom.
Select Save to save your changes.
Enable#
Notify your teams that they can connect their GitHub accounts to Mattermost.
Upgrade#
We recommend updating this integration when new versions are released. Generally, updates are seamless and don’t interrupt the user experience in Mattermost. Visit the Releases page for the latest release, available releases, and compatibiilty considerations.
Usage#
You need a paid Zoom account to start a Zoom call within Mattermost. The first time you create a Zoom meeting, you may be prompted to connect your account. Follow the instructions to connect your Zoom account using your credentials.
Start a call by selecting the Zoom icon in the right pane, or by running the /zoom start slash command in any channel. All channel members are invited to join the call. The call host is the person who started the call.
Join a call by selecting the call invitation in the channel.
Run the /zoom settings slash command to set your preference for using your Zoom personal meeting ID as a call host. You can always use your personal meeting ID, never use it, or set Mattermost to prompt you for your preference each time you start a call.
Get help#
Mattermost customers can open a Mattermost support case. To report a bug, please open a GitHub issue against the Mattermost Zoom plugin repository.
For questions, feedback, and assistance, join our pubic Integrations and Apps channel on the Mattermost Community Server for assistance, or join us on the Mattermost Discussion Forum.
Customize#
This integration contains both a server and web app portion.
Server: Inside the
/serverdirectory, you’ll find the Go files that make up the server-side of the plugin. Within there, build the plugin like you would any other Go application.Web App: Inside the
/webappdirectory, you will find the JS and React files that make up the client-side of the plugin. Within there, modify files and components as necessary. Test your syntax by runningnpm run build.
Visit the Mattermost Developer Workflow and Mattermost Developer environment setup for information about developing, customizing, and extending Mattermost functionality.