Skip to main content

E-commerce Analytics Dashboards with Vizly

E-commerce dashboards answer the same questions every week: what sold, how many people bought, and which customers matter most. Vizly covers the standard storefront visuals: revenue trends, product mix, cart distribution, customer segments, and checkout funnel.

Revenue over time

Track daily or weekly revenue with a combo of bar and line for a revenue plus order count view.

import vizly as vz

vz.set_theme("corporate")

sales = [
{"date": "2026-06-01", "revenue": 12400, "orders": 420},
{"date": "2026-06-02", "revenue": 13100, "orders": 445},
{"date": "2026-06-03", "revenue": 11900, "orders": 398},
{"date": "2026-06-04", "revenue": 14200, "orders": 471},
{"date": "2026-06-05", "revenue": 15800, "orders": 512},
]

chart = vz.combo(
sales,
x="date",
bar="revenue",
line="orders",
title="Revenue and orders",
)
chart.render("sales.html")

Product category mix

Show which categories drive revenue with a treemap, or a donut for a quick share view.

categories = [
{"category": "Electronics", "value": 38400},
{"category": "Apparel", "value": 22600},
{"category": "Home", "value": 18200},
{"category": "Beauty", "value": 12400},
{"category": "Grocery", "value": 9800},
]

chart = vz.treemap(categories, names="category", values="value", title="Revenue by category")

Cart size distribution

Histograms of basket size reveal typical orders. A boxplot shows the spread including outliers.

import pandas as pd
import vizly as vz

orders = pd.DataFrame({
"basket_size": [1, 1, 2, 2, 2, 3, 3, 4, 5, 6, 8, 12],
})

chart = vz.boxplot(orders, x="basket_size", y="basket_size", title="Items per order")

Checkout funnel

Find where shoppers drop off between view and purchase.

funnel = [
{"stage": "Visits", "count": 40000},
{"stage": "Product views", "count": 16800},
{"stage": "Add to cart", "count": 5400},
{"stage": "Checkout", "count": 2100},
{"stage": "Purchased", "count": 1400},
]

chart = vz.funnel(funnel, names="stage", values="count", title="Checkout funnel")

Customer segments

Split customers by value tier with a donut, or compare segments across metrics with a radar.

segments = [
{"name": "VIP", "value": 120},
{"name": "Loyal", "value": 340},
{"name": "Regular", "value": 810},
{"name": "New", "value": 590},
]

chart = vz.donut(segments, names="name", values="value", title="Customer segments")

Geographic order distribution

Map order volume by country for a storefront with international shipping.

countries = [
{"name": "United States", "value": 8200},
{"name": "Canada", "value": 3100},
{"name": "United Kingdom", "value": 2800},
{"name": "Germany", "value": 2200},
{"name": "Japan", "value": 1900},
]

chart = vz.map(countries, title="Orders by country")

Full e-commerce dashboard

Compose the storefront view into one dashboard.

import pandas as pd
import vizly as vz

vz.set_theme("corporate")

chart = vz.page(
charts=[
vz.combo(sales, x="date", bar="revenue", line="orders", title="Revenue and orders"),
vz.treemap(categories, names="category", values="value", title="Revenue by category"),
vz.funnel(funnel, names="stage", values="count", title="Checkout funnel"),
vz.donut(segments, names="name", values="value", title="Customer segments"),
],
title="E-commerce dashboard",
)
chart.render("ecommerce.html")

Tips

TipDetail
Combo for revenue plus volumevz.combo shows money and counts together on shared axes.
Treemap for category hierarchyUse vz.treemap when categories have subcategories.
Funnel order mattersPass checkout stages top-to-bottom from most to least visitors.
Radar for multi-metric segmentsCompare customer segments across several metrics with vz.radar.