Skip to main content
    European Search Awards 2026 Winner - Best PPC Agency
    Google Shopping

    How to Tell If You're Wasting Money on Google Shopping — Without Logging Into the Account

    Most of what's wrong with your Google Shopping is visible to your competitors. Just not to you.

    9 min readJune 2026Chris Avery

    The expensive mistakes sit in plain sight — on the search results page — if you know what you're looking at.

    Not in the Google Ads dashboard, where the numbers have been tidied into a reassuring ROAS. On the live page, where your customers actually see your ads. Here are the wasted-spend signals we read from the outside, with nothing but a browser and ten minutes. No login. No audit access. No NDA.

    1. You're on the wrong CSS, paying ~20% more per click

    In the UK and EU, every Shopping ad runs through a Comparison Shopping Service (CSS). Google's own CSS carries roughly a 20% margin baked into the auction bid. Third-party CSS partners strip most of that out, so the same placement costs up to ~20% less per click.

    How to check

    Search any of your products and look under each Shopping card. If yours reads "By Google" and the brands next to you read "By Find the Trend", "By Feedoptimise" or "By Klarna", you're on Google's own CSS and paying the premium. It's printed on the card. It never appears in the Ads interface, which is exactly why it goes unnoticed for years.

    It's a configuration change, not a strategy overhaul, which makes it the fastest profit recovery available. More on Google CSS →

    2. Your clearance and your full-price newness share one campaign

    This is the quiet margin killer. A campaign carries one bid strategy and one target. Clearance and full-price newness need opposite targets: high-margin newness wants a high target that protects price; marked-down stock wants a low target tuned to recover cash. Put them together and the algorithm chases the easy conversions — the discounts — starving your profitable range and propping up a blended ROAS that hides the damage.

    How to check from outside

    Click one of your full-price ads and one of your discounted ads. Look at the landing-page URL. If both carry the same gad_campaignid, they're in the same campaign, sharing one bid target.

    We did exactly this on a UK menswear retailer last week: a 33%-off clearance suit and a £200 full-price suit, both returning the identical campaign ID. One bid target, two opposite jobs.

    This is the problem our BOI® method is built to fix: every SKU gets one job at a time. Full-price newness runs as Profit, clearance runs as Recovery, each on its own target and budget.

    3. You're running PMax with no control — and a "catch-all" campaign

    Performance Max blends Shopping, Search and Display, brand and non-brand, into one black box with no query or placement control. It's fine in the right hands and a liability when it's left to spray. The tell is in the same landing URLs: a utm_campaign value like pmax-suits confirms PMax is doing the work.

    Worse is the campaign literally named "catch-all."

    We've seen it. A catch-all is a dump bucket for products that were never mapped to a proper campaign. They inherit whatever budget and target the bucket happens to carry, managed by no one. If a slice of your spend is running through a catch-all nobody's touched since launch, it isn't being optimised. It's being tolerated.

    How we control Performance Max →

    4. Your resellers and stockists are outbidding you on your own products

    Search your own brand name, or your own bestsellers, and watch who shows up in Shopping. If John Lewis, Next, a marketplace or a multi-brand reseller is sitting on the identical product — often with free delivery you don't offer — you're paying to defend demand they then convert.

    We see this constantly in menswear, where multi-brand suit retailers buy the ad slots on a brand's own products while the brand itself sits in the free listings. You fund the click; they close the sale. That's not a bidding problem you can tweak your way out of. It's a channel-conflict decision you need to make on purpose.

    5. Your tracking is broken, so your reporting can't even see the leak

    The most uncomfortable one. We've clicked ads whose landing URLs fire utm_campaign={campaign} — the ValueTrack placeholder never gets replaced, so the campaign name logs literally as "{campaign}". Others bury the gclid and UTMs in the URL fragment, after a stray #, where analytics simply doesn't read them.

    When tracking is malformed, your Shopping conversions don't attribute properly. Shopping looks like it isn't working, so it gets throttled, and competitors quietly take the ground you've vacated. The leak and the blindness to the leak are the same bug.

    Why your dashboard hides all of this

    Because the dashboard reports gross revenue and a blended ROAS. It doesn't tell you the number is propped up by clearance. It doesn't tell you a third of your dress revenue walks back out the door as returns. It doesn't tell you you're funding clicks your stockists close, or that the auction you're winning costs 20% more than it should.

    ROAS is a revenue ratio. It's blind to margin.

    £4 back on a 55%-margin product is profit; £4 back on a 5%-margin clearance line is a loss once you've paid for the click and the stock. The only number that doesn't lie to you is contribution margin after ad spend — POAS, not ROAS. Most "healthy" Shopping accounts look healthy precisely because no one's measuring the thing that matters.

    Check your own Shopping in ten minutes

    Open an incognito window and run these on your own store:

    CSS

    Search a product, read the line under your Shopping card. "By Google" means you're likely overpaying.

    Mixing

    Click a full-price ad and a sale ad; compare the gad_campaignid in both URLs.

    PMax

    Check the utm_campaign value in those URLs. Is it a black box? Is there a "catch-all"?

    Channel conflict

    Search your brand name; see who else is bidding on your products.

    Tracking

    Look at the full landing URL. Are the UTMs and gclid clean, or are they firing {campaign} or sitting in the fragment?

    If your Shopping looks healthy but the bank balance doesn't agree, the gap is usually visible from the outside — and now you know where to look.

    See what we'd see

    We do this for DTC and ecommerce brands spending £3k–£500k a month on Google Ads, and we lead with profit, not revenue. If you'd rather we ran the outside read for you, send us your store URL for a free profit-first audit and we'll tell you exactly what we can see.

    Request a Free Audit

    FAQ

    Can you audit a Google Ads account without access?

    Not a full account audit, but a surprising amount is visible from the live search results page and the ad landing URLs: your CSS, whether clearance and full-price share a campaign, PMax structure, reseller competition and broken tracking templates. It's enough to know whether there's money on the table before anyone shares a login.

    What is a CSS and why does it affect cost?

    A Comparison Shopping Service is the route every UK and EU Shopping ad takes to the auction. Google's own CSS includes roughly a 20% margin in the bid; third-party CSS partners remove most of it, so the same placement can cost up to ~20% less per click. You can see which one a brand uses on the 'By…' line beneath each Shopping card.

    How do I know if clearance and full-price are in the same campaign?

    Click a full-price ad and a discounted ad and compare the gad_campaignid parameter in each landing URL. If they match, both products share one campaign and one bid target, which means a target that's right for clearing stock is wrong for protecting margin on newness, and vice versa.

    What's wrong with running everything through Performance Max?

    Nothing, if it's controlled. The risk is handing PMax your whole catalogue with no segmentation: full-price newness, clearance and aged stock all optimised to a single target, inside a black box you can't see into. A 'catch-all' campaign is the classic symptom.