Python | Pandas | Matplotlib | Seaborn | SciPy
Finding where users drop off in an online store — and what it is actually costing the business.
5,000 users visited this store. Only 1,010 bought something. That is a 20.2% overall conversion rate.
The other 3,990 users left without buying — and nearly 60% of the total loss happens at one single step: the Product Page to Cart transition.
This analysis finds exactly where the funnel breaks, tests four possible explanations using statistical methods, rules out three of them, and points to the one fix that will have the highest business impact.
2,388 users reached the Product Page and did not add anything to cart.
That is the biggest drop in the entire funnel. Users are landing on product pages, spending time there, and still leaving without taking action.
Using an industry-standard average order value of $50 and the current 20.2% conversion rate as a baseline — recovering just 10% of those lost Product Page sessions would add approximately $11,900 in revenue per 5,000 sessions. At scale, across real traffic volumes, this number grows significantly.
The problem is not checkout. It is not mobile. It is not where traffic comes from. It is the Product Page itself failing to convince users to act.
| Funnel Step | Sessions | Drop to Next Step | What It Means |
|---|---|---|---|
| Home | 5,000 | 20.26% | Normal drop — most sites see this |
| Product Page | 3,987 | 59.89% | The main problem — nearly 60% leave here |
| Cart | 1,599 | 29.77% | Moderate drop — worth watching |
| Checkout | 1,123 | 10.06% | Low drop — checkout is working fine |
| Confirmation | 1,010 | — | Final purchases |
Once users add something to the cart, most of them actually finish buying. The battle is not at checkout. It is getting that first item into the cart.
Before pointing at the Product Page, four possible explanations were tested properly using statistical methods — not just eyeballing charts.
| Factor | How It Was Tested | Result |
|---|---|---|
| Device type | Chi-square test | No difference — p = 0.98. Desktop, mobile, tablet all behave identically |
| Referral source | Chi-square test | No difference — p = 0.47. Google, social, email, direct all convert similarly |
| Time of visit | Hour and day analysis | No pattern — conversion is flat across all hours (20–23%) and all days (18–22%) |
| Product page engagement | Avg time comparison | Same for everyone — buyers and non-buyers both spend ~96–97 seconds on the product page |
All four tested. Three ruled out with statistical confidence. The problem is not traffic quality, not device, not timing. It is the product page itself.
Buyers and non-buyers spend the same amount of time on the product page (~96 seconds). Users are not bouncing immediately. They are reading, looking, and still not clicking Add to Cart. That points to a persuasion problem — not a traffic problem.
Sessions with 0 items in cart have 0% conversion. The moment a user adds just 1 item, conversion jumps to 35–38%. Adding more items after that changes almost nothing.
The entire conversion battle is about getting that first item added. Everything else is secondary.
Non-buyers spend about 90 seconds total on the site. Buyers spend around 388 seconds. The difference is not because buyers read product pages more carefully — both groups spend the same time there. Buyers simply visit more pages because they go through more funnel steps.
Desktop, mobile, and tablet users drop at exactly the same rate at every funnel step. There is no mobile problem here.
Chi-square test: p = 0.98 — statistically no difference between devices.
Google converts at ~42%, Social Media at ~38%. The gap is small and not statistically significant. All sources show the same funnel pattern.
Chi-square test: p = 0.47 — no significant difference between referral sources.
Conversion is flat across every hour of the day and every day of the week. There is no peak time worth targeting.
| Assumption | Expected | Reality |
|---|---|---|
| Biggest drop at Product Page → Cart | ✅ True | 60% drop — confirmed as the main problem |
| Mobile users convert less | ❌ False | All devices perform identically (p = 0.98) |
| More time on product page = more likely to buy | ❌ False | Buyers and non-buyers spend the same time there |
| Social media traffic converts worse | ❌ False | All sources are similar (p = 0.47) |
| More items in cart = higher conversion | First item matters most — after that it flattens |
Three out of five assumptions were wrong. This is why testing with data matters.
The highest impact will come from focusing on the Product Page → Cart transition. Everything else has been tested and ruled out.
| Problem | Action | Expected Impact |
|---|---|---|
| Users read product pages but do not add to cart | Make the Add to Cart button more prominent and easier to find | Direct impact on the 59.89% drop rate — even a 5% recovery adds ~$6,000 per 5,000 sessions |
| Users are not convinced to act | Improve product images, descriptions, and pricing clarity | Reduces decision friction at the exact point where users are already engaged |
| Users do not trust the site enough to buy | Add trust signals — reviews, ratings, return policy, guarantees | Addresses hesitation for users who spend time on the page but still leave |
| Cart abandonment exists (~589 sessions) | Add cart reminder or urgency signals | Secondary priority — checkout is already working well |
Fixing the Product Page is the only lever that matters here. Device, traffic source, and time of visit have all been ruled out. The data is specific about where the problem is.
After working through this data, one thing became clear — the numbers across devices, referral sources, and countries are almost identical. In real e-commerce, that never happens. Mobile and desktop always behave differently. Paid and organic traffic always show different patterns.
This dataset is most likely synthetically generated. That is called out in the notebook because recognising data limitations is just as important as the analysis itself.
The analysis approach, funnel logic, statistical tests, and the way findings are connected — all of that works the same whether the data is real or synthetic. But the specific numbers should not be taken as benchmarks for real business decisions.
Before any analysis, the data was validated:
- No missing values across all 10 columns
- Funnel path validation — all 5,000 sessions follow the correct step order. Every session is clean.
- Timestamps converted to datetime and sorted by session and time
| Detail | Info |
|---|---|
| Source | Kaggle — E-Commerce Funnel Data |
| Total Rows | 12,719 |
| Total Sessions | 5,000 |
| Columns | 10 |
| Time Period | January 2025 – August 2025 |
| Type | Synthetic |
| Tool | Used For |
|---|---|
| Python | Data cleaning, analysis, funnel calculations |
| Pandas | Session-level and page-level data operations |
| NumPy | Numerical computations |
| Matplotlib | Funnel charts, bar charts, comparison plots |
| Seaborn | Heatmaps, violin plots, styled visuals |
| SciPy | Chi-square statistical tests |
| Jupyter Notebook | Full analysis in one place, start to finish |
funnel-drop-analysis/
│
├── funnel_drop_analysis.ipynb ← Full analysis notebook
├── README.md ← You are reading this
│
└── images/
├── 01_funnel_analysis.png
├── 02_device_funnel.png
├── 03_device_conversions_heatmap.png
├── 04_session_analysis_highres.png
├── 05_funnel_analysis_premium.png
├── 06_conversion_rate_analysis.png
├── 07_referral_conversion_premium.png
└── 08_time_based_conversion.png
- Clone this repo
git clone https://github.com/analytics-ak/funnel-drop-analysis.git
- Install required libraries
pip install pandas numpy matplotlib seaborn scipy
- Open the notebook
Jupyter Notebook funnel_drop_analysis.ipynb
- Run all cells — charts generate automatically
This analysis shows that conversion is not limited by traffic or checkout — it is driven by the ability to convert product interest into action at a single critical step.
Ashish Kumar Dongre
🔗 LinkedIn | 💻 GitHub | 📂 Dataset on Kaggle







