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 Apptriggers aParticipant/host joined meetingevent 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
POSTrequest to theGoogle Sheets APIto append a new row with the parsed data from theParticipant/host joined meetingevent.
{
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 Subscriptionand selectcontinue
-
TODO Google Sheets flow
-
Update the
.envfile- Add the
Zoom JWT app->Verification TokenasZOOM_VERIFICATION_TOKEN - Add a
PORTnumber
- 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 meetingevent should appear in the server logs. - TODO Google Sheets flow