
The Scenario: A South African Store Showing 4x ROAS With Shrinking Cash
Consider an illustrative Johannesburg-based online fashion retailer - call it a mid-sized Shopify store turning over roughly R6 million a month, spending about R600,000 on Google Ads. Google Ads reports roughly R2.4 million in conversion value from that spend, a clean 4.0x return on ad spend. The dashboard is green. Yet the founder notices something uncomfortable: despite the spend increase, the bank balance at month-end is lower than two months earlier. This is not a platform bug. It is the gap between the number Google Ads reports and the profit the business actually books.
That gap is the subject of this playbook. The scenario is hypothetical and illustrative - no real client figures - but the mechanics are routine in South African e-commerce, SaaS, and marketplace businesses. Using ZAR worked examples and formulas, the aim is to show you how to convert a Google Ads ROAS report into a genuine return on investment measure, and what to fix in order before scaling spend further.
Google Ads defines ROAS as conversion value divided by cost - a revenue ratio, not a profit figure. That definition is documented by Google Ads Help, and it is the single most misunderstood metric in performance marketing.
Why a Healthy-Looking ROAS Can Still Lose Money in South Africa
A ROAS of 4.0x sounds strong until you build the cost stack. The reported conversion value of the hypothetical retailer above is gross revenue before several costs that every South African store absorbs. The absolute numbers matter less than the structure, because the same structure applies whether a store turns over R200,000 or R20 million a month.
The cost layers that sit between ROAS and profit
A ROAS of 4.0x means R4 of revenue for every R1 spent. A store with 50% gross margin then has R2 left to cover every other cost. Typical layers include cost of goods sold, the 15% South African VAT captured in reported revenue, last-mile courier fees, fashion returns often running substantial portions of orders, payment gateway fees of roughly 2-3.5%, agency or management fees, and fixed overheads. In the illustrative scenario the retailer's margin after all this would be wafer-thin or negative once ad spend is deducted from actual profit - which is why cash shrinks despite the green dashboard.
The Margin-and-Cost Stack Behind a ZAR ROAS Figure
Capturing this correctly requires that two things change: conversion value must reflect actual order value (including VAT where revenue reporting includes it), and margin data must be joined to that value so you can compute profit per order. Tax treatment matters here - the South African Revenue Service documents that VAT is levied at 15% on taxable supplies, and that affects whether your Google Ads conversion value is net or gross of VAT. Consistency, not which convention you pick, is what makes ROI computable.
If your Google Ads conversion value includes VAT but your profit calculations exclude it, every ROAS you calculate will be inflated by roughly 15% relative to real cash. Pick one convention across the ad platform, GA4, and your store back office, and reconcile against it.
ROAS vs ROI vs POAS vs MER: What Each Metric Hides
No single metric covers everything. Each one is useful for a different decision, and the failure mode is using ROAS for a decision that only ROI, POAS, or MER can answer. The table below maps them.
| Metric | Definition | What it ignores / hides | When to use it |
|---|---|---|---|
| ROAS | Gross revenue ÷ ad spend | Margin, returns, fees, VAT | Channel-level reporting and bid signals, never a profit verdict |
| ROI | (Incremental profit - ad spend) ÷ ad spend | Brand demand, mix, seasonality unless subdivided | Board-level profitability, budget allocation across channels |
| POAS | Profit ÷ ad spend | Organic halo unless incrementality modelled | Setting tROAS on margin-adjusted conversion values |
| MER | Total revenue ÷ total marketing spend | Per-channel detail | Guardrail metric for blended efficiency across all spend |
Making Google Ads Conversion Values Margin-Aware
The most direct lever on ROI is not the bid strategy - it is what conversion value you send into Google Ads. Google Ads Help documents that conversion values can be passed per conversion and optionally adjusted; if you pass revenue, bidding optimises for revenue. If you pass margin-adjusted value, bidding optimises for profit.
The practical approach is to pass distinct conversion values per product category, based on contribution margin after GST/VAT, shipping subsidies, expected returns, and gateway fees. High-margin categories receive higher values and pull more spend; low-margin categories with heavy returns get values that reflect their true profit contribution. This is typically implemented via server-side tracking or a cleaned data pipeline, not the default purchase tag.
// Illustrative margin-adjusted value (numbers are estimates, not benchmarks)
margin_adjusted_value = order_revenue_excl_vat
* gross_margin_rate
- expected_return_cost
- payment_gateway_fee
- shipping_subsidy_per_order
// Example: R1,000 order, 50% margin, R40 returns, R30 fee, R25 shipping
example = 1000 * 0.50 - 40 - 30 - 25 // = R405 contribution profit
bid_signal = 405 / order_revenue_excl_vat // ~0.41 of revenue
Calculating Break-Even ROAS and POAS (With Worked ZAR Examples)
Break-even ROAS equals one divided by gross margin, adjusted for other costs. A 50% gross-margin business breaks even at 2.0x on advertising spend only; add returns, fees, and shipping and the true break-even climbs - often closer to 2.3-2.6x. At that point, a 4.0x ROAS is not automatically much profit; it is 4.0x revenue against a built-in cost floor.
Break-even ROAS = 1 ÷ gross margin. A 40% margin business breaks even at 2.5x; a 60% margin business at 1.67x. Every Rand of reported spend must clear that bar before it contributes any profit.
Worked POAS example: an ad group spends R50,000, generates R200,000 revenue excl. VAT, and delivers R80,000 contribution profit → POAS = 1.6, meaning each Rand of ad spend returns R1.60 of profit. A second ad group spends R30,000, generates R105,000 revenue, and delivers R37,000 profit → POAS = 1.23. If both report 4.0x and 3.5x ROAS respectively, ranking on ROAS would favour the first; ranking on POAS still favours it, but the second's growth potential may justify keeping it under tighter targets rather than cutting it.
If you are unsure where your true break-even sits, a reporting review via Prebo Digital's custom reporting approach usually exposes one or two cost lines that were never factored into bid targets.
Separate Brand From Non-Brand Before You 'Improve ROI'
Brand campaigns routinely report the highest ROAS in the account and the lowest incrementality. A shopper already searching your brand name will often convert regardless. If brand spend is 20-30% of budget and reports 8x-12x, the blended 4x number is being propped up by captured demand you barely paid to create. Before any ROI improvement programme, split the account into brand and non-brand segments and evaluate each on different metrics.
Non-brand campaigns should be judged on margin-aware POAS and new-customer CPA. Brand campaigns should be judged on incrementality - typically a geo holdout or conversion lift test - rather than their reported ROAS. Only a fraction of brand spend is genuinely incremental, a nuance worth understanding before you cut or scale brand budgets.
Where Attribution Breaks: Reconciling Google Ads, GA4, and Store Data
A healthy ROI programme is built on reconciliation, not trust. Google Ads auto-tagging, GA4, and the store back office will almost never agree on the same month's revenue. Consent Mode, attribution windows, internal filters, and deduplication differences all shift counts. The practical approach is a monthly reconciliation table of platform-reported conversions, GA4-sessions-to-purchase, and actual orders from Shopify or WooCommerce - and an explicit tolerance factor for each.
Consent matters here. Where users decline consent, Google's systems use modelled conversions; GA4 documents how consent mode handles this, and Google Ads' Consent Mode v2 guidance explains what data is estimated. POPIA compliance adds a further layer in South Africa, and the Information Regulator's guidance is the reference point for consent handling. Without clean consent signals, your bidders are optimising on partial data. Server-side tagging and deduplicated event pipelines are the fix - not simply adding another tag.
Consent-denied traffic is modelled, not measured. If your Consent Mode setup has never been audited, treat reported conversion values as directional. A server-side tagging audit is usually the highest-leverage tracking project an SA advertiser can run.
Consulting on this kind of tracking foundation is part of Prebo Digital's CRO and tracking work, which is the prerequisite for trustworthy ROI reporting.
Pacing for SA Seasonality and Cash Flow: Black Friday, Festive Season, Janu-worry
South African e-commerce ROI is not a 12-month flat line. Spend and margin concentrate around three predictable windows: Black Friday and Cyber Monday in November, the festive December period, and a cash-tight January where consumer spending contracts sharply. Cash flow planning matters as much as bid strategy - a Black Friday campaign that spends heavily in October to warm audiences may deliver ROAS in November but require working capital in October.
| Window | Priority | ROI consideration (illustrative) |
|---|---|---|
| Sept-Oct | Audience building, creative testing | Lower immediate POAS expected; measure pipeline value, not profit |
| Black Friday / CM | Volume with margin protection | Discounting compresses margin; recalculate break-even before setting tROAS |
| December | Fulfilment reliability, gifting SKUs | Return rates and courier delays can erode booked profit after ROAS is reported |
| January | Cash preservation, retention focus | Cutting spend is not always right; protecting profitable SKUs matters more |
Measuring the Outcome: POAS, MER, and Why Incrementality Matters
Once conversion values are margin-aware, two reporting metrics should sit alongside ROAS: POAS (profit per Rand of spend) and MER (total revenue ÷ total marketing spend across channels). MER is a guardrail - a blended number that cannot be gamed by shifting credit between channels - while POAS lets you tune bids inside Google Ads. Neither tells you what would have happened without the spend.
Incrementality answers that. For many accounts, a geo-holdout test on two markets with similar volume - say, a Western Cape radius vs a Gauteng radius - reveals what the reported ROAS was already capturing as organic demand. Geographic and conversion lift options inside Google Ads let you quantify this without a full statistical team. Even a single well-designed holdout is more valuable than another month of reported-ROAS screenshots.
Segmenting ROI by Geography, Product Margin, and New vs Returning Customers
South African Google Ads performance varies sharply by geography. Gauteng, Western Cape, and KwaZulu-Natal typically represent the largest share of spend - but not uniform margin. Courier lead times, return rates, and postcode delivery costs differ, and location bid adjustments should reflect observed profitability, not just volume. Language variation matters too: search terms in English, Afrikaans, isiZulu, and isiXhosa may produce different conversion rates and CPA, which affects match type decisions and negative keyword hygiene.
Within the customer base, new-customer CPA and returning-customer CPA should be reported separately. First-order CAC should be evaluated against payback and LTV, not against a blended ROAS that silently offsets acquisition cost with repeat purchases. A campaign that looks unprofitable on first-order ROI may be highly profitable on 12-month LTV; alternatively, a high-ROAS campaign may be harvesting repeat buyers who would have returned anyway. Merging margin-adjusted conversion values with customer segmentation and, where available, a Shopify or ProfitMetrics-integrated profit feed makes this computable.
What to Fix in Order: A Sequencing Framework Before Scaling Spend
Attempting to fix ROI by immediately raising tROAS targets usually makes things worse. The correct sequence is: 1) reconcile tracking across Google Ads, GA4, and store data; 2) validate Consent Mode and server-side tagging; 3) send margin-adjusted conversion values; 4) set break-even-informed tROAS targets; 5) split brand vs non-brand; 6) add geography and product-margin segmentation; 7) run an incrementality holdout; 8) only then scale spend. Skipping steps 1-3 means every subsequent decision is built on partial data.
The single highest-leverage action for most SA accounts is not a new bid strategy - it is a tracking audit that produces one agreed source of truth for revenue and profit. Everything else in this playbook depends on that foundation.
If you want to see how this sequencing has been applied to real accounts, the Prebo Digital case studies walk through campaign-level reporting and margin-aware attribution work. For a conversation about your specific account, the team is reachable via the contact page.



