luvv to helpDiscover the Best Free Online Tools
Topic 2 of 8

Funnel Step Definition

Learn Funnel Step Definition for free with explanations, exercises, and a quick test (for Product Analyst).

Published: December 22, 2025 | Updated: December 22, 2025

What is Funnel Step Definition?

Funnel step definition is the precise, unambiguous specification of each step in a funnel: the event to match, who is counted, in what order, within what time limits, and with which filters. Clear definitions make your funnel metrics trustworthy and reproducible.

Why this matters

  • Product decisions: Identify which step blocks users (e.g., Add to Cart vs. Checkout Started).
  • Experiment analysis: Ensure A/B results aren’t biased by loose or changing definitions.
  • Stakeholder alignment: Avoid debates caused by different interpretations of “conversion.”
  • Diagnostics: Pinpoint where drop-offs happen and which cohorts are most affected.

Concept explained simply + Mental model

Think of a funnel like a series of doors. A user must pass each door in order, within a time limit, and with the right badge (filters). A step definition tells the guard at each door exactly who may pass and under what conditions.

  • Stream: A user generates a stream of timestamped events.
  • Gates: Each step is a gate with rules (event name, properties, filters).
  • Clock: A time window controls how long a user has to reach the next step.
  • Counter: Decide whether you count unique users, sessions, or orders.

Core components of a step definition

  • Event: The specific event name(s) to match.
  • Actor identity: user_id, session_id, account_id (state clearly).
  • Order: Steps are usually sequential; clarify if out-of-order is allowed or not.
  • Time window: Maximum allowed time between steps (e.g., 24 hours after previous step).
  • Filters: Event/property filters (platform, country, AB variant, device), user segment filters, exclusion rules (e.g., staff/bot traffic).
  • Counting unit: Unique users vs. sessions vs. orders. State one.
  • Deduping rule: Use first event after the previous step, or nearest, or last within window.
  • Entry rule: Where users can enter the funnel (first step only, or multiple entry points).
  • Optional/OR steps: Allow optional steps or alternate paths? Specify clearly.
  • Resetting: Does a user re-enter the funnel after completing it (or after timeout)?
Quick checklist for any funnel step
  • Did I name the event(s) exactly?
  • Did I specify actor identity and counting unit?
  • Did I define ordering and time window between steps?
  • Did I set filters and exclusions?
  • Did I define deduping for repeated events?
  • Did I clarify entry and re-entry rules?
  • Did I state optional and OR logic explicitly?

Worked examples

Example 1: Signup Activation Funnel

Step 1: Event = signup_started; Actor = user_id; Filters = platform in [web, ios, android]
Step 2: Event = email_verified; Must occur within 7 days after Step 1
Step 3: Event = first_session; Must occur within 3 days after Step 2; Count by unique user_id; Dedupe = first event after previous step

Optional/exclusions: exclude staff=true; Entry at Step 1 only; Re-entry allowed after 14 days if Step 2 not reached.

Why this works

It captures intent (signup_started), confirms account (email_verified), then checks actual activation (first_session) with practical time windows and deduping.

SQL-ish sketch (illustrative)
-- Pseudocode for clarity only
WITH s1 AS (
  SELECT user_id, MIN(timestamp) AS t1
  FROM events
  WHERE event='signup_started' AND platform IN ('web','ios','android') AND staff=false
  GROUP BY user_id
), s2 AS (
  SELECT e.user_id, MIN(e.timestamp) AS t2
  FROM events e JOIN s1 ON e.user_id=s1.user_id
  WHERE e.event='email_verified' AND e.timestamp BETWEEN s1.t1 AND s1.t1 + INTERVAL '7 days'
  GROUP BY e.user_id
), s3 AS (
  SELECT e.user_id, MIN(e.timestamp) AS t3
  FROM events e JOIN s2 ON e.user_id=s2.user_id
  WHERE e.event='first_session' AND e.timestamp BETWEEN s2.t2 AND s2.t2 + INTERVAL '3 days'
  GROUP BY e.user_id
)
SELECT COUNT(DISTINCT user_id) AS activated FROM s3;

Example 2: E-commerce Purchase Funnel

Step 1: product_view (user_id, product_category in [electronics])
Step 2: add_to_cart (within 24h after Step 1; Dedupe = first add_to_cart after view)
Step 3: checkout_started (within 48h after Step 2)
Step 4: purchase (within 72h after Step 3; Count by unique user_id)

Exclude test users; Optional steps: none; Entry at Step 1 only; Re-entry allowed after purchase completion.

Notes

Many add_to_cart events can occur. Deduping to the first instance keeps the path consistent and avoids inflating conversion rates.

Example 3: B2B Trial Activation with OR logic

Step 1: trial_started (account_id)
Step 2A: invite_teammate OR Step 2B: create_project (within 14 days of Step 1; any one qualifies)
Step 3: billing_setup (within 30 days after Step 2A/2B; Count by account_id)

Entry at Step 1; Optional steps: 2A or 2B OR logic; Exclude internal accounts; Re-entry not allowed during active trial.

Decision rules and edge cases

Out-of-order events

Default: disallow. If allowed, define the window and specify how to backfill earlier steps when later steps appear first.

Multiple qualifying events

Choose deduping: first, nearest to previous step, or last within window. Declare your choice per step.

Cross-device identity

Use a unified user_id if available. If not, define how to stitch anonymous session_ids to user_id after login (or avoid cross-device counting).

Timeouts and re-entry

Specify when a user can re-enter (e.g., after 7 days of inactivity or after conversion) and whether partial progress resets.

Exercises

Do these short exercises. Then open the solutions to self-check.

Exercise 1 (specification)
Define a precise funnel for Mobile Onboarding: App Install → Open App → Complete Tutorial → Create Account. Requirements: start within 7 days of install; each subsequent step within 24h of the previous; actor = user_id; region filter = country in [US, CA]; exclude bots=true; tutorial may repeat (dedupe = first after previous step); Enable Notifications event is optional (if present between tutorial and create account, do not block the path). Write your definition clearly.
Exercise 2 (timeline reasoning)
Using your Exercise 1 rules, a user does: t0 Install; t0+10m Open App; t0+3h Complete Tutorial; t0+1d2h Create Account; t0+1d3h Complete Tutorial again; t0+1d3h10m Enable Notifications. Do they convert? Why?
Show checklist before checking solutions
  • Actor and counting unit stated
  • Events named exactly
  • Time windows between each step
  • Filters and exclusions included
  • Deduping rule for repeats declared
  • Entry and re-entry policy stated
  • Optional step treatment explained
Exercise 1 — Suggested solution

Specification:

  • Counting unit: unique user_id; Entry: Step 1 only; Re-entry: not during a 7-day window.
  • Step 1: app_install; Filters: country in [US, CA], bots=false.
  • Step 2: app_open within 7 days after Step 1; Dedupe: first app_open after Step 1.
  • Step 3: tutorial_completed within 24h after Step 2; Dedupe: first tutorial_completed after Step 2.
  • Optional: enable_notifications if it occurs between Step 3 and Step 4; it does not gate the next step.
  • Step 4: account_created within 24h after Step 3; Dedupe: first account_created after Step 3.
{
  "count_by": "user_id",
  "entry": "step1_only",
  "reentry": "no_within_7d",
  "steps": [
    {"id":1, "event":"app_install", "filters":{"country":["US","CA"],"bots":false}},
    {"id":2, "event":"app_open", "window":"7d_after_prev", "dedupe":"first"},
    {"id":3, "event":"tutorial_completed", "window":"24h_after_prev", "dedupe":"first"},
    {"id":4, "event":"account_created", "window":"24h_after_prev", "dedupe":"first"}
  ],
  "optional_between": [{"after":3, "before":4, "event":"enable_notifications"}]
}
Exercise 2 — Suggested solution

Yes, the user converts.

  • Install → Open App: 10 minutes (within 7 days)
  • Open App → Tutorial: 3 hours (within 24h)
  • Tutorial → Create Account: 23 hours (within 24h)
  • Extra tutorial after account and notifications are non-gating and do not invalidate the path.

Common mistakes and how to self-check

  • Missing time windows: Leads to inflated conversions. Always state a window between steps.
  • Ambiguous actor identity: Mixing session_id and user_id changes rates. Pick one per funnel.
  • Ignoring duplicates: Repeats can jump steps or skew attribution. Define deduping.
  • Vague entry rule: Allowing mid-funnel entry without saying so produces inconsistent cohorts.
  • Changing definitions mid-report: Document version and freeze it during analyses.
  • Not excluding test/staff/bots: Pollutes data. Add explicit exclusions.
Self-check prompt

If two analysts implement your funnel independently, will they produce the same counts? If not, which rule is underspecified?

Practical projects

  • Project 1: Redefine an existing funnel with precise windows, deduping, and exclusions. Compare conversion rates before vs. after.
  • Project 2: Build an OR-branch funnel (e.g., Activation via Invite OR Project Creation). Show how branch logic changes step-through rates.
  • Project 3: User vs. Session funnel. Implement both on the same path and explain differences in drop-offs.

Mini challenge

Define a subscription funnel: View Pricing → Start Checkout → Submit Payment → Subscription Active. Constraints: out-of-order events are possible due to delayed webhooks; payment must be within 48h of checkout; subscription_active may arrive up to 24h after payment; count by account_id; exclude currency != USD; allow re-entry only after a cancellation. Write your exact rules.

Show one possible answer
  • Actor: account_id; Count: unique account_id
  • Step 1: pricing_view (currency=USD)
  • Step 2: checkout_started within 24h after Step 1 (dedupe=first)
  • Step 3: payment_submitted within 48h after Step 2 (dedupe=nearest_to_step2)
  • Step 4: subscription_active within 24h after Step 3
  • Out-of-order handling: payment_submitted before checkout_started not allowed; subscription_active before payment_submitted allowed only if a matching payment arrives within 24h prior (then backfill Step 3)
  • Re-entry: allowed only after cancellation event

Who this is for

  • Product Analysts and Data Analysts working on growth, activation, and revenue
  • PMs or Marketers who need consistent conversion metrics
  • Engineers defining tracking specs

Prerequisites

  • Basic event analytics concepts (events, properties, users/sessions)
  • Comfort reading simple SQL or analytics tool filters
  • Understanding of your product’s key events and data quality caveats

Learning path

  • 1) Learn event schema and naming conventions
  • 2) Practice defining steps with windows and filters
  • 3) Handle duplicates, optional/OR steps, and re-entry
  • 4) Validate with timelines and sample users
  • 5) Automate and document funnel definitions

Next steps

  • Apply these rules to one live funnel this week
  • Document your final definition and freeze it for experiments
  • Set a recurring review to catch drift in events or properties

Quick Test

Take the quick test below to check your understanding. Everyone can take it for free; only logged-in users will have their progress saved.

Practice Exercises

2 exercises to complete

Instructions

Define a precise funnel for: App Install → Open App → Complete Tutorial → Create Account. Requirements: start within 7 days of install; each subsequent step within 24h of the previous; actor = user_id; region filter = country in [US, CA]; exclude bots=true; tutorial may repeat (dedupe = first after previous step); Enable Notifications is optional (if present between tutorial and create account, it does not gate). Write your specification clearly.

Expected Output
A clear, unambiguous step-by-step specification including events, actor identity, time windows, filters/exclusions, deduping, entry/re-entry, and optional step handling.

Funnel Step Definition — Quick Test

Test your knowledge with 8 questions. Pass with 70% or higher.

8 questions70% to pass

Have questions about Funnel Step Definition?

AI Assistant

Ask questions about this tool