What this SKU profit auditor calculates
The auditor reads one product row at a time and calculates modeled selling price, payment and platform fees, pre-ad contribution, optional after-ad contribution, contribution margin, maximum CPA, break-even ROAS and (when configured) a minimum price for a target contribution margin. It does not connect to Shopify or alter the source CSV.
“Contribution” means modeled revenue left after the variable per-unit and per-order costs listed in the formulas. It is not company net income or accounting profit. This model does not automatically include tax, refunds, returns, fixed overhead or customer lifetime value.
Map Shopify fields and review each row
A standard Shopify products export commonly includes Title, Variant SKU, Price and Cost per item. Confirm each suggested mapping because merchant exports and third-party product CSVs can use different headings. SKU is the unique row key; the tool never joins or merges rows by title. Duplicate or blank SKUs are flagged instead of guessed.
Map fulfillment, payment and platform fees, advertising CPA, and other unit costs when those values exist in your CSV. A nonblank mapped value overrides its visible store-wide default for that SKU. Blank fee and cost cells use the displayed default. An empty ad CPA stays unknown: the auditor still calculates pre-ad contribution, but leaves after-ad contribution and after-ad margin blank.
Formula and worked example
Modeled price P = list price × (1 − discount). Payment fee = P × payment rate + payment fixed fee. Platform transaction fee = P × platform rate + platform fixed fee. Pre-ad contribution = P − product cost − fulfillment − payment fee − platform fee − other unit costs. After-ad contribution = pre-ad contribution − entered ad CPA.
Suppose a product has a $48 list price, 10% modeled discount, $12 product cost, $5 fulfillment, a 2.9% + $0.30 payment fee, a 0.5% platform fee, $1 other unit cost and $8 CPA. P is $43.20. Payment is $1.55, platform fee $0.22, pre-ad contribution $23.43, after-ad contribution $15.43, and after-ad contribution margin is 35.72%. Maximum CPA is $23.43 and break-even ROAS is 1.84x. With a 20% target contribution margin, the modeled minimum price is $34.33 because the entered CPA is included in the target-price numerator.
These are illustrative USD inputs only, not published Shopify, Stripe or advertising rates. Replace them with the rates and costs that apply to your own account, country, plan and payment methods.
Understand maximum CPA, ROAS and target price
Maximum CPA is the positive pre-ad contribution available to pay for acquisition before the listed variable costs leave no contribution. If pre-ad contribution is zero or negative, maximum CPA and break-even ROAS are unavailable, and the SKU is labeled as having no positive contribution before ads.
For a target contribution margin M, minimum price = (product cost + fulfillment + other unit costs + fixed fees + entered CPA) ÷ (1 − payment rate − platform rate − M). If the denominator is zero or negative, the selected rates and margin cannot be reached at any finite price. If CPA is blank, the target-price estimate is pre-ad and does not imply a profitable advertising price.
Use weighted summaries without averaging SKU percentages
If you map an orders or volume column, enter a nonnegative order weight for each valid row. The weighted contribution margin is total weighted contribution divided by total weighted modeled revenue. Without complete weights, the tool does not display a store-wide contribution margin and never takes a simple average of SKU margin percentages.
The what-if controls create a second calculation from the same baseline rows. A scenario discount or fee rate changes only the what-if result; it does not overwrite the original discount, mapped fees or SKU-level values. Blank scenario fields inherit the baseline assumptions.
Data quality, currency and model limits
Blank price, missing or negative product cost, malformed numbers, duplicate SKU, missing currency, mixed currencies, and invalid mapped costs are surfaced. Price and cost cells must contain plain numeric values; currency symbols or separators are not silently stripped. Correct a row in its expanded SKU inputs or fix the source CSV and upload it again.
Choose one currency for the whole audit. If the file contains a currency column, map it; rows that do not match the selected currency are held out of calculation. There is no exchange-rate conversion. Fee defaults begin at editable zero placeholders and are not claims about standard rates. You can save those assumptions on this device and clear them; uploaded rows are never saved.