How Do You Track Profit Margins in a Print on Demand Store?
You track profit margins in a print on demand store by capturing three costs on every order (the provider's product cost, provider shipping, and the sales channel's fees) and subtracting them from what the buyer paid. The hard part isn't the math, it's keeping that math accurate as your provider costs, product mix, and channels change. The stores that stay profitable do two things: they pull real cost data from the print provider instead of guessing, and they set a floor that stops any order from shipping at a loss before it goes to production.
Most POD margin problems aren't caused by bad pricing on day one. They're caused by a cost that quietly moved after you set the price: a provider raised a blank's price, a heavier product pushed shipping up, or a coupon stacked on top of an already-thin margin. If you only look at margins in a monthly spreadsheet, you find out weeks later. If margin is a live number on every order, you catch it before it ships.
What actually goes into a POD profit margin?
A print on demand margin is retail price minus every cost tied to producing and selling that one item. For a single-item order, the full stack looks like this:
| Line | Who charges it | Notes |
|---|---|---|
| Retail price | You set it | What the buyer pays for the product |
| Product cost | Print provider | The blank plus printing, per variant |
| Provider shipping | Print provider | Varies by product weight and destination |
| Channel transaction fee | Shopify, WooCommerce, Wix, etc. | A percent plus a flat fee, per order |
| Discounts and coupons | You | Comes straight off your margin |
| Refunds and reprints | You or the provider | A defect reprint the provider covers is neutral; a buyer-remorse refund is a loss |
The trap is that people compute margin on the product cost alone and forget shipping and fees. A tee that looks like it has a healthy spread on paper can land near break-even once provider shipping and the channel's cut come out. Margin has to be figured per order, on the real numbers, not on a rule of thumb you set once and never revisit.
There's a second trap that only shows up at scale: a multi-item order can ship in more than one package from more than one provider, each with its own shipping charge. If your margin model assumes one shipping fee per order, a two-provider order quietly costs you more than you tracked.
Where do you get the real cost to compute margin?
This is the part generic advice skips. To know your true margin you need the provider's actual cost per variant, and providers don't all give it to you the same way.
- Printful exposes product cost per variant through its catalog, so you can pull the exact cost for the color and size a buyer ordered.
- Gelato returns real per-variant cost and even a full receipt breakdown per order, which is the cleanest cost signal of the three because it's local-production priced by destination.
- Printify does not expose variant cost through its interface the way the other two do, so cost can come back empty. That's not a bug, it's a gap in what the provider shares, and it matters for margin tracking: any order fulfilled on a provider that doesn't report cost has to be treated as "cost unknown," not "cost zero."
That last point is the one that separates honest margin tracking from wishful margin tracking. If a provider doesn't tell you the cost, the responsible thing is to show the margin as unknown for that order and report how much of your revenue has known-cost margin (your margin coverage), rather than fabricating a number that makes the dashboard look complete. A dashboard that reports 100 percent margin coverage while a third of your orders ran on a cost-blind provider is lying to you.
The practical rule: prefer providers that report real cost when you care about tight margins, and where a provider is cost-blind, either enter the cost manually per product or accept that those orders are excluded from your true-margin figure.
How do you keep a margin from going negative without watching every order?
Manually checking each order's margin doesn't scale past a few sales a day, and it fails exactly when you're busiest (a viral product, a holiday rush) which is when a bad margin does the most damage. The answer is a guardrail that runs before the order goes to production.
A margin guardrail works like this: when a paid order comes in, the system computes the expected margin from the real provider cost, the provider's shipping estimate, and the channel fee. If that margin falls below a floor you set (say, it would ship at a loss, or below a minimum dollar or percent margin), the order is held instead of auto-submitted to the provider. You get a flagged order to review: approve it anyway, fix the price, or cancel. Nothing ships at a loss silently.
This matters most for the failure modes you can't predict:
- A coupon stacked on a thin margin. A 20 percent code on a product with a 25 percent margin nearly zeroes it out. A guardrail catches the specific orders where the stack went too far.
- A provider price increase you didn't notice. Your price is stale, the cost moved up, and every new sale is quietly thinner. The guardrail flags the first one instead of the fortieth.
- A heavy or oversized product shipping to a far destination, where shipping alone eats the margin you planned around domestic delivery.
- A wrong variant mapping that routes an order to a pricier blank than you priced for.
The guardrail doesn't replace good pricing. It's the safety net under it, so a single bad assumption doesn't turn into a hundred loss-making shipments before you catch it.
What about refunds, reprints, and returns?
These are the margin leaks that never show up in your pricing math because they happen after the sale. Handle them by attribution:
- A defect reprint the provider covers under their quality guarantee is roughly margin-neutral for you (you don't pay again, the buyer is made whole). Track it so you can see which products defect often, because a product that reprints constantly is costing you in support time even when the reprint itself is free.
- A buyer-remorse refund is a full loss on that unit: you refund the retail price but you already paid the provider to make and ship it. These belong in your margin picture as negative events, not ignored.
- A cancellation before production is clean if you catch it while the order is still a draft with the provider, so being able to cancel a not-yet-produced order matters for protecting margin.
A margin report that only counts shipped orders and ignores refunds overstates your real profit. The honest number nets out the refunds and the reprints that cost you.
How do you see margin across products and channels, not just one order?
Per-order margin protects you in the moment. To actually run the business you need the aggregate view: which products, which channels, and which providers are making or losing money over a period. The questions worth answering are:
- Margin by product. Your best-selling design and your best-margin design are often not the same product. The one you should promote is the one that clears the most profit per sale, not the one with the most units.
- Margin by channel. Selling the same product on two channels can produce two different margins because their fees differ. Knowing this lets you price per channel or push volume toward the cheaper one.
- Margin by provider. If you run more than one print provider, the same style can cost different amounts to fulfill. Real cost data lets you route a product to the provider that clears more margin for the destinations you actually ship to.
- Margin coverage. What share of your revenue has a known cost behind it. If it's low, your reported margin is a guess, and the fix is to move cost-blind products onto providers that report cost or to enter cost manually.
The point of the aggregate view is to make one decision per week: what to reprice, what to promote, what to drop, what to re-route. Margin tracking that never changes a decision is just a number you look at.
How ApparelHub handles margin tracking
ApparelHub is built to run this whole loop without you doing the arithmetic by hand. Here's what's live today, and what isn't.
Real cost, honestly reported. ApparelHub pulls real per-variant cost from Printful and Gelato (both live), including Gelato's per-order receipt breakdown. Printify (also live) doesn't expose variant cost through its interface, so those orders are tracked as cost-unknown rather than cost-zero, and the analytics report your margin coverage so you always know how much of your margin figure is backed by real cost versus estimated.
Margin guardrails before production. You can set a fulfillment workflow that holds any order whose margin would fall below your floor, including orders that would ship at a loss. Held orders wait for your review instead of auto-submitting to the provider, so a stacked coupon or a stale price gets caught on the first order, not the hundredth.
Aggregate margin analytics. The analytics view breaks margin down by product, channel, and fulfillment provider over the period you choose, with margin coverage shown so you can tell true margin from estimated. That's the weekly-decision view: what to reprice, promote, or re-route.
Multi-channel and multi-provider, so the numbers stay comparable. Printful, Printify, and Gelato are all live for fulfillment, and Shopify, WooCommerce, and Wix are live sales channels, with TikTok Shop on the roadmap. Because it's one place, the margin math is consistent across every channel and provider instead of living in a different tab for each.
Order reconciliation and fulfillment-issue tracking keep the after-the-sale events (refunds, reprints, cancellations) attached to the order, so your margin picture reflects what actually happened, not just what shipped.
What ApparelHub doesn't do: it doesn't take a cut of your print margin. You bring your own provider accounts, so the spread between retail and cost is yours. The platform makes money on the subscription, not on your fulfillment.
And because the whole pipeline is available to an AI agent through the Agent API, the MCP connector, and the Claude skill at apparelhub.ai/agents, you can have an agent watch margins, flag the losers, and propose reprices, rather than doing the weekly review by hand.
FAQ
What's a good profit margin for a print on demand store? It depends on your product, channel, and how much you spend to acquire the sale, so there's no single right number. The more useful target is a floor: never ship below a margin that covers your time and leaves room for the occasional refund. Set that floor as a guardrail and let the system enforce it, rather than chasing a headline percentage.
Why does my margin look fine per product but the store still isn't profitable? Usually because the per-product number ignores provider shipping, channel fees, discounts, and refunds. A product can show a healthy spread on the blank cost alone and still net near zero once shipping, the channel's cut, and a coupon come out. Compute margin on the full cost stack per order, and net out refunds and reprints, and the real picture appears.
How do I track margin when one provider doesn't report cost? Treat those orders as cost-unknown, not cost-zero, and watch your margin coverage (the share of revenue with a known cost). For products on a cost-blind provider, either enter the cost manually so the margin is real, or move the product to a provider that reports cost if tight margin tracking matters for it.
Can I automate holding orders that would lose money? Yes. A margin guardrail computes expected margin from real cost, provider shipping, and channel fee when a paid order arrives, and holds any order below your floor for review instead of auto-submitting it. This is the single highest-leverage automation for protecting margin at volume.
Do refunds and reprints really change my margin that much? They can. A provider-covered defect reprint is roughly neutral, but a buyer-remorse refund is a full loss on that unit because you already paid to make and ship it. A margin report that counts only shipped orders overstates profit, so net the refunds out for the honest number.
Take control of your margins
Margin tracking only pays off when it changes a decision and catches a loss before it ships. That means real cost data, a guardrail that holds loss-making orders before production, and an aggregate view that tells you what to reprice each week.
Start free with ApparelHub to run real-cost margin tracking and guardrails across Printful, Printify, and Gelato from one place. If you'd rather have an agent watch your margins and flag the losers automatically, see how the agent surface works at apparelhub.ai/agents, and read our related guides on order routing automation and what to do when a print provider runs out of stock.