HomeDashboardWeekly KPI report
Analysis 02 of 31 · E-commerce
A weekly KPI report: how did the last full week go?
The short answer
£306,115 net revenue, Nov 28 to Dec 4, 2011
+3.7% vs the week before-0.9% vs the same week of 2010
£309,382 sales before cancellations minus £3,267 cancelled
Net revenue per week (Monday to Sunday), Sep 12 to Dec 4, 2011, in pounds after cancellations. The latest week is highlighted.
Net revenue was £306,115, up 3.7% vs the week before, down 0.9% vs the same week of 2010. Week on week, orders rose 7.6% and average order value before cancellations fell 4.9%; Netherlands net revenue fell £10,694, to £104.
I report the last full week of the data against the week before and the same week of 2010. Weeks run Monday to Sunday.
- Public data
- Report week: Nov 28 to Dec 4, 2011
- Weeks run Monday to Sunday
Data as of · fixed dataset
Key figures
- £306,115Net revenue+3.7% vs the week before-0.9% vs the same week of 2010
- 663Orders+7.6% vs the week before+1.7% vs the same week of 2010
- £467Average order value (before cancellations)-4.9% vs the week before-4.1% vs the same week of 2010
- 514Identified customers+4.5% vs the week before+10.5% vs the same week of 2010
- 91.4%Repeat-customer share (of identified customers)+3.6 points vs the week before+3 points vs the same week of 2010
- 14.5%Cancellation invoices, % of all invoices+5.5 points vs the week before+2 points vs the same week of 2010
- 1.1%Cancelled value, % of sales before cancellations-1.3 points vs the week before-1.5 points vs the same week of 2010
- 156,350Units sold+1% vs the week before-0.3% vs the same week of 2010
The week in five lines
- Flat on a year earlier: net revenue £306,115, down 0.9% on the same week of 2010 and up 3.7% on the week before.
- Lower cancellations held it up: sales before cancellations were down 2.5% on the same week of 2010; cancelled value fell from £8,166 in the same week of 2010 to £3,267.
- Net revenue from the Netherlands fell from £10,798 the week before to £104, a £10,694 drop, more than half the size of the UK's £18,554 gain. The cause is not in this data; it is what I would check first.
- Most customers were returning: 470 of 514 identified customers had ordered in the previous 52 weeks (91.4%, the 12-week high); new customers fell to 44 from 60 the week before.
- Cancellation invoices rose to 14.5% of all invoices from 9% the week before (a 12-week low), but cancelled value was only 1.1% of sales before cancellations.
Online retail's cancellations (15.8% of orders) and rows with no customer id (22.2% of cleaned rows) cover the two years; the shares here are for one week. Weeks run Monday to Sunday.
Chart 1 of 5
Trend · 12 weeks against last year
Net revenue was £306,115, down 0.9% on the same week of 2010 and up 3.7% on the week before.
Is this week's revenue normal for the season?
UCI Online Retail II · public data
Download CSV| Week starting (Monday), 2011 | Net revenue, 2011 (£) | Net revenue, same week of 2010 (£) |
|---|---|---|
| Sep 12 | 222,269.79 | 160,890.59 |
| Sep 19 | 319,745.94 | 235,861.58 |
| Sep 26 | 202,358.82 | 287,114.44 |
| Oct 3 | 300,307.48 | 254,361.31 |
| Oct 10 | 204,251.49 | 305,222.49 |
| Oct 17 | 259,053.85 | 232,404.11 |
| Oct 24 | 234,202.83 | 202,217.12 |
| Oct 31 | 288,344.46 | 274,381.82 |
| Nov 7 | 350,123.40 | 359,397.51 |
| Nov 14 | 369,129.47 | 342,743.77 |
| Nov 21 | 295,233.31 | 286,262.18 |
| Nov 28 | 306,115.06 | 309,029.05 |
Chart 2 of 5
The week against two comparisons
Identified customers were up 10.5% and the average order value before cancellations down 4.1% against the same week of 2010.
Which KPIs moved, against the week before and against last year?
UCI Online Retail II · public data
Download CSV| KPI | Change vs the week before (%) | Change vs the same week of 2010 (%) |
|---|---|---|
| Net revenue | 3.7 | -0.9 |
| Orders | 7.6 | 1.7 |
| Average order value (before cancellations) | -4.9 | -4.1 |
| Identified customers | 4.5 | 10.5 |
| Units sold | 1.0 | -0.3 |
Chart 3 of 5
Top movers · products
Rabbit night light added £4,168, the biggest product rise; chilli lights fell £3,242, the biggest fall.
Which products moved the revenue?
UCI Online Retail II · public data
Download CSV| Product | Change in net revenue vs the week before (£) | This week (£) | Week before (£) | Stock code |
|---|---|---|---|---|
| Rabbit night light | 4,168 | 9,247 | 5,079 | 23084 |
| Vintage doily jumbo bag red | 2,764 | 3,407 | 642 | 23582 |
| Cook with wine metal sign | 2,392 | 2,417 | 25 | 21166 |
| Heart of wicker large | 2,270 | 2,695 | 425 | 22470 |
| No singing metal sign | 2,182 | 2,201 | 19 | 82600 |
| Chilli lights | -3,242 | 1,718 | 4,960 | 79321 |
| Pink 3 piece mini dots cutlery set | -1,574 | 494 | 2,068 | 84997D |
| Spotty bunting | -1,487 | 584 | 2,071 | 23298 |
| Party bunting | -1,417 | 736 | 2,153 | 47566 |
| Black record cover frame | -1,336 | 736 | 2,071 | 21137 |
Chart 4 of 5
Top movers · countries
The UK added £18,554 and the Netherlands lost £10,694, the biggest country moves against the week before.
Which countries moved the revenue?
UCI Online Retail II · public data
Download CSV| Country | Change in net revenue vs the week before (£) | This week (£) | Week before (£) |
|---|---|---|---|
| United Kingdom | 18,554 | 277,739 | 259,185 |
| Japan | 3,652 | 3,652 | 0 |
| France | 2,984 | 7,465 | 4,481 |
| Finland | 1,439 | 1,709 | 270 |
| Norway | 1,147 | 2,843 | 1,697 |
| Netherlands | -10,694 | 104 | 10,798 |
| Spain | -3,313 | 171 | 3,484 |
| Italy | -2,652 | -198 | 2,454 |
| Germany | -1,272 | 4,599 | 5,871 |
Chart 5 of 5
Two shares over 12 weeks
The repeat-customer share stayed between 77.6% and 91.4% over the 12 weeks, while cancellation invoices ranged from 9% to 17.2% of invoices.
Are the repeat share and the cancellation share steady?
UCI Online Retail II · public data
Download CSV| Week starting (Monday), 2011 | Repeat-customer share (%) | Cancellation invoices, share of invoices (%) |
|---|---|---|
| Sep 12 | 83.4 | 17.2 |
| Sep 19 | 80.2 | 15.8 |
| Sep 26 | 85.8 | 14.4 |
| Oct 3 | 77.6 | 17.0 |
| Oct 10 | 84.4 | 13.0 |
| Oct 17 | 80.2 | 12.4 |
| Oct 24 | 84.7 | 12.3 |
| Oct 31 | 85.0 | 13.6 |
| Nov 7 | 87.0 | 13.5 |
| Nov 14 | 87.7 | 13.0 |
| Nov 21 | 87.8 | 9.0 |
| Nov 28 | 91.4 | 14.5 |
The report
The week at a glance.
Every KPI for Nov 28 to Dec 4, 2011, next to the week before (Nov 21 to 27, 2011) and the same week of 2010 (Nov 29 to Dec 5, 2010).
| KPI | Nov 28 to Dec 4 | Week before (Nov 21 to 27) | Change vs the week before | Same week of 2010 (Nov 29 to Dec 5) | Change vs the same week of 2010 |
|---|---|---|---|---|---|
| Net revenue | £306,115 | £295,233 | up 3.7% | £309,029 | down 0.9% |
| Sales before cancellations | £309,382 | £302,392 | up 2.3% | £317,195 | down 2.5% |
| Orders | 663 | 616 | up 7.6% | 652 | up 1.7% |
| Average order value (before cancellations) | £467 | £491 | down 4.9% | £486 | down 4.1% |
| Identified customers | 514 | 492 | up 4.5% | 465 | up 10.5% |
| New customers (identified) | 44 | 60 | down 26.7% | 54 | down 18.5% |
| Repeat-customer share (of identified customers) | 91.4% | 87.8% | up 3.6 points | 88.4% | up 3 points |
| Cancellation invoices, % of all invoices | 14.5% | 9% | up 5.5 points | 12.5% | up 2 points |
| Cancelled value, % of sales before cancellations | 1.1% | 2.4% | down 1.3 points | 2.6% | down 1.5 points |
| Units sold | 156,350 | 154,803 | up 1% | 156,788 | down 0.3% |
| Lines with no customer id, % of sales lines | 27% | 24.1% | up 2.9 points | 23.9% | up 3.1 points |
Definitions
What each number means.
- Week
- Monday to Sunday, by the date on the invoice line. The report week is Nov 28 to Dec 4, 2011; the week before is Nov 21 to 27, 2011; the same week of 2010 is Nov 29 to Dec 5, 2010, 52 weeks earlier.
- Net revenue
- Sales before cancellations minus cancelled value: the value of lines on invoices that are not cancellations, minus the value of cancellation lines (invoices starting with C), which count in the week they are cancelled.
- Sales before cancellations
- The value of lines on invoices that are not cancellations.
- Orders
- Distinct invoices that are not cancellations.
- Average order value (before cancellations)
- Sales before cancellations divided by orders.
- Identified customers
- Distinct customer ids on orders. Lines with no customer id are in orders and revenue but not in this count.
- New customers (identified)
- Identified customers with no order in the previous 52 weeks (364 days). New plus repeat equals identified customers.
- Repeat-customer share (of identified customers)
- Identified customers who also had an order in the 52 weeks (364 days) before the week, divided by identified customers. Of 514 identified customers, 470 had also ordered in the previous 52 weeks.
- Cancellation invoices, % of all invoices
- Cancellation invoices divided by all invoices (orders plus cancellation invoices) in the week. This week: 112 cancellation invoices.
- Cancelled value, % of sales before cancellations
- Cancelled value divided by sales before cancellations. This week: £3,267 cancelled of £309,382 sales before cancellations.
- Units sold
- Quantity on lines that are not cancellations.
- Lines with no customer id
- Sales lines (lines that are not cancellations) with no customer id, as a share of all sales lines in the week.
- Flat week
- Net revenue within 5% of both the week before and the same week a year earlier.
- Change
- For counts and amounts, (this week minus the comparison week) divided by the comparison week. For shares, the change is in points: the difference between the two shares as shown.
- Top movers
- Net revenue this week minus the week before, in pounds. A product or country is ranked only if it had at least £1,000 of net revenue in one of the two weeks. I rank by pounds, not percent, so a tiny base cannot win.
Download
The same report, as a workbook.
A Summary sheet where you pick any of the 12 weeks and the KPIs, both changes, the notes, a chart and the top movers recalculate; a Weekly sheet with every week of the data (average order value before cancellations, new customers, shares and week-over-week change are formulas); Products and Countries sheets that rank the movers with formulas over the Data sheet; plus Definitions and Source. Built with Claude under Zachary's direction. Public data: UCI Online Retail II (CC BY 4.0).
I used Excel at Dasalla Trading Company (2014 to 2016), and I use Excel and Google Sheets in my own business; my Excel skills include pivot tables and VLOOKUP/XLOOKUP. This workbook is a new exercise on public data and holds no company's data.
Findings
What the charts say.
Net revenue was £306,115 in the week of Nov 28 to Dec 4, 2011: up 3.7% on the week before (£295,233) and down 0.9% on the same week of 2010 (£309,029).
Against the same week of 2010 there were more identified customers (514 against 465) and more orders (663 against 652), but a smaller average order value before cancellations (£467 against £486).
Rabbit night light added £4,168 on the week before and chilli lights lost £3,242; only 57 of the 2,602 products sold in either week had £1,000 or more of net revenue in one of them.
The UK added £18,554; the Netherlands lost £10,694. Countries other than the UK are 9.3% of the week's net revenue, so single orders move them.
The repeat-customer share was 91.4% (up 3.6 points on the week before). Cancellation invoices were 14.5% of all invoices (up 5.5 points on the week before) but 1.1% of sales value before cancellations.
Method
How the figures were built.
Steps
- Dropped non-product stock codes (POST, DOT, M, m, D, BANK CHARGES, AMAZONFEE, C2, PADS, CRUK, ADJUST, ADJUST2, S, B, TEST001/002, gift card vouchers) that represent postage, fees, manual adjustments, and test rows rather than real merchandise.
- Dropped rows with price <= 0 (6,207 rows); nearly all of these have no Customer ID and are internal adjustments, not customer sales.
- Dropped negative-quantity rows on invoices that do not start with 'C' (3,457 rows); a true return in this dataset is a cancellation invoice (prefix 'C').
- Removed 34,035 exact duplicate line items (after the rules above).
- Weeks run Monday to Sunday and are dated by the invoice line's date. The data begins on Tuesday Dec 1, 2009 and ends on Friday Dec 9, 2011 at 12:50, so the first week (from Nov 30, 2009) and the last (from Dec 5, 2011) are partial; the report is for the last full week, Nov 28 to Dec 4, 2011.
- Every change is against one of two weeks: the week before (Nov 21 to 27, 2011) or the same week of 2010 (Nov 29 to Dec 5, 2010, 52 weeks earlier).
- A cancellation is dated on the day of the cancellation invoice, not on the day of the order it cancels, so a week's cancellations can undo earlier weeks' orders.
1,067,371 rows in the source file, 1,021,254 after cleaning; 106 weeks from Nov 30, 2009 to Dec 5, 2011. Every figure on this page comes from the chart tables in data/analyses/kpi_pack.json, built from the full cleaned history; the table under each chart says how.
Checks
- The cleaning reproduces the live Online retail page: 1,067,371 source rows and 1,021,254 after cleaning; the last invoice is Dec 9, 2011 at 12:50.
- Every figure in the charts, cards and findings was recomputed by separate code (verify_kpi.py: plain Python reading the original UCI zip, with no DuckDB and no intermediate files) and matches, week by week, product by product and country by country.
- The two queries below were run on the Live SQL table (13 months) in DuckDB 1.5.5. The weeks they cover are inside that table, so their figures are the full-history figures on this page, to the pound.
- Query 1 on the Live SQL table (13 months) returns 12 weeks; its first row, the week of Nov 28, 2011, is net revenue £306,115, up 3.7% on the week before, 663 orders, an average order value before cancellations of £467, 514 identified customers and 14.5% of invoices cancellations: the figures on this page.
- Query 2 returns ten stock codes (the table has no descriptions): the biggest rise is 23084, £4,168, and the biggest fall is 79321, £3,242, as on chart 3.
- Online retail shows 15.8% of orders cancelled and 22.2% of cleaned rows without a customer id for the two years; this page counts one week, so its shares (14.5% of invoices and 27% of sales lines) differ by period and by definition.
- The report week is the last full week. The week after it (Dec 5, 2011 onward) is partial, because the data ends on Dec 9, 2011, and it holds £172,782 of cancellations against £483,725 of sales, which would distort the cancellation KPIs.
The queries
The query runs on the table retail_orders (531,205 order lines, Dec 2010 to Dec 2011; it holds 13 months, so it has the report week and the week before but not the repeat share, and only Dec 1 to 5 of the same week of 2010). Open it in Live SQL, which runs DuckDB in your browser on the same public tables; the query loads ready to run.
The last 12 full weeks, with the change from the week before
Open in Live SQL-- The last 12 full weeks (Monday to Sunday), with the change from the week before (Live SQL table: Dec 2010 to Dec 2011)
WITH w AS (
SELECT date_trunc('week', invoice_date)::DATE AS week_start,
sum(line_revenue) AS net_revenue,
count(DISTINCT invoice) FILTER (WHERE NOT is_cancelled) AS orders,
sum(line_revenue) FILTER (WHERE NOT is_cancelled) / count(DISTINCT invoice) FILTER (WHERE NOT is_cancelled) AS avg_order_value,
count(DISTINCT customer_id) FILTER (WHERE NOT is_cancelled) AS customers,
100.0 * count(DISTINCT invoice) FILTER (WHERE is_cancelled) / count(DISTINCT invoice) AS cancel_invoice_pct
FROM retail_orders
WHERE invoice_date >= DATE '2011-09-05' AND invoice_date < DATE '2011-12-05'
GROUP BY 1
)
SELECT week_start,
round(net_revenue) AS net_revenue_gbp,
round(100.0 * (net_revenue / lag(net_revenue) OVER (ORDER BY week_start) - 1), 1) AS vs_week_before_pct,
orders,
round(avg_order_value) AS avg_order_value_gbp,
customers,
round(cancel_invoice_pct, 1) AS cancel_invoice_pct
FROM w
ORDER BY week_start DESC
LIMIT 12
Biggest rises and falls by product against the week before
Open in Live SQL-- Biggest rises and falls in net revenue by product, Nov 28 to Dec 4, 2011 against the week before (Live SQL table; stock codes, no descriptions)
WITH p AS (
SELECT upper(stock_code) AS code,
coalesce(sum(line_revenue) FILTER (WHERE invoice_date BETWEEN DATE '2011-11-28' AND DATE '2011-12-04'), 0) AS this_week,
coalesce(sum(line_revenue) FILTER (WHERE invoice_date BETWEEN DATE '2011-11-21' AND DATE '2011-11-27'), 0) AS week_before
FROM retail_orders
GROUP BY 1
), r AS (
SELECT *, this_week - week_before AS change,
row_number() OVER (ORDER BY this_week - week_before DESC, code) AS up_rank,
row_number() OVER (ORDER BY this_week - week_before, code) AS down_rank
FROM p
WHERE this_week >= 1000 OR week_before >= 1000 -- the size rule: at least 1,000 in either week
)
SELECT code, round(this_week) AS this_week_gbp, round(week_before) AS week_before_gbp, round(change) AS change_gbp
FROM r
WHERE up_rank <= 5 OR down_rank <= 5
ORDER BY change DESC
Caveats
- A UK online gift retailer selling mostly to wholesale customers. It trades Sunday to Friday (one Saturday, Dec 5, 2009, has invoices), and the weeks before Christmas are its busiest.
- One week is a small sample. A single large wholesale order can move a product, a country or the average order value, and the data cannot say why a number moved.
- Identified customers and the repeat share count only lines with a customer id. Orders and revenue include lines with no customer id, so identified customers per order are not comparable across weeks with different shares of unidentified lines.
- The repeat share looks back 52 weeks (364 days). For the same week of 2010 the data begins on Dec 1, 2009, one day short of 52 weeks, so the 2010 repeat share may be very slightly low and its new-customer count very slightly high.
- A cancellation counts in the week it is made, not the week of the order it cancels, so a week's cancellation share can reflect earlier orders.
- Two weeks have no orders at all in the data (the weeks starting Dec 28, 2009 and Dec 27, 2010); they are zero rows in the workbook.
- Net revenue, orders and units come from lines that are not duplicates or non-product codes (the cleaning above), so they differ from a count of the raw file.
Releases and revisions
- This is a fixed historical dataset (as of December 2011); it is not revised.
Sources
Data and licence
- Source
- UCI Online Retail II, Chen, D. (2012), UCI Machine Learning Repository
- Period
- Dec 2009 to Dec 2011 (report week Nov 28 to Dec 4, 2011)
- Licence
- CC BY 4.0
- Charts
- 5, each with its data table and CSV
- Data file
- data/analyses/kpi_pack.json
- UCI Online Retail II Chen, D. (2012), UCI Machine Learning Repository. Licence CC BY 4.0.
Licence: CC BY 4.0. Public data.
Download the chart data
Each CSV is made in your browser from the rows in that chart's table.
04Contact
Want this kind of analysis on your own data?
Open to e-commerce, data and operations roles. Los Angeles or remote.