← All guides

Fixing a product SKU Manager flags as missing a cost or weight

SKU Manager flags any product missing a cost price or a weight, since neither can be safely estimated. Fixing one takes seconds. Fixing many at once works differently for cost and for weight, and this guide covers both.

Marcus Volsted Marcus VolstedCo-founder, Restocio Published 18 September 20268 min read

What counts as missing here

Open SKU Manager, click the filter icon above the table and choose "without cost" or "without weight" to see just the flagged rows, then type the number into that row or import a CSV to fix cost prices in bulk. Weight has no bulk import; it either comes from Shopify automatically or gets typed in one row at a time.

Every product needs a cost and a weight before Restocio can work out its landed cost, a margin per transport route or its share of stock value. Without either one, showing a number would mean showing a wrong one, so the product is flagged instead.

Two places on the SKU Manager page say the same thing at different levels of detail. The “System readiness” bar above the table shows a percentage for the whole catalogue with a “Details” toggle underneath it. Each row also carries its own signal in the Status column at the right: a red circle with a number if something is missing, and hovering it names exactly what (cost, weight, supplier, selling price or product name); a plain checkmark means the row has everything.

Finding the flagged products

The filter sits next to the search box above the table, a button with a funnel icon that shows a small red dot whenever a filter is active. Click it and a list of counts opens: all products, everything missing something, without cost, still landed from Shopify, without selling price, without weight, without supplier, without product name, and ignored. Pick “without cost” or “without weight” and the table narrows to only those rows.

“Still landed from Shopify” looks similar but is a different gap: it counts products still carrying Shopify’s own cost figure as-is rather than a supplier price you’ve typed in, and fixing that is the subject of a different guide, supplier price or landed price, and how to pick it right, not this one.

If the filtered list is still long, the search box matches on SKU or product name, so you can narrow it further to one supplier’s catalogue or one product line at a time.

Fixing a cost price, one product at a time

Type the number straight into that row’s Cost price column. The field takes a plain number in whichever currency the row already carries, which is your store’s currency unless this SKU was previously brought in through a CSV import with its own supplier currency attached (below); a row like that shows a small read-only currency code beside the field, converted to your store’s currency at the rate on the day it was saved (there’s a “Today’s rate” button elsewhere on the page to refresh that conversion later). There’s no picker for setting a currency on a single row by hand: if you’re invoiced in a different currency, use the CSV import instead. Nothing reaches Shopify until you press Save at the top of the table. An edited row gets a small orange “M” marker and an unsaved-changes banner appears, so a page reload before saving doesn’t lose the edit quietly.

A cost that roughly doubles or halves an existing one triggers a warning next to the field and in a banner above the table. It doesn’t block the save, since a genuine price rise and a mistyped invoice look identical from the outside, but it’s worth a second glance before you confirm.

Fixing cost prices for many products at once

Click Export CSV first. It downloads every product currently in the table with its SKU, name, supplier, current cost and weight, which is faster to fill in as a spreadsheet than typing rows one by one. Click Import CSV to bring the filled-in file back.

Two columns matter every time: one named SKU and one named Cost (Cost price, Kostnad and a handful of other spellings are recognised too). A third, Currency, is read when it’s there: give a row a currency other than your store’s and that price is kept as a supplier price in that currency rather than compared against your store-currency cost, converted at the day’s rate, and the dialog tells you when it has found one. Every other column, including the rest of what the export itself adds, is ignored. The SKU in the file has to match the SKU in Shopify exactly, case aside; a typo isn’t guessed at or fuzzy-matched, it lands in a “not in Shopify” list and is shown to you by name so you can fix the spelling and import again.

Before anything changes, the dialog previews the outcome: how many rows will actually change, how many already match what’s stored, how many aren’t in Shopify, how many had a blank cost, and how many had something that wasn’t a number at all. The same doubling-or-halving warning applies here too, across the whole file rather than one row.

Fixing a missing weight

Type it into that row’s Weight (kg) column. There’s no CSV import for weight; the Import CSV dialog only ever reads the Cost column, even if your file happens to carry a weight column as well.

Before typing anything, check the product in Shopify itself. If Shopify already has a weight for it, Restocio reads it and treats it as the product’s weight the next time the page loads, with nothing for you to do. A product only shows up under “without weight” once neither Shopify nor Restocio has a number for it, so on most catalogues the real fix is filling in Shopify’s own weight field on whichever products lack it there, rather than typing the same number twice.

Cost and weight, side by side

Cost priceWeight
Type it into one rowYes, the Cost price columnYes, the Weight (kg) column
Fix many rows at onceYes, Export CSV, fill it in, Import CSVNo bulk import exists
Can fill itself inNoYes, from Shopify’s own weight field, automatically
Writes back to Shopify on saveYes, unless your cost meaning is set to Landed priceYes, always

What saving actually does

Saving a cost or a weight here writes it back into the matching field on the product in Shopify, cost per item and weight, so Shopify’s own reports move with it rather than only Restocio’s. There is one exception. If Settings, Freight & Margin has “What your cost prices mean” set to Landed price, a cost you type or import here is kept inside Restocio but not pushed to Shopify, because your existing Shopify number already includes freight and writing a goods-only figure on top of it would recreate the exact double count that setting exists to prevent. A banner on the table tells you when this applies, and the full guide to that setting covers switching it once you have supplier-only prices ready to switch to.

What this leaves out

SKU Manager’s filter also flags products missing a supplier, a selling price or a product name, and the Status circle on each row counts all five gaps together. Those three are fixed in the same table (supplier and product name are typed straight into their own column, selling price is editable once the app has been granted the write_products permission), but they aren’t cost or weight, and this guide doesn’t walk through them. The CSV import is also one-way in the sense that matters here: it updates an existing row, it never creates a new product, so a SKU that genuinely isn’t in Shopify yet needs adding there first, or through the “+ New SKU” button on this same page, before a cost can attach to it. And filling in a cost only fixes whether the field is empty, not whether the number already in it is right; checking that is a different ten-minute job.

Common questions

What counts as missing in SKU Manager?

Five things: cost price, weight, supplier, selling price and product name. The filter icon and the Status column on each row count all five together, but a product only needs cost and weight to get a landed cost and a margin; supplier, selling price and product name matter for other reasons and are fixed the same way, typed straight into their own column.

Can I import weights the same way I import costs?

No. The CSV import only ever reads a SKU column, a Cost column and, when it's there, a Currency column; a weight column in the same file is ignored even though the export includes one. Type a missing weight into that row directly, or set it on the product in Shopify first, since Restocio picks up a Shopify weight automatically and most products never need a manual entry at all.

Why did some SKUs from my CSV file end up in "not in Shopify"?

The SKU in the file has to match the SKU in Shopify exactly; case doesn't matter, spelling does. If a row's SKU isn't found, it's never guessed at or matched loosely. It's listed by name in the import preview so you can fix the spelling, in the file or in Shopify, and import again.

Does fixing a cost or weight here change anything in my Shopify store?

Yes, in most cases. Saving here writes the cost to Shopify's cost per item field and the weight to the product's weight field, so Shopify's own reports use the same numbers. The one exception is cost: if your cost meaning is set to Landed price, a cost typed here stays inside Restocio and isn't pushed to Shopify until you switch that setting, because your Shopify number already has freight folded into it.

I filled in a weight column in my CSV too. Why didn't it update?

The import only reads the SKU, Cost and Currency columns; every other column, including one named Weight, is ignored on purpose so you can re-upload the same file you exported without it doing anything unexpected to other fields. A weight has to be typed into the table directly, or set on the product in Shopify.

Marcus Volsted
Marcus Volsted
Co-founder, Restocio

Marcus co-founded Restocio and works on it daily with a Swedish importer who plans their purchasing in it every working day. Restocio is built in Sweden by two founders, one Swedish and one Danish, and Marcus is the Danish one. Why we are building it.

Related reading

Restocio plans purchasing for Shopify stores that import. It works out what to order, how much, and whether it should travel by sea, rail or air, so you pay air freight only for the units that genuinely cannot wait.

See pricingTalk to us