An Express server which receives and selectively filters webhook events from a Zoom JWT App, and then appends parsed data as a row in a Google Sheet.
- The user starts or joins a
Zoom Meeting
. - The
Zoom JWT App
triggers aParticipant/host joined meeting
event to be sent to theEvent Notification Endpoint URL
. - The server processes the request, checking for the correct
Verification Token
(if incorrect respondsstatus 403
) andEven Type
(if incorrect respondsstatus 400
). - If correct, the server sends a
POST
request to theGoogle Sheets API
to append a new row with the parsed data from theParticipant/host joined meeting
event.
{
event: "meeting.participant_joined",
event_ts: 12345678909876,
payload: {
account_id: "JD93jDHs93jSHdf93jdh59F",
object: {
duration: 60,
host_id: "PB_MIWRiRdmK5F9vq2WfTw",
id: "93948372645",
participant: {
email: "user@email.com",
id: "PB_MIWRiRdmK5F9vq2WfTw",
join_time: "2022-02-11T16:20:30Z",
participant_user_id: "PB_MIWRiRdmK5F9vq2WfTw",
registrant_id: null,
user_id: "98473682",
user_name: "Sally Fields"
},
start_time: "2022-02-11T14:07:13Z",
timezone: "America/New_York",
topic: "Meeting of the Minds",
type: 3,
uuid: "O5Xfz96WRYiRnCz7yA4UzY=="
}
}
}
git clone
npm install
touch .env .gitignore
echo ".env\nnode_modules" >> .gitignore
-
Create a Zoom JWT App in the Zoom App Marketplace.
- Add a new Event Subscription.
- Add a
Event Type
->Participant/host joined meeting
. - Save the
Event Subscription
and selectcontinue
-
TODO Google Sheets flow
-
Update the
.env
file- Add the
Zoom JWT app
->Verification Token
asZOOM_VERIFICATION_TOKEN
- Add a
PORT
number
- Add the
npm start
- Create an HTTP tunnel for the
Event notification endpoint URL
- Save the HTTP tunnel endpoint to the
Zoom JWT app
->Event Subscription
->Event notification endpoint URL
. - Start a new
Zoom Meeting
. - A new
Participant/host joined meeting
event should appear in the server logs. - TODO Google Sheets flow