← Back to all products
$29
Funnel Analyzer
Analyze conversion funnels with step-by-step rates, drop-off points, cohort comparison, and time-to-convert metrics.
JSONMarkdownPython
📄 Product Preview
Try the interactive reader and demo tools below, or get the full product with all content unlocked.
📖 Interactive Reader (Free Preview) ⚙ Try Demo Tools 📦 Download Free Sample📁 File Structure 10 files
funnel-analyzer/
├── LICENSE
├── README.md
├── examples/
│ └── sample_funnel.json
├── free-sample.zip
├── guide/
│ ├── 01_features.md
│ ├── 02_quick-start.md
│ ├── 03_output-example.md
│ └── 04_license.md
├── index.html
└── src/
└── funnel_analyzer.py
📖 Documentation Preview README excerpt
Funnel Analyzer
Analyze conversion funnels: step-by-step conversion rates, drop-off points, cohort comparison, and time-to-convert metrics. Find where users bail and fix your flow.
Features
- Step-by-step analysis — Conversion rate between each funnel step
- Drop-off detection — Exact numbers and percentages of users lost at each step
- Overall conversion — End-to-end funnel conversion rate
- Time-to-convert — Average time from funnel entry to each step
- Cohort comparison — Compare funnel performance across user segments
- Visual bar report — ASCII bar chart showing funnel shape
- JSON/CSV input — Works with any event data format
- JSON output — Machine-readable results for dashboards
Requirements
- Python 3.10+
- No external dependencies (stdlib only)
Quick Start
# Analyze a funnel
python src/funnel_analyzer.py --events examples/sample_funnel.json \
--steps "page_view,signup,activate,purchase"
# Compare cohorts
python src/funnel_analyzer.py --events examples/sample_funnel.json \
--steps "page_view,signup,purchase" --cohort source
# Export results
python src/funnel_analyzer.py --events data.json \
--steps "visit,signup,activate" --output results.json
Event Data Format
Events should be a JSON array of objects:
[
{"event_name": "page_view", "user_id": "u1", "timestamp": "2026-01-01T10:00:00Z"},
{"event_name": "signup", "user_id": "u1", "timestamp": "2026-01-01T10:05:00Z"},
{"event_name": "activate", "user_id": "u1", "timestamp": "2026-01-01T10:30:00Z"}
]
Output Example
============================================================
FUNNEL: Conversion Funnel
============================================================
Entered: 150 | Converted: 23
Overall conversion: 15.3%
============================================================
Step 1: page_view
[########################################] 150 (100.0%)
*... continues with setup instructions, usage examples, and more.*
📄 Code Sample .py preview
src/funnel_analyzer.py
#!/usr/bin/env python3
"""
Funnel Analyzer — Analytics Hub (DataNest)
Analyzes conversion funnels: step-by-step conversion rates, drop-off
points, cohort comparison, and time-to-convert metrics. Feed it event
data and discover where users bail.
Usage:
python funnel_analyzer.py --events events.json --steps "visit,signup,activate,purchase"
python funnel_analyzer.py --config funnel_config.json --output report.json
Dependencies: Python 3.10+ stdlib only (no pip packages)
License: MIT
"""
from __future__ import annotations
import argparse
import csv
import json
import logging
import sys
from collections import defaultdict
from dataclasses import asdict, dataclass, field
from datetime import datetime, timezone
from pathlib import Path
from typing import Any
# ---------------------------------------------------------------------------
# Constants
# ---------------------------------------------------------------------------
logger = logging.getLogger("funnel_analyzer")
# ---------------------------------------------------------------------------
# Data models
# ---------------------------------------------------------------------------
@dataclass
class FunnelStep:
"""A single step in a conversion funnel."""
name: str
count: int = 0
conversion_rate: float = 0.0 # Rate from previous step (0-100)
overall_rate: float = 0.0 # Rate from first step (0-100)
drop_off: int = 0 # Users who didn't continue to next step
drop_off_rate: float = 0.0
avg_time_to_step: float = 0.0 # Average seconds from funnel entry
# ... 353 more lines ...