The problem with gross margin

If you run an eCommerce brand, your accountant probably gives you a gross margin number. Revenue minus cost of goods sold. Simple. And almost useless for making actual business decisions.

Here's why: gross margin treats all revenue the same. A sale through your Shopify store, a sale through Amazon, and a wholesale order to Target all show up with the same margin — even though the costs to fulfill, ship, and acquire those customers are completely different. An order from a repeat Klaviyo subscriber and an order from a cold Meta ad have very different economics, but gross margin can't tell you that.

At Shopkeeper, we use a framework called PC1/PC2/PC3 — three layers of profit contribution that peel back costs in the order they actually occur in an eCommerce business. By the time you get to PC3, you know exactly how much margin is left to cover your fixed costs, and more importantly, you know where value is being created and where it's leaking.

The three layers

PC1 — Profit Contribution 1

PC1 = Revenue – Cost of Getting Products Into the Warehouse This includes FOB costs (what you pay the manufacturer) and inbound logistics (freight, duties, customs, warehousing receiving). PC1 tells you: for every dollar of revenue, how much is left after you've paid to get the product on a shelf?

PC1 is the closest thing to traditional gross margin, but it's more precise. Standard COGS often lumps in outbound shipping or platform fees. PC1 isolates only the costs of procurement and inbound — so you get a clean read on your product margins before anything else touches them.

Example: A candle brand selling a $40 candle FOB cost: $8 Inbound freight + duty: $2 PC1 = $40 – $10 = $30 (75% PC1 margin)

This is where you catch sourcing problems. If your PC1 margin is declining quarter over quarter, the issue is upstream — raw material costs, freight rates, or currency fluctuations. You don't need to change your pricing or marketing. You need to renegotiate with your supplier or find a new shipping lane.

PC2 — Profit Contribution 2

PC2 = PC1 – Cost of Getting Products to the Customer This includes outbound logistics (shipping to the customer), pick and pack (3PL or in-house fulfillment), and platform fees (Shopify transaction fees, Amazon referral fees, payment processing).

PC2 is where channel differences start to show. An order fulfilled by Amazon FBA has completely different PC2 economics than the same product shipped from your own 3PL. A $5 flat-rate shipping offer on your DTC site eats into PC2 differently than free shipping bundled into Amazon's pricing.

Same candle, two channels: DTC (Shopify): PC1 $30 – shipping $5 – pick/pack $3 – Shopify fees $2 = PC2 of $20 (50%) Amazon FBA: PC1 $30 – FBA fees $10 – referral fee $6 = PC2 of $14 (35%)

This is the number that matters for customer lifetime value. When we calculate CLV at Shopkeeper, we do it on a PC2 basis — not on revenue. Revenue lifetime value tells you how much a customer spends. CLV on a PC2 basis tells you how much a customer is actually worth after all the variable costs of getting them their product. That's a fundamentally different number, and it changes how much you can afford to spend on acquisition.

PC3 — Profit Contribution 3

PC3 = PC2 – Customer Acquisition and Remarketing Costs This includes performance marketing spend (Meta, Google, TikTok), creative production costs, affiliate commissions, influencer fees, and email marketing platform costs. PC3 is the contribution margin left to cover your fixed costs.

PC3 is the ultimate truth-teller. A channel can look great at PC1, decent at PC2, and terrible at PC3 — or the reverse. Email-driven revenue typically has near-zero PC3 cost (you're not paying to acquire those customers again), which is why understanding your email revenue share matters so much.

Same candle, acquisition costs layered in: DTC via paid Meta ad: PC2 $20 – CAC $12 = PC3 of $8 (20%) DTC via email (repeat customer): PC2 $20 – $0 = PC3 of $20 (50%) Amazon (organic rank): PC2 $14 – $0 = PC3 of $14 (35%)

Look at those three lines. The same product, three completely different PC3 margins. A blended gross margin number would average them all together and tell you nothing. The PC1/PC2/PC3 framework tells you exactly where to invest: grow email, protect your Amazon organic rank, and make sure your Meta CAC stays under $12 or that channel goes underwater.

The supporting metrics

The PC framework doesn't work in isolation. There are a handful of related metrics we track alongside it:

Base CAC Performance marketing spend / new customers acquired. The simplest version of acquisition cost.
Fully Loaded CAC Base CAC plus creative production costs — because that $3K/month you spend on ad creative is part of the cost of acquiring customers, even if it doesn't show up in Meta's dashboard.
RLV (Revenue Lifetime Value) Total revenue per customer over a 12-month window. This is the number most brands track. It's useful but incomplete.
CLV (Customer Lifetime Value) Lifetime value over 12 months calculated on a PC2 basis. This is the number that actually tells you how much you can spend on marketing to acquire a customer. If your RLV is $120 but your PC2 margin is 50%, your CLV is $60 — and that's your real ceiling for acquisition spend.
ATP (Available to Promise) Monthly revenue loss from being out of stock. This is the cost of the sales you didn't make — and it's invisible on your P&L. Most brands track what they sold. Almost nobody tracks what they lost. ATP connects your inventory management to your revenue forecasting.

Why this changes everything

When you switch from a single gross margin number to the PC1/PC2/PC3 framework, three things happen immediately:

You stop making channel decisions on bad data. Most brands know their DTC margin is higher than Amazon. But "higher" isn't actionable. Knowing that DTC via email has a 52% PC3 margin while DTC via paid Meta has a 22% PC3 margin — that's actionable. It tells you where to allocate your next dollar.

You set ROAS targets that actually mean something. If you know your PC2 margin is $20 on a $40 product, you know your break-even CAC is $20. Set your ROAS target at 2x and you're profitable. Set it at 1.5x and you're spending $27 to make $20 in contribution — you're losing money on every new customer unless they come back.

You can model growth scenarios with confidence. Want to launch on Amazon? You can model the PC2 impact before you commit. Thinking about raising prices? You can see the PC1 lift and whether it survives through PC2 and PC3. Considering a 3PL switch? Model the PC2 change across all channels before you sign the contract.

Getting started

If you want to implement this framework for your brand, start with three months of historical data. Map every cost to PC1, PC2, or PC3. Break it out by channel. The first time you see your channel-level PC3 margins side by side, you'll understand your business differently than you ever have from a standard P&L.

If you'd like help building this out, that's exactly what we do. Get in touch and we'll walk you through what it looks like for your brand.