Quick Answer: Profit tracking for a Shopify print-on-demand store means capturing every line that touches an order — revenue, Printify or Printful COGS (blank + print + real shipping), Shopify and payment-processor fees, ad spend, app subscriptions, and refunds — and reconciling it back to per-order, per-SKU, and per-channel profit. Shopify's native reports cover revenue and a static "Cost per Item," but they miss destination-based shipping, ad spend, refunds-after-fulfillment, and provider price changes. You can build it manually with weekly spreadsheet exports, or automate it with PodVector, which streams Shopify, Printify, Printful, Meta, and Google data into a live profit dashboard with an agent (Victor) you can ask questions in plain English.

This is the pillar guide for the Shopify POD Profit / Profit Tracking cluster. For the full profit picture from the supplier-cost angle, see The Complete Guide to Shopify COGS Tracking for POD and The Complete Guide to Break-Even Analysis for Shopify POD. For a generic e-commerce profit-tracking primer (not POD-specific), TrueProfit's POD profit margin calculator and guide is a useful starting point.

What Profit Tracking Means for Shopify POD

Profit tracking is the practice of pulling every dollar in and every dollar out of a Shopify store into one ledger, then reconciling it to per-order, per-SKU, per-channel, and per-day profit. For a traditional Shopify brand, that ledger is mostly: revenue, fixed-unit COGS, payment fees, shipping cost, and ads. The math is roughly stable from week to week.

Print-on-demand changes the shape of the problem in three ways:

  1. COGS is dynamic per order. The same SKU can cost $13 to fulfill domestically and $22 internationally, because Printify and Printful charge real shipping at the moment of fulfillment.
  2. COGS shifts mid-year. Both providers re-price blanks throughout the year. A profit number that was true in February is wrong by May unless you're updating costs continuously.
  3. Refund risk is asymmetric. When a customer refunds an order that's already been produced and shipped by a POD provider, you ate the COGS and lost the revenue — that order's profit is meaningfully negative, and most spreadsheet models miss it.

So profit tracking for a Shopify POD store isn't a "monthly P&L" exercise. It's a continuous reconciliation across at least four data sources: Shopify, your POD provider(s), your ad platforms, and your payment processor. The output isn't a number — it's a set of cohorts you can act on.

Why Shopify's Built-In Reports Fall Short

Shopify ships with a respectable analytics suite — Finance Summary, Profit by Product, Sales by Channel, and the new analytics dashboards. For a POD seller, four gaps make those reports unsafe to base decisions on:

  • Cost per Item is a single static value per variant. It can't represent destination-based shipping, Premium discounts, or the per-order print fee differences that POD generates. Detail on this gap is in the COGS tracking guide.
  • Ad spend is invisible to Shopify. Meta CPMs and Google CPCs never enter Shopify's profit reports, so "Gross Profit" in the Finance Summary is structurally inflated.
  • Refunds-after-fulfillment aren't separated. If you refund $30 on an order that already cost $15 in Printify charges, Shopify subtracts the $30 from revenue but doesn't flag the $15 you can never recover. Net profit on that order is −$15, not zero.
  • App, payment, and software costs aren't there. Your $300/mo Shopify plan, your $40/mo apps, your 2.9% + $0.30 per transaction — none of this lives in Shopify reporting.

The result: Shopify's Finance Summary tends to overstate profit by 20–40% for an active POD store. Sellers who only ever check that screen are scaling against a number that doesn't exist.

The Shopify POD Profit Equation

The full per-order equation:

Net Profit = Revenue − Discounts − Refunds − POD COGS − Real Shipping Charged by Provider − Payment Processor Fee − Allocated Ad Spend − Allocated App / Software Cost

A worked example for one Shopify POD order, a Bella+Canvas 3001 t-shirt sold at $26 to a US customer:

  • Revenue: $26.00
  • Customer-paid shipping: $5.00 (collected, but mostly passed to provider)
  • Discount applied: −$2.60 (10% code)
  • Printify blank + print: −$10.91
  • Printify shipping: −$4.95 (US)
  • Shopify Payments fee (2.9% + $0.30): −$1.12
  • Allocated Meta ad spend (at 3.0 ROAS on $28.40 net revenue): −$9.47
  • Allocated app / Shopify subscription (~3% of revenue): −$0.78
  • Net profit on this order: ~$1.17

That's a 4% net margin on an order that Shopify's native Profit by Product report would show as roughly $13 of "gross profit." The delta is what profit tracking is for.

What to Track, by Cost Layer

A working Shopify POD profit ledger has six layers. Skipping any one of them puts a hole in the bottom-line number.

1. Revenue and revenue adjustments

Gross sales, customer-paid shipping, discounts, taxes (pass-through, but tracked), and refunds. Source: Shopify orders API or order export.

2. POD provider COGS

Printify or Printful's actual charge per order: blank + print/embroidery + provider shipping. This must be the real charge per order, not a stored estimate. Sources: Printify Orders API, Printful Orders API. Background: Printify Costs, Fees, and Discounts and Printful Costs and Fees.

3. Payment processor fees

Shopify Payments, Stripe, PayPal, and Shop Pay Installments fees per transaction. Sources: Shopify Payments payouts report or processor-specific exports.

4. Ad spend

Meta, Google, TikTok, Pinterest — gross spend by day, by campaign. Allocated to revenue using either UTM-based last-click or a blended channel ROAS. Sources: Meta Ads API, Google Ads API. See Meta Ads ROAS and Attribution for POD.

5. App and software costs

Shopify subscription, themes, apps, profit trackers, design tools, freelancers. Mostly fixed. Allocate as a percentage of revenue or a flat per-order amortization.

6. Refund accounting

Two flavors: refund-before-fulfillment (no COGS lost) and refund-after-fulfillment (COGS lost). The second is the one that quietly destroys monthly profit, and Shopify doesn't separate them by default.

Profit Benchmarks for Shopify POD Stores

Realistic benchmarks for a Shopify-based POD store using Printify or Printful, mid-2026 prices, US-skewed traffic:

  • Gross margin (Revenue − COGS) / Revenue: 35–50%. Below 30% means COGS is too high or pricing is too low. Above 55% is rare for tee-and-hoodie stores; common only for niche, premium-priced products.
  • Contribution margin (Gross profit − Ad spend) / Revenue: 15–25% at sustainable scale. Stores running 1.5–2.0 ROAS on cold traffic will sit closer to 5–10%.
  • Net operating margin (after fees, apps, software): 10–18% for established stores; new stores typically 0–5% in the first six months.
  • Net profit margin: 8–15% is healthy for a Shopify POD store doing $20K–$200K/mo.
  • Refund rate: 1–3% on apparel; refund-after-fulfillment portion typically 60–80% of total refunds.

A useful sanity check: if your Shopify "gross profit" number is more than ~1.7× your actual bank-account profit at month end, your tracking is missing layers. The most common missing layer is allocated ad spend, followed by refund-after-fulfillment.

Tracking Profit Manually with Spreadsheets

For stores under ~50 orders/day, a weekly spreadsheet workflow can hold up. The setup:

Exports to pull weekly

  1. Shopify Orders export (CSV) with columns: order ID, SKU, quantity, line total, discount, shipping collected, taxes, refund amount, country.
  2. Printify and Printful order exports with columns: provider order ID, matched Shopify order ID, blank + print cost, shipping cost, status.
  3. Shopify Payments payout export — for transaction fees per order.
  4. Meta and Google ad spend by day.
  5. Refund report from Shopify, separated into pre- and post-fulfillment.

The reconciliation sheet

One row per Shopify order. Columns: revenue, discount, refund, COGS (blank + print + shipping), payment fee, allocated ad spend (blended ROAS as a starter, UTM-based once you can), and net profit. Then pivot four ways: by SKU, by country, by channel, by week.

Where it breaks

The math isn't hard — the keep-up is. Order IDs don't match between Shopify and Printify (Printify uses its own numbering). Discount codes change weekly. Ad spend allocation is fragile. At 50 orders a day, expect 4–6 hours/week. At 200 orders a day, the spreadsheet starts hiding errors faster than you can fix them.

Full step-by-step manual approach: Shopify COGS Tracking for POD covers the COGS half end-to-end.

Tracking Profit Automatically with PodVector

PodVector is built specifically for Shopify POD sellers. It connects natively to Shopify, Printify, Printful, Meta Ads, and Google Ads, then streams every order, line item, ad event, refund, and provider price update into a live BigQuery warehouse. The agent layer — Victor — sits on top of that warehouse.

What you get as a Shopify POD operator:

  • Per-order net profit that includes everything — provider COGS at the real shipping cost, payment fees, ad allocation, refunds (pre- and post-fulfillment separated), and amortized software costs.
  • Profit pivoted by SKU, country, ad source, day, and cohort — already built, already live, no spreadsheet reconciliation.
  • Plain-English Q&A. Ask Victor "What's my real net profit on the Bella+Canvas 3001 across Meta last month?" or "Which countries cost me money on shipping?" and Victor answers against the live warehouse in seconds.
  • Continuous COGS updates. When Printify changes the price of a Gildan 5000, your historical and forward profit numbers update automatically.
  • No re-keying. The dashboard is the source of truth, not a brittle weekly spreadsheet.

Victor's architecture matters because POD profit is a time-series problem. The same SKU has a different real profit in January, March, and August — different blank cost, different shipping rates, different ad CPMs, different refund mix. A live warehouse captures all of it; a spreadsheet snapshot captures whatever you last typed in.

Today Victor answers. On the near-term roadmap, Victor also acts — flagging SKUs whose contribution margin has collapsed, proposing price increases on under-priced products, suggesting which campaigns to pause when POAS drops below threshold. For comparisons against other tools, see PodVector vs Competitors.

The Five KPIs Worth Watching Daily

A profit dashboard with 40 metrics is a profit dashboard nobody reads. The five you should actually look at every morning, in order:

  1. Net profit by day. The single number that matters. Compare to the same day last week.
  2. POAS (Profit on Ad Spend). Net profit ÷ ad spend. Above 1.0 is profitable. Background: Meta Ads ROAS and Attribution.
  3. Contribution margin %. (Revenue − COGS − Ad spend) ÷ Revenue. The number that tells you whether scaling helps or hurts.
  4. Refund-after-fulfillment rate. The most-ignored profit killer in POD. Anything above 2% needs a product-quality or sizing-page fix.
  5. Top-5 SKUs by net profit (not revenue). Revenue rankings lie in POD because COGS varies. Profit rankings tell you which products to scale.

Slicing Profit: SKU, Country, Channel, Cohort

The aggregate profit number tells you whether you're alive. The slices tell you what to do next.

By SKU

Sort all SKUs by net profit. The bottom 20% of revenue often produces 0% or negative net profit — usually because shipping or refund rate destroys the margin. Unpublish or reprice. See Printify's Most Profitable Products.

By country

Plot net profit per order by destination. International orders frequently lose money because Printify shipping doubles. Either reprice for international, restrict ads to domestic, or offer a "skip international" rule.

By ad channel

Net profit ÷ ad spend per channel. Meta and Google often look very different. The channel with higher ROAS isn't always the more profitable one if the AOV mix differs.

By weekly cohort

Group orders by acquisition week and watch their refund tail decay over 60 days. A "profitable" week often turns unprofitable by week 8 once refunds-after-fulfillment land. This is the slice that humbles most POD stores.

Six Profit-Tracking Mistakes Shopify POD Sellers Make

1. Trusting Shopify's Profit by Product report

It uses static Cost per Item and ignores ad spend. Treat it as a directional indicator, not a number you can act on. The actual fix is layered COGS plus allocated ad spend — covered in the COGS guide.

2. Mixing COGS with operating expenses

Payment processor fees, app subscriptions, and the Shopify plan are not COGS — they're OpEx. Mixing them deflates gross margin and makes product-level decisions impossible to compare apples-to-apples.

3. Ignoring refunds-after-fulfillment

The single biggest hidden profit leak in POD. A 3% post-fulfillment refund rate at 40% gross margin wipes out roughly 7.5% of bottom-line profit. Track it as its own line.

4. Using blended ROAS as the only ad metric

Blended ROAS hides the fact that one channel might be subsidizing another. Track POAS per channel and per campaign. See the Meta Ads playbook for POD.

5. Updating profit weekly instead of continuously

POD is volatile enough that decisions made on Monday using Friday's data are often wrong by Wednesday. Either tighten the manual cycle to daily or move to an automated tool.

6. Comparing margin against non-POD benchmarks

Drop-shipping benchmarks, DTC brand benchmarks, and Amazon FBA benchmarks all run higher gross margin than POD. POD's structural ceiling is roughly 50% gross margin. Targeting 60% with a Bella+Canvas 3001 priced at $26 is mathematically impossible — covered in the break-even guide.

Choosing a Profit-Tracking Stack

Three reasonable paths depending on store size:

Path A: Spreadsheet (under ~50 orders/day)

Free. Time-intensive. Best for sellers in their first six months who need to learn the cost structure by living inside it. Stop using it the moment the manual reconciliation cracks.

Path B: Generic Shopify profit app (50–150 orders/day)

TrueProfit, BeProfit, Lifetimely, Profit Calc. They all do native Shopify + payment processor + ad spend. Most don't natively understand POD-specific COGS — destination shipping, provider price changes, Printify Premium discounts — so plan to layer custom mapping on top. Background and trade-offs: Printify Review: Quality, Costs, and Real Margins.

Path C: POD-specific profit tracker (150+ orders/day)

PodVector. Built specifically for the Shopify + Printify/Printful stack, with native handling of destination shipping, premium tiers, refund-after-fulfillment, and ad allocation. Worth the move once spreadsheet errors are visible in your bank deposits — typically around the $25K/mo mark.

FAQs

Does Shopify show real profit for POD stores?

No. Shopify's Profit by Product and Finance Summary use a static Cost per Item value, ignore ad spend, and don't separate refunds-after-fulfillment from refunds-before-fulfillment. For POD, treat Shopify's profit numbers as directional, not actionable.

What's the difference between gross profit, contribution margin, and net profit for a POD store?

Gross profit is revenue minus COGS (blank + print + provider shipping). Contribution margin is gross profit minus ad spend. Net profit is contribution margin minus payment fees, refunds, app costs, and any other operating expense. The third one is the bank-account number.

How often should I update profit numbers?

If manual: weekly minimum, daily if you can. If automated (e.g., PodVector): continuously. POD costs and ad CPMs change fast enough that weekly stale data leads to slow scaling decisions.

Should I include customer-paid shipping in revenue?

Yes, but track it as a separate line. Customer shipping income is real revenue, but it's usually mostly passed through to Printify or Printful as their shipping charge. Net it out in your COGS reconciliation, not in the revenue line.

What's a good profit margin for a Shopify POD store?

Net profit margin of 10–15% is healthy at scale. Below 5% means either pricing or ad efficiency needs work. Above 20% net is rare and usually indicates premium pricing or an unusually efficient ad mix. Detailed benchmarks: Printify's Most Profitable Products.

How do I attribute ad spend to specific orders?

The simplest start is blended channel ROAS: total ad spend on a channel ÷ total revenue from that channel, then apply that fraction to each order. For more accuracy, layer UTM-based last-click attribution. For the most accuracy, use a tracker that processes ad-platform conversion data (Meta CAPI, Google Enhanced Conversions). Background: Meta Ads ROAS and Attribution for POD.

Do I need a separate tool, or is Shopify Reports enough?

Shopify Reports is enough only if you're under 5–10 orders/day, all domestic, single-provider, no paid ads, and using a single SKU. Past that, the gap between Shopify's reported profit and your actual bank-deposit profit grows fast. A profit tracker — generic or POD-specific — pays for itself within the first month at most stores.

What about taxes — are they part of profit tracking?

Sales tax collected from customers is pass-through (not revenue, not profit). Sales tax that Printify or Printful charges you on the blank is part of fulfillment cost (treat as COGS). Income tax on net profit is a downstream calculation — relevant for tax filing, not for daily profit tracking. Talk to an accountant for tax filing specifically.


See Real Profit on Every Shopify POD Order

PodVector connects Shopify, Printify, Printful, Meta, and Google and shows your true per-order net profit — provider COGS at real shipping cost, ad allocation, refunds, and fees, all live. Ask Victor any profit question in plain English and get an answer in seconds.

Try Victor Free