Skip to content
SourceLoop
Funnels

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.

On this page
  1. The three things a funnel needs to compute
  2. How matching actually works
  3. How scope changes the math
  4. How order mode changes the math
  5. Sequential (the default)
  6. Any order
  7. How the conversion window changes the math
  8. How attribution model applies (only on Breakdown)
  9. Why two funnels with the same steps can show different numbers
  10. What freshness to expect
  11. What’s next

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.

ScopeThe identity usedExample: same person visits 5 times
Per visitor (default)Anonymous browser ID (cookie-based)Counts as 1 visitor
Per sessionSession ID (new after 30 min idle or new referrer)Counts as 5 sessions
Per identified userUser 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.

WindowVisitor’s historyCounts as completed?
No windowStep 1: Day 1. Final step: Day 60.Yes (within the report’s date range)
7 daysStep 1: Day 1. Final step: Day 60.No (60 days > 7-day window)
7 daysStep 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.

ModelWhat it does in the Breakdown
Last TouchCredits the last channel the visitor came from before completing the final step
First TouchCredits the first channel that brought the visitor into your site
Last Non-DirectLike Last Touch, but skips Direct sessions if they’re the last touch
First Non-DirectLike First Touch, but skips Direct sessions if they’re the first
LinearSplits credit equally across every channel in the journey
Position-Based (U-Shaped)40% first, 40% last, 20% middle
Time DecayWeights 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.

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:

DifferenceWhat you’ll see
Different date rangesDifferent Entered (most common)
Different scopePer visitor vs Per session vs Per identified user produce different counts
Different order mode”Any order” usually shows higher counts than “Sequential”
Different conversion windowTighter windows produce lower Completed
One funnel has archive flag on the underlying dataRare; 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

Frequently asked questions

  1. 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.

  2. 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.

  3. 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).

  4. 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.

  5. 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.

  6. 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.

  7. 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.

Track every conversion to its true source

Capture and send full attribution data from every signup, lead, booking, and sale to your CRM and ad platforms, so you know exactly what's driving revenue.

Without SourceLoop

Untagged

Kayden Floyd

kayden@abc.com

  • SourceUnknown
  • MediumUnknown
  • CampaignUnknown
  • Landing pageUnknown
Journey
No touchpoints captured

With SourceLoop

Auto-tagged

Kayden Floyd

kayden@abc.com · Acme Co.

  • Channel Paid Social
  • CampaignFree_demo
  • Landing page/pricing
Journey
Synced to HubSpot Google Ads Meta