How to Track COGS in Shopify Without Margin Drift
Variant-level costs are the baseline for reliable margin reporting. This guide covers setup, update workflows, and audit checks for COGS accuracy.
Last updated: February 16, 2026
Primary risk
Stale COGS
Coverage
Variant-level
Review cadence
Weekly
Different sizes, bundles, and suppliers can have different cost structures. According to Shopify's merchant documentation, variant-level COGS prevents blended averages from hiding low-margin combinations that erode overall profitability.
Use a standard cost source per SKU and update timestamp for auditability.
- Store SKU, supplier, and effective date with each cost
- Avoid one global product cost when variants differ
- Flag missing COGS before including an order in margin reports
COGS should update whenever supplier pricing, landed cost, or currency moves materially. Define clear ownership and a weekly review window.
A CSV import path is useful for bulk updates, but keep manual override for urgent corrections.
- Weekly: review supplier changes
- Monthly: run cost outlier checks
- Quarterly: reconcile landed costs vs assumptions
Run exception checks for negative margin outliers, zero-cost variants, and abrupt cost jumps to catch data errors early.
- Zero or blank COGS on active variants
- Cost spikes over a set threshold
- Orders with high revenue and unexpectedly low margin
Can I track COGS with only product-level costs?
You can start there, but variant-level costs are more reliable. When size, supplier, or bundle composition changes per variant, product-level averages can misrepresent margins by 8-12% on affected SKUs.
How often should COGS be updated?
At minimum weekly checks and immediate updates when suppliers change prices or shipping terms. Stores with 500+ SKUs typically see 3-5% of costs change per month from supplier adjustments alone.
What is the first COGS warning sign?
A sudden margin drop on stable products often points to stale cost records or missing landed costs. If margin falls more than 5 percentage points without a pricing change, audit COGS first.