Linking Customer.io as a source
This source is currently in alpha. The interface and available tables may change.
Connect your Customer.io workspace using an App API key. PostHog uses the key to pull campaigns, broadcasts, segments, newsletters, and more, and to register a reporting webhook for realtime message activity.
Adding a data source
- Go to the sources tab of the data pipeline section in PostHog.
- Click + New source and then click Link next to Customer.io.
- Generate an App API key in Customer.io under API Credentials > App API Keys. PostHog uses this key both to pull the list endpoints and to manage the reporting webhook automatically. Also note your workspace Region — US (
api.customer.io) or EU (api-eu.customer.io). - Back in PostHog, paste the App API key in the App API key field, select your Region, and click Next.
- To capture realtime message activity, PostHog tries to register a reporting webhook for you using your App API key. Customer.io doesn't return the signing key in the API response, so copy the Signing key from the Reporting Webhooks page in Customer.io (under Integrations) and paste it into the Signing key field. If auto-registration failed, add a Reporting Webhook integration manually in Customer.io, paste the webhook URL PostHog shows, select the events you want, save and enable it, then copy the signing key.
- 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 Customer.io data in PostHog.
Available tables
The App API list endpoints sync via full refresh, and the webhook-backed event tables capture realtime message activity from Customer.io's reporting webhook.
| Table | Description | Sync method |
|---|---|---|
broadcasts | Broadcasts in your workspace | Full refresh |
campaigns | Campaigns in your workspace | Full refresh |
collections | Collections (data sets) | Full refresh |
newsletters | Newsletters | Full refresh |
object_types | Object type definitions | Full refresh |
segments | Segments | Full refresh |
sender_identities | Sender identities | Full refresh |
snippets | Reusable content snippets | Full refresh |
subscription_topics | Subscription topics | Full refresh |
transactional | Transactional messages | Full refresh |
customer_events | Customer subscription activity from the reporting webhook | Webhook |
email_events | Email delivery activity from the reporting webhook | Webhook |
push_events | Push notification activity from the reporting webhook | Webhook |
sms_events | SMS delivery activity from the reporting webhook | Webhook |
in_app_events | In-app message activity from the reporting webhook | Webhook |
slack_events | Slack message activity from the reporting webhook | Webhook |
webhook_events | Webhook delivery activity from the reporting webhook | Webhook |
Full refresh tables reload all data on each sync. Webhook tables are populated in realtime as Customer.io sends reporting-webhook events to PostHog.
Configuration
| Option | Description |
|---|---|
App API keyType: password Required: True | Generate a key under API Credentials > App API Keys. PostHog needs this key both for pulling list endpoints and for managing the reporting webhook automatically. |
RegionType: select Required: True |
Supported tables
| Table | Description | Sync method | Incremental field | Primary key |
|---|---|---|---|---|
customer_events | Customer subscription events delivered via the Customer.io reporting webhook. | Webhook only | — | — |
email_events | Email message activity events (sent, delivered, opened, clicked, bounced, etc.) delivered via the reporting webhook. | Webhook only | — | — |
push_events | Push notification activity events delivered via the reporting webhook. | Webhook only | — | — |
sms_events | SMS message activity events delivered via the reporting webhook. | Webhook only | — | — |
in_app_events | In-app message activity events delivered via the reporting webhook. | Webhook only | — | — |
slack_events | Slack message activity events delivered via the reporting webhook. | Webhook only | — | — |
webhook_events | Outgoing webhook (reporting) action events delivered via the reporting webhook. | Webhook only | — | — |
broadcasts | A broadcast — a one-time message sent to a segment or list of recipients. | Full refresh | — | — |
campaigns | A campaign — an automated, triggered messaging workflow. | Full refresh | — | — |
collections | A collection — structured reference data you can use in message content. | Full refresh | — | — |
newsletters | A newsletter — a one-off email sent to a segment of customers. | Full refresh | — | — |
object_types | An object type — a category of non-person objects (e.g. companies, accounts) in the workspace. | Full refresh | — | — |
segments | A segment — a group of customers defined by attributes or behavior. | Full refresh | — | — |
sender_identities | A sender identity — a configured from-name/address used to send messages. | Full refresh | — | — |
snippets | A snippet — a reusable block of content for message templates. | Full refresh | — | — |
subscription_topics | A subscription topic — a category customers can opt in or out of. | Full refresh | — | — |
transactional | A transactional message — a template for one-off, triggered messages such as receipts or password resets. | Full refresh | — | — |