Product Performance Management for Shopify Brands: Where Ad Spend Is Actually Decided
You run Meta and Google for a Shopify catalog, the account ROAS looks fine, and you still suspect part of that spend went to a sold-out size, a SKU that loses money on every order, or a product nobody buys twice. The platform cannot see any of that. For founder-operators, growth leads and agency operators: the method for judging ad spend per product, a weekly leak routine, and an estimator built from your own numbers.
STATUS, PLAINLY Every check on this page is an analysis you run or ask Drew to run. No detector is claimed that isn’t built.
The ad account is optimised. The products behind it aren’t.
Meta and Google do the job you gave them: find purchases at the target you set. The decision that makes or loses the money sits one level down, at the product, in data the ad account does not hold.
“the leaks … live in the joins between systems (spend × inventory, spend × margin, spend × repeat behavior) that ad-account-only tools don’t hold”
THE DATADREW STANCE · AUGUST 2026Luca, a profit-analytics vendor, published the example: a Meta campaign at 3.5x ROAS selling a $30 t-shirt with a 25% return rate and $10 shipping, and “every sale from this campaign loses $2.40” (verified). Now put four products behind one number.
SKU A has a 62% contribution margin. SKU B has 21%. SKU C brings customers who repeat 3x more. SKU D has eight days of stock left. The same ROAS should not lead to the same budget decision for all four.
DATADREW POSITIONING, AUGUST 2026
A: scale. B: probably losing money at a number the account calls good. C: the first order under-reads the customer. D: raise it and the budget lands on a sold-out page inside a week. Four decisions, one ROAS. That is product performance management: judging ad spend per product with stock, margin and repeat behaviour in the room, before any media-buying verdict.
Start with your symptom: which of these is your Monday?
Each has its own method piece.
Why no platform flags it, and what a day undetected costs.
READ THE CHECK → “This product does 3.5x and I think it still loses money.”Break-even ROAS per SKU, and the margin check before any raise.
READ THE CHECK → “Which products should next month’s budget go to?”Allocate by product bucket instead of by campaign.
READ THE METHOD → “Which products bring customers back, and which are one-and-done?”Gateway products, baskets and repeat behaviour by first product.
READ THE METHOD → “Budget is fixed. What do I cut and what do I feed?”Step two: grade on margin rather than platform ROAS.
READ THE METHOD → “ROAS dropped and I think the product mix moved.”Mix shift is the seventh check in the diagnostic order.
READ THE ORDER →Until then: what blended can and can’t tell you. Coming
Concentration, hidden gems and dead stock inside catalog campaigns. Coming
Three joins the ad platform cannot see
Spend lives in the ad account. Stock, margin and repeat behaviour live in Shopify and in your cost sheet. No ROAS column connects them, so each missing join has a leak, and each leak has a check.
| Join | The ad account holds | It cannot see | The leak when nobody joins them | The check |
|---|---|---|---|---|
| Spend × stock | Spend, clicks and platform conversions per campaign and per catalog item | Inventory by variant, days of cover, products set to keep selling when sold out | Google Shopping and Performance Max stop a fully sold-out item once the feed syncs; Search ads, single-product ads, Meta catalog items with a sold-out variant and products set to keep selling when out of stock keep spending | Ad spend on out-of-stock products · days-of-cover rule Coming |
| Spend × margin | Revenue per conversion, as the pixel or tag reports it | COGS, shipping, fees, discounts and returns per SKU: the margins you share | One target across a mixed-margin catalog buys whatever converts cheaply; some of it loses money on every order and the account average hides it | Contribution margin before scaling · wasted ad spend on low-margin SKUs Coming |
| Spend × repeat behaviour | First-order revenue inside the attribution window | Which products’ first-time buyers come back, and what a 90-day cohort by first product is worth | One-and-done products get funded like heroes because they convert; the products that build the customer base sit under-funded | Which SKUs drive repeat purchases · repeat-rate benchmarks · which products deserve budget Coming |
Repeat behaviour and lifetime value are read per product and per cohort, from Shopify orders. Nothing ties an order to an ad, so there is no honest LTV per campaign or per ad, and this page does not offer one.
What product-level ROAS can tell you, and what it can’t
- It can rank. Catalog formats on both platforms report spend per item, so you can sort a catalog by what each product earns against its ad cost. Most leaks show there first.
- It is approximate. Single-product ads map to a product only by landing page or creative subject, and multi-product orders split across items by rule. A range, never an invoice.
- Shopify revenue ÷ total ad spend is the backstop: an efficiency ratio that credits every platform with all revenue. It cannot allocate and it is not attribution; it says whether the whole business is still efficient. How to pull it across Meta, Google and Shopify.
Four catalog patterns to check before you call a product a loser
The platform optimises the objective you gave it. A single target across a mixed-margin catalog is a merchandising decision you made by default, and at 50 to 500 SKUs it produces four shapes.
Concentration
One hero draws most of the spend because it converts cheapest. Fine until it fatigues or sells out.
Hidden gems
High-margin, high-repeat products that never win the auction under the shared target. They look like losers. They are not.
Fragmented stock
The product is “in stock”. The size the ad audience buys is not. The account calls the falling conversion rate a creative problem.
Dead stock
Months of cover and no spend. Some deserve none; some are a clearance role waiting for a fixed budget.
Check, in order, before any media-buying verdict: variant availability, price and discount changes, product mix and margin changes, feed eligibility. Only then judge the ad. Launching a new line? The phased-release playbook.
Same account, two products, two opposite decisions
Illustrative numbers: a $4M GMV Shopify brand, about 180 SKUs, $65K a month across Meta and Google, one catalog campaign per platform under one target.
Google Shopping product group at 4.1x platform ROAS (the platform’s own per-item read; product-level ROAS is approximate), $9,800 of last month’s spend and rising.
The margin you hold for it: 24% after COGS, shipping, fees and returns, so break-even is 4.2x. Stock: nine days of cover, restock in three weeks.
Constrain. At 4.1x against a 4.2x break-even the group is roughly flat, and any raise strands budget on a sold-out page within nine days. Cap it. Before the restock lands, fix the price and the free-shipping threshold; revisit the budget after.
3% of spend, low impression share, same catalog campaign and target as Product A. Reads as a nothing product.
Margin you hold: 58%, break-even 1.7x. First-order customers repeat at 2.4x the store average over 90 days (a product-level cohort from Shopify orders). Sixty days of cover.
Protected opportunity. Isolate it: its own product group or campaign, a fixed test budget for a full conversion cycle, a check on whether the shared target is suppressing delivery. Fix the feed title and image first. Grade on learning, then on marginal return.
A ROAS sort would have scaled A and ignored B. The margins are yours, the stock is in Shopify, the repeat read is per product.
The check before every budget increase: margin band, stock cover, repeat tier
Three gates, in this order. Fail one and “no increase” is the decision; the move is a cap, a reprice or a clearance.
Margin band
Does the product earn more than 1 ÷ its margin?
A 62% margin breaks even at 1.6x; a 21% margin at 4.8x. The method, with a calculator: contribution margin before scaling.
Stock cover
Can the shelf absorb the raise?
Days of cover against the ramp you are about to buy. Under about two weeks, hold.
Repeat tier
Does the first order under-read the customer?
A first-order ROAS under break-even can be the right buy when the 90-day cohort by first product pays it back. Know the tier first: which SKUs drive repeat purchases, and repeat-rate benchmarks by month.
Pass all three and the question turns marginal: what the next dollar earns on that product. That is the marginal ROAS read; the scaling method lives on the scaling hub.
The weekly product-level leak routine: four checks, twenty minutes, Monday
A Shopify Community merchant put the alternative in one line (verified): “sick of manually pausing campaigns every morning (and still missing things on weekends)”. Another: “as soon as a catalog scales, it becomes impossible to manage without automation”. Today the calendar entry is the automation.
Sold-out spend
Active spend by product × Shopify inventory by variant.
Intersect, sort by spend, act on the top three. Products set to keep selling when out of stock never show as unavailable, so list them by hand. The four-step version.
Below-break-even SKUs
Spend by product × the margin band you hold for it.
Anything earning under 1 ÷ margin is a subsidy the account average hides. Cap it, reprice it or fix the offer. The margin method.
Feed eligibility
Which products can the feed even show?
Missing identifiers, weak titles, price or stock mismatches, bestsellers marked unavailable. A product the feed disqualifies is not a media-buying loser; it has not been allowed to compete.
Days of cover
Which winners are about to strand their budget?
Under two weeks of cover with a rising spend line: cap now, note the restock date, un-pause after. The inverse leak counts too: restocked products nobody un-paused.
Cadence, plainly: a weekly routine on daily-synced data. Datadrew reads spend and stock once a day, so the checks are daily, not real-time: a Saturday leak surfaces on Monday.
Estimate your ad-spend leakage from your own numbers
Six inputs you already know, three labelled ranges. An estimate built from your inputs, not a benchmark.
Ad-spend leakage estimator
Monthly figures. Percentages as whole numbers (12 for 12%).
What this does not do: read your account, or compare you with anyone. Product-level ad spend is approximate (spend is not attributed per product; multi-product orders split by rule), margins are the ones you know, and the ranges are arithmetic on your inputs. The two lines can overlap (a sold-out SKU can also sit below break-even), so read them separately rather than as a sum. The real check runs on your orders, stock and spend; today that is an analysis you run or ask Drew to run.
Run this check on your own orders, stock and spend. Connect Shopify, Meta and Google, share your margin bands, and ask Drew which of last week’s spend went to sold-out or below-break-even products.
Install free on ShopifyWhat Drew does with the business behind the ads, and what it doesn’t do yet
Ask Drew to cross-check last week’s spend against your catalog and stock — it knows the Shopify business behind the ads (products, stock, the margins you share, repeat behaviour) and answers conversationally; today it surfaces the leak when asked, it doesn’t pause anything.
Brand context
Products, stock, the margins you share, repeat behaviour, your definitions. Live today.
Diagnose Performance
Conversational, across Shopify, Meta and Google. The product × spend × stock cross-check is a question you ask.
Product-level performance and repeat behaviour
Revenue and repeat rate per product, cohort value by first product, RFM. Product intelligence. Product-level ROAS is approximate.
Budget Recommendations
What to scale, reduce, pause or investigate, with the reasoning. The raise is still your call.
Daily Ads Brief
A diagnosis-grade daily brief is running on pilot accounts. Scheduled Slack and email reports and alerts are live on AI Intelligence and AI Ads CoPilot.
Execute Ads Changes
Built to make and execute approved changes with guardrails, rolling out now. Today Drew surfaces; it does not pause, exclude or build product sets on your account.
Out-of-stock × spend detector, negative-margin SKU sweep, first-run leak audit
On the build list, not claimed as live. Ask, and Drew runs the analysis; no detector runs on its own yet.
If you would rather run the joins yourself in Claude or ChatGPT, Datadrew’s MCP gives an AI assistant read-only, OAuth-scoped access to your connected spend, catalog, stock and orders; it cannot pause campaigns, edit budgets or place spend. Free to connect on every plan, including Free: the tools that read your own connected accounts work on any plan; the analyst tools whose answers Datadrew computes (cohort LTV, creative intelligence, competitor tracking) need AI Intelligence or AI Ads CoPilot. If you are not connecting ads yet, the free AI store health check is the first look at your store. Plans and the free tier are on the pricing page.
Frequently asked questions
Find out what last week’s spend actually bought
Connect Shopify, Meta and Google and ask Drew which products got the budget and which deserved it. Free plan, no credit card required.
Book a demo