Install
openclaw skills install profit-calculatorCalculate true per-unit profit margins across channels by factoring in COGS, platform fees, shipping costs, ad spend allocation, returns, and overhead to identify which products and channels actually make money.
openclaw skills install profit-calculatorMany ecommerce brands think they are profitable because revenue is growing, only to discover at year-end that certain SKUs or channels have been losing money on every order. Profit Calculator walks you through a full per-unit profit waterfall for each SKU on each channel so you can see exactly which products and channels deserve more budget and which should be repriced, rebundled, or killed.
The operator says "my TikTok Shop sales look great but the bank account isn't growing — can we figure out what's actually making money?"
A Shopify seller asks "if I raise the price by $2, will that offset my new 3PL rate and higher Meta CPMs, or am I still underwater?"
An Amazon FBA brand wants to compare a single SKU's contribution margin between FBA, FBM, and their own DTC store side by side before reallocating inventory.
A founder is preparing a board update and needs a clean per-SKU contribution margin waterfall that rolls up to a blended gross margin with and without advertising.
| Decision | Strong | Acceptable | Weak |
|---|---|---|---|
| COGS calculation | Landed cost including freight, duty, inspection, and packaging per unit | Factory cost plus estimated freight | Factory cost only, no landed adjustments |
| Platform fee mapping | Every fee line itemized per channel (commission, referral, payment processing, storage, subscription amortized) | Major fees captured, minor fees estimated as percentage | Single blended "platform fee" percentage across channels |
| Shipping cost model | Actual weight/zone-based rate per SKU per channel from 3PL rate card | Average shipping cost per order applied uniformly | Free shipping absorbed with no per-unit allocation |
| Ad spend allocation | Channel-specific ROAS or blended MER applied per SKU with clear attribution window | Blended MER applied uniformly across all SKUs | Ad spend not included in unit economics |
| Return cost modeling | Return rate per category with full loaded cost (reverse logistics + product loss + restocking labor) | Average return rate applied with estimated cost per return | Returns ignored or treated as top-line revenue reduction only |
| Overhead allocation | Fixed overhead allocated per unit using activity-based costing or revenue-weighted method | Overhead allocated as flat percentage of revenue | Overhead excluded from unit economics entirely |
| Contribution margin target | Channel-specific targets with minimum floor (e.g., 20% DTC, 12% Amazon, 8% TikTok) | Single blended target across all channels | No target defined, just reporting current margins |
| Price sensitivity analysis | Scenario modeling at multiple price points showing margin impact per channel | Single price change scenario modeled | No price sensitivity analysis included |
| SKU rationalization | Clear kill/reprice/rebundle recommendations with P&L impact quantified | Flagging negative-margin SKUs without action plan | No SKU-level recommendations |
| Reporting cadence | Monthly P&L waterfall with automated data pull and variance tracking | Quarterly manual calculation | One-time snapshot with no refresh plan |
The brand is growing 40% YoY but cash flow is flat. Revenue metrics mask that 30% of SKUs lose money after platform fees and returns. The waterfall exposes per-unit contribution margin so the operator knows exactly where the margin leak is.
DTC looks profitable at 60% gross margin, but after Meta ad spend at 4x ROAS, shipping, and returns, contribution margin is 12%. Meanwhile Amazon FBA at 35% gross margin nets 18% contribution because ad spend is lower and returns are handled by Amazon. Without per-channel unit economics, budget allocation is backwards.
Platform fees compound in ways that are not obvious. Amazon's referral fee + FBA fee + storage fee + payment processing can exceed 40% on low-ASP items. TikTok Shop's commission + shipping subsidy clawback + affiliate commission stack differently. Each channel's fee waterfall must be mapped individually.
Brands treat returns as a revenue reversal, but the true cost includes reverse logistics ($4–8 per unit), product loss (30–60% of returned apparel is unsellable at full price), restocking labor, and the original outbound shipping cost that was never recovered. A 25% return rate can eliminate all margin on a $30 product.
Using blended MER across all SKUs treats a hero product driving 80% of ad-attributed revenue the same as a tail SKU with zero ad spend. Per-SKU or per-category ROAS allocation reveals which products can afford advertising and which cannot.
Brands exclude warehouse rent, software subscriptions, and team salaries from unit economics because they are "fixed costs." But a product that shows 15% contribution margin before overhead and 2% after overhead is one supply chain disruption away from losing money.
Without a margin model, price changes are gut decisions. The waterfall lets you simulate raising price by $3 on Amazon and see exactly how contribution margin changes after the referral fee percentage adjusts and estimated conversion rate shifts.
Collect the landed cost per unit for every SKU. Landed cost means the total cost to get one unit to your warehouse ready to sell. This includes factory cost, inbound freight (ocean/air), duty and tariffs, inspection fees, packaging materials, and any prep costs (labeling, poly-bagging).
What to ask for:
Common mistakes:
Output: A table with each SKU, its landed cost per unit, and a breakdown of what is included.
For each sales channel, document every fee that applies to a transaction. This must be done per channel because fee structures vary dramatically.
Amazon FBA fee components:
Shopify DTC fee components:
TikTok Shop fee components:
Walmart Marketplace fee components:
Output: A fee schedule table for each channel showing every line item as both percentage and estimated dollar amount per unit at current ASP.
Determine the outbound shipping and fulfillment cost per unit per channel. This is the cost to get the product from your warehouse (or 3PL or FBA) to the customer.
For FBA: The FBA fulfillment fee from Step 2 covers this. No additional shipping cost calculation needed for FBA orders.
For 3PL-fulfilled channels (DTC, TikTok Shop self-fulfilled, Walmart self-fulfilled):
For self-fulfilled:
Key nuance: Free shipping is not free. If you offer free shipping on DTC, the shipping cost still hits your margin. Capture the actual cost here.
Output: Per-unit shipping and fulfillment cost for each channel.
Decide how to attribute ad spend to unit economics. There are two approaches:
Approach A — Blended MER (simpler): Total monthly ad spend across all channels ÷ total revenue = ad cost as % of revenue. Apply this percentage to each unit's revenue. This is simpler but treats all SKUs equally, which is rarely accurate.
Approach B — Channel-specific ROAS (more accurate): For each channel, take the channel's ad spend ÷ channel's attributed revenue = channel ad cost percentage. Apply per channel. Within a channel, if you can break ROAS down by product category or hero SKU vs. tail, do so.
What to document:
Common mistake: Excluding ad spend from unit economics entirely. This makes contribution margins look artificially high and leads to bad pricing and channel allocation decisions.
Output: Ad cost per unit or ad cost as percentage of revenue, documented per channel.
Returns are one of the most underestimated margin killers. Model the full cost of a return per unit.
Return cost components:
Calculate per-unit return cost: (Return rate for category) × (reverse logistics + product loss cost + restocking labor + original shipping) = return cost per unit sold
Example: A $35 apparel item with 28% return rate, $6 reverse logistics, 40% product loss ($14), $2 restocking, $5 original shipping: 0.28 × ($6 + $14 + $2 + $5) = $7.56 return cost per unit sold
Output: Return cost per unit per channel, broken out by component.
Fixed costs do not change with volume in the short term, but they must be covered by contribution margin over time. Decide how to allocate them.
Fixed overhead categories:
Allocation methods:
Revenue-weighted: Allocate total monthly overhead proportional to each SKU's share of total revenue. Simple but penalizes high-ASP items.
Unit-weighted: Allocate total monthly overhead equally per unit sold. Simple but ignores that some SKUs consume more resources.
Activity-based: Allocate based on actual resource consumption (e.g., SKUs requiring custom packaging get more warehouse labor allocation). Most accurate but most time-consuming.
Recommendation: Start with revenue-weighted allocation. It is good enough for most brands under $10M in revenue. Switch to activity-based once you have SKUs with dramatically different handling requirements.
Output: Overhead cost per unit per channel, with the allocation method documented.
Assemble all components into a per-unit profit waterfall for each SKU on each channel.
Waterfall structure:
Decision framework based on net contribution margin:
| Margin Range | Action |
|---|---|
| > 20% | Scale — increase inventory depth, expand advertising, consider new channels |
| 10–20% | Maintain — healthy margin, optimize where possible but no urgent action |
| 5–10% | Optimize — look for cost reduction (negotiate COGS, reduce return rate, adjust price) |
| 0–5% | Reprice or restructure — raise price, cut ad spend, renegotiate fees, or rebundle |
| < 0% | Kill or dramatically restructure — exit channel, discontinue SKU, or complete repositioning |
Additional analyses to include:
Output: Complete profit waterfall table per SKU per channel, decision flags, and recommended actions.
Context: A skincare brand selling 15 SKUs through their Shopify DTC store and Amazon FBA. Monthly revenue is $180K ($120K DTC, $60K Amazon). The founder believes DTC is more profitable because gross margins are higher, but cash flow does not reflect this.
Step 1 — COGS: Landed cost ranges from $4.20 (30ml serum) to $11.80 (full skincare kit). The brand sources from South Korea with 6.5% duty on cosmetics. Average landed cost is $7.40 per unit including freight at $0.85/unit by ocean and duty at $0.48/unit.
Step 2 — Fees: DTC: Shopify Basic ($39/mo ÷ 4,000 units = $0.01) + Shopify Payments (2.9% + $0.30) = $1.17 average. Amazon: 8% referral ($2.40) + FBA fee ($3.86 average) + storage ($0.18/unit/month) = $6.44 average.
Step 3 — Shipping: DTC: 3PL pick-pack ($2.50) + USPS Priority ($6.20 average) + materials ($0.45) = $9.15. Amazon FBA: included in FBA fee above.
Step 4 — Ad spend: DTC runs Meta ads at 4.2x ROAS. $28,600/month ÷ $120K revenue = 23.8% of DTC revenue = $7.14 per unit at $30 ASP. Amazon runs Sponsored Products at 6.8x ROAS. $8,800/month ÷ $60K = 14.7% = $4.41 per unit at $30 ASP.
Step 5 — Returns: DTC return rate: 8% (skincare returns are low). Cost per return: $6 reverse logistics + $12 product loss (opened, unsellable) + $1 restocking = $19. Per-unit return cost: 0.08 × $19 = $1.52. Amazon return rate: 5%. Amazon handles returns, but charges per return. Per-unit return cost: 0.05 × $15 = $0.75.
Step 6 — Overhead: $22,000/month total overhead. Revenue-weighted: DTC gets $14,667 (66.7%), Amazon gets $7,333 (33.3%). Per unit: DTC $3.67/unit (4,000 units), Amazon $3.67/unit (2,000 units).
Step 7 — Waterfall:
| Line Item | DTC ($30 ASP) | Amazon ($30 ASP) |
|---|---|---|
| Retail price | $30.00 | $30.00 |
| − Platform fees | −$1.17 | −$6.44 |
| = Net after fees | $28.83 | $23.56 |
| − COGS | −$7.40 | −$7.40 |
| = Gross profit | $21.43 | $16.16 |
| − Shipping/fulfillment | −$9.15 | $0.00 |
| = After fulfillment | $12.28 | $16.16 |
| − Ad spend | −$7.14 | −$4.41 |
| = Contribution pre-returns | $5.14 | $11.75 |
| − Returns | −$1.52 | −$0.75 |
| = Contribution post-returns | $3.62 | $11.00 |
| − Overhead | −$3.67 | −$3.67 |
| = Net contribution | −$0.05 | $7.33 |
| Net margin | −0.2% | 24.4% |
Insight: DTC is actually break-even to slightly unprofitable at the per-unit level despite higher gross margins. The combination of expensive 3PL shipping ($9.15 vs. $0 for FBA) and higher ad cost (23.8% vs. 14.7%) wipes out the fee advantage. Recommendations: negotiate 3PL rates, test higher DTC pricing ($33–35), reduce Meta ad spend on low-converting SKUs, and shift inventory allocation toward Amazon.
Context: An apparel brand doing $350K/month across Shopify DTC ($200K), TikTok Shop ($90K), and Amazon ($60K). High return rates are suspected of eroding margins but the founder has never quantified the impact.
Step 1 — COGS: Average landed cost $12.50 per unit. Includes $8.00 factory, $1.80 freight (air for replenishment), $1.00 duty (12.5% on apparel), $1.20 packaging, $0.50 quality inspection.
Step 7 — Waterfall Summary (hero product: $45 hoodie):
| Line Item | DTC | TikTok Shop | Amazon FBA |
|---|---|---|---|
| Retail price | $45.00 | $42.00 | $45.00 |
| − Platform fees | −$1.61 | −$5.88 | −$8.10 |
| − COGS | −$12.50 | −$12.50 | −$12.50 |
| − Shipping | −$8.40 | −$7.20 | $0.00 |
| − Ad spend (channel ROAS) | −$11.25 | −$6.30 | −$5.40 |
| − Returns (28% DTC, 18% TT, 22% AMZ) | −$7.56 | −$4.86 | −$5.94 |
| − Overhead | −$2.80 | −$2.80 | −$2.80 |
| = Net contribution | $0.88 | $2.46 | $10.26 |
| Net margin | 2.0% | 5.9% | 22.8% |
Insight: The $45 hoodie barely breaks even on DTC and TikTok Shop. Returns are the primary margin killer — at 28% return rate with $27 fully-loaded cost per return, DTC loses $7.56 per unit sold to returns alone. Recommendations: implement fit quiz to reduce returns by 5–8 points, raise DTC price to $49, audit TikTok affiliate commission structure, and prioritize Amazon inventory allocation for this SKU.
Using gross margin as the decision metric. Gross margin (revenue minus COGS) ignores the majority of per-unit costs. A SKU can have 70% gross margin and negative contribution margin. Always use the full waterfall.
Treating shipping as a single line item. Outbound shipping on DTC is fundamentally different from FBA fulfillment fees. One is variable by zone and weight; the other is tiered by product size. Lumping them together misses optimization opportunities.
Ignoring returns in unit economics. Returns are not just a revenue reversal. They carry real costs — reverse logistics, product loss, restocking — that can add $5–20 per unit sold depending on category and return rate.
Applying blended ad spend across all SKUs. Hero products and tail SKUs have dramatically different relationships with advertising. A hero driving most of the ad-attributed revenue subsidizes tail SKUs that would show negative margin if ad spend were properly allocated.
Forgetting platform-specific fees. Amazon alone has 6+ distinct fee types. TikTok Shop has affiliate commissions that do not exist on other platforms. Every channel must be mapped individually.
Using stale COGS data. Suppliers raise prices, freight rates fluctuate, and duty rates change. COGS should be updated at minimum quarterly or with every new PO.
Excluding overhead entirely. Fixed costs feel disconnected from unit economics, but contribution margin must cover overhead. Showing the overhead line separately is better than ignoring it.
Not modeling the return cost per unit sold. The correct formula is: return rate × cost per return = cost per unit SOLD (not per unit returned). This amortizes return costs across all units, including those that are never returned.
Confusing channel revenue with channel profit. A channel doing $100K/month in revenue and 5% margin contributes $5K. A channel doing $40K/month at 25% margin contributes $10K. Budget and inventory allocation should follow contribution dollars, not revenue.
Building the model once and never updating it. Costs change constantly. A profit waterfall is only useful if it is recalculated monthly with fresh data. Build the model to be easily refreshable.
references/output-template.md for the full profit waterfall template with all 7 sections.references/fee-schedule-reference.md for current platform fee structures across Amazon, Shopify, TikTok Shop, and Walmart.references/sensitivity-analysis-guide.md for price and cost scenario modeling methodology.assets/quality-checklist.md for the 55-item quality checklist to validate your analysis before presenting.