> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt # Linking Toggl Track as a source Canonical URL: https://posthog.com/docs/data-pipelines/sources/toggl > **Cloud region:** This page uses US Cloud hosts. For an EU Cloud project, use `https://eu.posthog.com` instead of `https://us.posthog.com` or `https://app.posthog.com` (app host for links). ## On this page - [Prerequisites](#prerequisites) - [Adding a data source](#adding-a-data-source) - [Sync modes](#sync-modes) - [Rate limiting](#rate-limiting) - [Workspace access](#workspace-access) - [Configuration](#configuration) - [Supported tables](#supported-tables) - [Troubleshooting](#troubleshooting) ![](https://res.cloudinary.com/dmukukwp6/image/upload/texture_tan_9608fcca70) ![](https://res.cloudinary.com/dmukukwp6/image/upload/texture_tan_dark_a92b0e022d) Let AI connect your sources for you Skip the manual setup — run this in your project and the wizard auto-detects your databases and APIs and connects them to PostHog. `npx @posthog/wizard warehouse` ![PostHog Wizard hedgehog](https://res.cloudinary.com/dmukukwp6/image/upload/wizard_3f8bb7a240.png) ![](https://res.cloudinary.com/dmukukwp6/image/upload/wizard_3f8bb7a240.png)Let AI connect your sources for you The Toggl Track connector syncs your time tracking data – workspaces, projects, clients, tags, tasks, workspace users, and time entries – into PostHog, so you can analyze how your team spends time alongside your product data. ## Prerequisites You need a Toggl Track account and an API token. Find the token at the bottom of your [Toggl Track profile settings](https://track.toggl.com/profile). The token determines what data the sync can read. Use a workspace admin's token to sync the time entries of every member and the list of workspace users. A non-admin token only sees the token owner's own time entries. ## Adding a data source 1. In PostHog, go to the [Sources tab](https://app.posthog.com/data-management/sources) of the data pipeline section. 2. Click **\+ New source** and click **Link** next to this source. 3. Enter your credentials (see [Configuration](#configuration) below) and click **Next**. 4. Select the tables you want to sync, choose a sync method and frequency, then click **Import**. Once the syncs are complete, you can start querying this data in PostHog. When linking Toggl Track, you need: - **API token** – your Toggl Track API token from your profile settings. ## Sync modes Each table can be synced in one of several modes, depending on what the source supports: - **Webhook** (when available) – the source pushes changes to PostHog in real time. Fastest freshness, lowest ongoing cost, and the only mode that reliably captures updates and deletes. - **Incremental** – only new or updated rows are synced on each run, using a cursor field (such as an `updated_at` timestamp). Cheaper than a full refresh, but deletes aren't captured. - **Append only** – new rows are appended using a cursor field; existing rows are never updated. Ideal for immutable, append-only tables like event logs. - **Full refresh** – the whole table is reloaded on every sync. Use it when a table has no reliable cursor or when you need deletions reflected. See [sync methods](https://posthog.com/docs/data-pipelines/sources.md#sync-methods) for a full explanation of how each mode works and how to choose between them. - The `projects` and `tasks` tables support incremental sync via the `at` (last modified) field. - The `time_entries` table supports incremental sync on the `start` field with a default 7-day lookback window. Each incremental run re-reads the last 7 days to pick up recent timesheet corrections. Run a full refresh to catch edits to older entries, or configure a longer lookback in the schema settings. - The `workspaces`, `clients`, `tags`, and `workspace_users` tables use full refresh sync. ## Rate limiting Toggl Track limits API requests per hour based on your plan. On a smaller plan, the first sync of a large workspace can run out of requests before it finishes. If this happens, the sync retries automatically. Use incremental sync or sync fewer tables to reduce the number of requests each run needs. ## Workspace access The connector reads all workspaces the API token's user belongs to. Each table is synced across every workspace, with a few exceptions: - **Plan restrictions** – a table automatically skips any workspace whose Toggl Track plan does not include that data (e.g. tasks on a free plan). - **Permission restrictions** – the `workspace_users` table skips workspaces where the token's user is not an admin, since Toggl Track returns a 403 for non-admin users listing members. ## Configuration | Option | Type | Required | | --- | --- | --- | | `API token` | password | Yes | ## Supported tables | Table | Description | Sync method | Incremental field | Primary key | | --- | --- | --- | --- | --- | | `workspaces` | A Toggl Track workspace the API token's user belongs to. Workspaces hold projects, clients, tags and time entries. | Full refresh | — | — | | `projects` | A project in a Toggl Track workspace that time entries and tasks are tracked against. | Incremental, Full refresh | at | — | | `clients` | A client in a Toggl Track workspace, which projects can belong to. Includes archived clients. | Full refresh | — | — | | `tags` | A tag in a Toggl Track workspace that can be added to time entries. | Full refresh | — | — | | `tasks` | A task in a project of a Toggl Track workspace. Includes done (inactive) tasks. | Incremental, Full refresh | at | — | | `workspace_users` | A user in a Toggl Track workspace. Only synced for workspaces where the API token's user can list members, usually as an admin. | Full refresh | — | — | | `time_entries` | A time entry in a Toggl Track workspace, from the detailed report. Includes the entries of every user the API token's user can see in reports. | Incremental, Full refresh | start | — | ## Troubleshooting If your sync is failing or data looks wrong, see the [Data warehouse troubleshooting guide](https://posthog.com/docs/data-warehouse/troubleshooting.md). If that doesn't help, [contact support](https://us.posthog.com/#panel=support%3Asupport%3Adata_warehouse%3A%3Atrue) – we're happy to help.