PRODUCT PERFORMANCE MANAGEMENT

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 THESIS

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 2026

Luca, 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.

THE METHOD

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.

JoinThe ad account holdsIt cannot seeThe leak when nobody joins themThe 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.
CATALOG CAMPAIGNS

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.

TWO VERDICTS, WORKED

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.

Product ACONSTRAIN
THE ACCOUNT SHOWS

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 BUSINESS SHOWS

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.

VERDICT

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.

Product BPROTECTED OPPORTUNITY
THE ACCOUNT SHOWS

3% of spend, low impression share, same catalog campaign and target as Product A. Reads as a nothing product.

THE BUSINESS SHOWS

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.

VERDICT

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.

BEFORE EVERY RAISE

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.

  1. 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.

  2. Stock cover

    Can the shelf absorb the raise?

    Days of cover against the ramp you are about to buy. Under about two weeks, hold.

  3. 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 ROUTINE

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.

  1. 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.

  2. 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.

  3. 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.

  4. 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 LEAKAGE

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%).

Enter your six numbers and press the button.

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 Shopify
WHAT DREW DOES WITH THIS

What 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.

LIVE

Brand context

Products, stock, the margins you share, repeat behaviour, your definitions. Live today.

LIVE

Diagnose Performance

Conversational, across Shopify, Meta and Google. The product × spend × stock cross-check is a question you ask.

LIVE

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.

LIVE

Budget Recommendations

What to scale, reduce, pause or investigate, with the reasoning. The raise is still your call.

PILOT

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.

ROLLING OUT

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.

NOT BUILT

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