Customer.io Destination
Sign up for early access!
Apply for early access to be among the first to try out Customer.io Data Pipelines. Bear with us: it may take a few weeks for us to approve your request as we're actively working on CDP.
About this integration
Sending data into your Customer.io workspace lets you take advantage of various sources to gather customer data, personalize messages, and trigger complex workflows. You can send data to different workspaces, to gather data for different messaging use cases.
Getting started
Go to the CDP tab and click Connections.
Click Add New under Destinations.
Select the Customer.io destination.
(Optional) Select the sources that you want to connect to this destination. You can always connect sources to your destination later. We’ll only show you eligible sources.
Configure your destination.
Site Id: Customer.io site ID. This can be found on your API Credentials page.
Api Key: Customer.io API key. This can be found on your API Credentials page.
Account Region: Learn about Account Regions.
Click Enable Destination.
Actions
When you’re done setting up your destination, you can go to the Actions tab to see how we map source events to your destination.
You may need to add actions for this destination
While we often have default triggers for actions, we don't always add those actions as defaults. You may need to add actions to make sure that you're sending all the data that you want to send to your destination. See our actions page for help setting up actions.
Create or update a person (identify)
Incoming identify
calls add and update people in your workspace. We map traitsInformation that you know about a person, captured from identify
events in Customer.io Data Pipelines (CDP). Traits are analogous to attributes in Customer.io Journeys. in source calls to attributesA key-value pair that you associate with a person or an object—like a person’s name, the date they were created in your workspace, or a company’s billing date etc. Use attributes to target people and personalize messages. for people in your workspace.
By default, we send this event when you identify
a person—like when they submit their email address on your website requesting more information, or when they create an account with you.
With every identify
call, you can pass attributesA key-value pair that you associate with a person or an object—like a person’s name, the date they were created in your workspace, or a company’s billing date etc. Use attributes to target people and personalize messages.—things that you know about a person, like their first name, their interests, etc. You can also pass relationships to one or more objects—like classes a person is enrolled in or accounts they belong to.
{
"type": "identify",
"traits": {
"first_name": "cool",
"last_name": "person",
"email": "cool.person@example.com",
"plan": "premium"
},
"userId": "97980cfea0067",
"created_at": "1679407797",
}
Add and update people by ID or email
In Customer.io, you can identify people by an id
or an email
address, which provides a way to work with people if they provide an email address but haven’t generated a backend ID (like when someone signs up as a lead but hasn’t yet become a paying customer). When you send identify
events to this destination, they’ll add or update people in Customer.io depending whether or not the corresponding email or ID exists.
If an identify
request contains either a userId
or an email
trait, and that person doesn’t already exist, we’ll create a person in Customer.io
If an identify
request contains either a userId
or an email
trait, and that person already exists, we’ll update the person in Customer.io
If an identify
request contains both a userId
and an email
trait, but one of those values wasn’t associated with the person, we’ll add the new identifierThe attributes you use to add, modify, and target people. Each unique identifier value represents an individual person in your workspace. to the person and update their profile.
identify
event)-->b{Does it haveemail or ID} b-->|yes|c{Does email
or ID exist?} b-.->|no|d(Not sent to destination) c-->|yes|e(Update person) c-->|no|f(Add new person)
Create or update an object (group)
Similar to an identify
call, this event creates or updates objectsNot to be confused with a JSON object, an object in Customer.io is a non-person entity that you can associate with one or more people—like a company, account, or online course. You can use objects to message people based on changes to their company, account, or colege course itinerary.—non-people entities like accounts, online classes, or recreational leagues. When you identify an object
This event lets you create or update people. By default, we send this event when you identify
a person—like when they submit their email address on your website requesting more information, or when they create an account with you.
With every identify
call, you can pass attributesA key-value pair that you associate with a person or an object—like a person’s name, the date they were created in your workspace, or a company’s billing date etc. Use attributes to target people and personalize messages.—things that you know about a person, like their first name, their interests, etc.
{
"messageId": "4vl6zh",
"timestamp": "2022-11-24T22:56:14.144Z",
"type": "group",
"projectId": "sqsv42VjV1e2d8ha2SHxM6",
"traits": {
"name": "Example Co, Inc.",
"industry": "edtech",
"plan": "enterprise"
},
"groupId": "example-company",
"userId": "97980cfea0067"
}
Create or update a device
When a person uses your mobile app or mobile website, you can capture and send device information to Customer.io. We capture this information with two specific events: installed
and opened
. These represent the times when you’ll typically register for a token and associate a device with a person.
{
"messageId": "i6yatl",
"timestamp": "2022-11-24T22:48:17.593Z",
"type": "track",
"email": "cool.person@example.com",
"projectId": "sqsv42VjV1e2d8ha2SHxM6",
"properties": {
"device_id": "cEFolG5uRDGPizsaUh4X4m:APA91bFsKwjW9zUaiuJMCGqa3fLRiJ8fv1riQ6U-1iI72aSFZx5wxiqGnqbL-S2g3kZ5RrRUUo3AAVh_LhpFbjDlSqEoC4rqHmH8Z1BGgqaD9jStahy63cGXueW-vOr6mTOekmXgWSww"
},
"userId": "97980cfea0067",
"event": "Application Installed"
}
Delete device
We automatically remove a device when we register an event called Application Uninstalled
. Our SDK automatically sends this event when people uninstall your app.
However, device tokens are transient tokens can expire based on your push provider, and you’ll likely register for a new device token whenever someone closes and re-opens your app. We automatically prune devices from our messaging platform when tokens are invalidated, but we don’t do this as a part of event subscriptions. You may want to send additional calls to delete previous devices as we prune them from your Journeys tab.
{
"messageId": "i6yatl",
"timestamp": "2022-11-24T22:48:17.593Z",
"type": "track",
"email": "cool.person@example.com",
"projectId": "sqsv42VjV1e2d8ha2SHxM6",
"properties": {
"device_id": "cEFolG5uRDGPizsaUh4X4m:APA91bFsKwjW9zUaiuJMCGqa3fLRiJ8fv1riQ6U-1iI72aSFZx5wxiqGnqbL-S2g3kZ5RrRUUo3AAVh_LhpFbjDlSqEoC4rqHmH8Z1BGgqaD9jStahy63cGXueW-vOr6mTOekmXgWSww"
},
"userId": "97980cfea0067",
"event": "Application Uninstalled"
}
Track event
The track
call represents an activity someone performs—typically in your app or on your website. If you send this event and the person you reference in the event doesn’t exist, we’ll create them.
{
"messageId": "i6yatl",
"timestamp": "2022-11-24T22:48:17.593Z",
"type": "track",
"email": "cool.person@example.com",
"projectId": "sqsv42VjV1e2d8ha2SHxM6",
"properties": {
"class_name": "Customer.io Basics",
"class_code": "cio101",
"start_date": 1679410730
},
"userId": "97980cfea0067",
"event": "enrolled"
}
Page views and screens
There are two special kinds of track events: page
and screen
calls. These represent the page(s) people visit on your website and the screens people visit in your mobile app respectively. You can use these events to monitor the places people do and don’t visit in your website or app. You might also use page and screen calls to follow up with people, to see if they were still interested in a particular product, online class, and so on.
{
"messageId": "efxqsi",
"timestamp": "2022-11-24T22:55:59.498Z",
"type": "page",
"email": "cool.person@example.com",
"projectId": "sqsv42VjV1e2d8ha2SHxM6",
"properties": {
"session_started": 1679410730,
"url": "http://www.example.com"
},
"userId": "97980cfea0067",
"name": "home"
}
{
"messageId": "9zk6c",
"timestamp": "2023-03-20T22:56:06.259Z",
"type": "screen",
"email": "cool.person@example.com",
"projectId": "sqsv42VjV1e2d8ha2SHxM6",
"properties": {
"session_started": 1679410730
},
"userId": "97980cfea0067",
"name": "home"
}