In-app metrics

How it works

When you send a message to a person, reports the status of your message until it’s Sent. After that, we rely on the device to tell us when a message is Opened.

We aggregate these statuses as metrics, helping you determine how your message performed across your audience. However, we begin displaying metrics before your message expires. While metrics can always help you understand how your audience responds to your message, you should probably consider metrics incomplete until your message expires and your in-app message stops being sent.

flowchart LR k[message Sent]-->d{is the app or
website open?} d-->|yes|f[message Opened] d-.->|no|e[message Sent] f-->g{Does the user engage
with the message?}-->|yes|h[message Clicked] g-.->|no|i[message Opened] e-.->|user opens app
or visits website|f e-.->|user doesn't open app
or visit website|j[message expires,
stays Sent]

Statuses: the state of an individual message

A message status is the last metric reported for an individual in-app delivery: the state of that delivery for a person.

A Sent message only indicates that we’ve created the message intended for a person, but it hasn’t reached a person’s device yet. The message remains in this state until a person opens your app or visits your website.

Unlike other messages, in-app messages are displayed as soon as a person opens your app or visits your website; a person doesn’t have to do anything to “open” the message, so in-app messages don’t have a “delivered” state. Instead, we consider in-app messages Opened as soon as they’re displayed.

When a person engages with the message—they tap a button or click a link in the message—it is Clicked. If your message doesn’t have something a person can engage with—a button, link, etc—it’ll never be Clicked.


This indicates that a person has triggered an in-app message—the campaign workflow has reached an in-app message—and we’ve created the individual message (known as a deliveryThe instance of a message sent to a person. When you set up a message, you determine an audience for your message. Each individual “send”—the version of a message sent to a single member of your audience—is a delivery.). However, the message hasn’t left until it’s been Opened. A message can be Sent but not Opened if a person doesn’t open your app or website to the appropriate page and the message expires.


The message has been delivered and displayed to a person.


The person did something in the message besides dismissing it—clicked a link, tapped a button, etc. All actions besides closing or swiping the message away will report a Clicked status. If a person dismisses the message, it will remain in the Opened state.


We couldn’t render your message, and it never left Message failures are most commonly caused by unresolved 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}}.—a variable didn’t exist and didn’t have a fallback, making the message unreadable.

When you see a failure, you may want to check the liquid in your message and ensure that you have a fallback in place—an if statement that uses a static value if a variable doesn’t exist for a person.


When you send a message, we’ll show the metrics for your message—the total number of deliveriesThe instance of a message sent to a person. When you set up a message, you determine an audience for your message. Each individual “send”—the version of a message sent to a single member of your audience—is a delivery. that achieve each message status.

Metrics can help you understand how well your message performs with your audience. In particular, your clicks-to-opens ratio helps you understand how many people who received a message followed a call to action.

Your message will continue gathering metrics until it expires. So, when you check your metrics, understand that they may be incomplete—at least until your audience opens your app, goes to your website, or the message expires.

Track and measure responses

When you set up actions in your messages, you have the option to Track clicks. This is enabled for actions by default and tells to track audience engagement with the action. This helps you understand how people respond to calls to action in your messages—like what survey option they engage with, whether they close the message without responding, and so on.

When you run a campaign or send a broadcast, the Tracked Responses section in the metrics tab shows responses for each action that had Track Click enabled. Responses are broken down by message and action name, helping you understand how your audience responded to your messages and microsurveys.

track responses in your campaign
track responses in your campaign

Make sure you give your actions names that help you understand what they mean, so that you can understand how people respond to your in-app messages at a glance!

set an action name to organize your tracked responses
set an action name to organize your tracked responses
Copied to clipboard!
Is this page helpful?