Maintainer: @mickmister Co-Maintainer: @trilopin
The Mattermost Zoom integration allows team members to initiate a Zoom meeting with a single click. All participants in a channel can easily join the Zoom meeting and the shared link is updated when the meeting is over.
Important: Only Zoom users associated with the Zoom Account that created the Zoom App will be able to use the plugin. You can add these users from the Manage Users section in the Zoom Account settings.
- In Mattermost, go to Main Menu > Plugin Marketplace.
- Search for "Zoom" or manually find the plugin from the list and select Install.
- After the plugin has downloaded and been installed, configure the plugin.
- After configuring the plugin, configure Mattermost to use the plugin.
If your server doesn't have internet access, you can download the latest plugin binary release and upload it to your server via System Console > Plugin Management. The binary releases on the page above, are the same as used by the Plugin Marketplace.
- Go to Main Menu > Plugin Marketplace in Mattermost.
- Search for "Zoom" or manually find the plugin from the list and select Install.
- After the plugin has downloaded and been installed, configure the plugin.
- After configuring the plugin, configure Mattermost to use the plugin.
Zoom supports one authentication method for users to connect Mattermost and Zoom: OAuth.
- There are two types of OAuth Zoom Apps you can create. You can use either one with this Zoom plugin depending on your organization's security and UX preferences. (Account or User Level Apps)
- Account-Level App
- Users do not need to authorize their Zoom accounts before starting their first Zoom meeting. The only requirement is that their Mattermost account uses the same email address as their Zoom account.
- Users cannot connect their Mattermost/Zoom accounts if their emails do not match.
- User Level App
- Each user will need to connect their Zoom account with their Mattermost account before they can use the integration. When they try to create a meeting for the first time, they'll receive a message to connect their account, and will need to select Approve on the pop-up confirmation notice.
- Users can connect their Mattermost/Zoom accounts even if their emails do not match.
- Account-Level App
If you've been using an older version of the Zoom plugin, you likely have a legacy webhook-type app configured in Zoom. Legacy webhook apps are no longer supported by Zoom or Mattermost and are not compatible with Zoom plugin 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 Zoom v1.4, you can configure and associate your webhooks with an app you've already created. First, remove the previous webhook app. Then configure the webhook.
You can set the OAuth ClientID and OAuth Secret, generated by Zoom, and use it to create meetings and pull user data.
User-level Apps require each user to authorize the Mattermost App to access their Zoom account individually. If you prefer to authorize its access by an admin on behalf of the whole Zoom organization you should create an Account-level app instead.
- Go to https://marketplace.zoom.us/ and log in as an admin.
- In the top left select Develop and then Build Legacy App.
- Select OAuth in Choose your app type section.
- Enter a name for your app.
- Choose User-managed app as the app type.
- Choose whether you Would like to publish this app on Zoom Marketplace. In most cases you'll want this to be disabled, but the plugin supports apps that are published in the Zoom Marketplace.
- Select Create.
If you would like to publish on Zoom Marketplace, you'll find two sets of values: development and production. Make sure you follow the next steps with the production values.
- Go to the App Credentials tab on the left. Here you'll find your Client ID and Client Secret. These will be needed when you set up Mattermost to use the plugin.
- Enter a valid Redirect URL for OAuth (
https://SITEURL/plugins/zoom/oauth2/complete
) and add the same URL under Add Allow List. Note thatSITEURL
should be your Mattermost server URL.
Select Scopes and add the following scopes: meeting:read:meeting, meeting:write:meeting,user: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.
This plugin allows users to be deauthorized directly from Zoom, in order to comply with Zoom’s commitment to security and the protection of user data. If you would like to publish on Zoom Marketplace, you can set up a deauthorization URL.
- Select Information.
- Near the end of the page is a section called Deauthorization Notification.
- Enter a valid Endpoint URL (
https://SITEURL/plugins/zoom/deauthorization?secret=WEBHOOKSECRET
).SITEURL
should be your Mattermost server URL.WEBHOOKSECRET
is generated during when setting up Mattermost to use the plugin.
Follow the instructions for Mattermost Setup
You can set the OAuth ClientID and OAuth Secret, generated by Zoom, and use it to create meetings and pull user data. Note that this requires admin permissions on your Zoom account.
Account-level apps require an admin to authorize access to all users accounts within the Zoom account. Individual users in Mattermost are verified by checking their Mattermost email and requesting their Personal Meeting ID via the Zoom API. The user's emails in Zoom and Mattermost accounts should match up. If you prefer for each end user to authorize individually, you should create a user level Zoom app instead.
- Go to https://marketplace.zoom.us/ and log in as an admin.
- In the top left select Develop and then Build App.
- Select OAuth in Choose your app type section.
- Enter a name for your app.
- Choose Account-level app as the app type.
- Choose whether you Would like to publish this app on Zoom Marketplace. In most cases you'll want this to be disabled, but the plugin supports apps that are published in the Zoom Marketplace.
- Select Create.
If you would like to publish on Zoom Marketplace, you'll find two sets of values: development and production. Make sure you follow the next steps with the production values.
- Go to the App Credentials tab on the left. Here you'll find your Client ID and Client Secret.
- These will be needed when you set up Mattermost to use the plugin.
- Enter a valid Redirect URL for OAuth (
https://SITEURL/plugins/zoom/oauth2/complete
) and add the same URL under Add Allow List.SITEURL
should be your Mattermost server URL.
Select Scopes and add the following scopes: meeting:read:meeting:admin, meeting:write:meeting:admin,user: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.
This plugin allows users to be deauthorized directly from Zoom, in order to comply with Zoom’s commitment to security and the protection of user data. If you would like to publish on Zoom Marketplace, you can set up a deauthorization URL.
- Select Information.
- Near the end of the page, is a section called Deauthorization Notification.
- Enter a valid Endpoint URL (
https://SITEURL/plugins/zoom/deauthorization?secret=WEBHOOKSECRET
).SITEURL
should be your Mattermost server URL.WEBHOOKSECRET
is generated during Mattermost Setup.
Follow the instructions for setting up Mattermost to use the plugin.
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, we need to 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.
- Select Feature.
- Enable Event Subscriptions.
- Select Add New Event Subscription and give it a name (e.g. "Meeting Ended").
- Enter a valid Event notification endpoint URL (
https://SITEURL/plugins/zoom/webhook?secret=WEBHOOKSECRET
).SITEURL
should be your Mattermost server URL.WEBHOOKSECRET
is generated when setting up Mattermost to use the plugin.
Select Add events and select the End Meeting event.
Select Done and then save your app.
Note: You need a paid Zoom account to use the plugin.
- Enable settings for overriding usernames and overriding profile picture icons.
- Go to System Console > Plugins > Zoom to configure the Zoom Plugin.
Mattermost configuration settings
- Set Enable Plugin to
true
. - How are you hosting Zoom?
- Self Hosted?
- If you're using a self-hosted private cloud or on-premises Zoom server, enter the Zoom URL and Zoom API URL for the Zoom server, for example
https://yourzoom.com
andhttps://api.yourzoom.com/v2
respectively. Leave blank if you're using Zoom's vendor-hosted SaaS service.
- If you're using a self-hosted private cloud or on-premises Zoom server, enter the Zoom URL and Zoom API URL for the Zoom server, for example
- Cloud Hosted?
- Leave Zoom API URL and Zoom URL fields blank.
- Self Hosted?
- If you are using an account level app on Zoom, set OAuth by Account Level App to
true
. - Connect your users to Zoom using OAuth.
- Use the Client ID and Client Secret generated when configuring Zoom to fill in the fields Zoom OAuth Client ID and Zoom OAuth Client Secret. (If you have selected the app type as "Account level app", make sure that you are using an account-level app on Zoom side as well)
- Select the Regenerate button next to the field At Rest Token Encryption Key.
- If you are using Webhooks or Deauthorization, make sure you select the Regenerate button on Webhook Secret field. Then set the Zoom Webhook Secret from the features page in your Zoom app.
- Select Save.
The first time you create a meeting, you may be required to connect your account. Follow the instructions to connect your Zoom account.
Once enabled, selecting the video icon in a Mattermost channel invites team members to join a Zoom call, hosted using the credentials of the user who initiated the call.
You can also start a meeting in any chat window by typing /zoom start
.
This plugin contains both a server and web app portion. Read our documentation about the Developer Workflow and Developer Setup for more information about developing and extending plugins.
Inside the /server
directory, you will 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.
Inside the /webapp
directory, 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 running npm run build
.
Read our documentation about the Developer Workflow and Developer Setup for more information about developing and extending plugins.
The version of a plugin is determined at compile time, automatically populating a version
field in the plugin manifest:
- If the current commit matches a tag, the version will match after stripping any leading
v
, e.g.1.3.1
. - Otherwise, the version will combine the nearest tag with
git rev-parse --short HEAD
, e.g.1.3.1+d06e53e1
. - If there is no version tag, an empty version will be combined with the short hash, e.g.
0.0.0+76081421
.
To disable this behaviour, manually populate and maintain the version
field.
For Mattermost customers - please open a support case to ensure your issue is tracked properly.
For Questions, Suggestions and Help - please find us on our forum at https://forum.mattermost.org/c/plugins
Alternatively, join our pubic Mattermost server and join the Integrations and Apps channel here: https://community.mattermost.com/core/channels/integrations
To Contribute to the Mattermost project see https://www.mattermost.org/contribute-to-mattermost/.