# How SourceLoop Computes Funnels

How SourceLoop turns your funnel definition into Entered, Completed, and per-step drop-off numbers, with how scope, order, and window affect the math.

Source: https://sourceloop.ai/help/how-sourceloop-computes-funnels/
Updated: 2026-05-28

---

This article explains how SourceLoop actually turns a funnel definition into the numbers you see on the report. It's not strictly required reading, you can use funnels successfully without it. But if you've ever asked "why is the conversion rate different from what I expected?" or "why does this number change when I switch scopes?", this is the answer.

## The three things a funnel needs to compute

To produce a funnel report, SourceLoop needs to answer three questions:

1. **Who counts as a single "visitor"** through the funnel? (the **scope**)
2. **What order do the steps need to happen in**, if any? (the **order mode**)
3. **Is there a time limit** between step 1 and the final step? (the **conversion window**)

Your funnel definition sets all three. SourceLoop then runs the actual matching against your stored events.

## How matching actually works

For every visitor (or session, or identified user, depending on your scope) within the report's date range, SourceLoop checks:

```
Did this visitor's event history match step 1's condition? → If no, skip them entirely.
                                                              They don't appear in Entered.

Did the same visitor match step 2's condition?              → If sequential mode, after step 1.
                                                              If any-order, anywhere in the window.

Did the same visitor match step 3's condition?              → Same logic.

... and so on for every step in the funnel.
```

Visitors who matched **only step 1** are in Entered but not Completed. Visitors who matched **every step** are in both. The drop-off at each step is the count of people who got that far but no further.

## How scope changes the math

**Scope** decides what counts as "one" through the funnel.

| Scope | The identity used | Example: same person visits 5 times |
|---|---|---|
| **Per visitor** (default) | Anonymous browser ID (cookie-based) | Counts as **1** visitor |
| **Per session** | Session ID (new after 30 min idle or new referrer) | Counts as **5** sessions |
| **Per identified user** | User ID (after the visitor identifies, e.g., signs up) | Counts as **1** identified user (or 0 if they never identified) |

The same funnel produces different numbers depending on which one you pick. Per visitor is right for most lead-funnel analysis. Per session is right for single-visit completion (checkout funnels). Per identified user is right for in-product behavioural funnels.

## How order mode changes the math

**Order mode** decides whether the steps have to happen in a specific sequence.

### Sequential (the default)

A visitor only counts as having reached step N if they previously reached steps 1 through N-1, **in temporal order**.

Visitor's actual event history: A → B → C → D (in chronological order)

Funnel definition: step 1 = B, step 2 = D

Does the visitor count? **Yes.** They reached B (step 1) and later reached D (step 2), in order. Events A and C are noise; the funnel ignores them.

If the funnel definition were step 1 = D, step 2 = B, the visitor would **not** count, because B happened before D, not after.

### Any order

The order requirement is dropped. The visitor just needs to have matched every step's condition at some point, in any order, within the window.

Same visitor history: A → B → C → D

Funnel definition: step 1 = D, step 2 = B (any order mode)

Does the visitor count? **Yes.** They matched both D and B; the temporal order doesn't matter.

Any-order mode is useful when you're measuring research patterns (e.g., did they view pricing AND features AND book a demo, in any order?) but rarely useful for true sales funnels (where order genuinely matters).

## How the conversion window changes the math

The **conversion window** is an optional time limit between step 1 and the final step.

| Window | Visitor's history | Counts as completed? |
|---|---|---|
| No window | Step 1: Day 1. Final step: Day 60. | **Yes** (within the report's date range) |
| 7 days | Step 1: Day 1. Final step: Day 60. | **No** (60 days > 7-day window) |
| 7 days | Step 1: Day 1. Final step: Day 5. | **Yes** (within the window) |

Use a window when the journey **must** complete within a known time (a trial period, a campaign, a sale duration). Skip the window when you genuinely don't care how long the conversion took.

## How attribution model applies (only on Breakdown)

The **Overview** and **Compare** tabs use raw step-reach counts. There's no attribution model involved, because there's no credit-allocation decision being made; you're just counting people who reached each step.

The **Breakdown** tab is different. When you break the funnel down by channel (or source, or country, etc.), SourceLoop has to decide **which channel to credit** for each completion. That's where the attribution model comes in.

| Model | What it does in the Breakdown |
|---|---|
| **Last Touch** | Credits the last channel the visitor came from before completing the final step |
| **First Touch** | Credits the first channel that brought the visitor into your site |
| **Last Non-Direct** | Like Last Touch, but skips Direct sessions if they're the last touch |
| **First Non-Direct** | Like First Touch, but skips Direct sessions if they're the first |
| **Linear** | Splits credit equally across every channel in the journey |
| **Position-Based (U-Shaped)** | 40% first, 40% last, 20% middle |
| **Time Decay** | Weights recent touches more heavily |

Single-touch models (Last Touch, First Touch, etc.) produce whole visitor counts. Multi-touch models (Linear, Position-Based, Time Decay) produce **fractional** counts because credit is split.

So the Breakdown table can show "0.33 visitors" for a channel under Linear, which is mathematically correct: a visitor with three touches contributed one-third to each of the three channels.

For deeper detail on each model, see [7 Types of Attribution Models](/help/types-of-attribution-models/).

## Why two funnels with the same steps can show different numbers

A common confusion: you have two funnels with identical step definitions, but they show different Entered or Completed counts. Five things can cause this:

| Difference | What you'll see |
|---|---|
| Different **date ranges** | Different Entered (most common) |
| Different **scope** | Per visitor vs Per session vs Per identified user produce different counts |
| Different **order mode** | "Any order" usually shows higher counts than "Sequential" |
| Different **conversion window** | Tighter windows produce lower Completed |
| One funnel has **archive flag** on the underlying data | Rare; happens if you've manually excluded sessions |

When you're debugging unexpected numbers, walk through this checklist before assuming a bug.

## What freshness to expect

Funnel computations read from the same event store that powers every other SourceLoop dashboard. That means:

- **Page views** appear in funnel computations within seconds of loading the page
- **Custom events** appear within seconds of the tracker firing them
- **Conversions** (forms, meetings, chats, payments) appear within seconds (forms / chats / meetings via the tracker) or within minutes (payments via webhook from the payment processor)

There's no precomputation, no overnight batch job, no cache to flush. Every time you open a funnel report or change a filter, SourceLoop runs the matching live against your latest data.

The trade-off is that funnel reports take a few seconds to load (versus instantly), but the data is always current. For most teams that's the right trade.

## What's next

- **Build your first funnel:** [How to Create a Conversion Funnel](/help/how-to-create-a-conversion-funnel/)
- **Read the funnel report once it's built:** [How to Build and Analyse Conversion Funnels](/help/conversion-funnels-guide/)
- **Pick the right attribution model for the Breakdown tab:** [7 Types of Attribution Models](/help/types-of-attribution-models/)

## Frequently Asked Questions

### Are funnels precomputed or live?

Live. Every funnel computation happens on-demand when you open the report or change a filter. There's no cached or aggregated result, the chart, the table, and the breakdown all read fresh data each time. That's why changing a date range, attribution model, or dimension recomputes the whole view in a few seconds.

### How fast is the data?

New conversions and pageviews appear in funnel computations within seconds. There's no batch job or overnight refresh; the funnel reads from the same fresh event store that powers the Traffic, Content, and Paths dashboards.

### Why does the same funnel show different numbers when I change Count unique?

Because the underlying "thing" being counted changes. Per visitor counts unique anonymous browsers. Per session counts unique visits. Per identified user counts unique logged-in identities. A single person who visits five times shows as 1 under Per visitor, 5 under Per session, and 1 under Per identified user (if they're logged in).

### Why does the Breakdown tab show fractional visitor counts?

Multi-touch attribution models like Linear, Position-Based, and Time Decay split credit across all touches in the journey. A visitor with a 3-touch path produces 0.33 of a visitor in each channel under Linear, not 1.0 in the last channel. The fractional counts are mathematically correct and add up to the real visitor count when summed across channels.

### What's the difference between 'Funnel completion' and 'Conversion rate'?

Funnel completion is the count of unique visitors who reached the final step. Conversion rate is that count divided by the count who entered (reached step 1), expressed as a percentage. Completion is a raw number; Conversion rate is a ratio. The report shows both.

### If a visitor reaches step 1 today and step 2 tomorrow, do they count if my date range is 'today'?

The date range filters by when step 1 was reached, not when the final step was reached. So if step 1 happened today and step 2 happened tomorrow, the visitor counts as having entered today; whether they show as completed depends on whether the report extends to tomorrow. This is consistent with how Entered is typically defined for funnel reports.

### Do funnels respect the global attribution model on the Overview tab?

No. Overview uses raw step-reach counts; an attribution model isn't needed because there's no "credit to assign" decision at the Overview level. The model applies only on the Breakdown tab, which is where credit gets split across channels or other dimensions.
