Skip to main content

Toggl Focus Setup

Connecting Toggl Focus to Caddi with an API key

Toggl Focus connects to Caddi with an API key generated in your Toggl Focus settings. This is not an OAuth connection — there is no sign-in step and no redirect URI.

Toggl Focus and Toggl Track are different products with different credentials. Focus (also branded Toggl 2.0) is the successor to Toggl Plan and lives at focus.toggl.com; Track lives at track.toggl.com. Their keys look different and use different authentication.

A Focus key starts with toggl_sk_. If you have a Track token, use the Toggl Track setup instead — pasting one into the other's field is the most common mistake here.

Before you start

You'll need:

  • A Toggl Focus (Toggl 2.0) account

  • Owner or Admin access to your Caddi organization

Consider generating the key from a dedicated non-admin member account rather than a person's everyday login. The key inherits that user's permissions, and it stops working if the account is deactivated.

Step 1: Generate the API key in Toggl Focus

Only one API key can be active per user. Creating a new key automatically revokes the existing one. If the same Toggl Focus account is used for another integration, generating a key here will break it.

  1. Sign in at focus.toggl.com.

  2. Go to Settings and find the API keys section.

  3. Click Create (or Generate). If you're offered an expiration period, note which one you pick.

  4. Copy the key immediately — it starts with toggl_sk_ and is shown only once.

Step 2: Configure Toggl Focus in Caddi

This step must be completed by a Caddi organization owner or admin.

  1. 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.

  2. Find Toggl Focus in the list and click Configure.

Enter the following values:

  • API Token — the toggl_sk_ key from Step 1

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.

How the connection behaves

  • One shared identity. Everyone in your Caddi organization who uses Toggl Focus in a loop acts as the account that generated the key. Focus respects the same role-based permissions as its own app — if that user can't do something in the Focus UI, Caddi can't either.

  • Only one key per user. Generating a new key anywhere revokes the previous one, which will silently break this connection.

  • The key dies with the account. If the generating user is deactivated or leaves, the connection stops.

  • Revoking access. Generate a new key in Toggl Focus without updating Caddi, or delete the key.

  • Request quotas are hourly and depend on your plan — roughly 30 per hour on Free, 240 on Starter, and 600 on Premium, per user per organization. Focus returns HTTP 402 rather than 429 when a quota is exceeded.

Troubleshooting

Authentication fails on save

Check the key starts with toggl_sk_. A Toggl Track token is a different format and uses different authentication — it will not work here.

The connection worked and then stopped with no changes

A new API key was generated on that Toggl Focus account, which automatically revoked the one Caddi holds. Generate a key, update Caddi, and avoid reusing that account for other integrations.

Caddi can read but not modify entries

The account that generated the key doesn't have permission for that action in Toggl Focus. Check its role.

Loops fail with a 402 error

You've exceeded the hourly request quota for your plan. Reduce the loop's frequency or scope.

Still stuck? Contact Caddi support with the exact error message you're seeing and the time it occurred.

Automation ideas

Law Firms

Tracked time → practice management time entry

Caddi reads the day's Toggl Focus entries, maps them to matters, drafts billing narratives, and creates the time entries in Clio, Elite 3E, or Neos.

Week end → unbilled time review

Caddi compares tracked time against recorded billable time and sends each timekeeper the short list of gaps.

RIAs

Tracked time → client service reporting

Caddi aggregates time by client relationship so you can see actual service cost against fee, without anyone building the spreadsheet.

Did this answer your question?