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

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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?

I plotted the last 12 full weeks of 2011 against the same weeks of 2010 (52 weeks earlier). 2011 was ahead of 2010 in 8 of the 12 weeks. The report week (Nov 28 to Dec 4, 2011) ranks fourth highest of the 12 for 2011; the highest was the week of Nov 14, 2011, at £369,129. Weeks run Monday to Sunday.

UCI Online Retail II · public data

Download CSV
Weekly revenue: 12 rows. Net revenue is sales minus cancellations. Each point is one Monday to Sunday week, named by its Monday. The 2010 line is the week 52 weeks earlier, so the last point compares Nov 28 to Dec 4, 2011 with Nov 29 to Dec 5, 2010.
Week starting (Monday), 2011Net revenue, 2011 (£)Net revenue, same week of 2010 (£)
Sep 12222,269.79160,890.59
Sep 19319,745.94235,861.58
Sep 26202,358.82287,114.44
Oct 3300,307.48254,361.31
Oct 10204,251.49305,222.49
Oct 17259,053.85232,404.11
Oct 24234,202.83202,217.12
Oct 31288,344.46274,381.82
Nov 7350,123.40359,397.51
Nov 14369,129.47342,743.77
Nov 21295,233.31286,262.18
Nov 28306,115.06309,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?

Five KPIs, each as a percent change from the week before (Nov 21 to 27, 2011) and from the same week of 2010 (Nov 29 to Dec 5, 2010). Against the week before, orders were up 7.6% and the average order value before cancellations down 4.9%. The three share KPIs are in points, in the cards above.

UCI Online Retail II · public data

Download CSV
Change by KPI: 5 rows. Percent change is (this week minus the comparison week) divided by the comparison week. Average order value is sales before cancellations divided by orders; net revenue is after cancellations. Identified customers exclude lines with no customer id.
KPIChange vs the week before (%)Change vs the same week of 2010 (%)
Net revenue3.7-0.9
Orders7.61.7
Average order value (before cancellations)-4.9-4.1
Identified customers4.510.5
Units sold1.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?

Change in net revenue against the week before (Nov 21 to 27, 2011), in pounds, for the five biggest rises and the five biggest falls. A product is ranked only if it had at least £1,000 of net revenue in one of the two weeks (57 of the 2,602 products sold in either week qualify). I rank by pounds, not percent, so a tiny base cannot win.

UCI Online Retail II · public data

Download CSV
Product movers: 10 rows. Pounds, rounded to the nearest pound in the chart, to the penny in the workbook. A product is a stock code, upper-cased, named by its most common description. One week is a small sample: a single large order can move a product.
ProductChange in net revenue vs the week before (£)This week (£)Week before (£)Stock code
Rabbit night light4,1689,2475,07923084
Vintage doily jumbo bag red2,7643,40764223582
Cook with wine metal sign2,3922,4172521166
Heart of wicker large2,2702,69542522470
No singing metal sign2,1822,2011982600
Chilli lights-3,2421,7184,96079321
Pink 3 piece mini dots cutlery set-1,5744942,06884997D
Spotty bunting-1,4875842,07123298
Party bunting-1,4177362,15347566
Black record cover frame-1,3367362,07121137

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?

Change in net revenue against the week before (Nov 21 to 27, 2011), in pounds, for every country with at least £1,000 of net revenue in one of the two weeks (11 countries). The UK is 90.7% of the report week's net revenue, so its pounds dominate. I cannot tell from this data why the Netherlands fell.

UCI Online Retail II · public data

Download CSV
Country movers: 9 rows. Countries are the customer's country on the invoice. Net revenue is after cancellations, so a country can show a negative week (Italy, in the table) when cancellations exceed its sales.
CountryChange in net revenue vs the week before (£)This week (£)Week before (£)
United Kingdom18,554277,739259,185
Japan3,6523,6520
France2,9847,4654,481
Finland1,4391,709270
Norway1,1472,8431,697
Netherlands-10,69410410,798
Spain-3,3131713,484
Italy-2,652-1982,454
Germany-1,2724,5995,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?

Repeat-customer share is the share of identified customers who also ordered in the previous 52 weeks. Cancellation invoices are the share of all invoices that are cancellations. In the report week they were 91.4% and 14.5%.

UCI Online Retail II · public data

Download CSV
Repeat and cancellations: 12 rows. Lines with no customer id (27% of this week's sales lines) are not counted in the repeat share. A cancellation is dated when it is made, not when the order was.
Week starting (Monday), 2011Repeat-customer share (%)Cancellation invoices, share of invoices (%)
Sep 1283.417.2
Sep 1980.215.8
Sep 2685.814.4
Oct 377.617.0
Oct 1084.413.0
Oct 1780.212.4
Oct 2484.712.3
Oct 3185.013.6
Nov 787.013.5
Nov 1487.713.0
Nov 2187.89.0
Nov 2891.414.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).

KPIs for Nov 28 to Dec 4, 2011, with the week before and the same week of 2010 and the change from each.
KPINov 28 to Dec 4Week before (Nov 21 to 27)Change vs the week beforeSame week of 2010 (Nov 29 to Dec 5)Change vs the same week of 2010
Net revenue£306,115£295,233up 3.7%£309,029down 0.9%
Sales before cancellations£309,382£302,392up 2.3%£317,195down 2.5%
Orders663616up 7.6%652up 1.7%
Average order value (before cancellations)£467£491down 4.9%£486down 4.1%
Identified customers514492up 4.5%465up 10.5%
New customers (identified)4460down 26.7%54down 18.5%
Repeat-customer share (of identified customers)91.4%87.8%up 3.6 points88.4%up 3 points
Cancellation invoices, % of all invoices14.5%9%up 5.5 points12.5%up 2 points
Cancelled value, % of sales before cancellations1.1%2.4%down 1.3 points2.6%down 1.5 points
Units sold156,350154,803up 1%156,788down 0.3%
Lines with no customer id, % of sales lines27%24.1%up 2.9 points23.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.

Download weekly-kpi-report.xlsx

Findings

What the charts say.

  1. 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).

    Chart 1

  2. 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).

    Chart 2

  3. 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.

    Chart 3

  4. 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.

    Chart 4

  5. 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.

    Chart 5

Method

How the figures were built.

Steps

  1. 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.
  2. Dropped rows with price <= 0 (6,207 rows); nearly all of these have no Customer ID and are internal adjustments, not customer sales.
  3. 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').
  4. Removed 34,035 exact duplicate line items (after the rules above).
  5. 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.
  6. 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).
  7. 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

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.