> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt # Linking Shortcut as a source Canonical URL: https://posthog.com/docs/data-pipelines/sources/shortcut > **Cloud region:** This page uses US Cloud hosts. For an EU Cloud project, use `https://eu.posthog.com` instead of `https://app.posthog.com` (app host for links). ## On this page - [Adding a data source](#adding-a-data-source) - [Available tables](#available-tables) - [Sync limitations](#sync-limitations) - [Configuration](#configuration) - [Supported tables](#supported-tables) ![](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 Shortcut connector syncs your Shortcut project management data – stories, epics, iterations, members, and more – into the PostHog data warehouse. ## Adding a data source 1. Go to the [sources tab](https://app.posthog.com/data-management/sources) of the data pipeline section in PostHog. 2. Click **\+ New source** and then click **Link** next to Shortcut. 3. Next, you need an API token from Shortcut. In your Shortcut account, go to **Settings** → **Account** → **API Tokens** (or visit your [API tokens settings](https://app.shortcut.com/settings/account/api-tokens) directly) and generate a token. The token grants access to the entire workspace it belongs to and becomes invalid if you are removed from that workspace. 4. Back in PostHog, enter the token in the `API token` field and click **Next**. 5. Select the tables you want to sync, set the sync method and frequency, then click **Import**. Once the syncs are complete, you can start using Shortcut data in PostHog. ## Available tables | Table | Description | Sync method | | --- | --- | --- | | `members` | Members of your Shortcut workspace | Full refresh | | `groups` | Groups (teams) in your workspace | Full refresh | | `projects` | Projects | Full refresh | | `workflows` | Workflows and their states | Full refresh | | `epics` | Epics | Full refresh | | `iterations` | Iterations | Full refresh | | `labels` | Labels | Full refresh | | `categories` | Categories | Full refresh | | `objectives` | Objectives | Full refresh | | `custom_fields` | Custom field definitions | Full refresh | | `files` | Uploaded files | Full refresh | | `linked_files` | Linked files | Full refresh | | `repositories` | Connected version control repositories | Full refresh | | `entity_templates` | Story entity templates | Full refresh | | `stories` | Stories (work items) | Incremental | **Incremental** tables sync only new or updated records on each run. **Full refresh** tables reload all data on each sync. ## Sync limitations Only the `stories` table supports incremental sync (via the `created_at` or `updated_at` cursor). Every other Shortcut endpoint returns its full collection in a single response with no server-side timestamp filter, so those tables are always synced as a full refresh. ## Configuration | Option | Type | Required | | --- | --- | --- | | `API token` | password | Yes | ## Supported tables | Table | Description | Sync method | Incremental field | Primary key | | --- | --- | --- | --- | --- | | `members` | A user account that is a member of the Shortcut workspace. | Full refresh | — | — | | `groups` | A team (group) in Shortcut that owns stories and epics. | Full refresh | — | — | | `projects` | A project that organizes a collection of related stories. | Full refresh | — | — | | `workflows` | A workflow defining the set of states a story moves through. | Full refresh | — | — | | `epics` | An epic grouping a set of stories working toward a larger goal. | Full refresh | — | — | | `iterations` | A time-boxed iteration (sprint) of work with a start and end date. | Full refresh | — | — | | `labels` | A label that can be applied to stories and epics to categorize them. | Full refresh | — | — | | `categories` | A category used to group objectives (milestones). | Full refresh | — | — | | `objectives` | An objective (milestone) representing a high-level goal spanning multiple epics. | Full refresh | — | — | | `custom_fields` | A custom field definition that can hold structured values on stories. | Full refresh | — | — | | `files` | A file uploaded to Shortcut and attached to a story. | Full refresh | — | — | | `linked_files` | A reference to a file hosted in an external service (e.g. Google Drive, Dropbox) linked to a story. | Full refresh | — | — | | `repositories` | A version-control repository connected to the Shortcut workspace. | Full refresh | — | — | | `entity_templates` | A reusable template for creating stories with predefined values. | Full refresh | — | — | | `stories` | A unit of work in Shortcut — a feature, bug, or chore tracked through a workflow. | Incremental, Full refresh | updated\_at, created\_at | — |