DEV Community

Cover image for How to automatically update your Slack status when you join a Zoom meeting

How to automatically update your Slack status when you join a Zoom meeting

Chances are very high these days (among others thanks to COVID-19), that you are using Zoom and Slack in your company. Wouldn't it be nice, if we could connect those two tools and automate the Slack status based on your Zoom presence state? πŸ€”

That's what we've discussed at Lovely Systems in our last retrospective. People were missing the current state (eg. "in a meeting") when a team-mate did not respond (quickly).

Thanks to the restrictions on outdoor activities in Austria πŸ‡¦πŸ‡Ή, I had the time to wrap my head around this idea and created a tool for it. πŸ’‘

Meet the "Zoom-Slack-Status-Updater" (MIT). It is

  • open-source
  • supports multiple Slack workspaces
  • can be hosted on
  • and is quickly set up.

I'll guide you through the process, so you can have your own. Let's jump right into it.

What you need

  • a Zoom App
  • a Slack App
  • and a ZEIT account

(Note: the steps are also described on GitHub)

First, make sure you have cloned the source code, as well as now and all dependencies installed.

git clone
npm install -g now
yarn # or npm i
Enter fullscreen mode Exit fullscreen mode

Setup & Deployment

Step 1 - Setup

  1. Create a ZEIT account
  2. and log in with now login in your terminal

Step 2 - Setup Slack

  1. Create a Slack App for your workspace(s)
  2. Grant each app the users.profile:write privilege in User Token Scopes in the OAuth Tokens & Redirect URLs view, before clicking on the "Install App" button.
  3. Copy and paste each OAuth Access Token into the configuration file created in the subsequent step.

Alt Text

Step 3 - Configure App

  1. Duplicate the example config and rename it to slack-status-config.js. This should happen automatically thanks to a postinstall script.
  2. Create a config object for each slack workspace you want to update when a Zoom meeting starts.

You can either use now secret for the token values, or copy the token string right into the workspace config. I used the secret option described below (this is the reason why the checked-in now.json is opinionated and includes already one secret):

now secrets

When working with now secret you need to do the following for each secret (aka Slack app token):

Step 1 - create a secret

now secret add SLACK_TOKEN_1 "xoxp-xxx-xxx"
Enter fullscreen mode Exit fullscreen mode

Step 2 - add the secret to now.json

  "env": {
    "SLACK_TOKEN_1": "@slack_token_1"
Enter fullscreen mode Exit fullscreen mode

Step 3 - add process.env.<secret name> to your configuration file

    name: 'Slack Workspace 1',
    token: process.env.SLACK_TOKEN_1,
Enter fullscreen mode Exit fullscreen mode

Step 4 - Deploy App to

# example questions when setting up the now project for the first time
# What’s your project’s name? your-app-name
# In which directory is your code located? ./
Enter fullscreen mode Exit fullscreen mode

This will guide you through the process of creating and deploying the project to Remember the created URL. You are going to need it in the next step for the ZOOM app.

Tip: Do not use an obvious name for your URL here, something random or other people could mess with your Slack status. πŸ˜†

Step 5 - Setup Zoom

Create Webhook Only Zoom App

Create a new (or use an existing) "Webhook Only" Zoom app with your Zoom account. Even if you have added multiple Slack workspaces, you just need one Zoom app.

Fill out the required information and activate Event Subscriptions. Add
the User’s presence status has been updated event type and the generated domain for Event notification endpoint URL.

Setup Zoom App

You can read more about it setting up the App here.

Step 6 - Test :)

Now, open both Zoom and Slack and watch the status change when you start or join a meeting.

πŸ”₯ Stay up to date and subscribe to my newsletter on πŸ”₯

Top comments (2)

mtomov profile image
Martin Tomov

πŸ‘‹ Hey, thanks for the article!

I managed to put it together into a managed plug & play service: - let me know if you have any improvement ideas : )

nah_serious profile image
Henry Shapiro

Amazing! We built something over at Reclaim that does exactly this (and it’s free):