Journeys Message Metrics Source

Customer.io Journeys automatically acts as multiple sources of data in Data Pipelines: one source for Journeys Message Metrics and individual sources for each set of Journeys (Track) API credentials. This page is specifically about Journeys Message Metrics. If you want to learn more about using our Track API, web SDK, and mobile SDKs as Data Pipelines sources, see the Journeys API page.

How it works

Journeys captures events relating to message activity—the messages you send, whether or not people open them, when people click them, and so on.

By default, we also forward these events to Data Pipelines as a source. This is the default Journeys Message Metrics source that you see on the Connections page in Data Pipelines.

all API credentials are listed as individual sources
all API credentials are listed as individual sources

Treating incoming Journeys metrics as a source lets you send data to destinations that help you aggregate and analyze audience data, so you follow and chart how your audience reacts to different message channels in your marketing stack.

sequenceDiagram actor c as User participant b as Journeys participant a as Data Pipelines b->>b: Create draft b->>a: Email Drafted metric b->>c: Send email b->>b: Record Email Sent metric b-->>a: Email Sent metric c->>b: User opens email b->>b: Record Email Opened metric b-->>a: Email Opened metric

What metrics do we send to Data Pipelines?

Journeys Message Metrics are the same events we track with reporting webhooks. These include Customer subscribe/unsubscribe events, and events representing the message lifecycle for each message (email, SMS, push, etc).

NameDescription
customer_subscribedA person’s “unsubscribed” attribute was explicitly set to “false”
customer_unsubscribedA person’s “unsubscribed” attribute was explicitly set to “true”
cio_subscription_preferences_changedA person changed their subscription preferences—either through our subscription center, or you changed their cio_subscription_preferences attribute values. Learn more about the subscription center.
email_draftedCustomer.io successfully rendered a message and populated liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable {{customer.first_name}}. for an individual recipient. The message is ready to send.
email_attemptedAn email that couldn’t be sent to the delivery provider will be retried
email_deferredAn email that the delivery provider couldn’t send will be retried by the delivery provider
email_sentAn email was sent from Customer.io to the delivery provider
email_deliveredThe delivery provider reported the email was delivered to an inbox
email_openedAn email was opened
email_clickedA tracked link in an email was clicked
email_convertedA person matched a conversion goal attributed to an email
email_unsubscribedA person unsubscribed via a particular email
email_bouncedThe delivery provider was unable to deliver the email
email_droppedAn email wasn’t sent because it was addressed to a person who was suppressed
email_spammedAn email was marked as spam by the recipient
email_failedAn email couldn’t be sent to the delivery provider
email_undeliverableAn email was undeliverable, likely because it hit a message limit
push_draftedCustomer.io successfully rendered a push notification and populated liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable {{customer.first_name}}. for an individual recipient. The message is ready to send.
push_attemptedA push notification that couldn’t be sent to the delivery provider will be retried
push_sentA push notification was sent from Customer.io to the delivery provider
push_deliveredA push notification was delivered to a recipient. You must use our SDKs or report delivered metrics to us using the API.
push_openedThe app on a person’s device reported the push notification was opened. You must use our SDKs or report opened metrics to us using the API.
push_clickedA tracked link in a push notification has been clicked. Note that we do not track Clicked metrics or enable link tracking for push notifications by default. When a person taps a push notification, the message is marked as Opened.
push_convertedA person matched a conversion goal attributed to a push notification
push_bouncedThe delivery provider reported at least one invalid device token
push_droppedA push notification wasn’t sent because at least one device token previously bounced
push_failedA push notification couldn’t be sent to the delivery provider
push_undeliverableA push notification was undeliverable, likely because it hit a message limit
sms_draftedCustomer.io successfully rendered an SMS message and populated liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable {{customer.first_name}}. for an individual recipient. The message is ready to send.
sms_attemptedAn SMS that couldn’t be sent to the delivery provider will be retried
sms_sentAn SMS was sent from Customer.io to the delivery provider
sms_deliveredThe delivery provider reported the SMS was delivered
sms_clickedA tracked link in an SMS has been clicked
sms_convertedA person matched a conversion goal attributed to an SMS
sms_bouncedThe delivery provider was unable to deliver the SMS
sms_failedAn SMS couldn’t be sent to the delivery provider
sms_undeliverableAn SMS message was undeliverable, likely because it hit a message limit
slack_draftedCustomer.io successfully rendered a slack message and populated liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable {{customer.first_name}}. for an individual recipient. The message is ready to send.
slack_attemptedA slack message that couldn’t be sent will be retried
slack_sentA slack message was sent from Customer.io to slack
slack_clickedA tracked link in a slack message has been clicked
slack_failedA slack message couldn’t be sent to slack
slack_undeliverableA Slack message was undeliverable, likely because it hit a message limit
webhook_draftedCustomer.io successfully populated a webhook with liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable {{customer.first_name}}. and is ready to send it.
webhook_attemptedA webhook that couldn’t be sent will be retried
webhook_sentA webhook was sent from Customer.io to the specified Webhook URL
webhook_clickedA tracked link in a webhook payload has been opened
webhook_failedA webhook couldn’t be sent to the specified Webhook URL
webhook_undeliverableA webhook was undeliverable, likely because it hit a message limit
in_app_draftedCustomer.io successfully rendered an in-app message and is ready to send it.
in_app_attemptedAn in-app that couldn’t be sent will be retried
in_app_sentAn in-app was sent.
in_app_openedAn in-app was opened
in_app_clickedA tracked response in an in-app was clicked
in_app_convertedA person matched a conversion goal attributed to an in-app
in_app_failedAn in-app couldn’t be sent
in_app_undeliverableAn in-app was undeliverable.

Metric Events in Data Pipelines

We map properties from Journeys to Data Pipelines. You can see the complete list of properties in each event in our reporting webhooks. But we’ve provided an example below to show how a metric event recorded in Journeys maps to Data Pipelines.

The event name is the channel and metric—like Email Opened as shown in the example below.

The properties object contains information about the customer, the message (delivery_id), the campaign, broadcast, or transactional ID the message originated from, and so on.

{
  "type": "track",
  "event": "Email Opened",
  "userId": "12345",
  "messageId": "01H8F21G9KK14JKX233RDFJCNM",
  "timestamp": "2023-08-22T16:42:55.003Z",
  "sentAt": "2023-08-22T16:42:57.739Z",
  "context": {
    "integration": {
      "name": "customer.io",
      "version": "2.0.0"
    },
    "traits": {},
    "ip": "35.225.6.73",
    "userAgent": "Customer.io/go1.20.4 (test; +https://customer.io/actions)"
  },
  "properties": {
    "customer_id": "12345",
    "delivery_id": "RKK4AwUAAYoeIC5PHMYd6-vTAYhWkQ==",
    "recipient": "cool.person@example.com",
    "subject": "Password reset request",
    "transactional_message_id": 8,
    "userId": "12345"
  },
  "integrations": {
    "Customer.io": false,
    "Customer.io (Actions)": false
  },
  "receivedAt": "2023-08-22T16:42:57.742Z",
  "originalTimestamp": "2023-08-22T16:42:55.000Z"
}
Copied to clipboard!
  Contents
Is this page helpful?