Get automation action metrics
Returns metrics for an individual action, both in total and as a series of counts, oldest first—the 0-index of any result is the oldest point in the window.
We recommend version 2. Send version=2. It accepts an explicit start, end, and res, reported in the tz you choose. Without it, the endpoint answers with version 1 behavior instead: a window built from period and steps, always in Eastern time.
Version 1 can't return fewer than 2 steps of any period. ?period=days&steps=1 means two days—the 48 hours before the request—and ?period=days&steps=0 returns the maximum for the period, the same as ?period=days&steps=45.
Multi-language messages
If the action is a multi-language message, you can retrieve metrics for a single language variant or all language variants. To retrieve metrics for a single language variant, pass the id of the action. To retrieve aggregate metrics and a breakdown for each language variant, pass the multi_language_branch_action_id, which is the same for each variant of a message. You can get both ids from the List automation actions endpoint.
If you pass the multi_language_branch_action_id, then the metric object shows the total across every variant. The language_variants object shows a breakdown for each language variant.
If you want to get the sum of all metrics across all of an automation's actions, you can use each action id of a multi-language message, like you would for other types of actions.
- Type: integercampaign
_id requiredThe ID of the automation that you want to trigger or return information about.
- Type: integeraction
_id requiredThe action in the automation. If the action is a message with translations, you can pass the
idof the action to get metrics for a specific language variant or pass themulti_language_branch_action_idto get metrics for each language variant and total metrics across the variants.
- Type: string enumversion
Send
2. We recommend version 2: it takes an explicit window (start,end, andres) in the time zone you pass astz.Any other value, including leaving the parameter off, uses version 1: a window derived from
periodandsteps, always in Eastern time.values- 1
- 2
- Type: string enumres
Version 2. Required when you send
version=2. Sets the increment for each point in the series—hourly, daily, weekly, or monthly.values- hours
- hourly
- days
- daily
- weeks
- weekly
- months
- monthly
- Type: integer Format: unix timestampstart
Version 2. Required when you send
version=2. The unix timestamp for the beginning of your metrics. - Type: integer Format: unix timestampend
Version 2. Required when you send
version=2. The unix timestamp for the end of your metrics. Limited to 10 years from thestartparameter. - Type: stringtz
Version 2. The time zone for the window you request. Defaults to UTC. Use the region format.
- Type: string enumperioddeprecated
Version 1. The unit of time for your report. Send
version=2and setresinstead.values- hours
- days
- weeks
- months
- Type: integerstepsdeprecated
Version 1. The number of periods you want to return. Defaults to the maximum available, or
12if the period is inmonths. Maximums are 24 hours, 45 days, 12 weeks, or 121 months. Days start at 00:00 EST, weeks at 00:00 EST on Sunday, months at 00:00 EST on the 1st. Sendversion=2and setstartandendinstead. - Type: string enumtype
The type of item you want to return metrics for. When empty, the response contains metrics for all possible types.
values- email
- webhook
- twilio
- whatsapp
- slack
- push
- in
_app - live
_notification
- application/json
- 400
The
campaignIDoractionIDis invalid. - 404
The automation and/or action do not exist.
- application/json
curl https://api.customer.io/v1/campaigns/3/actions/1/metrics \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
"end": "2025-01-02 00:00:00 +0000 UTC",
"language_variants": {
"additionalProperty": {
"default": false,
"language": "es",
"series": {
"attempted": [
1
],
"bounced": [
1
],
"clicked": [
1
],
"converted": [
1
],
"created": [
1
],
"deferred": [
1
],
"delivered": [
1
],
"drafted": [
1
],
"failed": [
1
],
"human_clicked": [
1
],
"human_opened": [
1
],
"link_untracked": [
1
],
"machine_clicked": [
1
],
"open_untracked": [
1
],
"opened": [
1
],
"prefetch_opened": [
1
],
"replied": [
1
],
"sent": [
1
],
"spammed": [
1
],
"suppressed": [
1
],
"topic_unsubscribed": [
1
],
"tracking_consent_denied": [
1
],
"tracking_consent_granted": [
1
],
"undeliverable": [
1
],
"unsubscribed": [
1
],
"untracked": [
1
]
}
}
},
"metric": {
"series": {
"attempted": [
1
],
"bounced": [
1
],
"clicked": [
1
],
"converted": [
1
],
"created": [
1
],
"deferred": [
1
],
"delivered": [
1
],
"drafted": [
1
],
"failed": [
1
],
"human_clicked": [
1
],
"human_opened": [
1
],
"link_untracked": [
1
],
"machine_clicked": [
1
],
"open_untracked": [
1
],
"opened": [
1
],
"prefetch_opened": [
1
],
"replied": [
1
],
"sent": [
1
],
"spammed": [
1
],
"suppressed": [
1
],
"topic_unsubscribed": [
1
],
"tracking_consent_denied": [
1
],
"tracking_consent_granted": [
1
],
"undeliverable": [
1
],
"unsubscribed": [
1
],
"untracked": [
1
]
}
},
"res": "days",
"start": "2025-01-01 00:00:00 +0000 UTC"
}Returns action metrics by series, where each increment is based on the res in your request. For a multi-language message, also returns a per-variant breakdown in language_variants.