> AI agents: this is one page from PostHog's docs. Full index of Markdown docs for LLMs: https://posthog.com/llms.txt # Linking Yotpo as a source **Alpha release** This source is currently in **alpha**. The interface and available tables may change. ![](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 > **Alpha:** This source is in alpha. If you run into issues, reach out to [our support team](/docs/support.md). The Yotpo connector syncs your review and email marketing data – product reviews, email analytics, raw email delivery records, and unsubscribers – into PostHog, so you can analyze customer feedback and email engagement alongside your product data. ## Prerequisites You need a Yotpo account with API access. You'll need your **app key** (also called the store ID) and an **API secret**. Both are available in your [Yotpo account settings](https://settings.yotpo.com/#/general_settings). ## 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 Yotpo, you'll need: - **App key (store ID)** – your Yotpo app key, found in your Yotpo account settings under **General Settings**. - **API secret** – your Yotpo API secret, found in the same settings page. - **Start date for email data** – a date in `YYYY-MM-DD` format. Email tables (`email_analytics` and `raw_data`) sync data from this date onward. Reviews and unsubscribers sync all available records regardless of this setting. ## 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](/docs/cdp/sources.md#sync-methods) for a full explanation of how each mode works and how to choose between them. All Yotpo tables use **full refresh** syncing. Incremental and append-only syncing are not supported because the Yotpo API does not provide reliable timestamp filters or unique keys across all endpoints. This means every sync re-downloads all data for each table. For the `email_analytics` and `raw_data` tables, the configured start date limits how far back data is fetched. ## Configuration | Option | Description | | --- | --- | | `App key (store ID)` **Type:** text **Required:** True | | | `API secret` **Type:** password **Required:** True | | | `Start date for email data` **Type:** text **Required:** True | Email tables include data from this date. Reviews and unsubscribers include all available records. | ## Supported tables | Table | Description | Sync method | Incremental field | Primary key | | --- | --- | --- | --- | --- | | `reviews` | Product and site reviews, including unpublished reviews. | Full refresh | — | id | | `email_analytics` | Daily counts of review request emails sent, grouped by email type, from the configured start date. | Full refresh | — | since, until | | `raw_data` | Email delivery and engagement records from the configured start date. | Full refresh | — | — | | `unsubscribers` | Email addresses excluded from Yotpo review request emails. | Full refresh | — | user\_email, email\_type\_id | ## Troubleshooting ### "Yotpo rejected the app key or API secret" Your credentials are incorrect. Double-check your app key and API secret in your [Yotpo account settings](https://settings.yotpo.com/#/general_settings), then reconnect. ### "Yotpo did not return an access token" The API accepted your credentials but didn't return a token. Verify your API credentials are correct and your Yotpo account has API access enabled, then reconnect. ### 401 or "access token is invalid or expired" Your access token has expired or been revoked. Check your credentials and reconnect. ### 403 or "denied access to this table" Your Yotpo account doesn't have permission to access this endpoint. Check your account's API access level. ### Invalid start date The start date must be in `YYYY-MM-DD` format and cannot be in the future. If your sync is failing or data looks wrong, see the [Data warehouse troubleshooting guide](/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. ### Still have questions? Ask PostHog AI ### Was this page useful? HelpfulCould be better