How to Audit Shopify SKU Profitability and Find Unprofitable Products
Rank variants by contribution dollars, margin, and data quality so high-revenue products do not hide weak or negative unit economics.
Table of Contents
SKU contribution after ads = net selling revenue − product cost − fulfillment − payment and platform fees − other variable order costs − attributable acquisition cost.
- Calculate at the variant or SKU level, using the realized selling price after discounts and refunds.
- Rank by contribution dollars as well as margin percentage; a high-margin SKU can still contribute little cash.
- Investigate negative contribution, missing cost data, heavy discounts, and ad costs above the pre-ad contribution available.
- Treat a spreadsheet audit as a decision aid. Validate accounting and channel data before changing a live product.
If you are auditing Shopify SKU profitability to find unprofitable products, start with the amount each variant leaves after variable costs. Use the same period, revenue basis, and cost rules across the catalog, then rank by contribution dollars, margin, and data quality. The Bulk SKU Profit Auditor reads its supported SKU economics CSV and applies your payment and platform fee assumptions to show pre-ad contribution, optional post-ad contribution, maximum CPA, break-even ROAS, and target-price gaps. You will need to map and verify source data; the tool does not connect to Shopify or ad accounts.
Define Shopify SKU profitability before sorting the catalog
Several metrics answer different questions. Gross profit often means net sales less product cost, but teams differ on whether freight, duty, or packaging is included in product cost. Contribution profit subtracts a defined set of variable costs from net sales. Operating profit also includes period operating expenses; net profit includes additional items such as interest and tax according to the business's accounts.
For a SKU audit, define one auditable contribution measure. A useful per-unit version is:
Pre-ad contribution per unit = realized price − landed product cost − fulfillment − payment fees − selling-platform fees − other variable costs.
Post-ad contribution per unit = pre-ad contribution − attributable ad cost per acquired order.
Use the same fee scope across the catalog. If a 3PL invoice includes pick, pack, and packaging, don't subtract packaging again. If product cost already includes inbound freight and duty, don't add those costs a second time. Keep fixed salaries, subscriptions, rent, and general overhead outside per-unit contribution unless you deliberately allocate them for a separate fully loaded view.
Prepare comparable SKU-level data
Export product and variant data, then join it to order, refund, advertising, and cost records using a stable variant SKU or another verified key. Shopify product rows and variants are not interchangeable: one parent product can have multiple prices, costs, and demand patterns. If variants have distinct unit economics, audit them separately.
For each SKU, collect:
- Units ordered and net sales for a defined period, with discounts and refunds treated consistently.
- Current list price and realized price after discount.
- Unit product cost on the same currency basis, ideally landed cost if that is your chosen COGS input.
- Fulfillment, packaging, payment, platform, and other per-order or per-unit costs.
- Ad spend and attributed orders for a documented attribution window, if you want a post-ad view.
- Stock status and inventory age, so a margin result is interpreted alongside the cost of holding or clearing stock.
Mark blanks as unknown, not zero. A missing cost can make a SKU appear profitable when it is only unmeasured. Use one currency per analysis or convert source records with a documented exchange-rate date; the auditor itself does not convert currencies.
Work through one example
Assume an illustrative SKU sells for $48 after discount. Product cost is $14, fulfillment is $6, payment fees are modeled as 3% + $0.30, a platform fee is 1%, and other variable packaging cost is $1. These are example assumptions, not a current Shopify or payment-provider quote.
- Payment fee: $48 × 3% + $0.30 = $1.74.
- Platform fee: $48 × 1% = $0.48.
- Pre-ad contribution: $48 − $14 − $6 − $1.74 − $0.48 − $1 = $24.78.
- Pre-ad contribution margin: $24.78 ÷ $48 = 51.6%.
If attributable acquisition cost is $27 per order, post-ad contribution is −$2.22 before fixed overhead and other excluded costs. That does not prove the whole customer relationship is unprofitable: repeat contribution may matter, but include it only with cohort evidence and a stated time horizon. Nor does a positive pre-ad contribution guarantee an order is profitable after every business expense.
Rank exceptions and choose an action
Build a review list with contribution dollars, contribution margin, units sold, revenue share, ad cost, inventory on hand, and data completeness. Sort first for negative contribution and high sales volume, then inspect low-margin items, high spend, stale inventory, and products whose costs are incomplete. A percentage-only ranking can overstate a low-volume niche item and understate a popular SKU that loses a small amount on every order.
Assign each exception a cause and a testable next action:
- Price or discount issue: model a price or promotion change and estimate demand sensitivity separately; the audit cannot predict conversion response.
- Fulfillment burden: check package dimensions, shipping zones, split shipments, and pick fees. Do not assume a lower shipping quote is operationally achievable.
- Fee assumption issue: verify the actual statement, payment method mix, and any fixed or cross-border fees.
- Acquisition issue: compare channel-level CAC on a consistent attribution basis; don't treat platform-reported ROAS as incremental profit.
- Product-cost issue: update landed cost, purchase order, or bill-of-material data before making a keep/kill call.
- Inventory issue: consider aging, remaining shelf life, stockout risk, and the cash needed to replenish alongside contribution.
Use the SKU contribution audit to identify which rows merit review, then validate the top exceptions against source records. The tool's optional ad CPA is a single per-order input; it does not allocate campaign spend among products or measure blended and incremental CAC for you.
Common audit mistakes
- Dividing contribution by list price when the customer paid a discounted price.
- Mixing gross sales, net sales, and refunds across reports or date windows.
- Comparing a per-unit cost with a per-order cost without multiplying by units in the basket.
- Assigning blended campaign spend to every SKU as if each one caused the same share of spend.
- Calling pre-ad contribution “net profit.”
- Recommending discontinuation from one short period that contains a stockout, launch, clearance, or seasonal trough.
Repeat the audit on a stable cadence and preserve the assumptions alongside each export. Review large price, cost, fee, fulfillment, or channel changes sooner. Keep a before-and-after record so a test is judged on actual contribution, sales mix, refunds, and inventory—not on a single margin percentage.
FAQs
How do I find unprofitable Shopify products?
Join variant-level sales to realized prices, product costs, fulfillment, payment and platform fees, and a clearly defined ad cost. Calculate contribution dollars and margin using a consistent period, then investigate negative or incomplete rows before changing assortment.
Should I include advertising in SKU profit?
Keep pre-ad and post-ad contribution as separate views. Include ad cost only when it can be assigned to the SKU on a documented basis. A storewide blended CAC is useful for planning but does not reveal the causal cost of acquiring each product buyer.
Is contribution margin the same as net profit margin?
No. Contribution margin subtracts the cost categories you define as variable and divides the result by the stated revenue base. Net profit margin uses net profit after the business's broader expenses and accounting treatment.
How often should I audit SKU profitability?
Use a regular cadence that fits order volume and cost volatility, and rerun after material price, supplier, fulfillment, fee, or advertising changes. Compare like-for-like periods and annotate promotions, stockouts, and seasonal shifts.