/migrating-from-fivetran
Move a user's Fivetran connectors into PostHog data warehouse sources. Use when the user says "migrate from Fivetran", "import my Fivetran setup", "replace Fivetran with PostHog", or asks what of their Fivetran account PostHog can take over. Reads the Fivetran account with a
Claude Code
$ npx -y skills add PostHog/ai-plugin --skill migrating-from-fivetran --agent claude-code
Codex
$ npx skills add PostHog/ai-plugin --skill migrating-from-fivetran -a codex -y
Cursor
$ npx skills add PostHog/ai-plugin --skill migrating-from-fivetran -a cursor -y
Gemini CLI
$ npx skills add PostHog/ai-plugin --skill migrating-from-fivetran -a gemini-cli -y
GitHub Copilot
$ npx skills add PostHog/ai-plugin --skill migrating-from-fivetran -a github-copilot -y
OpenCode
$ npx skills add PostHog/ai-plugin --skill migrating-from-fivetran -a opencode -y
Windsurf
$ npx skills add PostHog/ai-plugin --skill migrating-from-fivetran -a windsurf -y
SKILL.md
migrating-from-fivetran.SKILL.mdname: migrating-from-fivetran
description: >
Move a user's Fivetran connectors into PostHog data warehouse sources. Use when the user says "migrate from
Fivetran", "import my Fivetran setup", "replace Fivetran with PostHog", or asks what of their Fivetran account
PostHog can take over. Reads the Fivetran account with a read-only key or through the user's Fivetran MCP server,
reports which connections move as they are, which move with caveats, and which PostHog cannot take yet, then
creates the PostHog sources one at a time while the user enters only the secrets.
Migrating from Fivetran
PostHog can read a Fivetran account and plan one PostHog source per Fivetran connection: the tables, the sync schedule, the table prefix, and the destination. It cannot copy secrets. Fivetran never returns passwords, API keys, or OAuth tokens to anyone, so the user re-enters one credential per connection. Say this early, so the user is not surprised halfway through.
Tools
| Tool | Purpose | | ---------------------------------------- | ------------------------------------------------------------------------------------------------ | | `warehouse-migration-connect-link` | Link where the user enters a read-only Fivetran API key in PostHog | | `warehouse-migrations-list` | Find the migration the user just started, newest first | | `warehouse-migration-get` | Status of the read, and counts per verdict | | `warehouse-migration-items-list` | One item per Fivetran connection: verdict, caveats, and the planned source type | | `data-warehouse-source-connect-link` | Link where the user enters the secret for one item; pass `migration_item_id` to prefill the rest | | `data-warehouse-stored-credentials-list` | Find the credential the user just stored | | `warehouse-migration-item-apply` | Create the planned source from an item and a stored credential | | `warehouse-migration-item-skip` | Mark an item the user does not want to move | | `warehouse-migration-items-skip` | Skip many items at once, or all but the ones to keep (`keep_item_ids`) | | `warehouse-migration-refresh` | Read the Fivetran account again after the user changes it | | `warehouse-migration-start-upload` | Start a migration that you fill from the user's Fivetran MCP, with no key in PostHog | | `warehouse-migration-upload-connections` | Send the Fivetran MCP responses, unchanged, to that migration |
Never ask the user to paste a Fivetran key or any source secret into the chat. Every secret goes through a link.
The connector notes (`references/connector-notes.md`) explain how PostHog matches Fivetran tables and hold a note for each connector that differs. Read them before the report.
Workflow
If `warehouse-migration-connect-link` is not among your tools, importing from Fivetran is not available for this project yet. Tell the user that and stop.
1. **Start the read.** Check whether a Fivetran MCP server is connected: look for tools from a Fivetran server that read connections, groups and destinations (for example `connections_read`). If none is connected, use the API key link. If one is connected, offer both ways and let the user choose:
- **API key (recommended for larger accounts).** PostHog reads Fivetran directly, so the read uses no chat tokens.
- **Their Fivetran MCP.** The user stays in the chat, and the Fivetran key never reaches PostHog. Warn them first:
every connection's settings and table list passes through this chat twice. You read it from Fivetran, then write it out again for PostHog, and writing it out is the slow and expensive part. An account with many connections or long table lists costs a lot of tokens and time.
**API key link.** Get a link with `warehouse-migration-connect-link` and share it. Tell the user to create a read-only key in Fivetran: a system key with read access to connections, destinations, and the account works best. When they confirm, find the newest migration with `warehouse-migrations-list` and poll `warehouse-migration-get` until `status` is `ready`. A large account takes a few minutes. If it is `failed`, read `latest_error` to the user.
**Fivetran MCP.**
- Call only Fivetran read tools. Never call a Fivetran tool that creates, changes, pauses, syncs or deletes
anything. Recommend that the Fivetran MCP uses a read-only system key.
- Start a migration with `warehouse-migration-start-upload`.
- Read the account info, the groups, and each group's destination. On every list read, follow `next_cursor` until
it is empty, or connections go missing without an error. Skip a group that has no destination. Send the account and the destinations with `warehouse-migration-upload-connections` before any connection, so PostHog reads each sync time in its destination's time zone. One call takes at most 100 destinations, so send more in several calls with no connections.
- List the connections. For each one, read its details and its schema config, and send `schema_config: null` when
Fivetran has none. You write every upload out in full, so keep each call small: a few connections and under about 50 KB of JSON. Send a connection with a long table list alone. If one connection is much larger than that, recommend the API key for the account.
- Upload the first connection alone. If PostHog says a field is missi
Read more
name: migrating-from-fivetran description: > Move a user's Fivetran connectors into PostHog data warehouse sources. Use when the user says "migrate from Fivetran", "import my Fivetran setup", "replace Fivetran with PostHog", or asks what of their Fivetran account PostHog can take over. Reads the Fivetran account with a read-only key or through the user's Fivetran MCP server, reports which connections move as they are, which move with caveats, and which PostHog cannot take yet, then creates the PostHog sources one at a time while the user enters only the secrets.
Migrating from Fivetran
PostHog can read a Fivetran account and plan one PostHog source per Fivetran connection: the tables, the sync schedule, the table prefix, and the destination. It cannot copy secrets. Fivetran never returns passwords, API keys, or OAuth tokens to anyone, so the user re-enters one credential per connection. Say this early, so the user is not surprised halfway through.
Tools
| Tool | Purpose | | ---------------------------------------- | ------------------------------------------------------------------------------------------------ | | `warehouse-migration-connect-link` | Link where the user enters a read-only Fivetran API key in PostHog | | `warehouse-migrations-list` | Find the migration the user just started, newest first | | `warehouse-migration-get` | Status of the read, and counts per verdict | | `warehouse-migration-items-list` | One item per Fivetran connection: verdict, caveats, and the planned source type | | `data-warehouse-source-connect-link` | Link where the user enters the secret for one item; pass `migration_item_id` to prefill the rest | | `data-warehouse-stored-credentials-list` | Find the credential the user just stored | | `warehouse-migration-item-apply` | Create the planned source from an item and a stored credential | | `warehouse-migration-item-skip` | Mark an item the user does not want to move | | `warehouse-migration-items-skip` | Skip many items at once, or all but the ones to keep (`keep_item_ids`) | | `warehouse-migration-refresh` | Read the Fivetran account again after the user changes it | | `warehouse-migration-start-upload` | Start a migration that you fill from the user's Fivetran MCP, with no key in PostHog | | `warehouse-migration-upload-connections` | Send the Fivetran MCP responses, unchanged, to that migration |
Never ask the user to paste a Fivetran key or any source secret into the chat. Every secret goes through a link.
The connector notes (`references/connector-notes.md`) explain how PostHog matches Fivetran tables and hold a note for each connector that differs. Read them before the report.
Workflow
If `warehouse-migration-connect-link` is not among your tools, importing from Fivetran is not available for this project yet. Tell the user that and stop.
1. **Start the read.** Check whether a Fivetran MCP server is connected: look for tools from a Fivetran server that read connections, groups and destinations (for example `connections_read`). If none is connected, use the API key link. If one is connected, offer both ways and let the user choose:
- **API key (recommended for larger accounts).** PostHog reads Fivetran directly, so the read uses no chat tokens.
- **Their Fivetran MCP.** The user stays in the chat, and the Fivetran key never reaches PostHog. Warn them first:
every connection's settings and table list passes through this chat twice. You read it from Fivetran, then write it out again for PostHog, and writing it out is the slow and expensive part. An account with many connections or long table lists costs a lot of tokens and time.
**API key link.** Get a link with `warehouse-migration-connect-link` and share it. Tell the user to create a read-only key in Fivetran: a system key with read access to connections, destinations, and the account works best. When they confirm, find the newest migration with `warehouse-migrations-list` and poll `warehouse-migration-get` until `status` is `ready`. A large account takes a few minutes. If it is `failed`, read `latest_error` to the user.
**Fivetran MCP.**
- Call only Fivetran read tools. Never call a Fivetran tool that creates, changes, pauses, syncs or deletes
anything. Recommend that the Fivetran MCP uses a read-only system key.
- Start a migration with `warehouse-migration-start-upload`.
- Read the account info, the groups, and each group's destination. On every list read, follow `next_cursor` until
it is empty, or connections go missing without an error. Skip a group that has no destination. Send the account and the destinations with `warehouse-migration-upload-connections` before any connection, so PostHog reads each sync time in its destination's time zone. One call takes at most 100 destinations, so send more in several calls with no connections.
- List the connections. For each one, read its details and its schema config, and send `schema_config: null` when
Fivetran has none. You write every upload out in full, so keep each call small: a few connections and under about 50 KB of JSON. Send a connection with a long table list alone. If one connection is much larger than that, recommend the API key for the account.
- Upload the first connection alone. If PostHog says a field is missi
Official PostHog plugin for AI clients. Access PostHog products directly from your AI coding tool.
Other skills on posthog.
More skills from other plugins.
brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
ask-matt
Ask which skill or flow fits your situation. A router over the skills in this repo.
Questions about migrating-from-fivetran.
- Which coding agents can use migrating-from-fivetran?
- migrating-from-fivetran installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

