Most teams should use Caddi's standard Zoom connection, covered in the Zoom Integration Guide — each person connects their own Zoom account and there's nothing to configure. This guide is for organizations that require their own Zoom app registration for security or policy reasons.
A custom Zoom app has to be published to the Zoom App Marketplace to serve your whole organization. Unpublished private apps are capped at 10 installs for account-managed apps and 100 installs for user-managed apps, and can only be installed by members of the Zoom account that created them.
Publishing requires a Zoom security and functional review. If you don't have a specific policy reason to run your own app, the standard Caddi Zoom connection is simpler and does the same job.
Before you start
You'll need:
A Zoom account with developer permissions on the Zoom App Marketplace — your Zoom account admin may need to grant the Marketplace developer role
Owner or Admin access to your Caddi organization
Zoom Phone or Zoom Team Chat add-ons if your loops need phone, SMS, voicemail, or chat features
Step 1: Create the app in the Zoom App Marketplace
The User-managed vs Admin-managed choice is difficult to change later. Pick deliberately.
Sign in at marketplace.zoom.us.
Open Develop → Build an app, choose General app, and click Create. General app is Zoom's current name for the OAuth app type.
On Basic Information, choose User-managed. This means each person authorizes their own Zoom account and Caddi sees only that person's data — the right choice unless you specifically want account-wide access.
Step 2: Configure OAuth and copy the credentials
Development and production credentials are different pairs, with separate redirect URL configurations. Configuring one and using the other is a common and confusing setup failure.
Still on Basic Information, find OAuth Information.
OAuth Redirect URL — enter
https://app.trycaddi.com/oauth-callback.Add the same URL to the OAuth allow lists.
Copy the Client ID and Client Secret.
Step 3: Select features and scopes
Open the Features or Surface tab and select the products your loops need — Meetings, Webinars, Cloud Recording, Zoom Phone, Team Chat.
Open the Scopes tab and add scopes from the checklist. Zoom uses a granular format like
meeting:read:meetingandcloud_recording:read:recording.For a user-managed app, choose the non-
:adminvariant of each scope.Request only what your loops actually need — Zoom's reviewers reject over-broad scope requests and that delays publication.
The Scopes tab is the authoritative list of what your Zoom account can request, so build your final set from the checklist rather than from a document.
Step 4: Test, then publish
Use Local Test to generate an authorization URL and install the app for yourself.
Verify the connection works end to end.
Click Submit for review to publish. Once published, switch to the production Client ID and Secret.
Publishing invalidates any beta authorization URLs you shared with testers, so plan that transition.
Step 5: Configure Zoom in Caddi
This step must be completed by a Caddi organization owner or admin.
In Caddi, open Integrations in the left sidebar, then click the Integration Setup tab at the top of the page. This tab is only visible to organization owners and admins.
Find Zoom in the list and click Configure.
Enter the following values:
Client ID — from your Zoom app's App Credentials. Use the production value once the app is published.
Client Secret — from the same section, matching the same environment.
OAuth Scopes — space-separated list matching what you configured on the Zoom app. Leave blank to use Caddi's defaults. Scopes must also be enabled on the app itself — entering one here that isn't enabled in Zoom will fail.
Click Save Configuration. Caddi validates the credentials immediately — if something is wrong you'll see an error right away, and nothing is stored until validation passes.
Step 6: Connect your account
Go back to the My Connections tab and find Zoom.
Click Connect + and sign in to Zoom.
Click Allow. You can enable or disable optional permissions depending on what your loops need.
You'll be returned to Caddi with the connection active.
How the connection behaves
Each user connects their own Zoom account with a user-managed app. Caddi accesses only that user's meetings, recordings, and communications.
Access tokens last one hour; refresh tokens last 90 days. Every refresh returns a new refresh token and the previous one goes stale. Caddi handles this, but a connection idle past 90 days needs the user to reauthorize from scratch.
Zoom Marketplace pre-approval is on by default for multi-user accounts. Your Zoom admin may need to allow the app before members can install it — separately for publicly listed and unlisted apps.
A custom connection replaces the standard one. Members of your organization will only see the option to connect through your app.
Zoom Phone and Team Chat capabilities depend on your Zoom add-ons, and on the matching scopes being enabled on the app.
Revoking access. Remove the app from your Zoom account, or delete it in the Marketplace developer portal.
Troubleshooting
Only a handful of people can install the app
Unpublished private apps are capped at 10 installs (account-managed) or 100 (user-managed), and only members of the creating Zoom account can install. Publish the app, or use Caddi's standard Zoom connection instead.
Authentication fails with credentials that look right
You're likely mixing development and production credentials. They are separate pairs with separate redirect URL lists — check which set you copied, and confirm the redirect URL is configured for that environment.
A scope error even though the scope is entered in Caddi
Scopes must be enabled on the Zoom app's Scopes tab as well. Add it there, then have users reconnect.
Users can't install because Zoom blocks it
Marketplace pre-approval is enabled on your Zoom account. Your Zoom admin needs to allow the app — check both the listed and unlisted app settings.
Phone or chat loops fail
Either the Zoom Phone / Team Chat add-on isn't on the account, or the corresponding scopes aren't enabled on the app.
Still stuck? Contact Caddi support with the exact error message you're seeing and the time it occurred.
Automation ideas
Law Firms
Meeting → time entry
Caddi reads the meeting duration and participants, drafts a billing narrative, and creates the time entry in Clio, Elite 3E, or Neos.
Voicemail → follow-up task
When a client leaves a Zoom Phone voicemail, Caddi transcribes it and creates the follow-up task against the right matter and attorney.
SMS log → matter communication record
Caddi reads Zoom Phone SMS sessions and logs client communications into your DMS or CRM, keeping a complete record.
RIAs
Client meeting → CRM update
After each advisor call, Caddi pulls the Zoom meeting summary and updates the contact record with topics, next steps, and follow-up dates.
Meeting recording → compliance documentation
Caddi downloads the recording and transcript, generates a compliant summary, and files it to your document management system or compliance archive.
