
The Tuesday a Cape Town Store Sees 312 Disapproved Products and Revenue Numbers That Won't Reconcile
Picture an operations lead at a Cape Town Shopify store on a Tuesday morning. Merchant Center diagnostics shows 312 products disapproved. Google Ads, meanwhile, reports a revenue figure that is roughly three times what the store's back-office actually settled the previous week. The media buyer is being asked to explain the gap; the finance lead wants to know which number is real; and nobody in the room owns the feed.
This is the operational reality of running Google Ads for e-commerce in South Africa. It is rarely a bidding problem first. It is almost always a data-integrity problem: what the Merchant Center knows about your catalogue, what Google Ads believes a conversion is worth, and whether the customers you paid to acquire actually completed a settled transaction. Smart bidding is only as good as the inputs underneath it, and in this market those inputs are shaped by VAT treatment, courier economics, payment-method behaviour, and POPIA-compliant consent.
Treat the Google Ads account as a downstream consumer of two data sources: the Merchant Center feed and the conversion signal. Fix them in that order before touching bids.
Why Copy-Pasted US or UK Google Ads Advice Fails a South African Online Store
Most Google Ads guidance written for e-commerce assumes a tidy set of conditions: one delivery model with predictable lead times, a card-dominant payment mix, a single national currency with tax handled in a familiar way, and consent tooling that matches the traffic privacy regime. South African stores break all four assumptions at once.
- Delivery is courier-dependent, often door-to-door or to a collection locker, with lead times that vary materially by region.
- Payment preference is split between card, instant EFT and cash-style flows across providers such as Ozow, PayFast, Yoco, Peach Payments and PayGate. Each provider hands back a different signal at a different moment in the funnel.
- VAT sits at the standard rate of 15% per SARS, and local shoppers expect to see a total price in ZAR, not a net-of-tax figure that surprises them at checkout.
- POPIA governs the processing of personal information, which means consent logic must be designed deliberately, not bolted on after the campaign set is live.
When a South African operator applies a UK or US playbook unchanged, the failure is usually structural: Shopping ads pointing at prices that do not match the landing page, conversion events that fire before money clears, and remarketing audiences that shrink because consent was never properly wired.
Delivery Economics, Returns and Payment Methods: Inputs Smart Bidding Cannot See on Its Own
Google's bidding algorithms observe what you tell them. They do not see your courier invoice, your return rate by category, or the difference between an instant-EFT payment that settled and a card authorisation that was later reversed.
That gap matters most where conversion events fire at payment initiation rather than at settlement. Many South African checkout stacks trigger the Google Ads conversion tag when the shopper lands on the success page or initiates payment, not when funds are confirmed. For instant-EFT flows this can be close. For cash-style flows or delayed card settlements, the window is wider. Your reported revenue drifts ahead of settled revenue - directionally, never by a fixed percentage you can rely on.
Layered on top: delivered-but-returned orders. A store with a meaningful returns rate by category is feeding smart bidding a signal that is optimistic by default. The practical fix is not to chase attribution parity. It is to build a value signal that is at least net of expected returns, and to run a reconciliation loop that surfaces the drift rather than pretending it away. If you need a structured reporting foundation, see our custom reporting approach, which is built around reconciled data rather than platform dashboards in isolation.
Do not treat a platform-reported revenue figure as a bank balance. Reconciliation is a recurring process, not a one-time report, and no tooling delivers attribution parity as a permanent state.
Feed First: A Merchant Center Hygiene Checklist for South African Stores
Before a store spends a rand on Shopping or Performance Max, its product data must pass Google's product data specification. The following checklist reflects the issues we see most often in local catalogues. Work through it in order, because later items depend on earlier ones being clean.
- Identifiers: GTIN or MPN set correctly where they exist. For own-brand or handmade goods where no GTIN exists, use the identifier-exists flag correctly rather than padding the field.
- Price and currency: submit ZAR, VAT-inclusive, matching the landing page exactly.
- Availability: stock status that reflects reality within hours, not overnight batches.
- Shipping settings: configured in Merchant Center to match actual delivery services and costs for South African addresses.
- Returns: returns policy and window set explicitly, since Google uses this in eligibility and quality signals.
- Image and title quality: no promotional text in the title field, no street-level data that trips policy review.
Diagnostics triage should become a named responsibility, not an afterthought. If nobody owns a weekly feed review, disputed items accumulate silently. The same applies on the ads side - accurate conversion tracking is a prerequisite for any of this to matter, and Google's own conversion tracking setup guide is a useful baseline for validating what is firing.
Pricing, VAT and Identifier Rules That Trigger Merchant Center Disapprovals
Merchant Center disapprovals in South African accounts cluster around three causes: a price mismatch between feed and landing page, a tax treatment that confuses the comparison, and identifier problems. On VAT, the local convention is straightforward - SARS levies VAT at the standard rate of 15%, and South African consumers expect the displayed price to include it. If your feed submits a net price while your landing page shows the gross price, Google flags the mismatch and the product is disapproved or suppressed. Align the two before anything else.
Shipping and returns settings are the second recurring source of friction. If your feed says free delivery but your checkout charges a courier fee for outlying areas, expect policy flags. Google's shipping and returns settings guidance is worth revisiting each time your courier mix changes. For a fuller treatment of required feed attributes, the product data specification is the authoritative reference.
Consent, POPIA and Consent Mode: What Happens to Your Remarketing Lists After Implementation
POPIA's lawful processing conditions apply to any South African store collecting personal information, including for advertising measurement. Consent Mode is Google's mechanism for adapting tags based on a user's consent state, and it is mandatory for EEA and UK traffic under Google's requirements - but a South Africa-only store still needs a consent framework that is POPIA-compliant, and it interacts directly with the size and quality of your remarketing audiences.
The directional effect is simple: where consent is not granted, tags operate in a restricted mode and audience-building signal degrades. Directionally, remarketing list sizes will look smaller and conversion modelling becomes more reliant on modelled rather than observed events. That is not a reason to skip consent - it is a reason to design the consent experience properly so the share of granted users is as healthy as POPIA allows. The Information Regulator's guidance is the reference point for what constitutes a valid, informed choice. Google's Consent Mode documentation explains the modes and how they affect measurement.
Audit the consent banner as a conversion asset, not just a compliance checkbox. The share of users who grant consent directly determines how much of your funnel signal Google Ads can actually see.
Building a Value Signal That Reflects ZAR Margin and Returns, Not Just Checkout Events
Once the feed is clean and consent is wired, the next lever is the value you attach to each conversion. Default e-commerce tracking passes the checkout basket value, which ignores delivery cost, returns and margin. A more useful signal is at least net of expected returns, and ideally margin-aware by category. The formula below is illustrative - replace the placeholders with your own figures.
// Illustrative conversion value formula (ZAR)
// Run at order-confirmation or in a post-purchase reconciliation job
const basketValue = order.subtotalZAR; // VAT-inclusive
const deliveryCharge = order.shippingZAR; // what the customer paid
const courierCost = order.actualCourierCost; // what you paid
const returnRate = category.expectedReturnRate; // 0.05 to 0.25 typical range
const netRevenue =
(basketValue * (1 - returnRate))
- (courierCost - deliveryCharge);
const grossMargin = category.grossMarginPct; // e.g. 0.30 to 0.55
const valueForBidding = netRevenue * grossMargin;
// Pass valueForBidding as the conversion value
// to Google Ads via your server-side or enhanced tagThe point is not precision. It is direction: a bid strategy fed a value that reflects settled, margin-adjusted revenue will allocate budget differently from one fed a gross checkout value. On Shopify this can be implemented through a server-side checkout completion hook. On WooCommerce, the same logic lives in a custom order-status hook. If you are running Amazon alongside Google, the same value discipline applies to Amazon marketing and should be documented once, then reused consistently.
If a store changes its delivery partner mid-quarter, revisit the value formula. Courier cost assumptions baked into a conversion value go stale quickly.
Campaign Architecture for a South African Store: Branded Defence, Discovery, Demand Capture and Bottom-of-Funnel
A workable architecture separates intent rather than blending it into one Performance Max campaign that cannot be diagnosed. Four layers cover most South African stores:
- Branded search defence: a small, tightly negative-matched campaign protecting the brand term. Cheap, high-intent, easy to measure.
- Discovery: Shopping and Performance Max to surface the catalogue. This is where feed hygiene pays off most directly.
- Demand capture: non-brand search for category and comparison terms. Requires disciplined negative keyword management.
- Bottom-of-funnel: Dynamic Remarketing plus Demand Gen to re-engage consenting visitors. Deliberately sized by your consent posture.
The discipline here is to keep Measurement and diagnoses viable - a single campaign that mixes these intents gives you no way to isolate whether a performance drop is feed-related, consent-related or creative-related.
The Weekly-to-Quarterly Measurement Loop: Feed Checks, Reconciliation and MER Reviews
Run three rhythms in parallel. Weekly: feed approval rate, diagnostics count, conversion tracking volume against store orders. Monthly: reconciliation between GA4, Google Ads and the back-office ledger - expect drift and investigate the direction and cause. Quarterly: MER and contribution margin review, using settled revenue and true delivery cost, not platform-reported revenue.
| Cadence | Check | Owner | What it catches |
|---|---|---|---|
| Weekly | Merchant Center approval rate and diagnostics count | Feed owner | Disapprovals, missing attributes |
| Weekly | Conversion volume vs store orders | Media buyer | Tag firing errors, consent regressions |
| Monthly | Reconciliation of GA4 / Ads / back-office | Analyst | Systematic drift, settlement gaps |
| Quarterly | MER and contribution margin | Finance + growth lead | Profitability by category and channel |
Which South African Store Profile Are You? Three Set-Ups and What Each Needs First
The first action differs by profile. Map yourself honestly.
| Profile | Typical shape | Do this first |
|---|---|---|
| A. Sub-R50k/month Shopify store | Under 100 SKUs, simple catalogue, one courier partner | Fix feed VAT alignment and place revenue-based conversion value; defer complex PMax structures |
| B. Scaling WooCommerce brand | 200+ SKUs, category-based returns, multiple couriers | Category-level margin-aware values, shipping settings by region, and a split campaign architecture |
| C. B2B SaaS selling into South Africa | Checkout-style funnel with trial or demo step | Define a qualified-lead value, wire Consent Mode, and separate branded from non-branded terms |
A Shopify store at profile A should rarely copy a 200-SKU strategy. A B2B SaaS at profile C should not borrow a DTC conversion model at all - the value signal is a qualified opportunity, not a basket. Profile B carries the most operational complexity, so it needs the cleanest feed and the most disciplined reconciliation. If you want to see how this operational sequencing looks in practice, our case studies show the trade-off decisions behind real engagements.
Common Trade-Offs and Where Budgets Leak
Three leaks account for most of the waste we see. First, budget spent on a category with a high return rate that looks healthy on platform ROAS but loses money once returns settle. Second, Performance Max campaigns running with incomplete feeds, producing broad matches that rarely convert. Third, remarketing budgets sized on pre-consent audience numbers that no longer hold after a proper consent implementation. Each is a data problem masquerading as a bidding problem. The fix is operational: feed ownership, a margin-aware value signal, and a reconciliation rhythm. If the reporting layer needs reworking, a structured conversion rate optimisation review can surface where checkout friction and consent friction overlap, and our Google Ads service documentation covers how we sequence feed, tracking and bidding work.


