# Linking Coda as a source - Docs

![](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`

[Learn more](/wizard.md)

![PostHog Wizard hedgehog](https://res.cloudinary.com/dmukukwp6/image/upload/wizard_3f8bb7a240.png)

**Alpha release**

The Coda source is currently in alpha. It has been tested against Coda's API documentation but not yet validated with live credentials. If you run into issues, please let us know.

The Coda connector syncs your Coda docs, tables, and rows into PostHog. Once linked, you can query your Coda data alongside your product analytics data using SQL.

## Linking Coda

1.  In Coda, go to your [account settings](https://coda.io/account) and generate an API token. The token only has access to docs its creator can access.
2.  In PostHog, go to the [Data pipeline sources page](https://app.posthog.com/data-management/sources), click **\+ New source**, and then click **Link** next to Coda.
3.  Paste your **API token**.
4.  Click **Next**, choose the tables you want to sync, and then click **Import**.

Once the sync completes, you can start querying your Coda data in PostHog.

## Configuration

| Option | Type | Required |
| --- | --- | --- |
| API token | password | Yes |

## Supported tables

| Table | Description | Sync method | Incremental field | Primary key |
| --- | --- | --- | --- | --- |
| docs | A Coda doc — the top-level document containing tables, pages, and content. | Full refresh | — | — |
| tables | A table within a Coda doc, holding a set of columns and rows. | Full refresh | — | — |
| rows | A row in a Coda table, with its cell values keyed by column. | Full refresh | — | — |

## Available tables

Coda's data model is hierarchical: docs contain tables, and tables contain rows. PostHog injects parent linkage fields (`_doc_id`, `_table_id`) to form composite primary keys, since table and row IDs are only unique within their parent.

| Table | Description | Primary keys |
| --- | --- | --- |
| docs | All documents in your workspace | id |
| tables | Tables within each document | _doc_id, id |
| rows | Rows from every table of every document, with cell values keyed by column name | _doc_id, _table_id, id |

The `rows` table is a two-level fan-out endpoint — PostHog fetches all your docs, then all tables within each doc, then all rows within each table.

## Sync limitations

-   **Full refresh only** – Coda's list endpoints don't support updated-since filters, so every sync re-downloads all data. Incremental and append-only syncing aren't available.
-   **Rate limits** – Coda caps doc listing at 4 requests per 6 seconds, which means large workspaces with many docs sync slowly. PostHog automatically spaces requests to stay within these limits.

### Community questions

Ask a question

### Was this page useful?

HelpfulCould be better