Asana lets you create an OAuth app in its developer console with no vendor approval needed. This guide covers creating the app, allowlisting your workspace, and connecting it to Caddi.
Before you start
You'll need:
An Asana account — any plan, including free, can create an app
Owner or Admin access to your Caddi organization
If your Asana organization is on Enterprise with app allowlisting enabled, an Asana super admin to approve the app
Step 1: Create the app in the Asana developer console
Asana allows only one redirect URI per app. There is no way to add a second, so any additional environment needs its own app registration.
Go to app.asana.com/0/my-apps and click Create new app.
App name —
Caddi. This is shown to users on the consent screen and in their authorized-apps list.Accept the Asana API terms.
Open the OAuth tab.
Redirect URL — enter
https://app.trycaddi.com/oauth-callback.OAuth Permission scopes — select Full permissions, or a granular set (see below).
Copy the Client ID and Client secret from the OAuth tab.
Full permissions is the simplest correct choice: it gives Caddi access to whatever the authorizing user can see, with no administrative or SCIM user-provisioning reach. If you prefer granular scopes, request the :read and :write pair for tasks, projects, stories, attachments, tags, teams, workspaces, users, webhooks, and custom fields.
Step 2: Set distribution so your workspace can authorize
An Asana app can't be authorized from a workspace it hasn't been distributed to. This step is easy to miss and produces a confusing failure.
Open Manage distribution on your app.
Choose Specific workspaces and add the workspaces your team uses — multiple are allowed — or choose Any workspace.
Save.
Step 3: Configure Asana 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 Asana in the list and click Configure.
Enter the following values:
Client ID — from your Asana app's OAuth tab
Client Secret — from the same tab
OAuth Scopes — leave blank to inherit Caddi's defaults, which match the Full permissions setting. If you chose granular scopes on the app, enter the matching space-separated strings here.
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 4: Connect your account
Go back to the My Connections tab and find Asana.
Click Connect + and sign in to Asana.
Approve the request. You'll be returned to Caddi with the connection active.
How the connection behaves
Each user connects their own Asana account. Caddi sees the tasks and projects that user can see.
Distribution is per-workspace. A user in a workspace that isn't on the app's allowlist cannot authorize, even with valid credentials.
Access tokens last one hour and refresh automatically. Asana refresh tokens are long-lived and don't rotate.
A custom connection replaces the standard one. Members of your organization will only see the option to connect through your app.
Revoking access. Delete the app in the developer console, or have users revoke it from their Asana authorized-apps list.
Troubleshooting
A user can't authorize even though the credentials are correct
The app's distribution doesn't include their workspace. Open Manage distribution and add it.
A redirect error at sign-in
The single Redirect URL on the app doesn't match https://app.trycaddi.com/oauth-callback. Asana allows only one, so correct it rather than adding another.
An Enterprise workspace blocks the app entirely
App allowlisting is on in that Asana organization. An Asana super admin needs to allow the app from the admin console.
Loops can't reach custom fields or attachments
Granular scopes were selected on the app and don't cover those resources. Switch to Full permissions, or add the missing :read/:write pairs and have users reconnect.
Still stuck? Contact Caddi support with the exact error message you're seeing and the time it occurred.
Automation ideas
Law Firms
New matter → project from template
Caddi creates the Asana project for a new matter from your firm's template, assigns the team, and sets dates from the matter's key deadlines.
Deadline change → task rescheduling
When a court date moves, Caddi recalculates the dependent dates and updates the Asana tasks so the whole chain stays consistent.
Task complete → matter record update
Caddi logs completed Asana work to the matter in your practice management system, keeping the file current without duplicate entry.
RIAs
Onboarding started → task checklist
Caddi creates the client onboarding project with every document request and compliance step assigned to the right owner.
Review cycle → scheduled prep tasks
Ahead of each client review, Caddi creates the prep tasks and links the briefing materials it has assembled.
