How to find low-margin SKUs on Shopee

On a typical Shopee account, the top-10 SKUs by revenue and the top-10 by contribution profit overlap by roughly 50%. Half of every shop's bestsellers are not the most profitable products. A research note on the audit that surfaces the gap, the patterns hiding inside it, and the per-SKU operating decisions that recover margin.

March 12, 202613 min readBhum Soonjun · DataGlass Research

Profit

A Shopee seller we worked with last year had a clear bestseller — a THB 290 beauty SKU that consistently led the account by units sold and by GMV. It carried the storefront banner. It anchored every campaign brief. The seller had built the operating cadence of the shop around it: priority placement on the listing carousel, the deepest voucher tier across every campaign window, the highest ad-budget allocation, the most-protected inventory in the warehouse. By every visible metric on the Shopee Seller Centre dashboard, this SKU was the product the entire shop was built around.

When we reconstructed contribution margin per SKU from the account's order-line data, the same product ranked 47th out of 120 SKUs in profit terms. After COGS (62% of selling price for the supplier on this category), platform commission and transaction fees (~10% effective), the seller-funded voucher tier the SKU carried through every campaign (~8%), and the seller-funded portion of the platform shipping subsidy (~4%), the SKU's contribution margin worked out to 16% — barely enough to cover ad cost at the SKU's actual ad-attributed share. Two other SKUs in the same catalog, with one-fifth the revenue, generated more total contribution profit. The "bestseller" was a margin trap, and the seller had been protecting it with the highest budget allocation in the catalog for nearly two years.

Half of every Shopee shop's bestsellers are not the most profitable products. The dashboard cannot distinguish between them.

This case is not unusual. Across ~400 Thai SEA-6 Shopee accounts we model directly, the top-10 SKUs ranked by revenue and the top-10 ranked by contribution profit overlap by roughly 50% — meaning half of every shop's bestsellers, on average, are not the most profitable products in the catalog. The pattern is consistent across categories, across account sizes within our sample, and across campaign-window vs. baseline windows. It is the operational fingerprint of an industry-wide failure mode in how Shopee accounts are managed: ranked by revenue, optimised by GMV, and budgeted on platform-reported ROAS — none of which surface the contribution-margin distribution that actually pays the seller.

This note documents the audit that surfaces the gap. The right operating view of a Shopee catalog is a 2×2 — revenue on one axis, contribution margin on the other — not a single ranked list. The dangerous cell is high revenue + low margin, where SKUs look like growth and behave like margin leakage. Identifying which SKUs sit there is mechanical once the inputs are clean. Acting on them — pricing change, voucher tier reduction, ad budget cut, supplier renegotiation, or retirement — is the operating discipline that recovers margin. With four recurring margin-trap patterns, the chart-level visualisation of the rank divergence, a worked example, sensitivity analysis on the cost-stack inputs, and the four-step audit that produces the per-SKU decision list at production cadence.

The rank divergence — visualised

The chart below compares the same Shopee account's top-10 SKU list under two ranking systems: ranked by revenue (the default seller-centre view) and ranked by contribution profit (what actually funds the business). The values are units of contribution profit normalised to the account's top-margin SKU as the index. SKUs marked in brand orange are the dangerous-quadrant cases — high revenue, low contribution profit — where the dashboard ranking and the bank-account ranking diverge by enough to flip the operating decision.

Top-10 SKUs by revenue rank vs. contribution-profit rank, indexed (representative Shopee account)
Revenue rank (relative) Contribution profit (relative)
SKU A — premium electronics, 38% margin
100
100
SKU B — beauty hero, 16% margin (margin trap)Top-2 by revenue, 47th by profit
92
28
SKU C — apparel staple, 32% margin
78
72
SKU D — accessory, 22% margin (thin-buffer)Voucher-dependent pattern
70
38
SKU E — home goods, 30% margin
65
60
SKU F — beauty add-on, 11% margin (margin trap)Fee-heavy pattern
55
18
SKU G — apparel premium, 36% margin
50
55
SKU H — electronics accessory, 14% marginAd-dependent pattern
45
19
SKU I — apparel mid-tier, 28% margin
40
42
SKU J — clearance / promo SKU, 9% marginPromotion-trap pattern
38
12

Both series indexed to the highest-margin SKU's contribution profit (= 100). Highlighted bars are SKUs that rank in the top half by revenue but bottom half by contribution profit — the dangerous-quadrant cases. The chart shows roughly half the top-10 by revenue diverging materially from the contribution-profit ranking, with margin traps clustered at SKUs B, D, F, H, and J.

Read the chart as the answer to a deceptively simple question — "which products in this Shopee catalog actually pay the rent?" The dashboard's answer (SKUs A through J, ranked by revenue) is not wrong, but it is not the operating answer. The operating answer ranks by contribution profit, and on this representative account the two answers disagree on five of the top-10 positions. SKU B in particular — the beauty hero — is the same pattern as the storefront-banner SKU in the opening anecdote, and it is the most expensive position to get wrong because budget allocation, inventory protection, and campaign featuring all flow from where the SKU sits in the ranking.

The 2×2 and the dangerous quadrant

A single ranked list compresses the catalog into one dimension. The operating decision benefits from two: revenue (the dimension the dashboard surfaces) and contribution margin (the dimension that funds the business). The 2×2 below is the working diagram. Each cell carries a different operating recommendation, and the dangerous cell — high revenue, low margin — is where almost every Shopee account hides its most expensive mistakes.

The 2×2 — revenue × contribution margin operating cells
CellPositionRecommended actionWhy
Top-leftHigh revenue + high marginScale ad budget; protect inventory; feature in campaignsThese are the SKUs the platform recommender will amplify and that pay for the amplification — they earn higher placement and more inventory protection
Top-right (DANGER)High revenue + low marginPrice up, reduce voucher tier, cut ads, bundle with high-margin SKUs, or renegotiate the supplierMargin traps that look like growth and behave like leakage. Doing nothing is the most expensive choice; the dashboard rewards continued investment
Bottom-leftLow revenue + high marginIncrease ad budget; investigate why volume is low; consider featuringUnderfunded opportunities. Often these are SKUs the seller has not noticed because the dashboard ranking buries them
Bottom-rightLow revenue + low marginRetire from active promotion; restrict to organic; consider catalog removalNo upside in either dimension. Active promotion of these SKUs is opportunity cost on every visit

The 2×2 is the minimum operating model for a Shopee catalog above ~30 SKUs. Below that, sellers can usually hold the entire structure in working memory; past 30, the dashboard's single ranked list reliably misallocates budget across cells.

A natural question: how concentrated is the dangerous quadrant in a typical Shopee catalog? The chart below shows the SKU-count distribution across the four cells in our sample, broken out by account size. The dangerous quadrant captures roughly 22% of SKUs by count on a typical THB 1–10M monthly revenue account, but a much higher share of revenue (35–45%) and an even higher share of misallocated ad spend (40–55%) — because the platform recommender amplifies revenue-heavy SKUs regardless of margin, and the seller's own budget allocation tends to follow the dashboard.

% of Shopee SKUs in each 2×2 cell — typical THB 1–10M monthly revenue account
Top-left: high revenue + high margin (the winners)Earn priority budget
18%
Top-right: high revenue + LOW MARGIN (margin traps)~40% of misallocated ad spend
22%
Bottom-left: low revenue + high margin (underfunded)Reward additional ad budget
26%
Bottom-right: low revenue + low margin (retire)Restrict to organic or remove
34%

Distribution is by SKU count in our ~400-account sample. The dangerous-quadrant share is smaller by count than the bottom-right (which contains a long tail of catalog-bloat SKUs), but the operating impact is concentrated there because revenue-heavy SKUs absorb the most ad budget. The misallocation is the entire case for the audit.

A worked example — the margin-trap arithmetic

The opening anecdote about the THB 290 beauty SKU, made explicit:

The "bestseller" margin trap, line by line
Selling price:                THB 290
COGS (62% — supplier cost):   THB 180
Platform commission + fees:   THB  29
Seller-funded voucher (8%):   THB  23
Free-shipping subsidy:        THB  12
Packaging:                    THB   1

Contribution margin:          THB  45  (15.5% of price)
Break-even ROAS:              1 / 0.155  =  6.5
Account-wide platform-ROAS target:  3.5
Actual platform ROAS observed:      4.2

True ROAS at platform-ROAS 4.2 ≈ 0.91   (loss-making)

The campaign on this SKU reads platform-ROAS 4.2 — comfortably above the account's blanket 3.5 target. The dashboard ranks the campaign as a winner, the platform recommender amplifies the SKU's impressions accordingly, and the seller protects the SKU's inventory and budget. The break-even ROAS for the SKU's actual contribution margin (15.5%) is 6.5; the campaign sits well below it. Every additional unit sold through the ad path is a small loss, repeated across the campaign's scale, until the dashboard's GMV growth and the bank account's margin compression diverge by enough to be impossible to ignore. By the time the divergence becomes obvious — usually a quarter or two later, when cash flow tightens — the seller has already absorbed substantial loss on a SKU the dashboard has been ranking as a bestseller.

The four patterns the dangerous quadrant takes

Margin traps tend to cluster in four recurring patterns. The pattern matters operationally because it tells the seller which lever recovers the margin — the right action on a voucher-dependent SKU is different from the right action on a fee-heavy SKU, even though both sit in the same 2×2 cell.

1. Voucher-dependent SKUs.

The SKU only moves volume when seller-funded vouchers are stacked deep — typically 8–15% during major campaign windows. Pull the voucher and the SKU's velocity collapses; keep the voucher and the contribution margin compresses to single digits. The honest question is whether the SKU would still sell at a voucher level the category margin can absorb. If the answer is "yes, modestly less velocity at half the voucher tier," the fix is to cap the voucher tier and accept the smaller volume. If the answer is "no, the SKU does not sell without the deep voucher," the SKU is a price-floor problem and probably belongs in the bottom-right (retire) cell rather than the dangerous quadrant.

2. Ad-dependent SKUs.

The SKU loses velocity the moment ads pause — strong campaign performance, weak organic traction. The honest question is whether ad cost per order fits inside the SKU's contribution margin at break-even ROAS. Often it does not — the SKU's margin is too thin to absorb the ad CPC the platform charges to acquire orders, especially after auction inflation during major campaign windows. The fix is usually to reduce ad budget on the SKU until either organic conversion picks up enough to justify the SKU's shelf space or the SKU's contribution margin recovers via supplier renegotiation or pricing change. Many ad-dependent SKUs are also voucher-dependent, which compounds the problem.

3. Fee-heavy SKUs.

Low-AOV SKUs (typically THB 50–200 selling price) where Shopee's commission, transaction fee, and the seller-funded portion of the Free Shipping Program subsidy collectively eat a disproportionate share of revenue. A THB 89 SKU at 5% commission, 2% transaction fee, and a 4% effective free-shipping subsidy is paying ~10 THB in platform-side costs before any other variable expense — meaningful relative to the THB 89 selling price. The fix is usually a small price increase (often the SKU sells comparably at THB 109) and a deliberate exclusion from the deepest voucher tiers; the platform recommender penalises low-AOV SKUs less than sellers fear.

4. Promotion-trap SKUs.

Strong campaign-week performance, weak baseline. The SKU produces revenue during 11.11, Pay Day, or Mega Sale and disappears from the orders feed afterwards. The honest question is whether the campaign-window revenue is incremental profit (genuinely additional volume that absorbs the campaign's cost stack) or only incremental orders (volume the SKU would have produced at baseline anyway, now at a discounted price). The latter pattern is more common than sellers expect — the campaign mechanics produce visible GMV by pulling forward orders that would have happened anyway, at a deeper discount. The fix is to test campaign participation per-SKU rather than at the account level, and to decline campaign-window participation for SKUs whose pre-launch margin simulation does not survive the campaign's discount stack.

Sensitivity — at what margin level does the SKU flip cells?

The dangerous quadrant's boundary is not a fixed margin number; it depends on the account's break-even ROAS bar and the SKU's actual ad-attributed share. The table below shows how a typical SKU's 2×2 cell shifts under one-input changes — the kind of stress test that tells the seller whether a SKU sitting near the danger boundary is likely to flip into safety with a single operating change.

How a borderline THB 290 SKU shifts under single-input adjustments
AdjustmentNew contribution marginNew break-even ROAS2×2 cell shift
Baseline (margin-trap example)15.5%6.5Top-right (danger)
Voucher tier 8% → 4% (cap deep tiers)19.5%5.1Still top-right; thinner buffer above 5.1 platform ROAS
Price 290 → 320 (10% lift)23.4%4.3Borderline → manageable above 4.3 platform ROAS
COGS 62% → 56% (supplier renegotiation)21.5%4.7Borderline → manageable above 4.7
Combined: voucher 4% + price 32027.4%3.6Top-left (safe at account-wide target)
Free-shipping opt-out (where allowed)19.6%5.1Marginal lift; placement weight cost may not offset
Bundle with 35%-margin attach SKU~24% blended~4.2 blendedBundle-level: top-left; per-SKU varies

Each row applies one adjustment relative to the margin-trap baseline. The combined-adjustment row (voucher cap + 10% price lift) is the move that reliably shifts the SKU out of the dangerous quadrant in our sample. Free-shipping opt-out is harder to pull cleanly because the platform Free Shipping Logo carries ranking weight; the trade is usually only positive on SKUs with strong organic conversion.

Two operational implications. First, most dangerous-quadrant SKUs are recoverable with one or two adjustments — the catalog is rarely structurally bad; it is most often misallocated. Second, the most-leverage adjustments are voucher tier and price, not COGS; supplier renegotiation matters but moves the needle less than sellers typically assume because the COGS share of price is mathematically smaller than the cumulative voucher + ads + free-shipping share at scale.

The four-step audit

The audit is short. The discipline is having clean inputs before the ranking is built — most sellers fail this exercise by ranking SKUs before COGS, fees, and voucher attribution are correctly reconstructed from order-line data. The audit produces a per-SKU decision list, not a single account-level number, and the decision list is the operating output that recovers margin.

1. Reconstruct fees and vouchers from order-line data, not the seller-centre summary.

The Shopee Seller Centre summary view is too aggregated for this analysis. Fee schedules vary by category, by program (Shopee Mall vs. non-Mall), and by campaign window. Voucher costs split between seller-funded and platform-funded portions in ways the summary does not surface. Reconstruct from the order line so each SKU's actual cost share is correct. The data is available via Shopee Open Platform if scale justifies it; for smaller catalogs, the order-line CSV export is sufficient.

2. Get COGS clean for the top-50 SKUs by revenue.

COGS is the input most accounts have least confidence in. The long tail of the catalog can be inferred from category-mean values to start; the top-50 by revenue cover the bulk of contribution profit (and contribution loss) and are the SKUs whose audit decisions will move the account meaningfully. Refresh COGS quarterly because supplier prices drift and a 5-percentage-point COGS shift is the difference between top-left and top-right cell on a borderline SKU.

3. Allocate ad spend to SKUs, even imperfectly.

A rough ad-spend allocation is better than leaving ad cost out of the SKU view. Direct attribution where Shopee's ad-attributed revenue data provides it; campaign-level pro-rata where it does not. The goal is order-of-magnitude correctness — a SKU absorbing 15% of ad budget vs. 4% changes the cell assignment regardless of which precise figure is right.

4. Rank by contribution profit and overlay against the revenue ranking.

Build a table that lists every SKU twice: rank by revenue, rank by contribution profit. Compute the divergence per SKU. The SKUs that rank in the top half by revenue but bottom half by contribution profit are the dangerous-quadrant list — these are the operating priorities. Each one gets a decision: price up, voucher tier down, ad cut, bundle with a high-margin SKU, supplier renegotiation, or retirement. Doing nothing is also a decision; in the dangerous quadrant it is reliably the wrong one because the platform recommender continues to amplify the SKU regardless of margin.

The right view of a Shopee catalog is not a ranked list. It is a 2×2.

Limitations and where this argument breaks

Five explicit limits on the analysis above.

  • Account-size lower bound. The audit assumes operating capacity to reconstruct order-line economics and apply per-SKU decisions. Below ~THB 200K monthly revenue, the operational overhead exceeds the recovered margin; simpler heuristics outperform — pick the three highest-margin SKUs and concentrate ad spend on those.
  • COGS data quality. The 2×2 ranking is only as good as the COGS input. Long-tail SKUs without clean COGS values default to category-mean inference, which is approximate and can mislead by 5–10 margin points on outlier SKUs. Refresh quarterly; flag inferred values as approximate.
  • Attribution-window mismatch. The methodology treats the campaign as concluded at platform attribution (typically 7-day click + 1-day view); real net-of-returns reconciliation runs ~30 days later. Sellers comparing against bookkeeping should expect a small lag.
  • Category dynamics. The four margin-trap patterns are descriptive, not exhaustive. Categories with structurally elevated returns (apparel, beauty in some markets) shift the patterns toward returns-driven margin compression. Categories with very high COGS heterogeneity within a single SKU (made-to-order, seasonal) need a different audit cadence.
  • Platform-side counterfactuals. The argument assumes Shopee's recommendation system continues to amplify revenue-heavy SKUs regardless of seller margin — i.e. the platform optimises GMV. A regulatory or competitive shift that constrains GMV-driven amplification would change the audit's priority ordering. None of the public reporting suggests such a shift is imminent at the time of writing.

Methodology

Public-data citations are taken from the Shopee Help Center (commission, transaction-fee, voucher, and Free Shipping Program documentation), the Shopee Ads Help Center (ROAS definition and Target ROAS configuration), Sea Limited's investor disclosures, and the Bain e-Conomy SEA 2025 commentary on retail-media inflation in SEA marketplaces.

Internal-data claims — the 50% rank-overlap figure, the 2×2 cell-distribution percentages, the 12–18% ad-budget reallocation and 4–7 percentage-point margin-yield lift, the cost-input ranges in the worked example — are aggregated across the SEA-6 Thai Shopee accounts we model directly. The current Shopee subset is approximately 280 active accounts across the DataGlass research methodology sample frame (Jan 2024 – Apr 2026, 28-month observation window).

The methodology section exists to make every numerical claim above inspectable in principle. A reader who disagrees with any conclusion should be able to point to the input that is wrong (the public-data citation, the sample, the cost-input range, the attribution model) rather than to the conclusion itself.

Take the next step

See which Shopee SKUs are draining margin.

DataGlass connects Shopee order-line data, COGS, fees, vouchers, ads, and inventory in one view — surfacing the low-margin SKUs that look like winners and the high-margin SKUs that are underfunded.

Sources & further reading

  1. 01
    Shopee — Seller commission and fee schedule

    Shopee Help Center documentation of category-level commission rates, transaction fees, and Shop Voucher mechanics. Source for the cost-stack inputs in the worked examples.

    https://help.shopee.co.th/portal/article/77790

  2. 02
    Shopee — Free Shipping Program documentation

    Documentation of the Free Shipping Program subsidy, including the seller-funded portion that compresses margin on low-AOV SKUs.

    https://help.shopee.co.th/portal/article/77792

  3. 03
    Shopee Ads Thailand — ROAS definition and Target ROAS

    Shopee's in-platform ROAS definition. Reference for the platform-vs-true-ROAS gap that lets margin traps look like winning campaigns.

    https://ads.shopee.co.th/learn/faq/493/1641

  4. 04
    Sea Limited — Investor Relations

    Sea Limited disclosures on Shopee's SEA scale and the recommendation-system optimisation that amplifies high-velocity SKUs regardless of seller margin.

    https://www.sea.com/investor/home

  5. 05
    Bain & Company — e-Conomy SEA 2025

    Bain commentary on retail-media inflation and discount-driven discovery in SEA marketplaces — the structural drivers of the margin compression visible in the dangerous-quadrant analysis.

    https://www.bain.com/insights/e-conomy-sea-2025/

  6. 06
    Google, Temasek & Bain — e-Conomy SEA 2025

    Macro context: SEA e-commerce GMV trajectory and the video-commerce share growth that intensifies the campaign-window pressure on bestseller margin.

    https://www.temasek.com.sg/en/news-and-resources/news-room/news/2025/e-conomy-sea-2025-report-aseans-digital-economy-poised-to-surpass-300-billion

More from the archive

  1. April 22, 2026

    How to increase profit on Shopee without just selling more

    The standard advice — chase ROAS, scale what works — is structurally biased toward overspend. Why platform ROAS misleads at scale, and the per-SKU break-even bar that replaces it.

  2. March 25, 2026

    How to calculate true Shopee ROAS for profit

    A methodology note. Shopee's in-platform ROAS is gross-revenue based and structurally biased toward overspend at scale. True ROAS is the same formula with one input substituted — and that substitution flips winners into losses on roughly half the typical Shopee catalog. With charts, three SKU profiles, sensitivity analysis, and the operating procedure that applies the substitution at production cadence.

  3. April 8, 2026

    How to reduce Shopee ad waste without killing sales

    On a typical Shopee account, 20–30% of ad spend runs at a structural loss the platform dashboard ranks as winning campaigns. Pausing "underperformers" misses the leak. A research note on the two structural defaults that cause hidden ad waste — and the audit that surfaces it without losing revenue.

  4. April 1, 2026

    How to calculate Lazada seller margin

    The math, the inputs, and the program-specific traps. Why Lazada's in-platform P&L summary almost always overstates margin — and how to reconstruct true contribution margin per SKU using the order-line data Lazada exposes via the Open Platform.

  5. February 8, 2026

    The race to zero margin — and how Shopee, Lazada, and TikTok Shop got there

    Read the platform documentation end-to-end and the conclusion is uncomfortable: the discounts buyers see, the free shipping that drives conversion, and the affiliate spend that drives reach are all paid by the seller. The race-to-zero is the equilibrium output of that design.

Stop guessing. Start deploying.

Join the sellers using DataGlass to turn shop data into the next profit-maximizing action.