# Flow analytics

How to read a flow's figures: activations, contacted runs, goal rate, conversions, revenue, cost and the flow report.

**Language:** en
**Audience:** platform
**TLDR:** A flow's figures count runs, people or messages: Activations, Contacted and goals count runs; the report's Audience tab, approximate unique people; Sent, delivery rate and CTR, messages. Goal rate is goals divided by runs that were sent at least one message. Revenue, conversions and ROAS (profit over cost) come from attribution: a purchase counts only when it follows one of the flow's messages within your attribution windows.
**Translation key:** platform.automations.flows.flow-analytics
**Search keywords:** flow report, flow stats, flow statistics, flow performance, KPIs, metrics, success rate, CTR, CVR, EPM, attributed revenue, return on ad spend, unique people, runs vs people, branch percentage, live test vs live, canary results, significant improvement, dash in the list, not applicable revenue
**Related pages:** /platform/es/automations/flows/flow-analytics, /platform/en/automations/flows, /platform/en/automations/flows/goals-and-exits, /platform/en/automations/flows/monitoring-a-flow, /platform/en/automations/flows/versions-and-publishing, /platform/en/automations/flows/managing-flows, /platform/en/project-settings/conversions-attribution, /platform/en/insights/conversions
**Docs index (every page):** https://staging-instasent-docs-nextjs.oscar-284.workers.dev/llms.txt
**This zone's index:** https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform/en/llms.txt
**This page:** https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform/en/automations/flows/flow-analytics/ (HTML) · https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform/en/automations/flows/flow-analytics.md (Markdown)
**Other language (es):** https://staging-instasent-docs-nextjs.oscar-284.workers.dev/platform/es/automations/flows/flow-analytics.md

A flow runs on its own, so its figures are how you find out whether it does its job: how
many contacts entered, how many the flow actually wrote to, how many reached the goal and
what that brought in compared with what the messages cost. The panel shows those figures in
three places: a row of headline numbers above the canvas of every published version, the
counters on each step, and the **Flow report**, which breaks everything down by message,
person, conversion and day. The flows list repeats the main figures for every flow side by
side.

The one idea to keep in mind while reading them is that a flow's figures don't all count
the same thing. Some count **runs** (each pass of a contact through the flow), some count
**people**, and some count **messages**, and they can't be divided into each other. The
first section explains that model; the rest of the page goes figure by figure. This page
covers the figures of a single flow. To read results across all your campaigns and
automations, see [Analytics](/platform/en/insights); how sales are credited to messages is
configured in [Conversions & attribution](/platform/en/project-settings/conversions-attribution).

## Three units: runs, people and messages

Every time a contact enters a flow, a new **run** starts. A contact who abandons two carts
in a month enters an abandoned-cart flow twice, so there are two runs for one person. And a
single run can send several messages: a first reminder, then a second one a day later. So
one person can stand behind several runs, and one run behind several messages.

The panel keeps those three units apart, and every figure belongs to exactly one of them:

| Unit         | What it counts                                                                                           | Figures that use it                                                                                                                                                                                               |
| ------------ | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Runs**     | Each entry into the flow. A contact who enters twice counts twice.                                       | **Activations**, **Contacted**, goals met and **Goal rate**, the conversion rate per activation, **Entries** on each step, the share shown on each branch, **Runs per person**                                    |
| **People**   | Distinct contacts, counted once however many times they entered. These are estimates and carry a **\~**. | The report's **Audience** tab (**Entered**, **Messaged**, **Engaged**, **Goal met**, **Converted**, **Unsubscribed**), "\~*N* distinct people" in the summary, the people columns of the list's **Audience** view |
| **Messages** | Each message the flow sent, on any step.                                                                 | **Sent**, **Delivered**, **Delivery rate**, **CTR**, **CVR**, **EPM**, cost per message, the unsubscribe rate                                                                                                     |

Two consequences follow, and the panel's own descriptions repeat them:

- **Figures in different units are never divided into each other.** "\~170 distinct people"
  next to "200 activations" means some people entered more than once; it isn't a rate.
  Likewise, people who received a message aren't compared with goals, which count runs.
- **Per-message rates aren't comparable between flows with a different number of sends.**
  A flow with three reminders sends three messages per run, which triples its sent and
  delivered figures and changes what its CTR means. To compare how well two flows work, use
  the figures counted per run (**Goal rate** and conversions per activation) rather than
  CTR or CVR.

Money figures (**Revenue**, **Cost**) are amounts, not counts, and are explained in
[Revenue, conversions and ROAS](#revenue-conversions-and-roas).

## The figures on a published version

Figures only exist where contacts have run through the flow, so they appear when you open
a **published** version: the **Live** tab, the live test's tab (**Live** with **10%**), or
a version from **Archived versions** in the archive box. The **Build** tab is the
draft and never shows figures. What you see is always the figures **of the version on
screen**; the report can also show the whole flow.

![The KPI strip and per-step counters of a published flow](/platform/en/automations/flows/images/flow-analytics--1-live-tab.png)

### The KPI row

Above the canvas, a row of headline figures sums up the version over the **Period**, read
from left to right:

| Figure          | What it shows                                                                                                                                                                                         |
| --------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Period**      | The stretch of time every figure to its right covers: **30 days**. Its tooltip gives the exact dates. Next to it, a refresh control shows how fresh the figures are (see below).                      |
| **Activations** | "How many contacts actually entered the flow, even when the first step was a delay, a branch or a skip. It is not the number of messages sent." These are runs.                                       |
| **Contacted**   | Runs where the flow has already sent at least one message, counted when the message goes out, not when it is delivered. It shows the count and its share of the activations.                          |
| **Goal**        | Runs that met the goal after the flow had sent them a message, and the **goal rate** next to it. Without a goal it shows "—", and its tooltip says the flow has no goal. See [Goal rate](#goal-rate). |
| **Conversions** | "Purchases attributed to this flow in the window."                                                                                                                                                    |
| **Revenue**     | The sum of the order amounts of those conversions.                                                                                                                                                    |
| **Cost**        | "Total spend on this flow — the sum of per-message costs across every message sent."                                                                                                                  |
| **ROAS**        | "Return on ad spend: profit divided by what the messages cost."                                                                                                                                       |
| **View report** | Opens the [Flow report](#the-flow-report).                                                                                                                                                            |

The three figures in the middle form a funnel, each one inside the previous: runs that
entered, runs the flow wrote to, runs that met the goal. The money figures to their right
belong to a different family: they come from attribution, so a **Goal** at 100 % next to a
**Revenue** with nothing in it is not a contradiction (see
[Revenue, conversions and ROAS](#revenue-conversions-and-roas)).

How to read the row:

- **It shows no comparison with the previous period.** Figures per version have no
  previous period to compare with; changes over time are in the report, with **Whole
  flow** selected.
- **"—" means "nothing to show"**: either the figure hasn't been measured yet, or it is
  zero. A rate whose base is zero also shows "—", never 0 %.
- **"Not applicable"** replaces **Revenue** and **ROAS** when the flow's goal isn't your
  project's sales event (or the flow has no goal) **and** no sale has been attributed to
  it: "Revenue figures would be misleading here, so they are not shown." **Cost** always
  shows. As soon as a sale is attributed, revenue appears, whatever the goal.

**Freshness.** The KPI row is calculated in the background and is a snapshot, not a live
count. The control next to **Period** says when it was computed ("computed …"), whether
the flow has had activity since ("new activity since this was computed"), and when the next
refresh is due. **Refresh stats** recalculates it on demand; after using it, the button
rests for a few seconds ("Available again in … s"). On a flow nobody has opened for a
while, it can read "No refresh scheduled; it restarts when the flow is opened."; opening
the flow schedules it again. A version that has just been published can read "not computed
yet" until the first calculation.

The pill **"N inside now"** on the canvas is a live count that covers the version's whole
life, so it can disagree with this row for a while; see
[Monitoring a flow](/platform/en/automations/flows/monitoring-a-flow).

### Counters on each step

Each step card on the canvas carries its own counters:

- **Entries**, on every step: runs that reached the step. "Executions, not people: someone
  entering twice counts twice."
- On **Send message** steps, also the step's **Sends** (messages that reached a final
  status), its click rate and its attributed revenue. **Sends** can trail **Entries**: a
  run that has just reached the step has entered it but hasn't sent yet.
- **Goals**, only when the step has recorded any: "Times this step recorded the flow's
  goal. One per run at most."
- The live count of people waiting at a step, explained in
  [Monitoring a flow](/platform/en/automations/flows/monitoring-a-flow).

**Branch shares.** On a split, each branch label carries the share of runs that took it,
for example **Spain · 62%** and **Otherwise · 38%**. The share is calculated over the
contacts that **have already chosen a branch** at that step: the runs that reached the
first step of the branch divided by the runs that have already taken one of the
branches, so it counts runs, not people. The shares of a split add up to at most 100 %,
and to a little less when some runs end before choosing a branch, never more. A branch with no steps in it, or that nobody has taken, shows
its name without a percentage.

### The step's Metrics tab

Select a step on a published version and its side panel opens on two tabs, **Metrics**
and **Configuration**. **Metrics** has the step's figures in more detail. Its title says
what they cover: **Last 30 days**, or **Version total** when no daily detail is available
for the period.

- **Entries**, with a chart of how many runs reached the step each day and how those runs
  ended at it: **Entered**, **Completed**, **Skipped**, **Failed**, **Canceled** and
  **Stopped**. Only the outcomes that happened at least once are drawn. What each outcome
  means for a contact is explained in
  [Monitoring a flow](/platform/en/automations/flows/monitoring-a-flow).
- **Waiting** ("right now"), **Goals** (when the step recorded any) and **Last run**.
- On a **Send message** step: **Sends**, **Delivery rate** (with delivered out of sent),
  **CTR** (with the number of first clicks), **Open rate**, **Revenue** and
  **Unsubscribes**. **Open rate** is only measured on channels that report reads, such as
  RCS; on SMS it stays at "—".
- **Recorded reasons**, "Since the version was published", only when there are any. They
  aren't a breakdown of skips: a reason is also recorded on steps that completed.
- **See in report** opens the flow report on its **Messages** tab.

## Goal rate

The goal rate is the flow's success figure: **of the runs the flow wrote to, the share that
met the goal**.

> Goal rate = runs that met the goal ÷ runs that were sent at least one message (**Contacted**)

Both sides count runs, and both start counting when a message goes out, so they measure
the same population. That has three consequences:

- **It never goes above 100 %.** A run counts at most one goal, and only after a message.
  Right after a burst of activity, the report can briefly show "rate capped at 100%": a
  goal was counted just before its own run reached the denominator. It normally closes by
  itself within minutes.
- **Goals reached before any message stay out of it.** A contact who buys during the first
  wait of an abandoned-cart flow leaves the flow, but the flow didn't write to them and
  takes no credit. The report lists those runs separately, as "before any message". They are
  a second group, not part of the **Goal** count: **Goal** is the goals met after the flow
  sent something, and "before any message" the goals met before it. The two never overlap.
- **Without a goal there is no rate.** The list reads **No goal set**, the report **No goal
  declared**, and the KPI row shows "—" with a tooltip that says so; never 0 %. The goal is
  set in the draft, in the trigger's **Goal & exit** tab or with a **Goal reached** step.

When a goal counts, and how to make it stricter (only on delivery, only on a click), is
explained in [Goals and exits](/platform/en/automations/flows/goals-and-exits#when-a-goal-counts).

For example, an **Abandoned cart** flow starts with a **Smart delay**, sends an SMS, waits
a day for a click and sends a second reminder to those who didn't click. Its exit event
**Order created** is also its goal. In the last 30 days:

```mermaid
flowchart LR
    A["Activations: 200 runs"] --> C["Contacted: 150 runs, 75 % of activations"]
    C --> G["Goal: 30 runs, goal rate 20 %"]
    A --> B["40 runs bought during the first wait: before any message"]
    A --> W["10 runs still in the first wait"]
    class G success
```

The goal rate is 30 ÷ 150 = **20 %**. The 40 customers who bought before the first SMS left
the flow without receiving it, which is the exit event doing its job, but they don't raise
the rate. The 10 runs still waiting will move into **Contacted** when their SMS goes out.

## Revenue, conversions and ROAS

A flow's money figures come only from **attribution**, the same mechanism that credits
sales to campaigns: a purchase is credited to the flow, and to the version that sent the
message, when it arrives **after one of the flow's messages, within your project's
attribution windows**. What counts as a sale and how long each window lasts are set in
[Conversions & attribution](/platform/en/project-settings/conversions-attribution), and
they apply to flows and campaigns alike. The window opens when the message is
**delivered**. Which data sources count their orders as sales is
explained in
[Conversion sources](/platform/en/project-settings/conversions-attribution#conversion-sources-which-sources-count-as-sales);
the flow report, the campaign report and the project dashboard count the same orders as the totals.

What follows from that rule:

- **No message, no attribution.** A contact who buys before the flow sent them anything
  brings no revenue to the flow, even if they entered it.
- **Goals and conversions are different numbers, on purpose.** A goal carries no money, and
  a conversion doesn't depend on the goal. A run can meet its goal with no sale attributed
  (in the example above, a customer who bought on day two without clicking may fall outside
  the attribution window yet still count as a goal, because the run was still inside the
  flow), and a flow with no goal at all can have attributed sales.
- **One run can bring several purchases.** Conversions count purchases, not runs.

The figures, one by one:

| Figure                              | How it is calculated                                                                                                                                                                                                                                            |
| ----------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Conversions**                     | Purchases attributed to the flow in the period.                                                                                                                                                                                                                 |
| **Revenue** (**Sales** in the list) | The sum of the order amounts of those purchases.                                                                                                                                                                                                                |
| **Conversion rate** (report)        | Attributed purchases ÷ runs that entered. Both count per run, so more sends don't lower it. It can pass 100 %, because one run can bring several purchases; it is then shown capped. In the list, **Conv. per activation** is the same figure, capped at 100 %. |
| **Revenue per activation**          | Revenue ÷ activations. A flow has no recipient list, so activations are its denominator.                                                                                                                                                                        |
| **Average order value**             | Revenue ÷ conversions.                                                                                                                                                                                                                                          |
| **Cost**                            | The sum of the cost of every message the flow sent, including those still queued: they are charged and do go out.                                                                                                                                               |
| **Cost per message**                | Cost ÷ messages sent.                                                                                                                                                                                                                                           |
| **ROAS**                            | Profit ÷ cost of the messages, shown as a multiple (for example **8.50x**). Profit is what your [Conversion settings](/platform/en/project-settings/conversions-attribution#conversion-what-counts-as-a-sale) define as profit, not the order amount.           |
| **EPM**                             | Revenue ÷ messages sent. A per-message figure.                                                                                                                                                                                                                  |
| **CVR**                             | Conversions ÷ delivered messages. A per-message figure.                                                                                                                                                                                                         |

Two more figures are worth knowing:

- **Sent counts messages that reached a final status.** A message still queued or on its
  way isn't in **Sent** yet; it appears once it is delivered or fails. Right after a send,
  a step can show entries and no sends for a short while.
- **Unsubscribes from this flow** counts opt-outs made from one of the flow's messages (its
  unsubscribe link or a reply to it). Opt-outs made in the panel, through the API, by hand
  or from an integration carry no trace of the flow that caused them, so no flow counts
  them.

The links in a flow's messages also carry the flow's name as their campaign tag, so you
can follow them in your web analytics tool; see
[Rename a flow](/platform/en/automations/flows/managing-flows#rename-a-flow). Each message
a flow sends is charged like any other; see
[Sending messages](/platform/en/automations/flows/sending-messages).

## The flow report

**View report**, at the end of the KPI row, opens the **Flow report**: "Performance,
conversions and activity attributed to this flow." **See in report**, on a step's
**Metrics** tab, opens it on the **Messages** tab.

At the top of the report:

- Scope: **This version** (the version you had open, with its tag, for example **v1**)
  or **Whole flow** (every version together). Comparisons with the previous period are
  only shown for **Whole flow**.
- Period: **30 days** by default. You can select another period or a custom range;
  anything other than the default is calculated on demand, so it only runs when you select
  **Apply**. If you request several custom ranges in a row, the panel asks you to wait a
  moment ("Too many custom-range requests…").
- Freshness: when the figures were computed, or "computed just now" for a range you
  just applied.

The report has five tabs, always all five, and it opens on **Summary**. A flow that hasn't
run yet shows them with "—", so you can see what will be measured.

### Summary

![The Summary tab of the flow report with results, return and messaging](/platform/en/automations/flows/images/flow-analytics--2-report-summary.png)

- **Results**: the funnel **Activations → Contacted → Goal**, "Three counts, each inside the
  previous one… All count runs, not people." Under it, the goal being measured (**Goal:**
  followed by the event, "set on a step in the flow" for a **Goal reached** step, or **No
  goal declared**), and up to four notes:
  - "*N* before any message": goals reached before the flow sent anything. The percentage
    next to it is over **all** the goals met, the ones after a message (**Goal**) plus
    these: with 6 "before any message" out of 9 goals met in total, it reads 67 %. It is
    not a percentage of activations, and the **Goal** count doesn't include these goals. In a flow that starts with a wait,
    this is usually a large share, and that is expected.
  - "\~*N* distinct people": the people behind the activations of the period, as an
    estimate. It isn't divided by the runs.
  - "still in progress": some runs haven't finished, so the rates can still move.
  - "rate capped at 100%": see [Goal rate](#goal-rate).
- **Return**: **Revenue** ("from *N* purchases"), **Flow cost** (with the cost per
  message) and **ROAS**. With **Whole flow**, "vs previous period:" shows how revenue,
  cost and ROAS changed.
- **Messaging**: **Messages sent** (with how many per activation), **Delivery rate** (with
  how many were delivered) and **Unsubscribes**. "Counted per message, not per person: a
  flow with three sends triples all three figures."
- **Live test vs Live**, while a live test runs next to Live; see
  [Live test vs Live](#live-test-vs-live).

### Messages

The messages tab answers whether the sending worked, always per message:

- **Delivery**: **Messages sent**, **Delivery rate**, **Cost per message** and
  **Unsubscribes**, with the reminder that these figures are per message and not
  comparable between flows with a different number of send steps.
- **Engagement over time**: a chart, day by day, of what happened to the messages:
  deliveries, clicks, conversions, unsubscribes, goals and replies, among others.
- **Send steps**: the same figures for each **Send message** step, so you can see which
  message performs. A row **No step** may appear: "Events attributed to this flow with no
  step reference. This is valid data, not an error."
- **Channels** and **Countries**: how the messages split by channel and by destination
  country. An RCS message that falls back to SMS counts as SMS.
- **Link activity** and **Click performance by step and URL**: **People clicked**,
  **Total clicks**, click rate and **Didn't click**, then each link of each step with its
  unique clicks, total clicks and CTR. A link marked **Parametrized** carries variables,
  so every contact gets a different link and its CTR isn't representative. Links from
  other versions are marked **Another version**.

**CTR in a flow counts first clicks per link**, divided by delivered messages. It is a
per-message figure, not the share of people who clicked; for people, see **Engaged** in
the **Audience** tab.

### Audience

- **Unique people**: each contact counts once, however many times they entered. All six
  figures are estimates (**\~**).

  | Figure           | Meaning                                                                                                                                                     |
  | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | **Entered**      | Distinct people who entered the flow.                                                                                                                       |
  | **Messaged**     | People who actually received (were delivered) a message from the flow.                                                                                      |
  | **Engaged**      | People who clicked at least once. It only counts when the message offered somewhere to click, so a flow without links can work very well with this at zero. |
  | **Goal met**     | People who met the goal after the flow sent them a message.                                                                                                 |
  | **Converted**    | People with a purchase attributed to the flow, whatever the goal.                                                                                           |
  | **Unsubscribed** | People who unsubscribed right after one of the flow's messages.                                                                                             |

- **Runs and people**: **Runs**, **People** and **Runs per person** on average. Above 1
  means re-entries, which is normal in abandoned-cart or restock flows: "That is 200 runs
  from 170 people: some enter more than once."

- **Message history**: the messages sent, contact by contact, with channel, country,
  status and dates. You can search it by mobile number and filter it by status or country,
  which is the quickest way to check whether one contact's message was delivered. It
  doesn't refresh on its own: reload the report to see newer sends.

### Conversions

**Conversions attributed to this flow**: the **Conversion rate** (with "*N* of *M*
activations"), **Conversions**, **Revenue**, **Average order value** and **Revenue per
activation**, with the reminder that "A purchase counts when it arrives after one of this
flow's messages, inside the attribution window." The **Conversion detail** table lists
each attributed purchase: the contact, the event, the order, the amount, when it converted,
the channel and the country.

### Activity

A feed of what contacts did with the flow during the period, one event at a time: who
entered, who clicked for the first time, who placed an order. It follows the report's
period. To check one contact's run step by step, or why someone didn't enter, use the
**Activity** sheet in the flow header instead; see
[Monitoring a flow](/platform/en/automations/flows/monitoring-a-flow).

## Live test vs Live

While a live test runs next to Live (a version published to a small group, see
[Testing, publishing and versions](/platform/en/automations/flows/versions-and-publishing)),
the report's **Summary** shows the block **Live test vs Live**. It compares the two
versions over the same window, which starts when the live test was published. The
comparison runs two live calculations, so it is only made when you ask: select
**Compare**, and **Recalculate** to update it later. When no live test is running, the
block says so.

It compares **Reached** (runs the flow wrote to), **Goal rate**, **Conversion rate**,
**Revenue** and **ROAS**. **Reached**, **Goal rate** and **Conversion rate** each carry a verdict:

| Verdict                         | Meaning                                                                                                               |
| ------------------------------- | --------------------------------------------------------------------------------------------------------------------- |
| **Significant improvement**     | The live test does better, by more than chance would explain.                                                         |
| **Significant drop**            | The live test does worse, by more than chance would explain.                                                          |
| **No clear difference**         | The difference could be chance.                                                                                       |
| **Not conclusive (unbalanced)** | The test didn't get its expected share of traffic, so the percentages aren't conclusive; the raw numbers still stand. |
| **Not enough sample**           | There aren't enough activations on each side yet; the block says how many are needed.                                 |

**Revenue** and **ROAS** are amounts, not proportions, so they have no significance check:
the difference is shown raw, marked "no confidence check".

Three things to keep in mind:

- **Early on, Live is favoured.** The window counts events by date, including conversions
  from contacts who entered Live before the test started. Message figures such as CTR are
  barely affected. Give the test time before reading conversions.
- **Different goals aren't comparable.** If the two versions declare different goals,
  their goal figures answer different questions; the block warns about it, and delivery
  and clicks remain comparable.
- **It is real traffic.** Both sides send, charge and convert, and both count in the
  flow's totals.

For example, the store tries a new first SMS for **Abandoned cart** with a discount code,
published to a small group. After two weeks, **Compare** shows the live test with a
higher goal rate marked **Significant improvement**, and revenue up but with "no
confidence check". The team promotes the test to everyone, as explained in
[Testing, publishing and versions](/platform/en/automations/flows/versions-and-publishing).

## In the flows list

The flows list shows the main figures for every flow in columns, grouped by saved views
(**Default view**, **Engagement**, **Sales**, **Audience**, **Goals**, **Set up**); how to
switch views and columns is explained in
[Managing flows](/platform/en/automations/flows/managing-flows#filter-views-and-columns).
Every metric column covers the **last 30 days**, which its description says in the menu on
its header. The per-message rates (CTR, CVR, EPM) add: "Per message, not per contact: a
flow can send several to the same person, so this is not comparable between flows with a
different number of send steps." A **—** in a metric cell is not a zero; why is
explained in [Managing flows](/platform/en/automations/flows/managing-flows#filter-views-and-columns).

| Column                                                                 | Unit     | Meaning                                                                                  |
| ---------------------------------------------------------------------- | -------- | ---------------------------------------------------------------------------------------- |
| **Activations**                                                        | Runs     | Times the flow started. Someone who enters twice counts twice.                           |
| **Contacted**                                                          | Runs     | Runs that were sent at least one message.                                                |
| **Goals met**                                                          | Runs     | Runs that met the goal after a message. One per run at most.                             |
| **Goal rate**                                                          | Runs     | Goals met ÷ contacted. **No goal set** when the flow has none.                           |
| **Goal**                                                               | —        | The goal definition: the goal events, **Goal step in the flow**, or **No goal set**.     |
| **Conv. per activation**                                               | Runs     | Attributed purchases ÷ activations, capped at 100 %.                                     |
| **Messages per activation**                                            | Runs     | Messages sent on average each time the flow started.                                     |
| **Sent**, **Delivered**, **Delivery rate**                             | Messages | Messages that reached a final status, those delivered, and delivered ÷ sent.             |
| **CTR**, **CVR**, **EPM**                                              | Messages | First clicks per link ÷ delivered; conversions ÷ delivered; revenue ÷ sent.              |
| **Unique clicks**                                                      | Messages | First clicks on each link.                                                               |
| **Unsubscribes from this flow**                                        | Messages | Opt-outs made from one of the flow's messages.                                           |
| **Conversions**, **Sales**, **Avg. Sales**, **Revenue per activation** | Money    | Attributed purchases, their amount, the average order and revenue per activation.        |
| **Cost**, **Cost / msg**, **ROAS**                                     | Money    | What the messages cost, per message, and profit ÷ cost.                                  |
| **Entered**, **Messaged**, **Engaged**, **Goal met**, **Converted**    | People   | The report's **Unique people** figures; the values carry a **\~**. "Approximate figure." |

## Common questions

#### Contacted is much lower than Activations. Is something wrong?

Usually not. **Contacted** only counts runs the flow has already sent a message to.
Runs still in a wait before the first message, runs that left through an exit event
before it, and runs that took a branch without messages aren't contacted. In a flow
that starts with a wait, the gap is expected.

#### The goal is at 100 % and revenue shows nothing

The goal and revenue are measured separately. A goal counts once the flow has sent a
message, with no click needed; revenue needs a purchase within your attribution
windows. If the goal isn't your sales event and nothing was attributed, revenue reads
**Not applicable**.

#### A contact received an SMS but Sent is still 0

**Sent** counts messages that reached a final status. While a message is still queued
or on its way, it isn't counted yet. The KPI row is also a snapshot: select **Refresh
stats** or wait for the next refresh.

#### Why can't I compare the CTR of two flows?

CTR is per message. A flow with three reminders delivers three times as many messages
per run, which changes what its CTR measures. Compare **Goal rate** or the conversion
rate per activation instead: both count runs.

#### Technical details

- **What the totals include.** Figures include every real run, on Live and on a live
  test; **Whole flow** adds up all the versions. One-contact test runs are left out of
  every figure, although their messages are sent and charged (see
  [Testing, publishing and versions](/platform/en/automations/flows/versions-and-publishing)).
- **How often they refresh.** Per-version figures are recalculated in the background
  every few minutes, not continuously; the live counters on the canvas are the
  exception.
- **Figures outlive the run detail.** The detail of each contact's run is kept for a
  limited time, but message and conversion figures are kept, so a flow's totals can
  cover runs whose journey no longer appears in **Activity**.
- **People are estimated.** Distinct-people counts are statistical estimates, not exact
  counts, hence the **\~**.

## Related

- [Goals and exits](/platform/en/automations/flows/goals-and-exits) - What counts as a goal, and how to make it stricter.
- [Monitoring a flow](/platform/en/automations/flows/monitoring-a-flow) - Who is inside now, who entered, who didn't and why.
- [Testing, publishing and versions](/platform/en/automations/flows/versions-and-publishing) - Publish a version to a small group and promote it.
- [Conversions & attribution](/platform/en/project-settings/conversions-attribution) - What counts as a sale and how long attribution windows last.
- [Sales dashboard](/platform/en/insights/conversions) - Read conversions across all your campaigns and automations.

---

This is one page of the Instasent documentation. For the complete machine-readable index of every guide and API reference, fetch https://staging-instasent-docs-nextjs.oscar-284.workers.dev/llms.txt — start there for full context.
