Track Sample Costs (COGS) in Bulk
Upload a CSV of what each product costs you to make, and Cruva turns your sample funnel into a spend figure. This article covers the template columns, what a blank cell does, and the one reason an upload can succeed without changing anything.
Track Sample Costs (COGS) in Bulk
Cruva can tell you what your seeding program actually costs — but only if it knows what your products cost you. That figure is your COGS (cost of goods sold), and you set it per product.
You can type costs in one at a time, but if you sell more than a handful of products you'll want the bulk route: download a spreadsheet of every product, fill in one column, upload it back.
Where to find it
Open Sample Requests → Analytics and click Sample cost, or find the same editor in CRM Report → Creator Efficiency. It's the same panel in both places.
From there:
- Click Download template. You get a CSV of every product in your shop.
- Fill in the
cogscolumn. - Click Upload CSV and pick the file.
What's in the template
| Column | What it's for |
|---|---|
product_id | How we match the row back to your product. Don't edit it. |
product_name | So you know which product you're looking at. Ignored on upload. |
retail_price | What the product sells for, as a sanity check. Ignored on upload. |
cogs | The column you fill in. Already filled in for products that have a cost. |
Only product_id and cogs are read. You can reorder columns, delete the ones you don't need, or add your own — none of that matters, as long as those two are present and keep their names.
There's one cost column, not two. Products you've already priced come back with their cost in it, so the sheet always shows what you currently have; the gaps are what's left to do.
Costs are in your shop's own currency. The template puts the symbol in the column header as a reminder.
A blank cell means "leave this one alone"
This is the important one. An empty cogs cell doesn't clear the cost — it skips the row entirely.
That's deliberate: it means you can download the template, fill in three products, upload it, and only those three change. Everything else is left exactly as it was — the rows you didn't touch come back with the same value they already had, and we count those as unchanged rather than as edits.
To actually remove a cost, put a - in the cell (clear and none work too). For a one-off, it's easier to use the ✕ button next to the value in the editor.
Why an upload can succeed and change nothing
If you've set a cost on an individual SKU, that SKU-level cost wins. It's more specific than the product-level cost, so Cruva uses it.
This means a product-level upload can report success and have no effect on those products — the value is saved, it's just outranked. When that happens, the result panel tells you which products it applies to. To change them, expand the product in the cost editor and edit the SKU values directly.
What the result panel tells you
After every upload you'll see:
- Updated / cleared — rows whose cost actually changed.
- Rows that already matched what's saved — blank cells, plus any row you left at the value it already had.
- SKU-level costs take precedence — the products described in the section above.
- Product IDs that matched nothing — usually an old export, or a file from a different shop.
- Priced above retail — the cost is higher than the sale price. Sometimes that's real (a loss-leader, or clearance stock). It's also exactly what a misplaced decimal point looks like, so it's worth a glance.
- Rows that couldn't be read — a cost cell we couldn't make a number out of.
Where the numbers show up
Once costs are in, Sample Requests → Analytics shows sample spend, wasted sample spend (samples that never led to a post), and GMV per unit of sample spend. You can also add those cards to your main dashboard from the customize page.
Two things worth knowing about the figures:
- Spend is counted on the day a sample ships, since that's when the product leaves. CRM Report's Creator Efficiency counts the same cost on the day a sample is delivered, so the two totals won't match for the same date range.
- Products with no COGS fall back to their retail price. That keeps the graph from being empty on day one, but it overstates your spend. The coverage note above the graphs tells you how many of your sampled products are still missing a real cost.
Was this article helpful?
Related articles
- Affiliate CRM walkthroughAn end-to-end tour of the affiliate CRM — searching, filtering, segmenting, and re-engaging creators.
- CRM automations & groupsSegment creators with groups, then trigger automations like Sample Shipped and Content Unfulfilled.
- AI Auto RepliesSet up AI auto-replies that respond to creator DMs automatically — qualifying them and answering questions.
- Manage sample requestsApprove, reject, and ship samples — and use auto-approval rules so qualified creators clear without manual review.
- WorkflowsThe complete guide to Workflows — triggers, every action and controller step, branching and merges, the canvas, monitoring, send limits, templates, and import/export.
- CRM ReportRead the affiliate-CRM reports to understand what's driving GMV, content, and creator activity.