Companion workbook

ROAS Target Calculator

Setting tROAS from real economics — not industry benchmarks, not Google's suggestion, not what your boss thinks.

The core idea: Your Target ROAS is determined by your contribution margin. If your CM is 40%, your breakeven ROAS is 2.5. Setting a tROAS below that means you're paying Google to lose money. Setting it just above means every order is barely profitable.

Try it on your numbers

Live calculator

Type a contribution margin (or break it down by line items below) and the calculator will show your breakeven and suggested target ROAS.

Inputs — basket level

Results

Total variable costs £42.40
Contribution per order £37.60
Contribution margin 47.0%
Breakeven ROAS 2.13
Suggested target (low end) 2.55
Suggested target (high end) 2.77
Healthy margin tier. Comfortable to scale with a moderate buffer above breakeven.

Section 1 — The core formula

Breakeven ROAS = 1 ÷ Contribution Margin %
Contribution MarginBreakeven ROAS
50%2.0 (200%)
40%2.5 (250%)
33%3.03 (303%)
30%3.33 (333%)
25%4.0 (400%)
20%5.0 (500%)
15%6.67 (667%)
10%10.0 (1000%)

Memorise the relationship: the lower your margin, the higher your breakeven ROAS, and the harder Smart Bidding has to work to keep you profitable.

What goes into Contribution Margin

Contribution margin is revenue minus variable costs. It's not gross margin (which only nets COGS) and it's not net profit (which subtracts fixed costs).

Variable costs to include:
  • COGS (cost of the product)
  • Outbound shipping (carrier + packaging materials)
  • Payment processing fees (typically 2.5–3.5%, plus per-transaction gateway fees)
  • Returns allowance (return rate × cost of processing a return)
  • Refund / chargeback buffer
  • Platform fees (Shopify transaction, marketplace fees)
  • Picking/packing labour if it scales with order volume
Variable costs to EXCLUDE (these are fixed): Rent · Salaries · Software subscriptions · Insurance · Office overheads

Why "basket level" not "per item"

The cleanest way to compute contribution margin for bidding is at the order/basket level, not per item. This naturally handles variable items per basket and AOV variation — high-AOV orders dilute fixed per-order costs, low-AOV orders concentrate them, and averaging absorbs both.

If your catalogue cleanly splits into margin bands (accessories at 50%, core at 30%, bulky at 15%), do this exercise per band. That gives you the inputs for margin-tier campaigns.

Section 2 — Target ROAS = Breakeven + Profit Buffer

These values match what the interactive calculator above outputs. Buffer % is the gap above breakeven.

Contribution MarginBreakeven ROASSuggested TargetBufferTier
50%2.002.40–2.6020–30%Healthy
40%2.503.00–3.2520–30%Healthy
30%3.334.17–4.5025–35%Medium
25%4.005.00–5.4025–35%Medium
20%5.006.50–7.5030–50%Low
15%6.678.67–10.0030–50%Low
10%10.0014.00–16.0040–60%Very thin

Rule of thumb: ~20–30% above breakeven for healthy margins, 30–50% above for thin margins, 40–60% above for very thin. The thinner the margin, the bigger the relative buffer needs to be — the same percentage performance dip eats more profit at low margins.

Why not just set the target very high? Two problems: (1) Smart Bidding will starve the campaign — if real ceiling is 5×, setting 10× tells it to only enter near-certain auctions and volume collapses. (2) You won't know what you could've made. Set the target to the highest profitable ROAS that still gives you the volume you want, then walk it up incrementally.

Section 3 — Margin tiers (handling variable AOV)

Per-item modelling doesn't work when items aren't reliably bought solo. The right approach for a mixed catalogue is basket-level margin tiers + margin-tier campaigns.

Step 1 — Define your tiers

TierTypical CM%Catalogue example
High-margin40%+Accessories, own-brand, digital
Medium-margin25–40%Core products, mid-range
Low-margin<25%Bulky/heavy, third-party brands, sale stock

Step 2 — Compute blended CM% per tier

For each tier, look at the last 90 days of orders that are predominantly that tier and run the basket-level CM% calculation from Section 1.

Step 3 — Tag products with custom labels

  1. Populate custom_label_0 with high-margin, medium-margin, low-margin
  2. Use Merchant Center attribute rules so it auto-assigns based on cost_of_goods_sold vs price
  3. Updates automatically when COGS or prices change

Step 4 — Create one campaign per tier

For Standard Shopping or PMax: one campaign per tier, filtered by custom_label_0, set the tROAS for that tier.

Step 5 — Group under 2–3 portfolio bid strategies

Each tier becomes its own portfolio. Aggregates conversion data above the Smart Bidding floor. Don't go further than necessary — only split portfolios when targets differ by 30%+.

Section 4 — Worked examples

Example A — High-margin tier

46% CM

Activewear / accessories style, £80 average basket. Drop these into the calculator above to verify.

Avg basket revenue: £80 COGS: £32 (40%) Outbound shipping: £4 Payment processing 3%: £2.40 Returns allowance 5%: £4 Packaging: £0.80 ───────────────────────────────── Total variable cost: £43.20 Contribution per order: £36.80 Contribution margin: 46% Breakeven ROAS: 2.17 Suggested target ROAS: 2.60 – 2.82 (Healthy tier, 20–30% buffer)
Action: set portfolio tROAS to 2.6 initially. After 14 days of stable learning, walk up by 10% (to ~2.85) and watch volume. If volume holds, walk up again. If volume collapses, walk back.

Example B — Low-margin, fulfilment-heavy tier

8% CM

Stacks the non-COGS variable costs to show how a "decent" 30% gross margin can collapse to an unrunnable contribution margin once shipping, returns, and processing are included.

Avg basket revenue: £200 COGS: £140 (70%, 30% gross margin) Outbound shipping: £18 (heavy parcel) Payment processing 3%: £6 Returns allowance 8%: £16 Packaging: £4 ───────────────────────────────── Total variable cost: £184 Contribution per order: £16 Contribution margin: 8% (vs 30% gross — fulfilment ate 22pp) Breakeven ROAS: 12.5 Suggested target ROAS: 15.0+
Headline lesson: gross margin and contribution margin are different animals. A product can look profitable on the P&L (30% gross) and be unrunnable on paid (8% contribution).

Three options:

  1. Improve margin first — renegotiate suppliers, change shipping carrier, raise prices, reduce return rate. Bring CM into the 15–20% range
  2. Run only on retargeting / brand search where conversion rates are dramatically higher and 15× tROAS is achievable. Exclude from prospecting
  3. Treat as loss leader for LTV — only valid if the customer reliably comes back for high-margin repurchases (see §5)

Example C — Mixed catalogue, 3 tiers

3 portfolios
TierCM%BreakevenTarget rangeStrategy
High-margin42%2.382.86–3.10Portfolio 1
Medium-margin30%3.334.17–4.50Portfolio 2
Low-margin15%6.678.67–10.00Portfolio 3

Start at the low end of each range, walk up by 10% increments after 14-day learning periods.

Each tier is a separate Shopping or PMax campaign filtered by custom_label_0. Each has its own portfolio with min/max bid limits (max ~2× normal CPC) to stop CPC creep.

Budget allocation will look uneven — high-margin tier will spend the most because Google can find more profitable auctions at 2.8× than at 8×. That's correct. Don't try to "balance" budget across tiers.
One overall account ROAS will not exist — you'll have a blended ROAS across tiers. Track each tier's ROAS against its own target. Don't compare tier 1's 2.8 to tier 3's 8.0 — they're targeting different things.

Section 5 — First-Order vs Blended ROAS (the LTV question)

Everything above assumes the order has to be profitable on its own. That's correct if your customers don't come back.

If they do — meaningful repeat rate, predictable LTV — you can profitably acquire customers at a lower first-order ROAS because future repurchases recover the gap.

The LTV-adjusted formula

This formula gives you the breakeven first-order ROAS — total lifetime contribution exactly covers acquisition cost. Your target sits above this by a profit buffer.

Breakeven First-Order ROAS = 1 ÷ (CM% × (1 + Repeat Purchase Factor))
Where Repeat Purchase Factor = (CLV ÷ First-Order AOV) − 1

Worked example

First-order AOV:                  £100
Contribution margin:              40%
CLV (4 total orders incl first):  £400
Repeat Purchase Factor:           (400 / 100) - 1 = 3.0

Breakeven first-order ROAS:       1 / (0.40 × (1 + 3.0))
                                = 1 / 1.6
                                = 0.625

Total lifetime contribution:      £400 × 40% = £160
Max profitable acquisition cost:  £160 per customer
Implied breakeven ROAS on £100:   100 / 160 = 0.625 ✓

Translation: at first-order ROAS of exactly 0.625, you spend £160 acquiring a customer who delivers £160 of lifetime contribution — you break even across their lifetime. For any actual profit, you need first-order ROAS above 0.625.

Target first-order ROAS in this example, with a 25% buffer: 0.625 × 1.25 ≈ 0.78 — you'd be willing to spend up to £128 acquiring a £100 first order.

Critical caveat: this whole model assumes your CLV estimate is accurate. If it's based on cohorts from 2 years ago when repeat rates were higher, you will over-bid. Pressure-test the CLV assumption quarterly.

How to use this in Google Ads

  1. New Customer Acquisition mode — bid higher for new customers than returning ones
  2. New customer value multiplier — set to your actual (CLV ÷ first-order AOV) ratio. For the example above, that's £400 ÷ £100 = 4.0×. The "2.5–3.5×" you'll see in agency blogs is just a common range from case studies — rule of thumb, not a standard.
  3. Conversion Value Rules — multiply value for new customers, reduce for returning. Exact multipliers depend on your LTV data.
Don't run blended ROAS as your only metric. Blended hides whether you're acquiring profitably or just being subsidised by repeat customers. Track:
First-order ROAS (acquisition health)
Blended ROAS (overall profitability)
CLV trend (is the LTV assumption still valid?)

Section 6 — POAS as the next step

POAS = Profit on Ad Spend = Gross Profit ÷ Ad Spend

POAS removes the margin headache entirely by passing profit as the conversion value to Google Ads instead of revenue. Smart Bidding then optimises directly to profit. Breakeven POAS is always 1.0 regardless of margin.

Tools that do this: ProfitMetrics, Polar Analytics, StoreHero. They sit between your store and Google Ads, calculate profit per order, and pass it server-side into the conversion value.

Pros
• One target across all margin tiers (no segmentation required)
• Eliminates the "10× ROAS but losing money" trap
• Croud's playbook explicitly endorses this direction (cost_of_goods_sold → SA360 → profit-focused bidding)
Cons
• Integration work / ongoing subscription cost
• Requires clean COGS data per SKU
• Adds a dependency between your store and your bidding

When to consider it: once you've done the margin-tier work and you're hungry for more refinement, or when the catalogue has too many tiers to manage practically. Before that, margin-tier campaigns get you 80% of the benefit with no integration cost.

Section 7 — Decision checklist

Run this before you set or change any tROAS target:

Section 8 — Quick reference

BREAKEVEN ROAS: 1 ÷ contribution margin %
TARGET ROAS: Breakeven + 20–30% (healthy) or 30–50% (thin)
INCREMENTS: Move targets by max 10–20% per change, wait 14 days
SEGMENTATION: Use custom labels in Merchant Center (custom_label_0)
PORTFOLIO COUNT: 2–3 portfolios per account, grouped by similar targets
NEW CUSTOMER LIFT: Multiplier = actual (CLV ÷ first-order AOV)
LEARNING PERIOD: 7–14 days; never tinker during it
MAIN METRIC: Projected ROAS, not actual ROAS, during learning