> For the complete documentation index, see [llms.txt](https://docs.mediarithmics.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.mediarithmics.io/measurement-and-attribution/measure-and-optimize/build-funnels.md).

# Build funnels

Analyze the steps your audience takes to complete a task, and where they drop off.

## Your goal

See how well your audience progresses through an ordered sequence of steps, and where they fail to move forward.

## Expected outcome

A visual, exportable breakdown of how many users reached each step, and the conversions, units, and amounts each step produced.

## What a funnel is

The **funnel** tool analyzes conversions and the steps your audience takes to complete a task. You set up the steps you want to analyze, execute the query, and visualise the results.

The platform stores UserActivity in a form optimised for analytics, and the funnel reads that store. It is documented in the **Setup & Monitor** section, under *Collect & manage your data > Collect data in real time > Activities analytics*.

Depending on your industry, you can compile reports around KPIs such as:

* What is your **Return on Ad Spend (ROAS)** for a specific campaign?
* What is the **Brand Halo** of this campaign?
* What is the **Research Online, Purchase Offline (ROPO)** effect?
* Which channels are performing best?
* Which part of your users created an account after seeing your ad?
* Who took action on your landing page after seeing your ad?
* At which step of navigation do your users leave your website?

## Build one

Go to **Measurement > Funnel**.

{% stepper %}
{% step %}

### Define your steps

Define the steps a user should take to achieve a conversion. For example, step 1 could be having seen an ad for a specific campaign, and step 2 could be having bought an object from a specific brand.

You can select multiple values in a field: to take activities happening both onsite and in-app, for instance, or to show conversions for several products at once.

{% hint style="success" %}
**Tip.** You can set a maximum period in days between two steps. This keeps results meaningful, since you do not always want to count a conversion happening three months after a user was touched by your marketing campaign.
{% endhint %}

{% hint style="success" %}
**Tip.** Use the autocomplete to select every value containing a specific string:

1. Type your query.
2. Autocomplete shows you all the available values.
3. Click **select all**.
4. Your field is now filtered on all the values containing your query.
   {% endhint %}
   {% endstep %}

{% step %}

### Define the time period

Use the selector in the top action bar: the last 7 days, the last 30 days, or any custom date range.

The time period is **4 months maximum**, to ensure good performance when calculating the results. It matches the retention of the activities analytics store.
{% endstep %}

{% step %}

### Execute the query

Results display within seconds.
{% endstep %}

{% step %}

### Split the results, if useful

If you filtered on multiple *channels*, *device form factors*, or *product IDs* at any step, you can split your results to compare performance based on the selected field.

{% hint style="warning" %}
For clarity, the funnel displays only the **top 5** elements when you split by a field that has more than 5 possible values. When the results are partially displayed, a message tells you that you need to run an export to see everything. Exports include all values.
{% endhint %}
{% endstep %}

{% step %}

### Share or export

The state of your funnel is saved each time you click **Execute Query**. Click **Share** in the top bar to copy a URL with the saved state to your clipboard, then share it with people or bookmark it to come back to your funnel later.

Click **Export** to create a spreadsheet with the current results. The export has two tabs: *Funnel report*, a summary for each step, including the detail for each split value if you split the results; and *Funnel report split by day*, the last step's results for each day in the date range.
{% endstep %}
{% endstepper %}

## What fields a funnel can use

The funnel extracts the following fields from the user activities and events ingested in the platform.

<table data-search="false"><thead><tr><th width="220">Field</th><th></th></tr></thead><tbody><tr><td><strong>Activity Type</strong></td><td>The user performed a specific activity. <code>DISPLAY_AD</code> means the user viewed or clicked on an ad, <code>EMAIL</code> that the user viewed an email, <code>SITE_VISIT</code> that the user visited a site, <code>APP_VISIT</code> that the user visited an app, and <code>TOUCH</code> is any other activity type.</td></tr><tr><td><strong>Activity Date</strong></td><td>When an activity happened.</td></tr><tr><td><strong>Event Type</strong></td><td>The user performed a specific event in this activity. <code>$transaction_confirmed</code> events are used for conversions, such as confirming an order; <code>$basket_view</code> when the user is visiting their basket; <code>$item_list_view</code> when the user views a list of products; <code>$item_view</code> when the user views a product.</td></tr><tr><td><strong>Channel ID</strong></td><td>The ID of the channel on which the activity was performed.</td></tr><tr><td><strong>Device Brand, Browser, Carrier, Form Factor, Model, OS</strong></td><td>The device on which the activity was performed. Form factor is the type of device, such as smartphone or tablet.</td></tr><tr><td><strong>Has Bounced</strong></td><td>Whether the user bounced, meaning the session duration of the site or app visit was 0.</td></tr><tr><td><strong>Is In Segment</strong></td><td>Whether the user was in a segment when they performed the activity.</td></tr></tbody></table>

### Fields to use in DISPLAY\_AD activities

<table data-search="false"><thead><tr><th width="220">Field</th><th></th></tr></thead><tbody><tr><td><strong>Ad Group Id</strong></td><td>The ID of the ad group associated with the displayed ad.</td></tr><tr><td><strong>Campaign Id</strong></td><td>The ID of the campaign associated with the displayed ad.</td></tr><tr><td><strong>Creative Id</strong></td><td>The ID of the ad.</td></tr></tbody></table>

### Fields to filter activities on associated products or pages

When tracking user activities, you can associate product or page metadata with user actions. Use this metadata to filter conversions for specific brands or page categories, for example.

<table data-search="false"><thead><tr><th width="220">Field</th><th></th></tr></thead><tbody><tr><td><strong>Brand</strong></td><td>The brand.</td></tr><tr><td><strong>Category 1 to Category 4</strong></td><td>The four successive layers of categorisation.</td></tr><tr><td><strong>Product Id</strong></td><td>The ID of the product.</td></tr></tbody></table>

### Fields to filter activities on goal completion

<table data-search="false"><thead><tr><th width="220">Field</th><th></th></tr></thead><tbody><tr><td><strong>Has Conversion</strong></td><td>Whether the user had a <code>$conversion</code> event in the activity.</td></tr><tr><td><strong>Goal ID</strong></td><td>The user completed a specific <a href="/measurement-and-attribution/measure-and-optimize/track-your-campaign/goals-and-attribution.md">goal</a> ID in the activity.</td></tr></tbody></table>

## How conversions and amounts are counted

Conversions, number of units, and amounts are the sum of every transaction compatible with the attribution window that was decided during the steps.

The four setups below all describe the same single user, whose timeline holds three ad events and a series of transactions on Apple products.

<table data-search="false"><thead><tr><th width="110">Setup</th><th width="290">Steps</th><th>What gets counted</th></tr></thead><tbody><tr><td><strong>1</strong></td><td>Step 1: an ad view or ad click.<br>Step 2: a transaction on Apple products, with no window.</td><td>The user is counted at step 1, and it happened 3 times. At step 2 the user is counted and <strong>all</strong> their transactions in the date range are counted: 5 conversions for 5 units.</td></tr><tr><td><strong>2</strong></td><td>Step 1: an ad view or ad click.<br>Step 2: a transaction on Apple products <strong>within 13 days</strong> of step 1.</td><td>Step 1 is unchanged at 3 times. At step 2, only transactions made at most 13 days after an ad view or ad click are counted: 4 conversions for 4 units. The window alone removed one transaction.</td></tr><tr><td><strong>3</strong></td><td>Setup 2, plus step 3: an "Other event".</td><td>Steps 1 and 2 behave as in setup 2. Step 3 is counted once. Because the event is not a transaction, no number of units and no total are calculated for it.</td></tr><tr><td><strong>4</strong></td><td>Setup 3, on a timeline where an "Other event" occurs <em>before</em> a transaction.</td><td>The occurrence of "Other event" before the transaction does <strong>not</strong> prevent that transaction from being counted at step 2.</td></tr></tbody></table>

Two ordering rules follow from those setups.

* **A later step closes off the step before it.** In setup 3, if step 3 were changed to a transaction on Apple products as well, the transactions counted at step 2 would stop where step 3's condition is met, and the transaction satisfying step 3 would be counted at step 3 instead of step 2.
* **An occurrence of step 3 pushes the following event out of step 2.** On a timeline where the "Other event" takes the place of the transaction preceding it, step 2 loses a conversion, because the occurrence of step 3 pushed the following event out of the funnel.

{% hint style="info" %}
Order matters as much as the window. A transaction occurring after a later step belongs to that later step, while a non-transaction event sitting before a transaction leaves that transaction untouched.
{% endhint %}

## Verify

* Each step shows a non-zero count once the underlying activities exist.
* Narrowing the window between two steps lowers the later step's count rather than leaving it unchanged.
* Split results reconcile with the unsplit total once you account for the top 5 display limit. Export to see the rest.

## Troubleshooting

<table data-search="false"><thead><tr><th width="300">Symptom</th><th></th></tr></thead><tbody><tr><td>Some fields have no value in my funnel</td><td>It is likely that you do not ingest the required data, or that you do not use the required event properties when tracking user activities. See <strong>Activities analytics</strong> in the <strong>Setup and Monitor</strong> section.</td></tr><tr><td>I do not see conversions and amounts, or the numbers are very low</td><td>Events of type <code>$transaction_confirmed</code> and their properties are what conversions and amounts are calculated from. Custom events do not appear in this feature. Ensure developers use predefined event names and properties when tracking user activities. See <strong>Standard events</strong> in the <strong>Setup and Monitor</strong> section.</td></tr></tbody></table>

## Related pages

<table data-view="cards" data-search="false"><thead><tr><th></th><th></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td><strong>Measure attribution</strong></td><td>Choosing a funnel over goals, or the reverse.</td><td><a href="/measurement-and-attribution/measure-and-optimize/track-your-campaign/measure-attribution.md">Measure attribution</a></td></tr><tr><td><strong>Analyze conversions</strong></td><td>Other surfaces for reading the same underlying activities.</td><td><a href="/measurement-and-attribution/measure-and-optimize/analyze-conversions.md">Analyze conversions</a></td></tr></tbody></table>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.mediarithmics.io/measurement-and-attribution/measure-and-optimize/build-funnels.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
