> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt # Linking Snapchat Ads as a source Canonical URL: https://posthog.com/docs/data-pipelines/sources/snapchat-ads > **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 - [Requirements](#requirements) - [Configuring PostHog](#configuring-posthog) - [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 You can sync data from Snapchat Ads by configuring it as a source in PostHog. These are the supported entities and reports: - [Campaigns](https://developers.snap.com/api/marketing-api/Ads-API/campaigns) - [Ad Squads](https://developers.snap.com/api/marketing-api/Ads-API/ad-squads) - [Ads](https://developers.snap.com/api/marketing-api/Ads-API/ads) - [Campaign Stats](https://developers.snap.com/api/marketing-api/Ads-API/measurement): Performance metrics at the campaign level - [Ad Squad Stats](https://developers.snap.com/api/marketing-api/Ads-API/measurement): Performance metrics at the ad squad level - [Ad Stats](https://developers.snap.com/api/marketing-api/Ads-API/measurement): Performance metrics at the ad level Additional reports will be added based on user feedback we receive via our [in-app support form](https://app.posthog.com/#panel=support%3Afeedback%3Adata_warehouse%3Alow%3Atrue). ## Requirements - A Snapchat Ads account with permission to access data from accounts you want to sync. > **Tip:** If you need to find your ad account ID manually, go to [Snapchat Ads Manager](https://ads.snapchat.com/) > **Ad Accounts**. The ID is visible next to the account name, or in the dashboard URL: `https://ads.snapchat.com/{ID_IS_HERE}/manage`. ## Configuring PostHog Connect PostHog to your Snapchat Ads account using a Snapchat account. The Snapchat account must have permission to access data. 1. In PostHog, go to the **[Data pipelines](https://app.posthog.com/pipeline/sources)** tab. 2. Open the **\+ New** drop-down menu in the top-right and select **Source**. 3. Find Snapchat Ads in the sources list and click **Link**. 4. Connect your Snapchat account by selecting an existing integration or creating a new one. 5. Select your ad account from the dropdown. Accounts are grouped by organization and display their status (e.g. Active, Pending). Pending accounts typically haven't finished setup and may not have data to sync yet. 6. (Optional) Add a prefix for the table name. ## Configuration | Option | Type | Required | | --- | --- | --- | | `Snapchat Ads account` | oauth | Yes | | `Snapchat Ads Ad Account ID` | oauth-account-select | Yes | ## Supported tables | Table | Description | Sync method | Incremental field | Primary key | | --- | --- | --- | --- | --- | | `campaigns` | An advertising campaign — the top-level container that holds ad squads and sets the schedule and objective. | Full refresh | — | — | | `ad_squads` | An ad squad (ad set) within a campaign — defines targeting, budget, bid, and schedule for a group of ads. | Full refresh | — | — | | `ads` | An individual ad within an ad squad — pairs creative with delivery settings. | Full refresh | — | — | | `ad_accounts` | The ad account the data is imported from, including the currency and timezone every spend and daily metric is reported in. | Full refresh | — | — | | `creatives` | A creative — the media, headline, and call to action an ad renders. Join to `ads.creative_id` to attribute performance to what people actually saw. | Full refresh | — | — | | `media` | A media asset (video, image, or lens package) owned by the ad account. One media asset can be used by several creatives. | Full refresh | — | — | | `audience_segments` | An audience segment (customer list, lookalike, engagement, or pixel-based) that ad squads can target. | Full refresh | — | — | | `pixels` | A Snap Pixel — the tag that ties website conversions back to the ads people saw. Join a pixel to the conversion metrics on the stats tables. | Full refresh | — | — | | `campaign_stats_daily` | Daily performance metrics (spend, impressions, swipes, conversions) broken down by campaign. | Incremental, Full refresh | start\_time | — | | `ad_squad_stats_daily` | Daily performance metrics (spend, impressions, swipes, conversions) broken down by ad squad. | Incremental, Full refresh | start\_time | — | | `ad_stats_daily` | Daily performance metrics (spend, impressions, swipes, conversions) broken down by ad. | Incremental, Full refresh | start\_time | — | | `campaign_stats_daily_country` | Daily delivery insights per campaign and country. Estimated figures that need at least 30 impressions in a day, so totals will not match campaign\_stats\_daily exactly. | Incremental, Full refresh | start\_time | — | | `campaign_stats_daily_demographics` | Daily delivery insights per campaign, age bucket, and gender. Estimated figures that need at least 30 impressions in a day, so totals will not match campaign\_stats\_daily exactly. | Incremental, Full refresh | start\_time | — | | `ad_stats_daily_country` | Daily delivery insights per ad and country. Estimated figures that need at least 30 impressions in a day, so totals will not match ad\_stats\_daily exactly. | Incremental, Full refresh | start\_time | — | | `ad_stats_daily_demographics` | Daily delivery insights per ad, age bucket, and gender. Estimated figures that need at least 30 impressions in a day, so totals will not match ad\_stats\_daily exactly. | Incremental, Full refresh | start\_time | — |