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. It leverages real-time behavioral data and advanced segmentation techniques across the web and mobile platforms to improve your customers' overall experience.

By adding a reporting webhook in Customer.io, you can send your Customer.io email events to RudderStack. These include events 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:

  • Go to your RudderStack dashboard and click on Add Source. Then, select CustomerIO from the list of Event Stream sources, as shown:
Customer.io source in RudderStack
  • Assign a source name and click on Next.

To connect this source to a RudderStack warehouse destination, the source name should match the name of your warehouse schema.

  • Your Customer.io source is now configured. Note the source Write key - this will be required to configure the endpoint URL in the following steps.
Customer.io source write key
  • Head over to your Customer.io account and navigate to the Integrations page from the sidebar. Then, look for the integration Reporting Webhooks, as shown:
Customer.io reporting webhooks
  • Click on Add Webhook and add the webhook URL as shown on the source settings page in your RudderStack dashboard.
Customer.io webhook URL

The webhook URL is of the format:

<DATA_PLANE_URL>/v1/webhook?writeKey=<WRITE_KEY>

A sample webhook URL is shown below:

https://hosted.rudderlabs.com/v1/webhook?writeKey=1bCenS7ynqHh8ETX8s5Crjh22J
Refer to the data plane URL section for more information.

Make sure you add the source write key as query parameter to the URL. This is required to prevent the webhook from failing because of an invalid write key.

  • 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 queries on any of the sections covered in this guide, you can contact us or start a conversation in our Slack community.

Contents