Lens

Funnel Tile

A funnel chart of how many users match each step, where every step only counts users who also matched all the steps before it. Use it to find where people drop out.

Funnel tile: 2,000 users viewed a product, 600 added to cart and 240 purchased.
Illustration with the numbers from the Example below

What it shows

The Funnel tile draws one band per step you define, sized by the number of users who reached it. A step is a set of conditions on a single row, such as "event_name equals add_to_cart". Each step counts only the users who also matched every step above it, so the bands can only stay level or shrink. Labels show the rate from the previous step and how many users were lost.

Use it forNot for
Finding the step where most users drop outProving that steps happened in a given order (order is not checked, see below)
Comparing a funnel for a cohort against all users, on two tilesCounting events or sessions per step (it counts users)
An end-to-end rate from first step to lastTime between steps (use Time to Conversion)

Example

An events table has client_id (the user key) and event_name, with values such as view_item, add_to_cart and purchase.

SettingValue
TypeFunnel
User Keyclient_id
Cohort (optional)All users (no cohort)
Funnel Steps, step 1Name "Viewed product", condition event_name equals view_item
Funnel Steps, step 2Name "Added to cart", condition event_name equals add_to_cart
Funnel Steps, step 3Name "Purchased", condition event_name equals purchase

The tile shows:

StepUsersRate from previous stepUsers lost
Viewed product2,000
Added to cart60030%1,400
Purchased24040%360

On the board, the labels read Viewed product: 2.0K, Added to cart: 600 (30% | -1.4K) and Purchased: 240 (40% | -360). Hovering over Purchased shows 240 users, "Conversion: 40% from previous step", "Drop-off: 360 users lost" and "Overall: 12% of step 1". In the public report the label reads Purchased: 240 (40%).

Data it needs

  • A user key that identifies a person across rows.
  • Dimensions that tell the steps apart, such as event_name, page_path or form_id.
  • One row per action, so a user who did several things has several rows. Each condition in a step is checked against one row at a time.

Settings

SettingWhat it doesDefault
TitleThe tile header. RequiredEmpty
DescriptionOptional text behind an info iconEmpty
TypeFunnelKPI
SizeSmall, Third, Medium or LargeMedium
Data TableThe table to readNone
User KeyThe dimension that identifies a user. RequiredNone
Cohort (optional)Limits the tile to users in one cohort built on the same tableAll users (no cohort)
Funnel StepsThe steps, in order. At least 2. Click + Add Step to add oneNone
Step nameShown on the chart. Left blank, it becomes "Step 1", "Step 2" and so onBlank
+ Add ConditionAdds a condition to a step: a dimension, an operator and a valueOne empty condition
Operatorequals, not equals, contains, not contains, begins with, ends with, regexequals
Date rangeShown in the editor, but this tile always follows the board's date rangeInherit from board

A condition needs both a dimension and a value, or it is dropped when you save. A step with no complete condition is dropped too, and the steps after it move up.

How it calculates

  1. Lens reads rows in the board's date range (only cohort users, when a cohort is set).
  2. For each step, it finds the users who have at least one row matching all of that step's conditions. The conditions in a step must match on the same row.
  3. Step 1's count is the users who matched step 1. Step 2's count is the users who matched step 1 and step 2. Step 3's count is the users who matched steps 1, 2 and 3, and so on.
  4. On the chart, the percentage is this step's users divided by the previous step's users, rounded to a whole number. The drop-off is the difference. The hover text also gives the share of step 1.

How the operators match:

OperatorMatches when the row's value
equals, not equalsIs, or is not, exactly the value
contains, not containsIncludes, or does not include, the value anywhere
begins with, ends withStarts or ends with the value
regexMatches the regular expression anywhere in the value. Anchor it with ^ and $ for a whole-value match

All operators are case-sensitive: Purchase does not match purchase.

If the query returns no rows, the board shows "No funnel data found" and the public report shows "No data available". If users exist but none match, the chart draws with zero counts.

What viewers can do

ActionBoardPublic report
Read the labelsUsers per step, rate from the previous step and users lostUsers per step and rate from the previous step
Hover a stepUsers, conversion from the previous step, drop-off and share of step 1Step label and users
Info iconShows the tile descriptionSame
"How to read this" iconOpens a short guide to the funnelNot shown
AI buttonSummarizes the funnel, when AI features are on for the propertyNot shown
Change the date rangeThe tile reloadsSame

Large numbers in the labels are shortened, such as 1.4K or 2.1M.

Limits and gotchas

  • Step order is not checked. A user counts at step 3 if they matched steps 1, 2 and 3 at any time in the range, in any order. Someone who bought first and viewed the product afterwards still counts as having completed the funnel. Treat the tile as "did all of these" rather than "did these in this order".
  • There is no time limit between steps. Matching rows can be days apart, as long as they are in the date range.
  • Conditions in one step must match one row. "event_name equals purchase" and "page_path contains /checkout" in the same step need a single row that has both. To accept either of two values of one dimension, use a regex such as ^(purchase|lead)$.
  • Matching is case-sensitive. This differs from pivot tables and groupings, which ignore case.
  • Board filter chips do not apply, and the tile's own Date range setting is ignored: the tile always uses the board's range. Use a cohort or a step condition to narrow it.
  • Dates are the table's stored dates. For sources stored in UTC, such as Echo, the range is matched on the UTC date. See Dates and Time Zones.
  • Rows with an empty user key count as one user at each step they match.