Profit Dashboard
What every number means
Money
| On screen | What it is |
|---|---|
| Net revenue | What customers paid, minus what you refunded. The starting point for everything else. |
| Gross profit | Net revenue minus what the goods cost you at your supplier. |
| Contribution margin | What is left of every €100 after goods, transaction fees, advertising and returns — but before your fixed monthly costs. The number that says whether the model works. |
| Net profit | Contribution profit minus a pro-rata slice of your monthly overhead. What actually ends up yours. |
| COGS | Cost of goods: what you paid your supplier, including shipping and customs if your cost price includes them. |
| Transaction fees | What the payment provider keeps: your percentage of every order plus the fixed amount per order, both from Cost settings. |
| Return costs | Number of refunded orders multiplied by what you said one return costs you in shipping and handling. |
| Overhead | Your monthly fixed costs, divided by 30 and multiplied by the number of days in view. Always 30, never the real month length. |
Return on advertising
| On screen | What it is |
|---|---|
| ROAS | Revenue divided by ad spend. How many euros came back per euro out. |
| Break-even ROAS | The ROAS at which an ad euro exactly pays for itself. Below it you are losing money on every extra euro. Calculated from your own margin, so it moves when your cost settings move. |
| Profit-ROAS | Gross profit per euro of ad spend, rather than revenue per euro. A stricter measure. |
| CPA | What one order cost you in advertising: spend divided by orders. |
| CAC | What one NEW customer cost you: spend divided by new customers. Different from CPA, and a different number again on the Cohorts screen — see the warning below. |
| Gap (Attribution screen) | How much more revenue a platform claims than your checkout actually recorded. A positive gap is shown in red because it means the platform is crediting itself. |
There are three different customer-acquisition costs
Overview shows spend ÷ new customers over the period you selected. Cohorts shows spend ÷ new customers over a fixed 90 days. Creatives shows a CPA reported by the ad platform itself. All three are correct and none of them will match.
Orders and customers
| On screen | What it is |
|---|---|
| Orders | Real, paid orders in the period. See the exclusions below. |
| AOV | Average order value: net revenue divided by orders. |
| Return rate | The share of orders with ANY refund on them — not the share of items returned, and not the share of money refunded. A €5 partial refund on a €300 order makes that whole order count as a return. |
| Returning revenue | The share of revenue that came from customers who had bought before. |
| LTV | Lifetime value: net revenue per customer so far. Only counts customers with an account — guest checkouts cannot be followed and are left out. |
| LTV : CAC | How much a customer is worth against what they cost to acquire. Three to one or better is generally considered healthy. |
| Payback time | How many months before the average customer has earned back what they cost to acquire. |
Live page
| On screen | What it is |
|---|---|
| Visitors on the site right now | People whose last signal was under a minute ago and was not them leaving. |
| visitors today | Unique people today, one per device, however often they came back. |
| visits | Separate trips. A new one starts after half an hour of silence, on arrival through a different ad, or on a new day. Always higher than visitors. |
| bots not counted | Visits that loaded one page and then produced no further signal at all. |
| In cart | Present visitors with something in the basket who are NOT at the checkout. |
| In checkout / Heading to checkout | The first is measured at the checkout itself. The second means they clicked the checkout button and it is an inference. |
Creatives screen
| On screen | What it is |
|---|---|
| Hook | The share of people who watched the first three seconds of the video. |
| Hold | Of those, the share who kept watching to the end. |
| CTR | Clicks divided by times shown. |
| ATC | Add to cart, as the ad platform reports it. |
| Leak | The share of a campaign's spend going to creatives or countries that are losing money. |
| Target for this period | The ROAS a campaign must show IN THE PLATFORM to be genuinely profitable. It sits above your break-even because the platforms report more revenue than your checkout sees. |
Which orders never count
Shopdeck filters these out of every figure on every screen, always. It matters, because it means Shopdeck will never exactly match Shopify’s own reports.
- Orders Shopify itself marks as a test.
- Orders with a discount code containing the word “test”.
- Cancelled orders.
- Orders under €10. This one surprises people. It exists because tiny orders and sample purchases distorted the figures badly — an unfiltered analysis once reported a 58% return rate on a product that had none.
- Checkouts that expired or were voided without ever being paid.
Timing, timezones and currency
- Days are Brussels days, midnight to midnight, everywhere in Shopdeck. On the weekends the clocks change, a day is 23 or 25 hours long.
- Today’s ad spend is always behind. Meta and TikTok report intraday figures on a delay of their own. Judge a day once it is over.
- Currency conversion is display only. The picker in the header converts your figures for reading; the measurement itself stays in the currency your shop reports in. A multi-day period is converted at a single day’s rate.
Why the platform and your shop disagree
Meta and TikTok each report their own conversion value, each with its own attribution window, and both claim credit for the same sale when a customer saw both. Added together they routinely exceed what actually reached your bank.
Shopdeck treats your Shopify orders as the truth and the platform’s claim as a claim. The Attribution screen puts the two side by side per channel so you can see exactly how much each platform is crediting itself.
For that comparison to work, your ads have to carry UTM tags. If fewer than half your orders carry a campaign, Shopdeck shows a banner saying so. Setting utm_source, utm_campaign, utm_id and utm_content on your ads fixes it from then on.
Next: Costs and margins, which is where these numbers get their inputs.