LUCENTCOMMERCEGET A FREE STORE AUDITFREE AUDIT

ANALYTICS · DATA · OPS · 25 JUNE 2026 · 7 MIN READ

Half-year review: the metrics worth reporting upward

Six to eight numbers, each with its definition written next to it and a decision attached. Most ecommerce board packs are twenty charts and no decisions.

A quarter of work on a board, the week in progress marked

Six to eight numbers, each with three things next to it: the definition being used, the comparison period, and the decision it informs. For a Shopify store that usually means net sales, gross profit, orders, average order value, online store conversion rate, returning customer rate, and one operational measure such as on-time fulfilment. The definition matters more than the number, because Shopify reports gross sales, net sales and total sales as three different figures and a board that has not agreed which one "revenue" means will compare this half against a different measurement of the last one.

IN SHORT

  • Shopify defines gross sales as revenue "before discounts and sales reversals are factored in", net sales as "gross sales - discounts - sales reversals", and total sales as "net sales + additional fees + duties + shipping charges + taxes" — three numbers, all of which get called revenue.
  • Online store conversion rate is calculated as sessions that completed checkout divided by sessions, and Shopify counts sessions "only when visitors consent to cookies through your cookie banner".
  • Average order value is "(gross sales - discounts) / orders" and excludes post-order adjustments, so returns and refunds do not appear in it.
  • Gross profit is "net sales - cost of goods sold" and requires cost of goods sold to be set up in Shopify; without that it is not a number to put in front of a board.
  • Returning customer rate is "returning customers / customers" for the period, so a large acquisition push mechanically lowers it without anything getting worse.
  • A metric without a decision attached to it belongs in an appendix, not in the report.

What a half-year report is for

A monthly report answers "is anything on fire". A half-year report answers a different question: which of the things we believed in January turned out to be true, and what are we doing differently for the rest of the year. Those need different numbers, and the second one needs far fewer.

The failure mode is well known to anyone who has sat through one. Twenty slides of charts, each individually accurate, arriving at no decision. Everybody nods, the deck is filed, and the next one is built from the same template six months later. The tell is that nothing in the pack could have been false — no number was presented with a threshold that, if crossed, meant something would change.

So build the report backwards. Start from the three or four decisions the next six months actually require — whether to fund the replatform, whether the second market gets more budget, whether the retention programme continues, what the peak plan assumes — and pick the numbers that inform them. Anything left over goes in an appendix for the person who will ask.

"Revenue" is three numbers, and you must pick one

This is where most ecommerce board packs quietly go wrong, and it is entirely avoidable. Shopify publishes distinct definitions, and they are not interchangeable.

Gross sales is "sales revenue, before discounts and sales reversals are factored in". Net sales applies both: "gross sales - discounts - sales reversals". Total sales is what the customer actually paid: "net sales + additional fees + duties + shipping charges + taxes". Each of those is a defensible thing to call revenue and they will differ by a lot, particularly in a half that contained a heavy promotional period or a market where duties are collected at checkout.

Our preference for a board is net sales as the headline, because it is the number that moves when discounting gets out of hand, and discounting getting out of hand is one of the more common quiet problems in a growing store. Gross sales flatters a half spent on promotion. Total sales includes tax and shipping, which makes it larger and less comparable across markets.

Whichever you choose, write the definition on the slide. Not in a footnote — on the slide, next to the number. It takes one line and it prevents the specific failure where the finance team's figure and the ecommerce team's figure differ by eleven per cent and an hour is spent discovering why.

The denominator problem in conversion rate

Online store conversion rate is defined by Shopify as the "percentage of online store visits (sessions) that resulted in a sale", calculated as "sessions that completed checkout / sessions". Straightforward, except for what a session is.

Shopify's definition of sessions is the "number of online store visits", and it notes that they are "only counted when visitors consent to cookies through your cookie banner". The denominator is therefore consenting traffic, not all traffic.

Follow that through and two things become clear. First, a change to the cookie banner changes the reported conversion rate without anything about the store changing — reject more consent and the denominator shrinks, so the rate moves. Second, conversion rates are not comparable across markets with different consent behaviour, which makes "our German conversion rate is below our UK one" a claim that needs checking before it becomes a project.

None of this makes the metric useless. It makes it a trend to read against itself, on a stable banner, in one market. If the banner changed in the half you are reporting, say so on the slide. It is a one-line caveat that saves a wrong conclusion.

Two numbers that hide their own weaknesses

Average order value is defined as "(gross sales - discounts) / orders", and Shopify notes that it excludes any post-order adjustments. That exclusion is the thing to know. Returns and refunds do not reduce AOV, so a half where basket size rose and return rate rose with it looks like unambiguous good news in that one figure. If your category has meaningful returns — apparel above all — AOV needs a return rate next to it or it is actively misleading.

Returning customer rate is "returning customers / customers" over the period. It is a genuinely useful retention signal and it has a mechanical quirk: it is a ratio whose denominator includes everyone who bought in the period, so a successful acquisition campaign lowers it. A half in which you acquired a great many new customers and retained exactly as well as before will show retention going backwards.

The fix for both is the same and it is not a better metric — it is a second number that moves differently. Pair AOV with return rate. Pair returning customer rate with the absolute count of repeat orders, or with a cohort view showing what proportion of the customers acquired in a given month bought again. Cohorts are the version that survives scrutiny, and a half-year is exactly the window where they start to be readable.

Margin, and the number you should not report

Boards want profitability, and Shopify offers gross profit: "net sales - cost of goods sold", with the documentation noting that it requires cost of goods sold to be set up in Shopify for accurate calculations.

That caveat is doing a lot of work. In practice a great many stores have COGS populated for some products, stale for others, and absent for the newest range — which produces a gross profit figure that is precise, official-looking and wrong in a direction nobody can estimate. Reporting it anyway is worse than not reporting margin at all, because it will be believed.

Two honest options. Either fix the COGS data, which is a real project and worth doing since it also unlocks margin-aware merchandising, or report margin from the finance system and label it as such, with Shopify's numbers used for volume and mix only. What you should not do is present a Shopify gross profit figure without checking COGS coverage first. Check the proportion of SKUs with a cost set before the number goes anywhere near a slide.

What to leave out

Sessions as a headline. Traffic is an input, it is measured on consenting visitors only, and reporting it upward invites the response "get more traffic" when the constraint is usually somewhere else.

Platform-reported ROAS added up across channels. Every ad platform claims the conversions it can see, so the sum of the channels routinely exceeds the orders you actually took. If paid performance is a board question, report blended: total spend against total net sales, which is arithmetic nobody can inflate.

Anything with no threshold. If you cannot say what value of a number would change a decision, it does not belong in the main pack. This eliminates most of the charts that get built out of habit.

And last half's narrative. A report that explains why every negative number was unrepresentative is not a report. One of the more valuable things a half-year review can contain is a clear statement that something did not work and is being stopped.

The shape that works

One page of numbers, then one page of decisions. On the numbers page, each line has the metric, its definition, the current half, the comparison period, and a single word or phrase for direction. On the decisions page, three to five items, each naming what is changing, who owns it and what would tell you it was wrong.

The comparison period deserves a moment of thought. Half against the preceding half is distorted by seasonality for almost every retailer — a half containing peak against a half that does not is not a comparison. Half against the same half last year is the honest one, with the previous half shown alongside only where the sequence matters.

Everything else — channel detail, product performance, site speed, the roadmap status — goes in an appendix and gets discussed if asked. A pack built this way is shorter to produce and considerably harder to sit through passively, which is the point.

What we would talk you out of

Building a data warehouse to produce this. Six to eight numbers twice a year does not justify a warehouse; Shopify's own reports plus a spreadsheet will do it, and the effort is better spent on getting COGS right, which improves both the report and the day-to-day merchandising. A warehouse earns its place when several systems must be joined routinely — retail, marketplaces, a subscription platform — not when the reporting cadence is semi-annual.

A real-time executive dashboard. Board-level numbers do not need to be live, and a live dashboard invites reaction to noise. Half-year decisions should be made from a settled period with returns and refunds accounted for, which is an argument for reporting slightly later rather than slightly faster.

And a metric nobody can influence. If the team reading the report cannot change a number by anything they do, it is context rather than a measure, and it should be labelled that way.

Questions this raises

What should an ecommerce report to the board contain?

Six to eight numbers, each with its definition, a like-for-like comparison period and the decision it informs — typically net sales, gross profit, orders, average order value, online store conversion rate, returning customer rate and one operational measure. Then a short list of decisions with owners. Everything else belongs in an appendix.

Which Shopify revenue figure should we report?

Pick one and write its definition on the slide. Shopify defines gross sales as revenue before discounts and sales reversals, net sales as gross sales minus discounts and reversals, and total sales as net sales plus fees, duties, shipping and taxes. Net sales is usually the most informative headline because it moves when discounting gets out of hand.

Why does our conversion rate not match other tools?

Because the denominator differs. Shopify calculates online store conversion rate as sessions that completed checkout divided by sessions, and counts sessions only when visitors consent to cookies through your banner. A banner change, or a market with different consent behaviour, moves the reported rate without anything on the store changing.

Is average order value enough to show basket health?

No. Shopify calculates it as gross sales minus discounts divided by orders, excluding post-order adjustments, so refunds and returns never reduce it. In any category with meaningful returns it needs a return rate reported beside it, or a rising AOV can mask a worsening position.

Can we report gross profit straight from Shopify?

Only if cost of goods sold is genuinely populated. Shopify calculates gross profit as net sales minus cost of goods sold and documents that it requires COGS to be set up for accurate calculations. Check what proportion of SKUs carry a cost before the figure goes in the pack; partial COGS produces a confident number that is wrong by an unknown margin.

Should the report compare against the previous half or the same half last year?

The same half last year, for anything seasonal — which is most of retail. Comparing a half containing peak against one that does not is not a comparison. Show the immediately preceding half only where sequence genuinely matters, such as tracking a programme launched mid-year.

NEXT STEP

Free store audit

A senior Shopify engineer reviews your storefront, theme performance and checkout, then sends a prioritised list of fixes.