The formula
Net profit = revenue × gross margin − ad spend − agency fee − returns and payment costs. Run it monthly, per account. It is the only number on our weekly report that an owner cannot argue with.
Two accounts, same ROAS, opposite outcomes
| Skincare brand | Online pharmacy | |
|---|---|---|
| Revenue | R627,000 | R627,000 |
| ROAS | 7.4× | 7.4× |
| Ad spend | R85,000 | R85,000 |
| Gross margin | 58% | 24% |
| Gross profit | R364,000 | R150,000 |
| Fee, returns, payment | R93,000 | R93,000 |
| Net profit | R186,000 | −R28,000 |
Identical ROAS. One brand keeps R186,000 a month; the other loses money on every sale. This is why the pharmacy account in our case studies is run at 12.3× on Google Shopping with Meta restricted to repeat buyers, and the skincare account is run at 7.4× with aggressive Meta prospecting.
What ROAS also hides
- New versus returning. Retargeting past buyers produces a beautiful ROAS and no growth. We report new-customer revenue separately.
- Repeat value. A subscription or replenishment product can lose money on the first order and make it back by the third. First-order ROAS says stop; lifetime value says scale.
- Attribution overlap. Meta, Google and OpenAI each claim the same purchase. Add their ROAS together and you have invented revenue. We reconcile against the store’s actual sales every week.
How to use it
Set a target cost per new customer from margin and repeat value, not from a ROAS rule of thumb. Raise budget when net profit grows two weeks in a row. When it falls, look at creative, tracking and competition before touching the budget. It is less exciting than a ROAS dashboard and it is how the accounts in our case studies were scaled.