Traffic Funnel¶
Overview¶
Not every website visitor becomes an engaged Rose user. Visitors are filtered at several stages between landing on the page and being counted as engaged. This page documents each stage so you can reason about the gap between your raw site analytics (e.g. GA4, server logs) and the visitor counts shown in the Rose dashboard.
Funnel Stages¶
The widget audience is shaped by these sequential filters:
- Total website traffic — every visitor that loads a page where Rose is installed.
- Tag delivery — if Rose is loaded via Google Tag Manager (GTM), browser ad blockers prevent the GTM container from loading and Rose never reaches those visitors. Loading Rose via a direct
<script>tag avoids this leak. - Cookie consent — when a Consent Management Platform (CMP) gates third-party scripts, only visitors that accept cookies will load Rose. Visitors that decline or ignore the banner are lost here.
- Widget load time — Rose needs a few hundred ms to bootstrap. Visitors that bounce before bootstrap completes ("early quitters") never register as Rose visitors.
- Traffic allocation — the configured server-side percentage allocation (see Traffic Control). Visitors outside the allocated bucket do not see the widget.
- Engaged visitors — sessions lasting 10 seconds or more. Sessions shorter than 10s are treated as bounces and excluded from dashboard metrics (see What's New — More accurate dashboard metrics).
Sankey Diagram¶
The diagram below uses illustrative numbers to show how a cohort of 10 000 visitors flows through each stage. The exact retention rate at each stage depends on your audience, CMP configuration, and traffic allocation.
In this scenario 10 000 visitors collapse to 2 070 engaged — a 20.7% end-to-end retention. The biggest single losses are consent decline (25%) and outside allocation (15.3% — set by the traffic allocation).
In this scenario 10 000 visitors collapse to 2 070 engaged — a 20.7% end-to-end retention. The biggest single losses are consent decline (25%) and outside allocation (15.3% — set by the traffic allocation).
Flowchart View¶
If you prefer a decision-tree style view of the same funnel:
Reducing Leakage¶
| Stage | Mitigation |
|---|---|
| Ad blocker | Load the Rose script directly instead of via GTM. |
| Cookie consent | Place Rose in the "necessary" / "functional" CMP category if compliance allows, or improve consent acceptance rates. |
| Early quitter | Keep page weight low so Rose bootstraps quickly. |
| Allocation | Increase the traffic allocation percentage as confidence grows. |
| <10s bounce | Improve landing page relevance so visitors stay long enough to engage. |
How the Sankey Was Drawn¶
The diagram uses Mermaid's sankey-beta renderer, which is already enabled in this docs site through pymdownx.superfences (see mkdocs.yml). To update the numbers, edit the Source,Target,Value lines in the code block above — no extra tooling is required.
Alternative tools considered:
- D3.js sankey — interactive, but requires custom JS in the docs site.
- Plotly / Python — good for data-driven generation, exports as static image.
- SankeyMATIC — quick web tool that produces a PNG; useful for ad-hoc decks.
Mermaid was chosen because it keeps the diagram source readable and version-controlled inside the markdown file.