Google Ads for Shopify is a data problem before it's a campaign problem

Most Shopify stores running Google Ads hit the same wall. The account spends more every month, the dashboard shows conversions, and yet profit stays flat and nobody can say with confidence which products or campaigns actually paid for themselves. The usual response is to switch campaign types, turn on Performance Max, or rework the bidding. That rarely fixes it.

The cause is almost always underneath the campaigns, not in them. Google Ads for a Shopify store runs on two inputs: the conversion data it optimizes toward, and the product feed it advertises from. When either is wrong, no amount of campaign tuning compensates, because the system is optimizing hard toward numbers that do not match reality. Get those two right and the campaign decisions get much simpler.

This is the order most stores have backwards. The campaign type is the last decision, not the first.

Start with conversion data you can trust

Before campaign structure, before bidding, the real question is whether Google Ads is optimizing toward actual revenue or toward a number that only looks like revenue.

On Shopify, that number is rarely clean by default. Purchases get counted through the native Shopify and Google channel, through GA4, and through the Google Ads tag, and those sources double-count each other, disagree on value, or report conversions Google's modeling inflated. A store that scales spend against an inflated count is paying to optimize toward a mirage. The bidding algorithm does exactly what it is told: it buys more of whatever it believes is converting, even when a share of those conversions is fictional.

The fix is conversion tracking that captures the real purchase value from Shopify, deduplicated so one order is one conversion at its actual revenue, and reconciled against what Shopify itself reports as sales. It is unglamorous work, and it is the single highest-leverage thing you can do for a Shopify Google Ads account. Optimizing toward verified revenue instead of platform-reported conversions changes which campaigns the algorithm favors and where the budget flows.

Your feed is what Google advertises

For Shopping and Performance Max, where almost all Shopify ad budget goes, the product feed is the campaign. Google is not advertising your store, it is advertising the rows in your feed. The titles, attributes, GTINs, product types, prices, and availability in that feed decide which searches you appear on, against which competitors, and at what cost per click. A campaign cannot show on a query the feed does not support.

This is a paid media requirement, not a merchandising exercise. The feed Google needs is not always the catalog the store runs on. Product titles written for a category page are often too vague for search, missing the brand, model, size, or use case a shopper actually types. Items drop out over missing GTINs or disapprovals nobody is watching. Prices and stock fall out of sync, so Google spends sending clicks to products that are out of stock or priced wrong. Every one of those is spend lost or capped before a campaign setting ever comes into play.

The practical consequence is blunt. A thin or inaccurate feed sets a ceiling on performance that no bidding strategy, budget increase, or restructure can lift. Feed quality is the input that decides how high the rest of the account can go.

Performance Max trades control for automation

This is where most Shopify advice gets evangelical about Performance Max. The honest version names the tradeoff.

Performance Max is where Google steers ecommerce advertisers, and it can perform well. It also blends Shopping, Search, Display, YouTube, and Gmail into one campaign and hides most of the underlying data: which queries triggered ads, which placements ran, how budget split across channels. You give up visibility and control in exchange for Google's automation, and a Shopify store that runs Performance Max blind often watches the campaign pad its reported numbers with cheap branded and remarketing traffic it would have won anyway.

The way to run it without being run by it is the two foundations already in place. Trustworthy conversion values give the automation an honest target. A clean, well-structured feed gives you the one lever Google still respects inside Performance Max. From there, structure does the rest: separating asset groups by margin or product line, excluding branded search so PMax is judged on incremental sales, and watching the feed and channel signals that are still exposed. Performance Max is a reasonable choice for many Shopify stores. Running it without measurement and feed control is not.

Bid to real margins, then close the loop

Once the data and feed are right, bidding can finally do its job. Value-based bidding lets the algorithm optimize toward the orders that matter most, but only if it is fed real values. Passing a single static conversion value, or revenue with no regard for margin, tells Google to chase top-line sales whether or not they make money. Feeding back actual product values, and where possible margin rather than revenue, points the automation at profitable demand instead of just more demand.

One more layer is worth flagging, because it deserves separate treatment. Even reconciled to real margin, not all transactions are worth the same to the account. A first purchase from a brand new customer and a repeat purchase from someone who already buys from you carry very different value to an acquisition campaign, and Google will count them as identical unless you tell it which is which. Deciding what a new customer is actually worth, and bidding for one differently than for a returning buyer, is where ecommerce paid media gets genuinely sophisticated. Not all transactions are created equal, and that is a topic of its own.

Then you close the loop, the part that separates an account that scales from one that stalls. Platform-reported ROAS is Google grading its own work, and inside Performance Max that grade is generous. The number that matters is what Google Ads spend produced in actual Shopify revenue and contribution, reconciled outside the ad platform. That reconciliation is also how you claw back the visibility Performance Max takes away: when the platform hides the channel detail, measuring against real Shopify outcomes tells you whether the spend is incremental or whether you are paying for sales you already had.

This is the whole argument in practice. The campaign work and the measurement work are not two jobs. The measurement is what makes the campaign decisions correct.

What changes when the foundation is right

I took over paid media for a Shopify store from the agency that ran it before, and applied exactly the foundation above: conversion tracking reconciled to real Shopify revenue, a rebuilt feed, and bidding pointed at value rather than raw conversions. Within a year, cost per conversion fell from $88.93 to $52.57, average order value rose from $268.20 to $301.51, and return on ad spend went from 303% to 573%. The account did not just get cheaper, it got better: lower cost to acquire, a higher value per order, and revenue per ad dollar that nearly doubled. That is what happens when the bidding stops chasing conversion counts and starts chasing real value.

None of this requires a bigger budget. It requires the account to optimize toward numbers that are true, which for most Shopify stores is the entire difference between Google Ads that plateau and Google Ads that scale.

That measurement-first approach to paid media is the core of the Ecommerce Performance work, built on the kind of Analytics and Reporting foundation this whole piece describes.