# Set up COGS and landed costs for Amazon profit

A playbook for an AI assistant connected to Nova. It finds the products you sell with no cost, matches your cost file to the right SKUs, previews the import, and loads it only after you approve. It is the one playbook that writes to Nova: it never writes to Amazon.

Every step calls a Nova tool that reads or updates your cost data in Nova, so paste this into Claude, ChatGPT or any assistant connected to Nova's MCP server, with your cost file attached (CSV or spreadsheet: SKU or ASIN, unit cost, and the date each cost starts if you have it).

```text
Use Nova to set up the product costs (COGS) behind my Amazon profit, from the file I attached.

1. See what is missing. Call Nova's get_setup with domain "cogs". For each region, give the SKUs sold with no cost (soldSkusMissingCogs) and the valid region codes. Say that profit on those products is too high until they have a cost.

2. Read the current costs. For each region that needs work, call Nova's get_cogs_worksheet, with missingOnly true first, then without it for the SKUs in my file. It lists every catalog product with its current cost and cost periods.

3. Match my file. Match each line of my file to the worksheet by SKU first, ASIN second. List the lines you could not match and the SKUs still without a cost after the match. Ask me about anything unclear before going on.

4. Choose the cost type. Use "fixed" costs by default: one cost per period, with periodStart when a cost changed on a date, or no date when one cost applies to all history. Use "fifo" only if my file lists purchase batches with quantities, and then send the full batch list for each SKU. If my file splits product, freight and duties, send them as manufacturingCost, freightCost and dutiesCost: they add up to the landed cost.

5. Preview. Call Nova's import_cogs for one account at a time, mode "merge", WITHOUT commit. Show me the warnings and the diff: which SKUs change, from what to what.

6. Wait for my approval. Only after I say yes, call Nova's import_cogs again with the same rows, commit true and the confirmationToken from the preview.

7. Verify. Call Nova's get_setup with domain "cogs" again and give soldSkusMissingCogs before and after. Then call Nova's query_metrics for the last 30 days with netProfit and netProfitMargin and say how profit moved now that costs are in.

Rules: never use mode "replace" unless I ask for a full restatement of a region. Never invent a cost: a SKU missing from my file stays missing. A cost of 0 is a real value, so only send 0 when I mean it. Relay every notice Nova returns. You cannot change anything on Amazon.
```

## How to read the result

| What you see | What it usually means | What to do |
| --- | --- | --- |
| Many sold SKUs with no cost | Profit is overstated on those products | Fill the biggest sellers first |
| Lines in your file that did not match | SKU spelled differently, or an old SKU | Fix the file or match by ASIN |
| A cost changed on a date | Your supplier price moved | Send it with periodStart so older sales keep the old cost |
| Profit drops after the import | The real cost was missing before | Read the losing products playbook next |
| A Canada or Mexico region inherits from the US | Costs follow the US unless you set them | Leave it, or import a region of its own |

## Limits

- Writing costs needs the OAuth connection and the owner role in Nova.
- One account per import call, up to 2,000 rows per call.
- Vendor Central costs are the vendor's own product cost, period-based only.
- Nova never writes product costs to Amazon.
