To connect n8n to Zoom, you need to use the Zoom OAuth2 API. This allows you to automate Zoom tasks like scheduling meetings, retrieving participants, or sending notifications when someone joins.
Here’s a step-by-step guide to connect n8n to Zoom:
✅ Step 1: Create a Zoom OAuth App
Go to the Zoom App Marketplace.
Click on Develop > Build App.
Choose OAuth and click Create.
Fill in:
App Name: e.g., n8n Integration
Redirect URL for OAuth:
https://your-n8n-domain.com/rest/oauth2-credential/callback
Add Whitelist URL: Same as above.
Save and go to the App Credentials tab:
Under Scopes, add permissions depending on your use case:
meeting:read, meeting:write
user:read, user:read:admin, etc.
Activate your app.
✅ Step 2: Create Zoom Credentials in n8n
Open your n8n instance.
Go to Credentials → New Credential → Search for Zoom OAuth2 API.
Set:
Name: e.g., Zoom OAuth
Client ID: (from Zoom App)
Client Secret: (from Zoom App)
Auth URI: https://zoom.us/oauth/authorize
Token URI: https://zoom.us/oauth/token
Scope: (same as those you added in Zoom, space-separated)
Click Connect OAuth2 Account.
Zoom will open a consent screen → Authorize access.
✅ Step 3: Use Zoom Node in n8n Workflow
In your workflow, add a Zoom node.
Select the credentials you just created.
Choose an operation, like:
Create Meeting
Get Meeting
Get Participants
Fill in the required fields (topic, time, etc.).
Connect it with other services like Gmail, Google Sheets, Telegram, etc.
📌 Example Use Case:
Trigger a Zoom meeting when a form is submitted
- Trigger: Webhook (form submission)
- Action: Zoom Node → Create Meeting
- Then: Send meeting link to email or chat
Here's a sample n8n workflow that:
🧩 Triggers via Webhook
📅 Creates a Zoom Meeting
📧 Sends the meeting link to your email (via Gmail)
🔧 Prerequisites:
- Zoom OAuth2 credentials (as described earlier)
- Gmail credentials in n8n
🔽 Downloadable JSON Workflow:
{
"nodes": [
{
"id": "webhook_trigger",
"name": "Webhook Trigger",
"type": "n8n-nodes-base.webhook",
"typeVersion": 1,
"position": [250, 300],
"parameters": {
"httpMethod": "POST",
"path": "zoom-meeting",
"responseMode": "lastNode",
"responseData": "firstEntryJson",
"webhookDescription": "Trigger on form submit"
}
},
{
"id": "zoom_create_meeting",
"name": "Create Zoom Meeting",
"type": "n8n-nodes-base.zoom",
"typeVersion": 1,
"position": [500, 300],
"parameters": {
"resource": "meeting",
"operation": "create",
"userId": "me",
"topic": "Meeting with {{ $json.name }}",
"type": 1,
"settings": {}
},
"credentials": {
"zoomOAuth2Api": {
"id": "YOUR_CREDENTIAL_ID",
"name": "Zoom OAuth"
}
}
},
{
"id": "gmail_send_email",
"name": "Send Email",
"type": "n8n-nodes-base.gmail",
"typeVersion": 1,
"position": [750, 300],
"parameters": {
"fromEmail": "",
"to": "your@email.com",
"subject": "New Zoom Meeting Created",
"message": "Join link: {{ $json.join_url }}",
"html": false
},
"credentials": {
"gmailOAuth2": {
"id": "YOUR_GMAIL_CREDENTIAL_ID",
"name": "Gmail OAuth"
}
}
}
],
"connections": {
"Webhook Trigger": {
"main": [
[
{
"node": "Create Zoom Meeting",
"type": "main",
"index": 0
}
]
]
},
"Create Zoom Meeting": {
"main": [
[
{
"node": "Send Email",
"type": "main",
"index": 0
}
]
]
}
},
"active": false,
"settings": {},
"versionId": "1"
}
📝 How to Use:
Copy the above JSON.
Go to your n8n instance → Import workflow.
Replace:
"YOUR_CREDENTIAL_ID" with your Zoom OAuth credential ID.
"YOUR_GMAIL_CREDENTIAL_ID" with your Gmail credential ID.
"your@email.com" with the actual email you want to receive notifications.
Activate the workflow.
Send a POST request to /webhook/zoom-meeting with JSON payload like:
{
"name": "John Smith"
}