Bring Your Own Data

We Don't Connect to Your Platform. You Can Still Run Skuvelo on It.

Wherever you sell, you can bring your own files — your products, what's on the shelf, and what actually sold. It is the same path for every Skuvelo account, whether we have a direct connection to your channel or not, and it does not stop being useful once we do.

Three Files. That's the Whole Job.

You do not need every field, and the work on your side is spreadsheet work rather than engineering. You need a list of what you sell, a count of what is on the shelf, and enough sales history for the arithmetic to have something to work with. Everything after that is sharpening.

File one

Your product list

What do I sell?

One row per SKU. This one goes first — nothing else can point at a product Skuvelo has not been told about.

.csv or .xlsx5,000 rows per file

Columns accepted in Your product list
ColumnNeeded?What it is
skuRequiredYour code for the item. Whatever you already call it is fine, as long as you use the same code in the other two files.
titleRequiredThe product name. Required for anything Skuvelo has not seen before — which, on your first file, is everything.
categoryOptionalHow you group it. Useful for reading reports later.
brandOptionalWho makes it.
unit_costalso reads unitcostOptionalWhat you pay for one. Costs are what turn a stock level into a cash number, so include them if you have them.
selling_pricealso reads sellingpriceOptionalWhat you charge.
standard_costalso reads standardcostOptionalYour planned or budgeted cost, if you keep one.
last_costalso reads lastcostOptionalWhat the most recent purchase actually cost.
  • Products created by an import are marked as needing a check rather than treated as verified. Nothing plans against a number nobody has looked at.
  • This is also the one file you can send as a spreadsheet. Stock counts and order history have to be CSV.

File two

What's on the shelf right now

How much do I have, and where is it?

One row per product per place you keep it. If you hold the same SKU in two locations, that is two rows.

.csv2,000 rows per file

Columns accepted in What's on the shelf right now
ColumnNeeded?What it is
skualso reads product_skuRequiredMust match a product already in Skuvelo.
locationalso reads location_name, warehouseRequiredThe place the stock is. It has to be a location you have already named in Skuvelo — capitalization does not matter, the rest of the name does.
on_handalso reads onhand, quantity, stock_levelRequiredThe number you would get by walking over and counting. A whole number, zero or more. Not a change, not an adjustment — the count.
  • Skuvelo works out the difference between your count and what it currently believes, and files that difference as one dated correction. It does not overwrite a quantity and it does not rewrite what came before, so you can always see what changed and when.
  • If you keep everything in one room, that room still needs a name. One location is a perfectly normal setup.
  • The same SKU and location twice in one file is rejected rather than guessed at. Decide which count is right and keep that row.

File three

Your sales history

What actually sold, and how fast?

One row per line on an order. An order with three products in it is three rows sharing the same order number.

.csv2,000 rows per file

Columns accepted in Your sales history
ColumnNeeded?What it is
order_numberalso reads order_id, external_order_idRequiredWhatever your platform calls the order. Rows sharing this number are treated as one order.
skualso reads product_sku, line_skuRequiredWhat was on that line.
quantityalso reads line_quantity, qtyRequiredHow many of it. A whole number, at least one.
unit_pricealso reads price, line_priceRequiredThe price for one, with a period for the decimal. 1299, 1299.00, and 1,299.00 all read. £1,299.00 reads too, but only when the currency column says GBP — a symbol with no currency column behind it is refused rather than quietly imported as dollars. A comma decimal — 1299,50 — is refused rather than guessed at, because there is no way to tell it apart from a thousands separator.
titlealso reads line_title, product_titleOptionalWhat the line was called on the order. Defaults to the SKU.
currencyOptionalThree letters, such as USD or GBP. Defaults to USD.
placed_atalso reads order_date, created_atOptionalWhen the order was placed, written year-first: 2026-08-03, or a full timestamp like 2026-08-03T10:30:00Z. 03/08/2026 is refused, because that is 3 August to most of the world and 8 March to a US reader and guessing gets it wrong half the time. Leave the column out and the order is dated today — fine for something that just came in, wrong for four years of history.
statusalso reads order_statusOptionalWhere the order got to. Leave it blank and it arrives as imported.
quantity_fulfilledalso reads fulfilled_quantity, qty_fulfilledOptionalHow many of that line actually shipped.
quantity_cancelledalso reads cancelled_quantity, qty_cancelledOptionalHow many were cancelled.
quantity_returnedalso reads returned_quantity, qty_returnedOptionalHow many came back.

Statuses the importer recognizes: imported, mapped, allocated, partially_fulfilled, fulfilled, partially_cancelled, cancelled, returned, partially_returned.

  • Rows belonging to one order have to agree on currency, date, and status. They are describing the same order, so a disagreement is a sign the export split something oddly.
  • History is what makes replenishment advice worth reading. A product list and a stock count tell Skuvelo what you have; only sales history tells it how fast it leaves.

There is no self-serve upload screen yet, so an import runs through your account during setup rather than from a button you click. Getting the three files right is the part that is yours; running them in is not something you are left to work out alone.

Do It in This Order

Each file leans on the one before it. A stock count for a product Skuvelo has never heard of cannot be filed anywhere, so it comes back to you as a rejected row rather than disappearing.

  1. Name your stock locations

    Every place you hold inventory — the unit, the garage, the shop floor, the 3PL. The stock file refers to them by name, so they have to exist first.

  2. Send the product list

    Nothing else can attach to a SKU that Skuvelo does not know about yet. Start here even if the file is thin.

  3. Send the stock counts

    Now the numbers have somewhere to land. This is the point where the workspace starts looking like your business.

  4. Send the sales history

    Last, and the one worth the most effort. Bring as much as your platform will give you — the further back it goes, the better the seasonality and lead-time math behaves.

Getting the File Out of Your Platform

This is the part that sounds like the hard bit, and it isn't. You are not converting anything or mapping fields in a wizard — you are exporting what you already have and renaming a header row.

  1. Find the export. It is almost always there.

    Nearly every selling platform can hand you a CSV, usually filed under Reports, Data, or a download link on the products or orders screen. If yours has buried it, its support team will know where — ask them for a CSV of your products, your stock levels, and your orders.

  2. Rename the header row. That is the mapping.

    Do not reformat the data or delete columns you are unsure about — anything Skuvelo does not recognize is simply ignored. The only row that matters is the first one. Capitalization does not count and a space works the same as an underscore, so Unit Cost and unit_cost are the same column.

  3. If your export is not US-formatted, check three things.

    This is the one part worth two minutes of attention, and it matters most outside the US. Fields must be separated by commas, not semicolons — a semicolon export arrives as one long column. Prices must use a period for the decimal: 12.50, not 12,50. Dates must be year-first: 2026-08-03, not 03/08/2026. Skuvelo refuses what it cannot read unambiguously rather than guessing, so you get the rows back instead of the wrong numbers — but it is faster to fix the file once than to fix a hundred rows. One catch worth knowing: a comma followed by exactly three digits is read as a thousands separator only when the currency is one that writes decimals with a period. In USD or GBP, 1,250 is one thousand two hundred fifty. In a currency that writes decimals with commas — EUR is the common one — the same cell could be either one thousand two hundred fifty or one and a quarter, so it comes back rather than being guessed at. Writing 1250.00 or 1.25 removes the question. If your decimals are commas, convert the whole column rather than trusting it row by row.

  4. If your prices carry a symbol, send a currency column with them.

    A currency symbol is read only when a currency column says the same thing — $ € £ ¥ ₹ ₽ ₩ ₪ ₺ are recognised, and a row whose symbol contradicts its currency column, or that has a symbol and no currency column at all, comes back rather than importing as dollars. Symbols written with letters — R$, CHF, kr, zł, Kč, A$ — are not recognised at all, so send those prices as bare numbers with a currency column. What also cannot be read is a price with a note in it, a range, a blank where a number should be, or a cents mark like 50¢ — write fifty cents as 0.50.

  5. Split anything enormous — but not into more pieces than you need.

    The row limit is per file, not per business, so a large catalog or several years of orders goes in as a few files in sequence and nothing is lost by splitting them. Stock and order imports do each count against a daily allowance, though, so split into the fewest files that clear the row limit rather than one file per week of history.

Uploading It Again Won't Break Anything

What a second upload does, in every case:

The same file twice does nothing the second time.

Stock and order imports recognize a file they have already processed and return the original result instead of applying it again. No doubled counts, no duplicate orders.

A corrected file just corrects things.

Products are matched on SKU, so a second product file updates what is there rather than creating a second copy of everything.

What a person set by hand stays set.

If someone on your team has fixed a cost or a title in Skuvelo, a later file does not quietly overwrite it. Deciding which source wins for which field is something you control, not something an import decides for you.

Nothing is edited away.

A stock correction is recorded as a new dated movement, not as a change to an old one. The record of what you believed and when survives the correction.

If a Row Comes Back

One bad line does not sink the file. The good rows land, and the rest come back as a list — the row number, the SKU or order number it was on, and what was wrong with it. Fix those rows and send the file again.

A SKU that is not in Skuvelo yet
Send the product list first, or add the missing SKU to it and resend.
A location name that does not match one you have set up
Check the spelling against your locations. Capitalization is the only difference that is forgiven.
The same SKU and location twice in one stock file
Two counts for one shelf is a question, not an instruction. Keep the row that is right.
A count that is not a whole number, or is below zero
on_hand is a plain whole number. Negative stock is a symptom to look at, not a figure to import.
A count or quantity above one million
A single line for more than a million units is almost always a stray digit or a unit-of-measure mix-up, so it is refused rather than filed.
A price written with a comma decimal, such as 12,50
Use a period: 12.50. A comma followed by one, two, or four-plus digits cannot be told apart from a thousands separator, and reading it wrong would multiply the line by a hundred, so it is refused instead. A comma followed by exactly three digits is the one shape that can still read — as a thousands separator, so 1,250 imports as one thousand two hundred fifty — but only when the currency is one that writes decimals with a period. Send that shape in EUR or another comma-decimal currency and it comes back too, because there is no way to tell 1,250 from one and a quarter.
A currency symbol that the currency column does not match
Send a currency column whose code matches the symbol — £ with GBP, € with EUR, ¥ with JPY or CNY. Without one the file would be read as dollars, so the row is returned instead of being imported as the wrong money.
A date that is not year-first
Write 2026-08-03. 03/08/2026 means two different days depending on who exported it, so it is refused rather than guessed at.
A price the importer cannot read for any other reason
Numbers, currency symbols, and thousands separators are fine. Notes, ranges, and blanks are not.
Lines of one order that disagree about currency, date, or status
They describe a single order. Make the shared fields match across its rows.
A status the importer does not recognize
Use one of the listed values, or leave the column out entirely and let the orders arrive as imported.

Sizes, Formats, and Limits

File size
Up to 8 MB per file
Product file
.csv or .xlsx, up to 5,000 rows
Stock file
.csv, up to 2,000 rows
Order file
.csv, up to 2,000 rows
Encoding
Comma-separated, UTF-8
Decimals and dates
Period for the decimal, year-first dates
Fair use
Stock and order imports count against a bounded daily allowance. The applicable limit is stated before your account is activated.

What File Import Is Not

Worth being straight about, because a file and a live connection are not the same thing.

  • It is not live sync.

    A file is a snapshot. Your numbers are right as of the last file you sent and stay that way until you send another. Nothing schedules that for you today, and there is no way to point Skuvelo at a folder and have it pick files up — a refresh is something you ask for, within a daily allowance, not something that happens overnight on its own.

  • It does not write back to your platform.

    An imported channel is read-only in Skuvelo. Nothing here changes your listings, your prices, or the stock number your storefront shows.

  • It does not make a planned connector any closer.

    Connector status is on the integrations page and nowhere else. A channel listed as planned is planned — not connected, and not on a date we have promised you.

  • Not everything you put in can be exported back out yet.

    Your product list exports to CSV from the Products screen, in exactly the columns the importer reads, so that one round-trips. Report views export too. Inventory levels and order history have no export button today — getting a copy of those is a request you make, not something you can do yourself. Saying otherwise would be the easy sentence and the wrong one, and it is worth knowing before you commit data anywhere.

This Isn't a Waiting Room

It would be easy to read all of this as "use files until the real thing arrives." That is not what files are. Every Skuvelo account has this path, connectors or not, and the things it carries are things no channel connector will ever hand over: a supplier's price list, a wholesale account that lives in email, the count you took on a clipboard, the four years of history sitting in the platform you are leaving. It stays in the product after every connector is live, because for some of your data it is the only way in.

Not Sure Your Export Has What We Need?

Ask before you spend an afternoon on it. Tell us where you sell and what your export looks like, and you will get an answer from someone who knows the importer.