Skip to main content
    ← Insights|POAS · SKU Strategy

    POASattheSKULevel:WhyCampaignAveragesHidetheTruth

    By Chris Avery, Founder8 min readUpdated 18 May 2026

    A campaign-level POAS of 2.0:1 can be hiding a mix of SKUs ranging from 0.5:1 to 4.0:1. Bid decisions made on the average leak margin on both ends — over-bidding on the losers and under-bidding on the winners. This article shows why the campaign average hides the SKU truth, how to build SKU-level POAS visibility without drowning in spreadsheet work, and the 80/20 of what to actually do with the data once you have it.

    For background, start with our POAS framework explainer and our BOI™ methodology page — SKU-level POAS visibility is what makes BOI™ executable in practice.

    Why the campaign average hides the SKU truth

    The maths is straightforward but consistently underappreciated. A campaign reporting 2.0:1 POAS across 100 SKUs is the weighted average of those 100 SKUs. The distribution underneath the average matters as much as the average itself.

    Consider two scenarios both delivering 2.0:1 campaign POAS:

    Scenario A — uniform distribution: Every SKU runs between 1.8 and 2.2 POAS. The 2.0 average accurately represents nearly every SKU. Bid decisions made on the average will be approximately right for every SKU.

    Scenario B — bimodal distribution: 30 SKUs run at 0.5 POAS (losing money), 50 SKUs run at 1.5 POAS (marginal), 20 SKUs run at 4.0 POAS (highly profitable). The 2.0 average represents almost no individual SKU accurately.

    Both scenarios look identical on a campaign report. They're dramatically different commercial realities. Scenario A doesn't need SKU-level bid intervention. Scenario B is bleeding money on 30 SKUs while starving 20 SKUs of bid budget they could profitably absorb.

    The trouble is that almost no real ecommerce account looks like Scenario A. Most mixed-margin catalogues look like Scenario B — wide POAS distribution across SKUs, hidden underneath a reasonable-looking campaign average. Without SKU-level visibility, the bid decisions you make are systematically wrong.

    How to build SKU-level POAS reporting

    The good news: you don't need a complex data warehouse to do this. Most £10k–£100k/month spenders can build SKU-level POAS in a spreadsheet or BI tool with three data joins.

    Step 1: Capture SKU-level performance from Google Ads

    Use Merchant Center custom labels to tag every SKU with an identifier (product ID at minimum, plus margin band, SKU job, or any other dimension you want to slice on). Then in Google Ads → Reports, build a custom report at the product ID level showing impressions, clicks, conversions, conversion value, cost.

    Step 2: Join to true profit per order

    Export the same time period's orders from Shopify. Join to variant COGS and variable costs (shipping, fees, returns) to calculate true contribution margin per order. Aggregate by SKU. Now you have margin earned per SKU over the period.

    Step 3: Calculate POAS per SKU

    Margin earned divided by Google Ads cost attributed to that SKU. The output is a POAS value per SKU, sortable, filterable, actionable.

    That's the calculation. The operational step is doing this regularly — weekly ideally, monthly minimum — so the visibility stays current.

    Tools to make this easier

    • Looker Studio (free) — connects directly to Google Ads and can pull from Shopify via various connectors. Best fit for non-technical teams.
    • Google Sheets — for very small catalogues (<200 SKUs), a manual weekly export and pivot works fine.
    • ProfitMetrics, Polar, Triple Whale — paid POAS platforms that automate SKU-level calculation. Best for brands spending £30k+/month.
    • Custom BI in BigQuery / Snowflake — for larger brands with technical resource.

    The 80/20 of SKU bid action

    Once you have SKU-level POAS visibility, the temptation is to act on every SKU individually. Don't. SKU-level bid management at scale becomes overwhelming, defeats the operational efficiency of Smart Bidding, and produces noisier results than focused action on the extremes.

    The 80/20 framework: focus on the top decile and the bottom decile of SKUs. Leave the middle 80% alone for now.

    Top decile — the high-POAS winners (typically POAS 3.0+)

    These are SKUs where the bidding system is being conservative because they convert less frequently or have higher CPC. The bid signal isn't recognising the margin opportunity.

    Action: lift the bid signal on these specifically. Either by reassigning them to a higher-priority SKU job in BOI™ (typically Profit job), or by adjusting the conversion value weighting on these SKUs to favour them more strongly. Expected outcome: spend on these SKUs increases by 20–60%, generating proportionally more contribution margin.

    Bottom decile — the loss-makers (typically POAS below 1.0)

    These are SKUs the bidding system is over-investing in because their revenue signal looks attractive even though the margin signal is poor.

    Action: either suppress them entirely from the campaign (custom label exclusion) or reassign to a Liquidation job in BOI™ with tighter POAS targets. Expected outcome: spend reduction of 50–80%, immediate margin recovery.

    The middle 80%

    These SKUs are roughly tracking the campaign average. The bid logic is approximately right. Don't fiddle.

    This focused approach captures most of the available margin uplift (typically 60–80% of total opportunity) while keeping the operational work manageable. SKU-by-SKU bid optimisation across the whole catalogue rarely justifies the operational cost.

    When SKU-level visibility leads to catalogue decisions, not bid decisions

    Sometimes the right action isn't a bid change. It's a catalogue change.

    A SKU with consistently terrible POAS (0.3:1 over multiple months across multiple bid attempts) is telling you something the bidding can't fix. Common causes:

    • Margin is too low for paid acquisition to ever be profitable. Solution: reprice, remove from paid promotion, or accept it's only ever an organic / repeat-purchase SKU.
    • Conversion rate is structurally low. Solution: investigate the product page (PDP), the product itself, or whether it should still be in the catalogue.
    • Return rate is destroying the margin maths. Solution: investigate the cause (sizing, expectations, fragility) or remove from paid promotion.
    • The category auction is too competitive at your margin level. Solution: accept and either focus paid promotion elsewhere or change the product positioning to support higher prices.

    SKU-level POAS visibility surfaces these. Bid optimisation alone never will.

    A worked example: an apparel client found through SKU-level POAS analysis that one shoe range was running consistent 0.4:1 POAS across six months despite multiple bid restructures. The cause: a 52% return rate due to sizing issues. The fix wasn't a bid change — it was working with the supplier on a sizing chart update and removing the range from paid promotion temporarily. POAS on the rest of the catalogue normalised within a month, and the shoe range came back to paid promotion three months later after the sizing fix at a sustainable 1.8:1 POAS.

    How BOI™ uses SKU-level POAS data

    The BOI™ framework — Bid On Intent — assigns each SKU one commercial job at a time (Profit, Volume, Liquidation, Acquisition) and reassigns the job weekly based on inventory, cash, and demand position. SKU-level POAS data is the diagnostic that drives the reassignment decisions.

    Weekly review cadence:

    1. Pull SKU-level POAS for the past 7 days.
    2. Cross-reference against stock position (high stock SKUs that should be moving faster), cash position (whether liquidity is constrained), demand signals (seasonality, marketing pushes).
    3. Reassign jobs where the data plus context warrants it. A Profit-job SKU showing rising stock and falling POAS might shift to Volume. A Volume-job SKU near stockout might shift to Profit. A Profit-job SKU with persistently poor POAS might shift to Liquidation.
    4. Update Google Ads custom labels and asset group assignments to reflect the new jobs.
    5. Smart Bidding adjusts within 48–72 hours based on the new signals.

    Without SKU-level POAS visibility, BOI™ becomes static. The framework only works if the job assignments respond to changing performance data weekly. SKU-level POAS is what makes the framework live rather than theoretical.

    See BOI™ explained for the full methodology.

    A worked example — five SKUs, five different actions

    Hypothetical (illustrative) snapshot from a mid-size DTC client's weekly review.

    SKU7-day POASStock positionActionWhy
    Hero product A3.8:1HealthyBid up — reassign to higher-priority Profit jobMargin opportunity not being captured by current bid signal
    Hero product B1.6:1OverstockedReassign from Profit to Volume job temporarilyNeed to move stock; accept lower POAS to do it
    Niche premium SKU2.4:1HealthyHoldPerforming well, no intervention needed
    Discounted bestseller0.7:1HealthyReassign to Liquidation or suppressMargin destroyed by ongoing promo — needs strategy review
    New launch SKU1.1:1BuildingContinue in Volume job, review again in 2 weeksStill in learning phase; too early to make permanent decisions

    Five SKUs, five distinct decisions based on the same week's POAS data interpreted in context. This is what SKU-level POAS visibility enables — bid decisions that reflect commercial reality rather than blended averages.

    What to do this week

    1. Audit your current SKU-level reporting. Can you see POAS by SKU for the past 30 days? If no, you're flying blind on bid decisions.
    2. Set up the data join — Looker Studio is the easiest free path for most brands. Connect Google Ads and Shopify.
    3. Run the top decile / bottom decile analysis. What's your best 10% of SKUs by POAS? Worst 10%? Are the bids and budgets reflecting the gap?
    4. Pick 3–5 actions based on the analysis. Don't try to fix everything at once. Bid up the top three winners. Suppress the bottom three losers. See what happens over the next month.
    5. Establish weekly cadence. SKU-level POAS visibility only matters if you review it regularly. Calendar it.

    Frequently asked questions

    How granular should SKU-level POAS reporting go?

    Product ID level (each unique SKU) is the right granularity for most brands. Variant level (each colour / size combination) is overkill for most decisions and adds disproportionate complexity. Use product ID as the standard, drop to variant only for specific high-value lines where size/colour returns vary materially.

    What's the minimum sample size for SKU-level POAS to be reliable?

    Aim for at least 10 conversions per SKU per period before treating the POAS as statistically meaningful. Below that, you're looking at noise. For low-volume SKUs, aggregate to longer time windows (monthly instead of weekly) to get enough data.

    How does SKU-level POAS work with Performance Max?

    PMax doesn't expose SKU-level performance as cleanly as Standard Shopping does. The workaround is to use custom labels and asset groups by margin band (or SKU job), then look at performance at the asset group level. You can't see individual SKU bids, but you can see bid behaviour by group. Combined with offline conversion imports (true margin per order tagged by product ID), you get most of the visibility back.

    What if my catalogue is too large for SKU-level analysis?

    Aggregate. Group SKUs by margin band, by product category, by SKU job. Run POAS analysis at the aggregate level. The principle (top decile vs bottom decile action) still works on aggregated groups. SKU-level granularity is most useful for catalogues of 50–500 SKUs; above that, aggregation becomes essential.

    Should I review SKU-level POAS daily?

    No. Weekly is the right cadence for most brands. Daily POAS is noisier than it is useful — the natural variation in daily performance obscures the underlying signal. Daily reviews lead to over-fiddling with bid signals, which Smart Bidding penalises.

    Can I run SKU-level POAS without offline conversion imports?

    Yes — using Looker Studio with Google Ads and Shopify connectors, you can build SKU-level POAS reporting without changing your Google Ads bidding signal. This gives you visibility for analysis without influencing bid behaviour. To make bids respond to the SKU-level data, you also need offline conversion imports or one of the other margin-data options. See Feed margin data into Google Ads.

    What's the difference between SKU-level POAS analysis and BOI™?

    SKU-level POAS analysis is the diagnostic — surfacing what each SKU is delivering. BOI™ is the operational framework that uses the diagnostic to assign each SKU a commercial job and reassign it weekly. The analysis without the framework produces interesting reports but no bid behaviour change. The framework without the analysis becomes a static set-and-forget structure. Both together compound.

    Next steps

    Want help building SKU-level POAS visibility and implementing BOI™ for your account? We work with ecommerce brands spending £10k+/month and run this framework as standard across every client engagement.

    Author

    By Chris Avery, Founder, JudeLuxe. Speaker at HeroConf and PerformanceMCR 2026 on POAS-led PPC for DTC brands. Find Chris on LinkedIn.

    POAS is a registered trademark of ProfitMetrics. BOI™ is a trademark of Jude Lucas Ltd.

    We use cookies to improve your experience. Privacy Policy