Step-by-step guide to send your event data from RudderStack to is a popular platform for sending automated messages and emails to your customers, with a focus on security and privacy. With, you get complete information about your customers in one place, and use it to create personalized messages and campaigns for them.

RudderStack supports sending your events to CustomerIO from the cloud mode S2S (Server to Server) and native web SDKs by calling the relevant RudderStack APIs.

Find the open-source transformer code for this destination in our GitHub repo.

Getting Started

Before configuring your source and destination on the RudderStack app, please check whether the platform you are working on is supported. You can refer the following table to do so:

Connection Mode




Device mode




Cloud mode




To know more about the difference between Cloud mode and Device mode in RudderStack, read the RudderStack connection modes guide.

Once you have confirmed that the platform supports sending events to, perform the steps below:

Please follow our guide on How to Add a Source and Destination in RudderStack to add a source and destination in RudderStack.

  • Fill the required fields such as API Key and Site ID as shown in the screenshot below: Connection Settings

In case your account based in the EU region, you must enable the option Account based in the EU data center?. For more information read the Documentation.

Once the destination is enabled, events from our SDK will start to flow to

We primarily need the properties API Key and Site ID to start sending events to You may enable the Use native SDK to send events option to send events through's native JavaScript SDK.


The identify call sends the event data to along with the properties that you pass as the RudderStack traits. For more information on the identify call, please refer our RudderStack API specification documentation.

RudderStack sends the createdAt field as created_at field to to register user sign up time in the dashboard. If you don't send that field, created_at will not be sent to Customer IO.

userId is a mandatory field for and if it is not provided, we use anonymousId in place of that.

The following code snippet is an example of an identify call in RudderStack:

// a sample identify
rudderanalytics.identify("my-userID", {
name: "Tintin",
city: "Brussels",
country: "Belgium",
// As created at is not present in the above call, we will append it with
current timestamp value.


If you are using a native SDK, the JavaScript snippet is loaded and it captures the page view automatically. However, if you want to pass additional properties, you can call _**_that sends the pageevent with the associated properties that you pass along with the call.

Here is a sample of a page call in RudderStack:

// "home" is the name of the page."home", {
path: "path",
url: "url",
title: "title",
search: "search",
referrer: "referrer"


The screen call records the screen views of the user in your App. If you have turned on the screen views in your App implementation from the iOS or Android SDK it will register as Viewed <screen name> Screen under the Activities tab for the user. We'll forward the properties you've passed along with the screen call to dashboard as it is.

Here is a sample screen call in using RudderStack iOS SDK:

[[RudderClient sharedInstance] screen:@"Main"
properties:@{@"prop_key" : @"prop_value"}];

The above event will be transformed as Viewed Main Screen in your dashboard.


The track call _**_will pass the event properties to You may call rudderanalytics.track()with or without the event properties. For more information on how trackcall works, please refer to our RudderStack API specification documentation.

The following code snippet shows how a sample track call is made in RudderStack:

rudderanalytics.track("Track me", {
category: "category",
label: "label",
value: "value"

For anonymous users, does not allow an event name more than the size of 100 bytes. That is why the event names bigger than the above size get trimmed from our end.

Device Token Registration

We register the deviceToken to on the following Application Lifecycle Events.

  • Application Installed

  • Application Opened

  • Application Unistalled

To use this feature, you've to turn on the feature trackApplicationLifecycleEvents in your mobile SDK implementation code. Moreover, you have to register your deviceToken after initializing the SDK.

Example for registering deviceToken is as follows:

[[[RudderClient sharedInstance] getContext] putDeviceToken:[self getDeviceToken]];


Where do I find the API Key and Site ID for configuring in RudderStack?

In order to obtain the API Key and Site ID, you will first need to create an account in Once you have done that, you can find this information on their Integration page.

Contact Us

If you come across any issues while configuring with RudderStack, please feel free to contact us. You can also start a conversation on our Slack channel; we will be happy to talk to you!