← Back to blog
Budget & Economics· 10 min read

Contribution Margin Math for Shopify Stores With Variable Shipping

Worked contribution margin calculations for Shopify stores where shipping cost varies by weight, zone or order size, and how it changes ad budgeting.

Written by Mantas JurgutisFounder, Adsify — builds the Google & Meta automation merchants use daily

Editorially reviewed by Adsify Editorial on June 1, 2026Reviewed against Shopify, Google Ads and Meta official documentation.

Why flat shipping assumptions break down

Every contribution margin calculation elsewhere assumes a single, flat shipping cost per order for simplicity. Real Shopify stores selling physical goods often face shipping cost that varies by weight, dimensional weight, destination zone, or number of items in the cart — meaning the flat-shipping assumption can overstate or understate true contribution margin by a meaningful amount depending on order mix. This matters directly for ad budgeting because break-even CPA and ROAS targets calculated off an inaccurate average shipping cost will misjudge campaign performance.

Building a weighted average shipping cost

Rather than picking one shipping cost, pull the last 60-90 days of actual carrier costs from Shopify shipping reports and calculate a volume-weighted average across your real order mix. Worked example: 40% of orders ship at $5.20 (small parcel), 35% at $7.80 (medium), 25% at $12.50 (large/heavy). Weighted average = (0.40×$5.20) + (0.35×$7.80) + (0.25×$12.50) = $2.08 + $2.73 + $3.125 = $7.935, roughly $7.94 per order. This single blended number is far more defensible for budgeting than an assumed flat $6 or $8.

Worked contribution margin with weighted shipping

AOV $72, COGS $23 (32%), payment fees ~$2.39 (2.9%+$0.30), weighted average shipping $7.94 from above. Contribution margin = $72 − $23 − $2.39 − $7.94 = $38.67, or 53.7% of AOV. Break-even ROAS = 1 ÷ 0.537 = 1.86x. Compare this to a naive flat-shipping assumption of $6: contribution margin would be calculated as $40.61 (56.4%), break-even ROAS 1.77x — a difference of 0.09x that, at scale, is the difference between a campaign looking marginally profitable versus marginally unprofitable.

Free-shipping-over-threshold models

Many Shopify stores offer free shipping above a cart value threshold (e.g., free over $75) while charging below it — this bifurcates contribution margin by order size and should be modeled as two separate bands rather than one blended average, since ad campaigns targeting different price points will naturally skew toward one band or the other. Worked example: orders under $75 average $58 AOV, absorb no shipping cost to the store (customer pays $6.99 flat rate), giving contribution margin of roughly 58% of AOV; orders over $75 average $110 AOV, store absorbs $8.50 average shipping, giving contribution margin of roughly 51% of AOV. A campaign promoting a specific $65 product should be judged against the under-threshold margin, not a blended figure.

Weight-based and dimensional weight surprises

Carriers increasingly bill based on dimensional weight (length × width × height ÷ a divisor factor) rather than actual weight for lightweight-but-bulky items, which can make an item that 'feels' cheap to ship actually cost significantly more than the flat rate a store might charge the customer. A store selling a lightweight but bulky home goods item might charge customers a flat $5.99 shipping fee while actual carrier cost, driven by dimensional weight, runs $9.40 — a $3.41 per-order gap that silently erodes contribution margin below what the store's spreadsheet assumes unless it's checked against actual carrier invoices.

Zone-based shipping and geographic ad targeting

Stores shipping nationally (or internationally) via zone-based carrier pricing see meaningfully different shipping cost by customer location — a worked example might show Zone 2 costing $6.10 and Zone 8 costing $14.75 for the same package. If ad campaigns aren't geographically segmented, this variance simply gets absorbed into the blended average; but a store running geo-targeted campaigns (for example, a regional promotion) should recalculate contribution margin using the specific zone mix of that campaign's target geography rather than the store-wide blended average, since it can shift break-even CPA by several dollars.

Multi-item cart shipping efficiencies

Orders with multiple items often ship more cheaply per item than single-item orders because fixed packaging costs and, in many cases, per-package carrier minimums are amortized across more units. A worked example: single-item order ships at $6.50; a 3-item order in the same package ships at $9.20, or $3.07 per item — meaning campaigns or promotions that successfully increase items-per-order (bundling, free-gift-with-purchase, quantity discounts) improve contribution margin not just through higher AOV but through lower shipping cost per unit, a secondary effect worth quantifying when justifying a bundling-focused campaign's budget.

International shipping cost volatility

Stores running international ad campaigns face shipping costs that can vary dramatically by destination country, plus potential duties/customs complexity that some stores absorb and others pass to customers via delivered-duty-paid pricing. A campaign targeting a new international market should build a separate contribution margin calculation using that market's actual landed shipping cost rather than assuming domestic economics apply — a common and costly assumption error when expanding a proven domestic campaign internationally without re-running the shipping math first.

Return shipping as a variable cost

For categories with meaningful return rates, return shipping (whether paid by the store or the customer) is a variable cost that belongs in the contribution margin calculation if the store covers it, which many do via prepaid return labels as a competitive/CX necessity. Worked example: 18% return rate, store-covered return shipping averaging $6.20, effective per-order cost = 0.18 × $6.20 = $1.12 spread across all orders (returned and kept). Adding this to the earlier $38.67 contribution margin example: adjusted contribution margin = $38.67 − $1.12 = $37.55, a modest but real reduction worth including for categories with above-average return rates like apparel or footwear.

Putting the full model together

A complete variable-shipping contribution margin model for a single order: Revenue (realized, post-discount) − COGS − payment processing fees − weighted average outbound shipping cost (segmented by threshold/zone/weight band if material) − expected return shipping cost allocation = contribution margin. This is meaningfully more work than the flat-shipping shortcut used in simpler budgeting exercises, but for stores where shipping cost genuinely varies by 30%+ across the order mix (a common threshold above which the flat assumption becomes materially misleading), it's necessary for setting an accurate break-even CPA and ROAS target.

Operationalizing this without a full-time analyst

Most Shopify stores don't have the bandwidth to rebuild this model from scratch every month. A workable middle ground: recalculate the weighted average shipping cost quarterly from actual carrier data, use threshold/zone segmentation only for campaigns specifically targeting a distinct order-size or geography, and otherwise apply the single blended figure to standard campaign budgeting. This captures most of the accuracy benefit without requiring a rebuilt model for every campaign launched.

Frequently asked questions

Why does a flat shipping cost assumption cause budgeting errors?

If actual shipping cost varies materially by order size, weight or destination, a single flat assumption can overstate or understate contribution margin, distorting break-even CPA and ROAS targets.

How do I calculate a weighted average shipping cost?

Pull actual carrier costs by order segment (small/medium/large, or by zone) over 60-90 days and multiply each segment's cost by its share of total order volume, then sum the results.

Does free-shipping-over-threshold pricing need separate margin modeling?

Yes — orders above and below the threshold typically have different contribution margins and should be modeled as two bands rather than one blended average.

How does dimensional weight pricing affect margin?

Lightweight but bulky items can be billed by carriers based on dimensional weight rather than actual weight, sometimes costing significantly more than a flat customer-facing shipping charge assumes.

Should return shipping be included in contribution margin?

Yes, if the store covers return shipping costs, expected return shipping should be allocated across all orders as a variable cost.

Sources

Try Adsify free for 7 days

Launch AI-powered Google & Meta ads for your Shopify store in one click. See pricing or the full feature list.

Install from Shopify App Store →

Keep reading on Budget & Economics