Playbook · Shopify inventory item cost / unit cost wrong (COGS & profit)

Shopify inventory item cost / unit cost wrong — COGS and profit reports are off.

Written for a Shopify owner or ops lead whose Products → variant → Cost per item (unit cost) is blank, stale, currency-wrong, or overwritten so Analytics profit / COGS is wrong. DIY-first: prove Cost per item on the inventory item; capture what the profit report reads; fix CSV maps, currency, and apps that overwrite cost; understand historical vs future COGS. Distinct from Flow inventory not updating, POS inventory not syncing, transfer order not receiving, purchase order stuck, and analytics not matching GA4. No earnings claims, no invented case studies.

Nico at Latch AI Ops · Sep 10, 2026 · ~11 minute read

Buy the 72-hour install — $997Flow inventoryPurchase orderMerchant FAQ

01

Inventory item cost wrong — not Flow inventory, POS sync, transfer, PO, or analytics vs GA4.

Several inventory / reporting workflows look like “numbers are wrong.” They do not share one Cost field. This page is only when inventory item cost / Cost per item (unit cost) is blank, stale, wrong currency, or overwritten so Shopify profit / COGS reports are off. Flow quantity conditions / actions not updating stock are Flow inventory not updating. POS / multi-location stock not syncing is POS inventory not syncing. Transfer order not receiving at destination is transfer order not receiving. Purchase order receiving stuck is purchase order stuck. Admin analytics vs GA4 purchase mismatch is analytics not matching GA4. This page is only: Shopify inventory item cost / unit cost wrong so COGS and profit reports are off.

Six ordinary reasons unit cost / profit is wrong: Cost per item never set on the variant (or only set on the parent); CSV / API import mapped Price instead of Cost; shop currency vs cost currency mismatch; ERP / inventory / cost-tracking app overwrites cost with zero or list price on sync; you expected a cost edit to rewrite historical order profit (Shopify uses cost at sale time for many profit views); or you are debugging Flow stock, POS sync, transfer, PO receiving, or GA4 mismatch instead of Cost per item. Walk them in that order. You already pay for Shopify. You do not need another “COGS SaaS” to prove unit cost on a variant.

02

Prove Cost per item on the inventory item and capture what profit / COGS reads.

Open Products → the variant → Inventory. Note Cost per item / unit cost, currency, Track quantity, and whether cost differs across locations when your plan/apps support it. Screenshot Analytics → Reports (profit / COGS / average cost) for that SKU window. If cost came from a bulk CSV or Admin API productUpdate / inventoryItemUpdate, keep the column map and payload.

Reproduce on the live admin (not a stale tab): set a known Cost per item on a test variant, Save, place or use a new paid order that sells that SKU, then check whether the new order's profit line reflects the cost you just saved. If stock quantity is wrong but cost is fine, leave this page and use Flow inventory not updating or POS inventory not syncing. If receiving a PO never lands inventory, open purchase order stuck.

03

Fix blank/stale cost, currency, CSV map, apps overwriting cost, and historical vs future COGS.

Set Cost per item on every variant that should feed profit (not only the product title row). Match shop / Markets currency expectations — a cost entered in the wrong currency looks like “profit is insane.” Re-run CSV import with Cost / Unit cost mapped to the cost column, not Price / Compare-at. Prefer Admin API inventoryItem cost updates when bulk-editing.

Pause or reconfigure ERP / 3PL / inventory / “landed cost” apps that overwrite Cost per item with zero, supplier list price, or last PO unit on every sync. Understand that many Shopify profit views use cost at the time of sale — editing Cost per item today does not rewrite last month's order profit; prove on a new order after Save. If the real goal is admin sessions vs GA4 purchases, that is analytics not matching GA4, not this unit-cost playbook. If transfers never receive at the destination location, use transfer order not receiving.

04

Checklist and how to prove unit cost feeds a clean profit line on a new order.

Checklist: (1) confirm Cost per item on the selling variant, (2) screenshot currency + Track quantity, (3) capture profit / COGS report for the SKU window, (4) fix CSV / API cost column map, (5) stop apps overwriting cost with zero or list price, (6) place a new order after Save and confirm profit uses the new cost, (7) do not expect historical order profit to rewrite from a cost edit, (8) if only Flow stock / POS sync / transfer / PO / GA4 is wrong, switch playbooks.

Prove it: on a live test variant, set Cost per item to a known amount, Save, complete a new paid order for that SKU, open the order / profit view and confirm COGS ≈ unit cost × quantity (taxes/discounts aside). If cost is correct but sessions vs purchases still disagree with GA4, open analytics not matching GA4.

05

You tested Flow inventory, POS sync, transfer, purchase order, or analytics vs GA4 instead.

Flow inventory quantity conditions / actions not updating stock is Flow inventory not updating. POS / multi-location stock not syncing is POS inventory not syncing. Transfer order not receiving is transfer order not receiving. Purchase order receiving stuck is purchase order stuck. Admin analytics not matching GA4 is analytics not matching GA4. None of those fix Cost per item / unit cost so COGS and profit reports are off.

Finish prove Cost per item + capture profit read → fix blank / currency / CSV / app overwrite → new-order profit proof first. Only then open the related playbook that matches the remaining symptom.

06

When to stay DIY vs pay $997.

Stay DIY if you can spend one afternoon on the list above: prove Cost per item on the selling variant, fix currency and CSV maps, stop apps overwriting cost, prove a new order's profit line, and stop treating Flow stock / POS sync / transfer / PO / GA4 as the same bug. That is the whole playbook. No agency required. Short answers also live on the merchant FAQ. Related pages: Flow inventory, POS inventory, Transfer order, Purchase order, Analytics vs GA4.

Pay $997 when the gap is wiring — lead capture, ops alerts, and a checkout-ready workflow on the stack you already pay for, including inventory-cost / COGS exceptions landing in a channel you already check. Clock starts when collaborator access is in. 72 hours. One live store. Latch does not sell an earnings or ops-efficiency number. No invented case studies.

Buy the 72-hour install — $997Merchant FAQHome