An online cookware shop owner at her packing bench holds a set of wooden spoons in one hand and a cast-iron skillet in the other, deciding which product is worth it, with branded shipping boxes on the shelves behind her
Google Ads

We Checked Which Products Made Money in Performance Max. It Wasn't the Ones We Expected.

A Performance Max profit margin story: we worked out real profit per product in a client's store, and the high-margin products made less than we expected.

Nora BennettPaid Media Strategist, BrandRocket
8 min readNovember 11, 2026

This fall, one of our clients asked us a simple question: which of the products we advertise actually make money?

It sounds like something an ad account should answer on its own. It doesn't. Google's reports tell you what sold and how much you spent to sell it. They don't tell you what was left over once the product, the shipping and the card fees were paid for. So we went and found out. The answer surprised us, and it changed how we're building the account.

The Account Looked Healthy on ROAS

The client runs an e-commerce store on Shopify with a large catalog, more than 2,000 products. Most of their Google spend runs through Performance Max, Google's campaign type that puts your products in front of shoppers across Shopping, Search, YouTube and the rest of Google's network from a single campaign.

The account had two Performance Max campaigns, named the way plenty of stores name them: "High Margin" and "Standard Margin." The idea was sound. Products that earn more on each sale can afford to spend more to get that sale, so they get their own campaign, their own budget and their own target. Everything else goes in the other one.

Both campaigns were judged on ROAS, return on ad spend. If you spend $1 and Google reports $4 in sales, that's a 4x ROAS. By that measure, things looked fine. Both campaigns were bringing in sales at returns that looked healthy on the dashboard.

But ROAS only counts sales. A $100 sale at 4x looks exactly the same whether the product cost you $20 or $80. Our client wanted to know the second part, and so did we.

Only Half the High Margin Campaign Earned a High Margin

The first thing we checked was simple: were the products in the High Margin campaign actually high margin?

Mostly, they weren't. When we compared each product's selling price against its actual cost in Shopify, only about half the products in that campaign (47%) cleared the bar for high margin, which we set at 55% or more. The products that didn't clear it weren't a small leftover, either. Standard-margin products were taking about two-thirds of the campaign's product ad spend.

The reverse was true too. About a third of the store's genuinely high-margin products were sitting in the Standard Margin campaign, and about one in five weren't getting any ad spend at all.

Nobody did anything wrong to cause this. The High Margin campaign picked its products from lists that someone built by hand, product by product. That works on the day the list is made. Then the store keeps moving. Suppliers change their prices. New products get added, and in this setup every new product landed in Standard Margin by default, whatever it earned. Old listings for products the store no longer sold kept running from a second, older product feed until we found them and cleaned them up.

A hand-built list is a snapshot. A catalog is a moving picture. Give it a year and the two stop matching.

We Worked Out the Profit on Every Product

Fixing the lists was the easy part. The bigger question was what each product actually earned once everything was paid for.

So we built that number. We took the store's real orders from Shopify, every item in every order, and subtracted what it took to fill each one:

What's left is contribution profit: the money a sale actually adds to the business after it pays for itself.

Shipping turned out to be the biggest surprise. Like a lot of stores, this one offers free shipping over a set order amount. That's good for sales, but it means the store pays for most of the shipping itself. Across the orders we looked at, the estimated cost of shipping came to about 1.85 times what customers paid for it.

Add it all up and the picture changes. On paper, measured on product cost alone, the store's margin was about 46%. Once shipping, card fees and handling came out, it was keeping about 38%. That gap matters, because every ROAS target in the account had been set against the bigger number. If you want to see how that math changes your break-even point, we walked through it in Your Ads Report a 3x Return. At a 30% Margin, Every One of Those Orders Lost Money.

The High-Margin Products Made Less Than We Expected

Here's the part we didn't see coming.

We split every advertised product into three groups by its real margin: Low (under 35%), Standard (35% to 55%) and High (55% and up). Then we asked how much of each group's ad-driven sales the store actually kept as profit after paying for the ads.

The products with the best margins were not the most profitable products to advertise. Standard beat them.

The reason is price. Most of the high-margin products in this store were lower-priced items. A great margin on a small sale is still a small number of dollars. And Performance Max charges by the click, not by the margin. If it takes the same handful of clicks to sell a low-priced item as it does to sell a pricier one, the cheaper sale has much less room to pay for those clicks.

That's the lesson we keep coming back to: margin percentage is not profit per click. A campaign called High Margin sounds like the place to put more money. In this account, it was the wrong bet.

How We Rebuilt the Campaigns

Once we could see real profit by product, the new structure followed from it. Our client approved the direction, and here's what we're building:

Three Performance Max campaigns instead of two: Low, Standard and High. Each product goes into a group based on its actual margin from Shopify cost, using the same cutoffs: under 35%, 35% to 55%, and 55% and up.

The groups update themselves every week. No more hand-built lists. Each week, every product's margin is recalculated from its current cost, and the product moves to the group it belongs in. New products land in the right place on their own.

A small buffer keeps products from bouncing. A product only changes groups when it clears a cutoff by 2 points. A product sitting at 55.5% doesn't flip back and forth every time a cost moves by a few cents.

Products with no cost on file stay in Standard and get flagged. If the store hasn't entered a cost, we can't know the margin, so the product is never treated as high margin by accident. It shows up on a list so the cost can be filled in.

Each group gets its own budget and its own target. The targets come from what each group's orders actually earn after shipping, fees and handling, not from the margin on paper. A group with thin profit gets a stricter target. A group with more room can bid harder.

Budgets cap spend, and savings stay saved. When a group spends less because its target is stricter, that money stays in the client's pocket. It doesn't get quietly moved somewhere else to keep total spend the same.

If you're weighing the bigger structure decisions on your own account, we covered those in Performance Max for Ecommerce Is Three Decisions. Google Makes All Three Look Optional.

What Happens Next

The new campaigns go live in January. We don't have results yet, and we're not going to guess at them. Rebuilding a campaign structure always takes a few weeks to settle, and the honest way to judge it is on what the store actually keeps, not on how ROAS looks in the first month.

When the numbers are in, we'll come back and share them here: what changed, what didn't, and anything we'd do differently.

In the meantime, if your Performance Max campaigns are judged on ROAS alone, it's worth asking the same question our client asked. Which of your products actually make money? If you'd like a hand finding out, that's the kind of work our Google Ads team does every day.

Reading About Ads Is Free. So Is Talking to Someone Who Runs Them.

We've run paid ads for 25+ years and seen just about every way a budget goes sideways. Get on the phone with someone who does this every day. Bring your questions, your numbers and your skepticism. You'll hang up knowing what we'd do, whether you hire us or not.

Nora Bennett · Paid Media Strategist, BrandRocket

Paid media strategist at BrandRocket. Spends her days inside Google Ads and Meta accounts, helping small businesses get more out of every dollar they spend.