Customer.io is a popular marketing platform for sending targeted emails and push and SMS notifications to improve customer engagement and thereby the overall conversion rate.

You can send your Customer.io events by adding a webhook that points to RudderStack. These events include email-related actions such as email delivered, opened, bounced, and more.

This guide will help you set up Customer.io as a source in RudderStack.

Getting started

Follow these steps to set up your Customer.io source in the RudderStack dashboard:

  1. Go to your RudderStack dashboard and click on Add Source. From the list of Event Stream sources, select Customer.io.
  2. Assign a name to your source and click Continue.
To connect this source to a RudderStack warehouse destination, the source name should match the name of your warehouse schema.
  1. Your Customer.io source is now configured. Go to the Settings tab and note the Webhook URL.
Customer.io webhook URL
  1. Go to your Customer.io dashboard. From the sidebar, go to the Integrations page and look for Reporting Webhooks, as shown:
Customer.io reporting webhooks
  1. Click on Add Webhook and add the webhook URL obtained in Step 3. The URL should be of the following format:
<DATA_PLANE_URL>/v1/webhook?writeKey=<WRITE_KEY>
For more information on the data plane URL, refer to the Glossary.
  1. Finally, save the webhook.

Supported events

The following sections list the Customer.io event types supported by RudderStack.

Common data mappings

The common data mappings for each of the supported event types is listed in the following table:

Customer.io propertyRudderStack property
data.customer_iduserId
data.event_idproperties.eventId
data.identifiers.iduserId

Email events

RudderStack supports the following Customer.io email events:

Email EventDescription
DeliveredThe delivery provider's report that the email was delivered to the inbox of the recipient.
OpenedAn email was opened by the recipient.
ClickedA tracked link in an email was clicked by the recipient/customer.
BouncedThe delivery provider's report that it was unable to deliver the email to the recipient.
SpammedAn email was marked as spam by the recipient.
UnsubscribedThe customer unsubscribed via a particular email.
FailedThe email was not successfully delivered to the recipient.
DroppedThe email was not sent as the recipient was suppressed.
AttemptedCustomer.io retried sending the email to the email provider.
ConvertedThe conversion goal attributed to the email was matched.
SentThe email was successfully sent to the recipient.
DraftedThe sender created an email draft.

The supported property mappings in addition to the common mappings listed above are as follows:

Customer.io propertyRudderStack property
data.action_idproperties.actionId
data.broadcast_idproperties.broadcastId
data.delivery_idproperties.deliveryId
data.hrefproperties.link.url
data.link_idproperties.link.id
data.recipientcontext.traits.email
data.subjectproperties.emailSubject
data.failure_messageproperties.reason
data.campaign_idproperties.campaignId
data.content_idproperties.contentId
data.newsletter_idproperties.newsletterId

Customer events

RudderStack supports the following Customer.io customer events:

Customer EventDescription
SubscribedThe customer was subscribed to a campaign.
UnsubscribedThe customer was unsubscribed from a campaign.

The supported property mappings in addition to the common mappings listed above is shown:

Customer.io propertyRudderStack property
data.email_addresscontext.traits.email

SMS events

RudderStack supports the following Customer.io SMS events:

SMS EventDescription
FailedThe SMS could not be sent to the delivery provider.
ClickThe recipient tapped the link present in the SMS notification.
SentThe SMS notification was sent successfully.
AttemptedThe SMS was attempted for delivery.
DraftedThe SMS notification was drafted.
DeliveredThe SMS notification was delivered to the recipient.
ConvertedThe conversion goal attributed to the SMS was matched.
BouncedThe delivery provider's report that it was unable to deliver the SMS to the recipient.

The supported property mappings in addition to the common mappings listed above are as follows:

Customer.io propertyRudderStack property
data.action_idproperties.actionId
data.broadcast_idproperties.broadcastId
data.delivery_idproperties.deliveryId
data.hrefproperties.link.url
data.recipientcontext.traits.email
data.failure_messageproperties.reason
data.campaign_idproperties.campaignId
data.link_idproperties.link.id

Push notification events

RudderStack supports the following Customer.io push notification events:

Push EventDescription
FailedThe push notification could not be sent to the delivery provider.
ClickThe recipient tapped the link present in the push notification.
SentA push notification was sent.
AttemptedA push notification was attempted unsuccessfully.
DraftedA push notification was drafted.
OpenedA push notification was opened by the recipient.
ConvertedThe conversion goal attributed to the push notification was matched.
BouncedAn invalid device token was reported by the delivery provider.
DroppedThe push notification was not sent to the recipient as the device token bounced.

The supported property mappings in addition to the common mappings listed above are as follows:

Customer.io propertyRudderStack property
data.action_idproperties.actionId
data.broadcast_idproperties.broadcastId
data.delivery_idproperties.deliveryId
data.hrefproperties.link.url
data.link_idproperties.link.id
data.recipientcontext.traits.email
data.device_idproperties.deviceId
data.failure_messageproperties.reason
data.recipientsproperties.recipients
data.campaign_idproperties.campaignId
data.device_platformproperties.devicePlatform

Webhook events

RudderStack supports the following Customer.io webhook events:

Webhook EventDescription
FailedThe webhook payload failed and was not sent to the recipient.
ClickThe link in the webhook payload was clicked by the recipient.
SentA webhook payload was sent from Customer.io.
AttemptedA webhook event was attempted unsuccessfully and would be retried.
DraftedA webhook draft was created by the sender.

The supported property mappings in addition to the common mappings listed above are as follows:

Customer.io propertyRudderStack property
data.action_idproperties.actionId
data.broadcast_idproperties.broadcastId
data.delivery_idproperties.deliveryId
data.hrefproperties.link.url
data.link_idproperties.link.id
data.recipientcontext.traits.email
data.failure_messageproperties.reason

Slack events

RudderStack supports the following Customer.io Slack events:

Slack EventDescription
FailedThe Slack message failed and was not delivered to the recipient.
ClickThe recipient clicked the link in the Slack message.
SentA Slack message was successfully sent to the recipient.
AttemptedA Slack message was attempted unsuccessfully and would be retried.
DraftedA Slack message was drafted by the sender.

The supported property mappings in addition to the common mappings listed above are as follows:

Customer.io propertyRudderStack property
data.action_idproperties.actionId
data.broadcast_idproperties.broadcastId
data.delivery_idproperties.deliveryId
data.hrefproperties.link.url
data.link_idproperties.link.id
data.recipientcontext.traits.email
data.failure_messageproperties.reason
data.campaign_idproperties.campaignId

The following image highlights the setup in the Customer.io dashboard:

Customer.io event settings

Event transformation

The Customer.io webhook events are ingested into RudderStack after converting them into the RudderStack event format. The customer_id set by Customer.io is set as userId. In cases where Customer.io does not send the customer_id, the email address of the user is set as anonymousId.


Contact us

For more information on the topics covered on this page, email us or start a conversation in our Slack community.

Contents