List
Read live records straight from the Customer.io API.
Stream Customer.io campaigns, campaigns actions and newsletters to any warehouse or AI app.
Source
Customer.io

Overview
The Airbyte Customer.io connector extracts data from Customer.io and loads it into 50+ destinations such as Snowflake, BigQuery, Databricks or Postgres, with full refresh and incremental sync. It publishes 21 streams you can select per connection.
Land 21 Customer.io tables in 50+ destinations on a schedule you control.
Read, create and update Customer.io records at runtime through typed entity actions.
Query synced Customer.io data with filters, sorting and semantic search, without spending Customer.io API rate limits.
Pull only the records that changed since the last run instead of reloading everything.
21 streams
| Primary key | id |
|---|---|
| Sync modes | FullIncr. |
| Primary key | id |
|---|---|
| Sync modes | FullIncr. |
| Primary key | id |
|---|---|
| Sync modes | FullIncr. |
| Primary key | id |
|---|---|
| Sync modes | FullIncr. |
| Primary key | broadcast_id, id |
|---|---|
| Sync modes | FullIncr. |
| Primary key | newsletter_id, id |
|---|---|
| Sync modes | FullIncr. |
Setup
Check that you can manage API credentials: you need to be an Account Admin, or a Member with the account-level Manage API credentials permission (Manage your API credentials).
In Customer.io, go to Account Settings > API Credentials (Where can you find them?).
Add an App API key: give it a name and select the workspace you want to sync (Adding new credentials). Track API keys send data into a workspace and do not work here (Track API Keys vs App API Keys). If you restrict the key's scope, make sure it includes the data you want to sync (Authentication).
Copy the key right away and store it somewhere safe: Customer.io shows App API keys only once (App API Keys).
Find your account's region, US or EU. Account Admins see it under Settings > Account Settings > Data and Privacy; other roles do not, so ask an Account Admin (How do I know what region my data is in?). A wrong region fails the connection test with a 401 error.
If your account restricts API access by IP address, allow the addresses Airbyte connects from: the Airbyte Cloud IP addresses on Airbyte Cloud, or your deployment's public IP addresses on Self-Managed Airbyte. On the Manage API Credentials page, click Add IP Address, enter an address, select the workspace and click Add IP Address, once per address (Restrict API access by IP Address). Customer.io denies addresses missing from the list, even with a valid key.
| Field | Type | Description |
|---|---|---|
| app_api_key* | string | App API key for the Customer.io workspace you want to sync. In Customer.io, go to Account Settings > API Credentials and create an App API key for that workspace. Copy it right away, because Customer.io shows it only once. Track API keys do not work. |
| activities_lookback_days | integer | How many days before the last synced activity each incremental sync of the activities stream reads again. Customer.io can record an activity with a time well before it processes it, for example when it merges an anonymous person's events into a profile or receives a backdated event, and an incremental sync skips activities that arrive later than this window. Customer.io keeps 30 days of activities. A longer window skips fewer late activities, but every sync then requests one page per 100 activities in the window. Enter 1 to 30 days. Defaults to 7. |
| esp_suppression_domains | array | The domains you send email from, in lowercase, for example mail.example.com. Customer.io lists them under Settings > Workspace Settings > Email. The esp_suppressions stream reads each suppression list once per domain and records the domain on every row. Customer.io suppresses an address on the domain where it bounced or was reported as spam, so if you send from more than one domain, enter them all. Leave empty to read each list once without a domain filter; the domain column is then empty. Not needed if you send through your own SMTP server. |
| messages_lookback_days | integer | How many days before the last synced message each incremental sync of the messages stream reads again, so that opens, clicks, conversions, bounces and unsubscribes recorded after a message was sent reach the destination. Customer.io can record a conversion up to 90 days after a message is sent, opened or clicked, and records opens and clicks for up to 6 months. A longer window keeps these metrics more complete, but every sync then requests one page per 1,000 messages sent in the window. Enter 1 to 180 days. Defaults to 30. |
| num_workers | integer | How many requests Airbyte sends to Customer.io at the same time, across all streams. They all count against the 10 requests per second Customer.io allows for your workspace, so beyond about 5 a sync rarely gets faster. Enter 2 to 10. Defaults to 3. |
| region | string | The data center region of your Customer.io account. Account Admins can see it under Settings > Account Settings > Data and Privacy. If the region does not match your account, requests fail with an authentication (401) error. |
| start_date | string | Only sync records created or last updated at or after this UTC date and time, in the format YYYY-MM-DDTHH:MM:SSZ: creation time for messages, event time for activities. Streams that support only full refresh, such as newsletter variants, people, segment memberships and ESP suppressions, sync every record. Leave blank to sync all records. |
6 actions
Read live records straight from the Customer.io API.
Fetch a single record by ID.
Query synced data with filters and sorting, with no API rate limits.
Natural-language search across synced Customer.io records.
Write a new record back into Customer.io.
Patch fields on an existing record.
Full parameter-level details live in the Customer.io entity reference.
Hybrid deployment
The data plane runs in your environment. Records, credentials and keys stay with you; the control plane only receives configuration and job metadata.
Your environment
Airbyte control plane
Use cases
List all campaigns in Customer.io
Get the details of the first campaign in my workspace
List the actions for the first campaign in my workspace
Show me the details of the first action of my most recent campaign
Show me all newsletters
Show me the details of the most recent newsletter
What segments are defined in my workspace?
Show me the details of the first segment
List all sender identities
Show me the details of the first sender identity
Show me all reporting webhooks
What snippets do we have?
List all collections
Show recent activities
List recent messages
List all transactional message templates
Show me the details of the first transactional message template
Show the content variants of the first transactional template
Create a snippet called 'footer' with content '<p>Thanks!</p>'
Update the snippet 'header' to say 'Welcome back!'
Create a new collection called 'products'
Create a reporting webhook for email events
Create a manual segment called 'VIP Customers'
Export all customers matching a segment
Send a transactional email using the first transactional message template to the email address of the first sender identity
Which campaigns are currently active?
Find newsletters sent in the last month
What are the most recent email deliveries?
Which exports have completed?
FAQ
No. One Customer.io authorization powers both the scheduled syncs that land data in your destination and the entity actions your agents call at runtime.
No. Entity actions read and write through the Customer.io API as they are called, so they work immediately. Context store search is the exception: it queries data Airbyte has already synced, which is what lets it filter and sort without spending API rate limits.
21 streams, including campaigns, campaigns actions, newsletters, broadcasts, broadcast actions, newsletter variants, transactional messages, sender identities and more.
Yes. The Customer.io connector supports incremental sync on selected streams, and full refresh on every stream.
Run the Customer.io connector on Cloud, OSS, Hybrid. Hybrid deployments keep the data plane in your environment while the control plane orchestrates syncs.
Didn't find your answer? Talk to sales
Free 14-day trial. One connection powers your scheduled syncs and your live Customer.io actions.