CSV import and export
Move data in and out of Kabaido with CSV, and know exactly what the parser accepts before you upload.
CSV is the integration that needs no integration, so it is on every plan and it is nobody's second-class path. Products come in through a mapping wizard built for files that are too big to check by eye; customers come in through a lighter dialog that maps itself; quotes, orders and customers go out as CSV from their own list views.
What the parser accepts
The parser follows RFC 4180 and is deliberately forgiving about the things spreadsheets differ on, because an export from a twenty year old ERP rarely looks like an export from Excel.
- Delimiters: comma, semicolon, tab and pipe. The delimiter is sniffed from the header line by counting unquoted separators, so a European semicolon file needs no setting changed.
- Quoting: double quotes around a field, with a doubled quote ("") for a literal quote inside one. Commas, semicolons and line breaks inside quotes are safe.
- Line endings: CRLF and LF both, so a file written on Windows and a file written on a Mac behave the same.
- XLSX: an Excel workbook is converted to CSV in your browser when you pick it, so the file that reaches Kabaido is always CSV. The first sheet is used.
The blank template the wizard offers is written with a byte order mark so Excel opens it as UTF-8 rather than mangling any accented character in it. If you build your own file, save it as UTF-8.
Importing products
The product import is a four-step wizard: upload, map, validate, run. Uploading needs the admin role or above.
- Upload the file and choose the schema the products belong to. The file is stored, not held in the page, which is why a browser tab closing does not lose the run.
- Map each column in your file to a core field (SKU, title, price, unit of measure and the rest) or to one of your schema's own attributes. Columns you do not map are ignored rather than guessed at.
- Validate. The first 500 rows are parsed against the mapping and everything that will not coerce is reported with its row number and column heading.
- Choose what happens to a SKU that already exists, update it or skip it, and run.
SKU and title must both be mapped before a run can start. Everything else is optional.
What validation tells you
Validation is not a pass or fail. It separates four different things so that a clean-looking report cannot hide an unclean file.
| Reported as | What it means |
|---|---|
| Error | The cell will not coerce to the field's type. A row with an error still imports; the cell is left empty and listed in the error report. |
| Note | The cell was read and holds no figure: POA, Call for price, N/A. Not an error, and emphatically not a zero. A price column that says POA all the way down used to report no issues at all. |
| Warning | Something is wrong with the mapping as a whole rather than with one cell: no price mapped, a published price standing in for the sell price, a money-looking heading left unmapped. |
| Unit hint | A value whose units look different from the field's, for example 12.7 against a field declared in inches. The first example per column is shown. |
Duplicate SKUs inside your own file are listed too, before they become duplicate rows in your catalogue.
Running a large file
The run happens on the server in batches of 1000 rows. After each batch the row cursor, the count processed, the count written and the count of errored cells are all persisted, which is what makes a run resumable: an interrupted import restarts from the last completed batch rather than from the top, and no row is written twice. You can cancel a run mid-file, and only one worker can hold a given import at a time.
When the run finishes, an error report is written as its own CSV with a row, column, value, severity and reason for every cell that had something to say. Fix the source file against that report and re-run it.
Reusing a mapping
A mapping can be saved with a name against a schema and picked again on the next import, which matters most for a feed that arrives monthly with the same headings in the same order.
Importing customers
Customers import from the Customers area through a smaller dialog: a CSV with company, contact, email, phone and terms columns, in any order, mapped by heading automatically. A sample file is one click away if you would rather start from the right shape. Before anything is written you get a preview: how many rows are new, how many look like duplicates of customers you already have (matched on email domain and company name), and a switch to skip them.
Exporting
Quotes, Orders and Customers each carry an Export control above the list. It exports what the list is showing, so filters and search narrow the export the same way they narrow the screen, and it offers an optional From and To date range with a live count so you can scope an export to a single month before downloading it. See Export your data for the whole picture, including the catalogue.