The owner of an electronics shop in Almaty wants more advertising for product A: its ad account shows ROAS of 5, while product B has only 2.5. Each campaign spent 100,000 ₸. The accountant adds product and fulfilment costs, reversing the advantage: A leaves minus 50,000 ₸, B plus 12,500 ₸.
The example figures are illustrative. We need to compare what remains for the shop, then decide whether it can fulfil the next orders economically. Revenue and ad spend alone cannot answer that.
Agree what the money includes
Revenue in this calculation is already reduced by discounts and customer refunds and excludes indirect taxes. Variable costs include goods sold, payment and fulfilment costs, commissions, packaging and return losses belonging to the group. Advertising is deducted separately.
After variable costs but before advertising, A retains 10% of revenue and B 45%. We call that amount contribution: it still has to cover advertising and other business costs.
| Metric | Product A | Product B |
|---|---|---|
| Revenue after discounts and refunds | 500,000 ₸ | 250,000 ₸ |
| Variable costs excluding advertising | 450,000 ₸ | 137,500 ₸ |
| Contribution before advertising | 50,000 ₸ | 112,500 ₸ |
| Advertising | 100,000 ₸ | 100,000 ₸ |
| Contribution after advertising | Minus 50,000 ₸ | 12,500 ₸ |
A gives 500,000 - 450,000 = 50,000 ₸ before advertising. Deducting 100,000 ₸ in ad spend leaves minus 50,000 ₸. B gives 250,000 - 137,500 = 112,500 ₸, then 12,500 ₸ after advertising. This is not net profit: other fixed costs and taxes have not been deducted.

Count discounts and returns once
If a discount has already reduced revenue, treating the same discount as another expense understates the result. This can happen when the marketer takes a sales report total and then adds promo-code costs from another table.
A return requires following both money and goods. A saleable item can go back into inventory. Its entire purchase cost does not then become a loss, although shipping, handling and damaged packaging may have cost money. Agree the actual loss components with accounting.
A July refund may belong to a June order. Monthly cash reporting shows one view; the economics of June orders show another. For a group-level evaluation, link expenses and refunds to orders while retaining transaction dates.
Recent orders may still produce returns. Label the result with its observation window and updating rule. Comparing yesterday's campaign with a mature group without this context gives one side a timing advantage.
What a report called "Profit" shows
Gross profit, contribution and net profit deduct different expenses. A column's name does not replace reading its definition.
For example, Shopify calculates Gross profit by product as net sales minus recorded product cost. The report includes products whose cost was recorded at sale time. Missing costs for some products can explain a discrepancy with the full sales report.
That report's product cost is not all the variable costs in our example. Commissions, fulfilment, delivery and advertising need their own accounting. Do not rename Shopify gross profit as contribution after every expense and increase the budget from it.
Reconcile one order: its discounted amount, product cost, associated expenses and possible refund. Linking orders to payments makes the calculation reproducible outside the dashboard. Apply the same method to the group.
Which ROAS covers advertising
With contribution fixed at 10%, each tenge of revenue leaves 0.10 ₸ before advertising. Covering 100,000 ₸ in ad spend requires revenue of 100,000 / 0.10 = 1,000,000 ₸. The ROAS threshold is 1 / 0.10 = 10.
At 45%, required revenue is about 222,222 ₸: 100,000 / 0.45. The ROAS threshold is about 2.22. So A's ROAS of 5 fails to cover advertising in our model, while B's 2.5 covers it.
These thresholds assume unchanged costs and order mix. If expansion needs another warehouse shift, a different delivery method or a larger discount, the calculation changes.
There is also the question of advertising's effect. An ad account may attribute a purchase that would have happened without the campaign. Estimating added revenue needs an effectiveness measurement plan. The threshold helps define economic requirements, but an attribution report does not show which sales would have happened without the ads.
Connect contribution to stock
Even B's positive contribution does not justify moving the entire budget to it immediately. The shop needs inventory, replenishment timing and delivery capacity across the promised area. The product page shows an available offer, not yesterday's stock.
For the next order volume, estimate acquisition and fulfilment costs. Average costs from the previous batch may change when cheaper delivery capacity runs out or orders come from other regions.
A can also form part of a profitable basket when buyers add other items. That explanation needs linked orders and their full contribution. If an accessory is bought with the laptop, allocate advertising once under an agreed rule, preserving the basket total.
Compare the shop's own site and a marketplace using the same cost components. Take commissions, delivery, returns and payment timing from each channel's terms. Do not insert marketplace fees from memory or assume they are identical for all products.
Why a discount needs more sales
A separate product in our example costs 10,000 ₸, with 7,000 ₸ in variable costs excluding advertising and 3,000 ₸ contribution. The shop offers a 10% discount. Its new price is 9,000 ₸; with costs unchanged, contribution falls to 2,000 ₸.
Price fell by one tenth and contribution per unit by one third. A hundred units before the promotion contributed 100 × 3,000 = 300,000 ₸ before advertising. Matching that after the discount needs 300,000 / 2,000 = 150 units.
This comparison still assumes unchanged promotion expenses and fulfilment terms. If the additional fifty units need more advertising or cost more to deliver, the old contribution total will not survive after those expenses.
Promo-code buyers can include people prepared to pay full price. Some orders may move from a later period into the promotion. Evaluate the promotion with an appropriate comparison and observe what happens after the discount ends.
A repeat purchase becomes a fact later
For a consumable, the next purchase may be a useful step. After an infrequent purchase, the customer may need instructions, servicing or a compatible accessory. Choose loyalty programme terms around that need and include their costs.
After ordering, provide confirmation, clear delivery information and help with using the product. Cancel unfinished-checkout reminders once an order is placed and honour current contact permissions. Otherwise messages create confusion instead of another purchase.
Link repeat orders to the original group of new buyers and equal observation periods. Future LTV can be shown as a scenario with assumptions. A confirmed first-purchase loss remains in the calculation until the forecast money arrives.
Exercise: recalculate the threshold after a promotion
Take a client's product and build a calculation that can be checked against orders.
After the discount, our product sells for 9,000 ₸ and contributes 2,000 ₸ before advertising. Contribution share is 2,000 / 9,000, about 22.22%. The ROAS needed to cover advertising alone is 9,000 / 2,000 = 4.5. Before the promotion it was 10,000 / 3,000, about 3.33.
An old target ROAS may therefore stop covering costs after a price cut. The client's decision needs the new price, contribution, advertising expenses and available inventory together. The highest ROAS among products is no substitute for that calculation.