| Availability |
Odoo Online
Odoo.sh
On Premise
|
| Odoo Apps Dependencies |
•
Calendar (calendar)
• Discuss (mail) |
| Community Apps Dependencies | Show |
| Lines of code | 2649 |
| Technical Name |
az_zoom_meetings |
| License | AGPL-3 |
| Website | https://www.azka.tech |
| Versions | 15.0 16.0 17.0 18.0 19.0 |
Introduction
Integrate Zoom with your Odoo Calendar using Server-to-Server OAuth — no Zoom Marketplace publishing required and no per-user authorization screens. A single set of admin credentials covers all users in your Zoom account. Create, update, and delete Zoom meetings directly from Odoo, with automatic hourly synchronization keeping both platforms in sync.
Key Features
- Server-to-Server OAuth — configure once with Account ID, Client ID, and Client Secret. No Zoom Marketplace submission, no per-user consent screens.
- Create Zoom meetings directly from the Odoo Calendar and receive the meeting URL and password instantly.
- Bidirectional sync — changes made in Zoom are reflected in Odoo automatically every hour via a scheduled action.
- Full meeting lifecycle management from Odoo: reschedule, edit details, cancel individual occurrences, or delete the entire series.
- Recurrence support: daily, weekly, and monthly recurring meetings with full sync of individual occurrences.
- Each Odoo user is linked to their Zoom account by a single Zoom email field — no tokens or re-authorization needed.
Configuration
This module uses Server-to-Server (S2S) OAuth — a backend app type designed for system integrations. It does not appear on the Zoom Marketplace and requires no user consent flow. Follow the steps below to set it up.
Step 1 — Create a Server-to-Server OAuth App on Zoom
-
Open the Zoom Developer Portal → Create App.
-
Choose Server-to-Server OAuth.
- Give it a name (e.g. Odoo Meeting Sync) and click Create.
-
On the App Credentials tab, copy all three values — you will need them in Step 4:
- Account ID
- Client ID
- Client Secret
Step 2 — Add Required Scopes
In the app's Scopes tab, click Add Scopes and add the following:
| Scope | Purpose |
|---|---|
meeting:write:meeting:admin |
Create and update meetings on behalf of any user in the account |
meeting:delete:meeting:admin |
Delete meetings on behalf of any user in the account |
meeting:read:meeting:admin |
View meeting details and list meetings for any user in the account |
Click Continue / Save after adding the scopes.
Step 3 — Activate the App
Go to the app's Activation tab and click Activate your app. The app must be activated before any API calls will work.
Step 4 — Enter Credentials in Odoo
-
In Odoo go to Settings → Integrations → Zoom Meeting Integration.
- Fill in Account ID, Client ID, and Client Secret from Step 1.
- Click Save.
The module will fetch and cache an access token automatically on the first API call. Tokens are refreshed in the background before they expire — no manual action needed.
Step 5 — Link Each Odoo User to Their Zoom Account
Each Odoo user whose meetings should sync must set their Zoom email once:
- Go to Settings → My Profile (user preferences).
- In the Zoom Integration section, enter the Zoom User Email — the email address they use to log in to Zoom.
- Save.
Only users with a Zoom email set will participate in the sync. Users without it are skipped. The email must match an active user in your Zoom account.
How it Works
- Install the module and complete the 5-step configuration above (credentials in Settings + Zoom email per user).
-
Open the Calendar app, create or edit an event, and on the
Online Meeting Configuration tab set Online Meeting Type
to Zoom Meeting, then save.
- Odoo calls the Zoom API immediately. The Meeting URL and Meeting Password are written back to the event — attendees can join via the URL.
- Editing a saved event and clicking Save pushes the changes (topic, time, duration, description) to Zoom. For recurring meetings you can update a single occurrence or all occurrences.
-
Deleting a calendar event removes the corresponding meeting (or occurrence) from Zoom as well.
-
A scheduled action named "Sync Online Meetings" runs every hour.
It fetches all upcoming meetings for every user who has a Zoom email set, creates new Odoo
events for meetings that exist only in Zoom, updates changed events, and removes events whose
Zoom meeting was deleted.
To trigger manually: Technical → Automation → Scheduled Actions → Sync Online Meetings → Run Manually.
Limitations
| Limitation | Reason |
|---|---|
| All-day events not supported | Zoom requires a specific start time and duration |
| Yearly recurrence not supported | Zoom API limitation |
| Recurring meetings with no end date not supported | Zoom API limitation |
| "This and following events" edit not supported | Zoom API limitation |
| Organizer cannot be changed after creation | Zoom meeting is tied to the host user |
| Meeting type cannot be changed after creation | Delete and recreate the event to switch platforms |
Troubleshooting
| Symptom | Fix |
|---|---|
| "Zoom S2S credentials not fully configured" | Fill in all three fields (Account ID, Client ID, Client Secret) in Settings → Integrations → Zoom Meeting Integration |
| 401 Unauthorized on API calls | Verify the app is activated in the Zoom Developer Portal and that the credentials are correct |
| 404 on a user's meetings | The Zoom User Email on their profile does not match any active user in your Zoom account |
| User's meetings not syncing | The Zoom User Email field is empty — set it in the user's preferences (Step 5) |
Suggested Apps
Our Services
Odoo
Consultancy
Odoo
Implementation
Odoo
Customization
Odoo
Integration
Odoo
Data Migration
Odoo
Training
Odoo
Support
Please log in to comment on this module