E-commerce profitability and tin-foil hats
A beginner-friendly guide to know if your Meta ads are profitable (and scalable), using a simple framework you can apply to any ecommerce account.
“I’m spending €5,000 a month on Meta ads… but am I actually making money?”
That question comes up way more often than people admit — even though it’s a base requirement for being able to run paid ads. In this post we’ll go deep with a concrete example.
Let’s say you’re the CEO of Bunspiracy.
Bunspiracy is (obviously) Europe’s most trusted brand selling tiny tin-foil hats for rabbits. Different models. Cute shapes. Maximum paranoia. Zero shame.
You turn on Meta ads and over a month:
- 1,000 people land on your website
- 50 orders come in
- €2,500 in revenue
Nice, right? But the real question is: was Bunspiracy profitable? And can it scale?
To answer that, we ignore the vibes and focus on the numbers that matter.
First, the basics
From those 1,000 visitors:
- 50 people bought → that’s a 5% conversion rate
- Total revenue was €2,500
So on average:
Each order was worth €50 = AOV (average order value) = how much a customer spends per order, on average.
When people say “increase your AOV”, they mean:
Make each user spend more per checkout.
Bundles, add-ons, multi-packs, ... as long as it doesn't hurt conversion rate.
The core idea
Profit per session = how much one visitor is worth to your business
Let’s calculate it.
Step 1: Revenue per session (first-order only)
Let’s start simple.
Revenue per session = AOV × conversion rate Example for Bunspiracy:
- AOV = €50
- Conversion rate = 5%
- ➡️ Revenue per session = €2.50
Meaning:
- Every visitor is worth €2.5 in revenue
- If Bunspiracy pays €1.8 per click → good
- If Bunspiracy pays €3 per click → bad, rabbits cry
But revenue still isn’t profit. And this is where people fool themselves.
Step 2: Revenue ≠ profit (spot the difference early)
Revenue feels good. Profit keeps the lights on.
Let’s say Bunspiracy has:
- 50% gross margin (after product, shipping, packaging)
Then:
Profit per session = revenue per session × margin Profit per session = €2.50 × 50% → €1.25
If Bunspiracy pays more than €1.25 per click, it loses money.
Step 3: Bring in customer lifetime value
Here’s the thing about rabbit owners: if they buy one tin-foil hat… they might buy more. Different shapes. Seasonal paranoia. Limited editions.
Instead of only looking at one order, estimate customer lifetime value (LTV).
Rough LTV estimation
You only need two numbers:
- AOV
- Average number of orders per customer (best-effort estimate based on historical store data)
Example:
- AOV = €50
- Average customer orders 1.8 times
- ➡️ Estimated LTV = €90
Step 4: Revenue per session (LTV-based)
Now redo the same calculation, but smarter.
Revenue per session (LTV-based) = LTV × conversion rate Example:
- LTV = €90
- Conversion rate = 2%
- ➡️ Revenue per session = €1.8
Suddenly:
- Bunspiracy can afford higher CPCs
- Retention improvements directly unlock scale
Step 5: From revenue to profit per session
Revenue doesn’t pay VAT. Profit does.
Profit per session = revenue per session × gross margin Example:
- Revenue per session = €1.8
- Gross margin = 50%
- ➡️ Profit per session = €0.9
As long as cost per click < €0.9, Bunspiracy is profitable.
What to do with this (actual steps)
No spreadsheet hell required.
Step-by-step:
- Go to Meta Ads Manager
- Look at the last 30–90 days
- Pull: Spend, Link clicks (or landing page views), Purchases, Revenue
-
Calculate:
- Conversion rate = purchases / visitors
- AOV = revenue / purchases
-
Estimate:
- Average repeat purchases (Shopify / best-effort)
- Gross margin
-
Calculate:
- Revenue per session
- Profit per session
- Compare: Profit per session vs cost per click
If it doesn’t work, you have three options
If profit per session < CPC, you have exactly three real options:
- Find better creative: new ads, new hooks, new formats. Maybe a video. Maybe a carousel. Maybe a dramatic close-up of a rabbit looking suspicious. Goal: improve conversion without increasing cost per click.
- Fix the offer: make the first purchase too good to refuse. Bundles. Discounts. “Buy 2 hats, protect both ears.” A better offer increases revenue per session with the same traffic.
- Shut it down: some products just aren’t meant to be sold online (yet). Thin margins. Low intent. Humans not ready to buy conspiracy hats for rabbits. Walking away is rational, not failure.
One uncomfortable truth about scaling
As Bunspiracy scales:
- CPC goes up
- Conversion rate goes down
- Audiences get colder
- Rabbits remain suspicious
That’s normal.
Your job is to keep revenue per session ahead of cost per click for as long as possible.
The mental model to keep
- ❌ Don’t optimise AOV in isolation
- ❌ Don’t chase conversion rate alone
- ✅ Optimise revenue per session
- ✅ Track profit per session
- ✅ Use LTV, not just first-order revenue
Because:
- ROAS doesn’t pay the bills
- AOV doesn’t pay salaries
- Profit keeps Bunspiracy alive
Once you see this clearly, e-commerce stops being guesswork. And even absurd businesses selling tin-foil hats for rabbits can scale profitably.