Skip to main content

Customer.io

This page contains the setup guide and reference information for the Customer.io destination connector.

Overview

The Customer.io destination connector syncs data to Customer.io using the Track API v2 batch endpoint. This connector supports data activation, letting you identify people and track events in Customer.io from your data warehouse or other sources.

Prerequisites

  • A Customer.io account
  • A Customer.io Track API Key and Site ID (see Setup guide)
  • Airbyte version 1.8 or later, or Airbyte Cloud

S3 prerequisites for rejected records

If you're using an S3 bucket to store rejected records, you also need the following.

  1. Allow connections from Airbyte to your AWS S3/Minio S3 cluster (if they exist in separate VPCs).

  2. Enforce encryption of data in transit.

  3. An S3 bucket with credentials, a Role ARN, or an instance profile with read/write permissions configured for the host (EC2, EKS).

    • These fields are always required:

      • S3 Bucket Name
      • S3 Bucket Region
      • Prefix Path in the Bucket
    • If you are using STS Assume Role, you must provide:

      • Role ARN
    • If you are using AWS credentials, you must provide:

      • Access Key ID
      • Secret Access Key
    • If you are using an Instance Profile, you may omit the Access Key ID, Secret Access Key, and Role ARN.

Setup guide

To configure this connector:

  1. In Customer.io, go to Settings > API & Webhook Credentials.
  2. Under Track API Keys, click Create Track API Key.
  3. Copy the Site ID and API Key.
  4. In Airbyte, create a new Customer.io destination and enter the Site ID and API Key.

This connector uses HTTP Basic authentication with the Site ID as the username and the API Key as the password.

Rejected records

This connector can optionally store rejected records in object storage (such as S3). Configure object storage in the connector settings to capture records that couldn't be synced to Customer.io. Records may be rejected due to payload size limits, missing required fields, or Customer.io API validation errors.

Destination objects and operations

This connector supports two destination objects:

  • person_identify (Upsert): Identifies a person and assigns attributes to them. The person_email field is required and used as the matching key. All other fields in the record are sent as person attributes.
  • person_event (Insert): Tracks an event for a person. Required fields: person_email, event_name. Optional fields: event_id (for event deduplication), timestamp (Unix timestamp). All other fields are sent as event attributes.

Supported sync modes

Sync modeSupported?
Full Refresh - OverwriteNo
Full Refresh - AppendYes
Full Refresh - Overwrite + DedupedNo
Incremental Sync - AppendYes
Incremental Sync - Append + DedupedNo

This is a data activation destination. In addition to the Airbyte sync modes above, Customer.io supports identify (person) and track (event) operations configured per stream.

Limitations

  • The connector sends data to the US region endpoint (track.customer.io). If your Customer.io account is in the EU region, data still reaches your workspace but passes through US servers first. See Customer.io server addresses for details.
  • The Track API has a rate limit of 1000 requests per second. The connector batches records (up to 500 KB per batch) to stay within this limit.
  • Each entry in a batch must be 32 KB or smaller.
  • Customer.io applies the following attribute limits:
    • Max 300 attributes per person or identify call
    • Max 100 KB total attribute size per person
    • Attribute names: 150 bytes or smaller
    • Attribute values: 1000 bytes or smaller
  • Event names must be 100 bytes or smaller.

Namespace support

This destination does not support namespaces.

Reference

Config fields reference

Field
Type
Property name
object
credentials
object
object_storage_config

Changelog

VersionDatePull RequestSubject
0.0.112026-06-1880254Move to community support level
0.0.102026-02-0972973Upgrade CDK to 1.0.1
0.0.92026-01-2672303Upgrade CDK to 0.2.0
0.0.82025-11-0569132Upgrade to Bulk CDK 0.1.61
0.0.72025-09-2366571Fix person_identify in incremental mode
0.0.62025-09-1866238Use low-code discover definition and pin to a CDK version
0.0.52025-09-0865157Update following breaking changes on spec
0.0.42025-08-2065113Update logo
0.0.32025-07-1062848Improve UX on connector configuration
0.0.22025-07-0862843Checker should validate DLQ
0.0.12025-07-0762083Initial release of the Customer.io destination connector