
Configuring Customer.io as a Source
In the Sources tab, click on the “Add source” button located on the top right of your screen. Then, select the Customer.io option from the list of connectors. Click Next and you’ll be prompted to add your access.1. Add account access
You’ll need your Customer.io API token for this connection. This can be obtained from your Customer.io account settings (or through this link). Once you have it, add the account access and click Next.2. Select streams
Choose which data streams you want to sync - you can select all streams or pick specific ones that matter most to you. The available streams include activities, customers, transactional messages, metrics, and message details.Tip: The stream can be found more easily by typing its name.Select the streams and click Next.
3. Configure data streams
Customize how you want your data to appear in your catalog. Select a name for each table (which will contain the fetched data) and the type of sync.- Table name: we suggest a name, but feel free to customize it. You have the option to add a prefix and make this process faster!
- Sync Type: you can choose between INCREMENTAL and FULL_TABLE.
- Incremental: every time the extraction happens, we’ll get only the new data - which is good if, for example, you want to keep every record ever fetched.
- Full table: every time the extraction happens, we’ll get the current state of the data - which is good if, for example, you don’t want to have deleted data in your catalog.
 
4. Configure data source
Describe your data source for easy identification within your organization, not exceeding 140 characters. To define your Trigger, consider how often you want data to be extracted from this source. This decision usually depends on how frequently you need the new table data updated (every day, once a week, or only at specific times). Optionally, you can determine when to execute a full sync. This will complement the incremental data extractions, ensuring that your data is completely synchronized with your source every once in a while. Once you are ready, click Next to finalize the setup.5. Check your new source
You can view your new source on the Sources page. If needed, manually trigger the source extraction by clicking on the arrow button. Once executed, your data will appear in your Catalog.For you to be able to see it on your Catalog, you need at least one successful source run.
Streams and Fields
Below you’ll find all available data streams from Customer.io and their corresponding fields:Activities
Activities
Stream for tracking customer activities and interactions with your messages and campaigns.Key Fields:
- id: Unique identifier for the activity
- customer_id: ID of the customer who performed the activity
- customer_identifiers: Object containing customer identification details- email: Customer’s email address
- id: Customer’s numeric ID
- cio_id: Customer.io assigned ID
 
- type: Type of activity performed
- timestamp: Unix timestamp when the activity occurred
- data: Activity data as JSON string (structure varies by activity type)
- delivery_id: ID of the message delivery associated with this activity
- delivery_type: Type of delivery (email, push, etc.)
Customers
Customers
Stream containing basic customer identification information.Key Fields:
- id: The customer’s unique system ID
- email: The customer’s email address
- cio_id: The Customer.io assigned ID
Transactional Messages
Transactional Messages
Stream for managing transactional messages configured in your Customer.io account.Key Fields:
- id: Unique identifier for the transactional message
- name: Name of the transactional message
- created_at: Unix timestamp when the message was created
- updated_at: Unix timestamp when the message was last updated
- type: Type of transactional message
- status: Current status of the transactional message
- template_id: ID of the template used
- description: Description of the message
- send_to_unsubscribed: Whether this message is sent to unsubscribed users
- link_tracking: Whether link tracking is enabled
- open_tracking: Whether open tracking is enabled
- hide_message_body: Whether the message body is hidden in the interface
- queue_drafts: Whether draft messages are queued
- trigger_name: Name of the trigger associated with this message
Transactional Metrics
Transactional Metrics
Stream providing metrics and performance data for your transactional messages over time.Key Fields:
- transactional_id: ID of the transactional message these metrics belong to
- attempted: Array of message attempt counts over time
- bounced: Array of bounced message counts over time
- clicked: Array of clicked message counts over time
- human_clicked: Array of human-generated clicks over time
- prefetch_clicked: Array of machine/prefetch clicks over time
- converted: Array of conversion counts over time
- created: Array of message creation counts over time
- deferred: Array of deferred message counts over time
- delivered: Array of delivered message counts over time
- drafted: Array of drafted message counts over time
- failed: Array of failed delivery counts over time
- opened: Array of opened message counts over time
- human_opened: Array of human-generated opens over time
- prefetch_opened: Array of machine/prefetch opens over time
- sent: Array of sent message counts over time
- spammed: Array of spam report counts over time
- suppressed: Array of suppressed message counts over time
- undeliverable: Array of undeliverable message counts over time
- topic_unsubscribed: Array of topic unsubscribe counts over time
- unsubscribed: Array of unsubscribe counts over time
Transactional Message Details
Transactional Message Details
Stream providing detailed information about individual transactional message deliveries. This stream retrieves data from the last year.Key Fields:
- id: Unique identifier for the message delivery
- transactional_id: ID of the parent transactional message
- deduplicate_id: ID used for deduplication
- msg_template_id: ID of the message template used
- action_id: ID of the action that triggered this message
- customer_id: ID of the customer who received the message
- identifiers: Object containing customer identification details- email: Customer’s email address
- id: Customer’s numeric ID
- cio_id: Customer.io assigned ID
 
- recipient: Email address or identifier of the recipient
- subject: Subject line of the message
- metrics: Object containing message performance metrics- bounced: Timestamp when the message bounced
- clicked: Timestamp when the message was clicked
- human_clicked: Human-generated click count (reliable from April 20, 2025)
- prefetch_clicked: Machine-generated click count (reliable from April 20, 2025)
- converted: Timestamp when conversion occurred
- created: Timestamp when the message was created
- delivered: Timestamp when the message was delivered
- drafted: Timestamp when the message was drafted
- dropped: Timestamp when the message was dropped
- failed: Timestamp when delivery failed
- opened: Timestamp when the message was opened
- human_opened: Human-generated open count (reliable from March 20, 2025)
- prefetch_opened: Machine-generated open count (reliable from March 20, 2025)
- sent: Timestamp when the message was sent
- spammed: Timestamp when marked as spam
- undeliverable: Timestamp when marked undeliverable
- unsubscribed: Timestamp when user unsubscribed
 
- created: Unix timestamp when the message was created
- failure_message: Error message if delivery failed
- newsletter_id: ID of associated newsletter (if applicable)
- content_id: ID of the content used
- campaign_id: ID of associated campaign (if applicable)
- broadcast_id: ID of associated broadcast (if applicable)
- type: Type of message (email, push, SMS, etc.)
- forgotten: Whether the message has been forgotten/deleted