Know what every variant really costs.
A Shopify app that keeps a dated history of what every variant costs, adds packaging, fulfilment and fees on top of the unit cost, and costs bundles from their parts.
Linen throw, Oat
LT-OAT
Price $68.00
- Unit cost · Supplier A
- $21.40
- Packaging · Per unit
- $1.20
- Pick and pack · Per unit, whole shop
- $2.85
- Payment processing · 2.9% of price
- $1.97
- Total cost
- $27.42
- Margin
- 59.7%
- Sent to Shopify
- $22.60
Shopify keeps one cost per variant and no history.
Cogsy keeps the full record next to it: when each cost applied, where it came from and what sits on top of it.
- Dated cost history
- Every cost has a date it applies from. A change is a new row, never an overwrite, so you can see what a variant cost on any day.
- Costs on top of the unit cost
- Add packaging, inserts, fulfilment or duties per unit, or fees as a percentage of the price. Set them for one variant, a product or the whole shop.
- More than one supplier
- Keep a cost from each supplier, from Shopify and from your imports side by side, and choose which one is active for each variant.
- Bundles
- A bundle costs the sum of its components. Shopify's fixed bundles are read on every sync, and you can define your own.
- CSV import with a preview
- Upload costs by SKU, with a source and a start date if you have them. You see every change before anything is saved.
- Missing and low-margin flags
- A variant with no cost shows as missing, never as zero. Set a margin threshold and everything under it is flagged.
A ledger, not a field you overwrite.
This is the history of one variant. The newest row in effect is the cost in use, unless you pick another source.
| Applies from | Cost | Source | Amount | Note |
|---|---|---|---|---|
| 1 Mar 2026 | Unit cost | Supplier A | $19.80 | |
| 1 Jul 2026 | Unit cost | Supplier A | $21.40 | New price list |
| 1 Jul 2026 | Unit cost | Supplier B | $20.90 | Quote |
| 14 Aug 2026 | Packaging | CSV | $12.00 | Voided: entered by mistake |
| 14 Aug 2026 | Packaging | Manual | $1.20 |
How it works
Costs come in
Shopify
Cost per item, prices, SKUs and bundle parts, read on each sync
CSV import
Costs by SKU, with a source and a start date
By hand
A cost for a variant, a product or the whole shop
Cogsy keeps the record
The cost ledger
- Every cost is a dated row with a source
- The newest row counts, or the source you choose
- Your cost kinds are added on top
- Bundles are summed from their parts
What you get
Cost per item in Shopify
The unit cost plus the kinds you include, written when you run it
Total cost and margin
For every variant, with every cost counted
Flags
No cost, low margin, negative margin
01
Sync your catalog
Cogsy reads your variants, prices, bundles and the costs Shopify already holds. Variants with no cost stay empty.
02
Add what is missing
Enter costs by hand, import a CSV, or record a quote from another supplier. Add the extra costs that apply to each sale.
03
Choose what Shopify sees
Mark which costs are part of Shopify's cost per item. Cogsy writes that one number back and keeps the rest beside it.
Questions
- What does Cogsy write to Shopify?
- One number per variant, to Shopify's cost per item: the unit cost plus the costs you have marked as part of it. Everything else stays in the app.
- What if I change a cost in the Shopify admin?
- The next sync records it as a new cost from Shopify, next to your other sources. Nothing you entered is overwritten.
- What happens to variants with no cost?
- They are shown as missing and have no margin. Cogsy never treats a missing cost as zero.
- How is a bundle costed?
- From its components: each component's unit cost times its quantity. If you give the bundle its own unit cost, that is used instead. Extra costs such as packaging are charged once per bundle, not once per component.
- Can I correct a cost entered by mistake?
- Yes. You void the row with a reason. It stops counting and stays in the history, so the record of what happened is complete.
Start with the costs Shopify already has.
Install the app, sync your catalog and see which variants are missing a cost.