A DTC store can grow revenue and still make the owner poorer. The usual culprit is not a mysterious advertising problem; it is a measurement problem. If the team scales campaigns against revenue or ROAS while ignoring variable costs, every additional order can look successful in the ad dashboard and still destroy cash.
The useful number before scale is contribution margin after the costs that rise with each order. Shopify defines contribution margin as sales revenue minus variable costs.[1] For a DTC operator, the practical version should be built at order level rather than copied from an accounting textbook.
Start with the order, not the ad account
For one paid-acquisition order, write down:
net revenue – product cost – pick/pack – outbound shipping subsidy – payment fees – expected returns/refunds – channel-variable software or commissions = pre-ad contribution
Then subtract the advertising cost attributable to that order:
pre-ad contribution – customer acquisition cost = contribution after acquisition
If that last number is consistently negative, increasing spend is not scale. It is buying losses faster.
The exact list of variable costs changes by business. A merchant that charges shipping should not use the same formula as one offering free shipping. A high-return apparel store needs a return reserve; a low-return replacement-parts store may need only a small one. A marketplace commission is variable; a salaried employee usually is not. The point is not to find a universal formula. The point is to make the formula match how cash actually leaves your business.
A worked example
Suppose a store receives a $120 order before tax. The order contains:
| Item | Amount |
|---|---|
| Net product revenue | $120.00 |
| Product landed cost | -$38.00 |
| Fulfillment and packaging | -$7.00 |
| Shipping subsidy | -$10.00 |
| Payment processing estimate | -$3.78 |
| Expected return/refund reserve | -$8.00 |
| Pre-ad contribution | $53.22 |
For the payment-fee line, a team might use its own processor statement. As a public reference point only, Stripe's U.S. standard pricing page currently lists 2.9% + 30¢ for successful domestic online card transactions; pricing varies by product, market, card type, and contract.[2] Do not treat that example rate as your cost unless it is actually your rate.
If paid acquisition costs $42 for that order, post-acquisition contribution is $11.22. If CAC rises to $58, the order becomes -$4.78 before fixed overhead. Revenue is unchanged; the economics are not.
This is why an apparently healthy ROAS can mislead. At $120 revenue and $42 CAC, platform ROAS is 2.86. At $58 CAC it is still 2.07. Neither ratio tells you whether the order paid for product, fulfillment, shipping, fees, and returns.
The five questions to answer before increasing budget
1. What is the margin by product mix, not by store average?
A blended store average can hide a bad scale path. If paid traffic disproportionately buys a low-margin SKU, the campaign may look profitable when evaluated against the average margin of the whole catalog.
Build at least three views: hero SKU, common bundle, and storewide mix. If the advertising platform can pass product or conversion value data, use values that reflect economic value rather than treating every conversion as equal. Google Ads' value-based bidding guidance explicitly describes using business value such as revenue, profit margin, repeat purchase, and other first-party signals when assigning conversion values.[3]
2. How much of today's margin will come back as a return?
Returns are not merely a customer-service metric. They change the value of the original order. Use a trailing reserve by product or category. A simple model is:
expected return cost per order = return probability × average financial loss when a return occurs
The loss can include refunded revenue, return shipping, inspection, markdown, repackaging, or unsellable inventory. If returns take weeks to arrive, a campaign can appear profitable long enough for the team to scale the wrong thing.
3. Are you using first-order contribution or customer lifetime value?
Lifetime value is useful, but it is also the easiest number to make optimistic. Before allowing future repeat purchases to subsidize today's acquisition, demand evidence: cohort repeat rate, elapsed time to second order, gross or contribution margin on repeat orders, and cancellation/refund behavior.
A safe operating rule is to have two ceilings:
- Cash-safe CAC: acquisition cost that keeps the first order above your chosen contribution threshold.
- LTV-supported CAC: a higher ceiling allowed only for cohorts with proven repeat economics.
Do not mix them on the same dashboard without labels.
4. What happens when CAC rises 20%?
Scale changes the auction. Creative tires. Audience quality changes. Promo mix changes. Run a sensitivity table before raising spend.
For the worked example above:
| CAC | Post-acquisition contribution |
|---|---|
| $34 | $19.22 |
| $42 | $11.22 |
| $50 | $3.22 |
| $58 | -$4.78 |
| $66 | -$12.78 |
The break-even CAC is not a target. It is a cliff. A business needs room for reporting error, refunds, discounting, and ordinary operating surprises.
5. Does cash timing let you survive the profitable sale?
A sale can be profitable on paper and still create a cash squeeze. Inventory may be paid weeks before sale; processors may delay payouts; refunds may arrive after the next replenishment order. Add a cash-timing view beside the margin model: supplier terms, average inventory days, processor payout timing, and refund timing.
A growth plan that ignores working capital can fail even when each order has positive contribution.
A practical scale rule
Do not ask, “Can we spend more?” Ask, “Can the next block of spend clear our contribution floor under a worse-than-current scenario?”
One operating method:
- Calculate contribution by SKU or bundle for the latest four weeks.
- Reserve for returns using realized category data.
- Set a minimum post-acquisition contribution per order or percentage.
- Stress-test CAC at current, +10%, and +20%.
- Raise budget in a controlled step rather than all at once.
- Recalculate using settled orders, not only same-day platform data.
- If contribution falls below the floor for a defined observation window, reduce spend and diagnose product mix, creative, traffic quality, offer, and conversion rate separately.
That sequence prevents one metric from becoming the explanation for everything.
What changes the answer
This model is a management framework, not a universal accounting rule. Subscription businesses, consumables with strong repeat purchase, made-to-order goods, very high return categories, wholesale hybrids, and stores with meaningful post-purchase upsells all need a different treatment. Taxes, duties, payment fees, shipping costs, chargebacks, and refund rules also differ by market.
Use actual merchant statements and accounting records wherever possible. Public fee pages are useful for a benchmark, not a substitute for your own ledger.
Decision checklist
Before a DTC team scales a paid-acquisition campaign, it should be able to answer yes to all of these:
- We know contribution margin by the products paid traffic is actually buying.
- We include a realistic reserve for refunds and returns.
- We use our real processing and fulfillment costs.
- We have separate first-order and lifetime-value views.
- We know the CAC level where contribution turns negative.
- We have tested a worse CAC scenario.
- We understand the cash timing of inventory, payouts, and refunds.
- The team agrees on the contribution floor that triggers a scale-down.
When those answers are explicit, ad scale becomes an economic decision rather than a dashboard ritual.
Two traps the contribution model should expose
Discount-driven AOV can hide weaker economics. A bundle may raise average order value but also increase product cost, shipping weight, pick complexity and return exposure. Recalculate the order after the discount and the full basket cost. Do not assume that a bigger cart automatically creates more contribution.
Free-shipping thresholds can create a margin step. If an order just crosses the threshold and the merchant absorbs a much higher shipping charge, the incremental item may add revenue while reducing contribution. Model the common baskets around the threshold rather than using one average shipping number.
A useful break-even expression is:
maximum CAC at zero contribution = net revenue – all non-ad variable costs
But the operating CAC ceiling should normally be lower than that zero-profit number. If management wants, for example, at least $10 of contribution after acquisition on the worked order, the practical CAC ceiling would be $53.22 – $10 = $43.22, not $53.22.
The same logic helps evaluate discounts. If a 10% coupon reduces the $120 order by $12 while costs barely move, pre-ad contribution falls from $53.22 to about $41.22 before considering any change in processing fee or return behavior. A campaign that was safe at $42 CAC may suddenly sit at or below the desired floor.
Keep a settled-order view beside the real-time dashboard
Ad platforms are useful for pacing, creative and audience decisions, but finance should maintain a second view based on settled economic events.
At minimum, reconcile weekly:
- gross orders versus cancelled orders;
- discounts actually redeemed;
- refunds issued;
- return reserve versus realized returns;
- shipping charged to customers versus shipping paid;
- payment fees from processor statements;
- advertising invoices or platform spend;
- chargebacks where material.
The purpose is not to make the marketing team wait a month for every decision. It is to detect when the fast dashboard and the settled ledger are drifting apart. If the drift is persistent, update the assumptions used for daily bidding decisions.
One final discipline is to keep the assumptions visible. If the team changes a return reserve from 8% to 4%, or changes shipping from actual average to an optimistic estimate, the dashboard can improve without the business improving. Put an owner and last-updated date beside each assumption so a favorable model change cannot quietly masquerade as operational progress.
Related Reading
Sources
- Shopify, “What Is Contribution Margin? Definition, Formula, and Example,” published November 10, 2022: https://www.shopify.com/ca/blog/what-is-contribution-margin
- Stripe, U.S. pricing page, accessed October 2, 2026: https://stripe.com/pricing
- Google Ads Help, value-based bidding / conversion value guidance, accessed October 2, 2026: https://support.google.com/google-ads/