> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt # Linking ElevenLabs as a source Canonical URL: https://posthog.com/docs/data-pipelines/sources/elevenlabs > **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) - [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 ElevenLabs connector syncs your AI audio data into the PostHog Data warehouse: speech generation history, conversational AI conversations, agents, tools, tool executions, triage tickets, phone numbers, batch calls, voices, models, workspace data, and subscription details. Use it to analyze generation volume, character costs, and agent call outcomes alongside your product data. ## Prerequisites You need an ElevenLabs account with an API key. API keys are available on every plan. ## 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 ElevenLabs, you'll need: - **API key** – create one in your ElevenLabs account under [Profile → API keys](https://elevenlabs.io/app/settings/api-keys). If you restrict the key's permissions, grant read access to the endpoints you want to sync: **History**, **Conversational AI** (includes agents, conversations, tools, tool executions, triage tickets, phone numbers, and batch calls), **Voices**, **Models**, **Workspace** (includes members and groups), and **User** (used to verify the key and sync subscription data). ## 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 `history`, `conversations`, and `tool_executions` tables support incremental sync. The `agents`, `voices`, `models`, `triage_tickets`, `workspace_members`, `workspace_groups`, `tools`, `phone_numbers`, `batch_calls`, and `subscription` tables are full refresh only. ## Configuration | Option | Type | Required | | --- | --- | --- | | `API key` | password | Yes | ## Supported tables | Table | Description | Sync method | Incremental field | Primary key | | --- | --- | --- | --- | --- | | `history` | Text-to-speech and speech-to-speech generation history. One row per generated audio item. | Incremental, Full refresh | date\_unix | — | | `conversations` | Conversational AI calls handled by your agents. One row per conversation. | Incremental, Full refresh | start\_time\_unix\_secs | — | | `agents` | Conversational AI agent configurations in your workspace. One row per agent. | Full refresh | — | — | | `voices` | Voices available in your workspace, including cloned, generated, and premade voices. | Full refresh | — | — | | `triage_tickets` | Conversational AI triage tickets raised about agent performance on conversations, across every agent in the workspace. One row per ticket. | Full refresh | — | — | | `models` | Speech models available to your account. One row per model. Resolves the model\_id on history items and conversations. | Full refresh | — | — | | `workspace_members` | Members of your workspace, including locked members. Service accounts are excluded. One row per member. | Full refresh | — | — | | `workspace_groups` | User groups in your workspace. One row per group. | Full refresh | — | — | | `tools` | Conversational AI tools available in your workspace. One row per tool. | Full refresh | — | — | | `tool_executions` | Executions of Conversational AI tools during agent conversations. One row per tool call. | Incremental, Full refresh | timestamp | — | | `phone_numbers` | Phone numbers that Conversational AI agents use for inbound and outbound calls. One row per phone number. | Full refresh | — | — | | `batch_calls` | Outbound batch calling jobs in your workspace. One row per batch call job. | Full refresh | — | — | | `agent_deployments` | Traffic split history of each Conversational AI agent across its branches. One row per traffic split, including the live one. | Full refresh | — | — | | `flow_templates` | Published Flows templates in your workspace, with their runnable versions. One row per template. | Full refresh | — | — | | `flow_template_runs` | Runs of Flows templates that were created through the API. One row per run. | Full refresh | — | — | | `voice_collections` | Voice collections you can access. One row per collection. | Full refresh | — | — | | `subscription` | Subscription plan, quota, and current billing period usage. A single row that each sync replaces. | Full refresh | — | — | ## Troubleshooting - If you see an authentication error, your ElevenLabs API key may be invalid, revoked, or missing a permission for one of the synced endpoints. Check the key's permissions under Profile → API keys in ElevenLabs, then reconnect. 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.