> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt # Linking Braze as a source Canonical URL: https://posthog.com/docs/data-pipelines/sources/braze > **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 Braze connector syncs your Braze data — campaigns, canvases, segments, events, and templates — 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 Braze. 3. You need a REST API key and your REST endpoint URL from Braze. In your Braze dashboard, go to **Settings → API Keys** and create a REST API key. Grant the following endpoint permissions for the data you want to sync: `campaigns.list`, `canvas.list`, `segments.list`, `events.list`, `templates.email.list`, and `content_blocks.list`. Your REST endpoint URL (for example `https://rest.iad-01.braze.com`) must match your Braze dashboard's region — see [Braze's API overview](https://www.braze.com/docs/api/basics/#endpoints) for the full list of endpoints. 4. Back in PostHog, enter your `REST API key` and `REST endpoint URL`, then 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 Braze data in PostHog. ## Available tables | Table | Description | Sync method | | --- | --- | --- | | `campaigns` | Campaigns in your Braze account | Full refresh | | `canvases` | Canvases in your Braze account | Full refresh | | `segments` | Segments in your Braze account | Full refresh | | `events` | Custom event names tracked in Braze | Full refresh | | `email_templates` | Email templates | Incremental | | `content_blocks` | Content blocks | 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 email templates and content blocks tables support incremental sync, using Braze's server-side `modified_after` filter. The remaining tables are full refresh only, as Braze does not provide a reliable server-side timestamp filter for them. ## Configuration | Option | Type | Required | | --- | --- | --- | | `REST API key` | password | Yes | | `REST endpoint URL` | text | Yes | ## Supported tables | Table | Description | Sync method | Incremental field | Primary key | | --- | --- | --- | --- | --- | | `campaigns` | A Braze messaging campaign that sends content to users across one or more channels. | Full refresh | — | — | | `canvases` | A Braze Canvas — a multi-step customer journey across channels and time. | Full refresh | — | — | | `segments` | A Braze segment — a saved group of users defined by filter criteria. | Full refresh | — | — | | `events` | The list of custom event names recorded in the Braze workspace. | Full refresh | — | — | | `email_templates` | A reusable email template stored in Braze. | Incremental, Full refresh | updated\_at | — | | `content_blocks` | A reusable Content Block — a snippet of content shared across Braze messages. | Incremental, Full refresh | last\_edited | — | | `campaign_analytics` | A daily series of send, engagement and conversion stats for one campaign. | Incremental, Full refresh | time | — | | `canvas_analytics` | A daily series of entry, conversion and revenue stats for one Canvas. | Incremental, Full refresh | time | — | | `event_analytics` | A daily series of how often one custom event occurred. | Incremental, Full refresh | time | — | | `segment_analytics` | A daily series of the estimated size of one segment. Only segments with analytics tracking enabled are synced, because Braze keeps no size history for the others. | Incremental, Full refresh | time | — | | `kpi_dau` | A daily series of the number of daily active users across the workspace. | Incremental, Full refresh | time | — | | `kpi_mau` | A daily series of unique active users over a rolling 30-day window. | Incremental, Full refresh | time | — | | `kpi_new_users` | A daily series of the number of new users across the workspace. | Incremental, Full refresh | time | — | | `kpi_uninstalls` | A daily series of the number of app uninstalls across the workspace. | Incremental, Full refresh | time | — | | `campaign_details` | The full configuration of one campaign — its channels, message variants, tags and conversion behaviors. | Full refresh | — | — | | `canvas_details` | The full structure of one Canvas — its steps, variants, channels and tags. | Full refresh | — | — |