ION’s import feature lets you upload a CSV file to create or update records in bulk. Instead of entering data one row at a time through the UI, you can prepare a spreadsheet offline and import it all at once.
How imports work
To start an import, navigate to Imports in the sidebar, then pick an import type from the New Import tab. The importer cards are grouped by category — Production, Supply Chain, Quality, and OS — to match where each record type lives in ION. Imports are processed asynchronously — you can navigate away and continue working while the import runs. You will receive a notification when the import completes or fails.
Clicking Start Import on any card opens an upload modal where you can download the CSV template, toggle the importer’s options, and choose Validation only for a dry run. The option set varies by importer — the MBOM modal is shown below as an example.
Imports are all-or-nothing. If any row fails validation, no rows are written and you receive an error report. You never end up with a partially imported file.
You can track the status of all imports from the Import History tab. Expand any failed job to see its per-row error messages, or click Download to pull the full error CSV.
Video walkthrough
The end-to-end import flow is the same for every importer — pick a type, download the template, upload your CSV, run validation, then commit. The walkthrough below uses the MBOM importer as an example.
Required and optional columns
Each import type has its own set of columns. Some columns are required and must be present in every row, while others are optional. Optional columns that you omit from your CSV are skipped entirely — ION does not touch those fields on the imported records. Only when an optional column is included in the CSV but left blank for a given row does ION apply a default value based on the field type (see below). If a required column is missing or empty, the import will fail with a validation error.
How empty CSV cells are handled
When an optional column is present in your CSV but a row leaves it blank, the cell defaults to a falsy or zero-equivalent value (not null). This only applies to columns that are actually in the file — omitting the column entirely leaves the field untouched.
Lookup and control columns are exempt
A handful of columns are exempt from the falsy-default rule — either because they’re used to look up an existing record or control importer behavior, or because 0 isn’t a falsy value for that field’s type. For these, an empty cell means “not provided”:
| Column | Importer | Empty cell means |
|---|
id | Part Inventory, Tool Inventory, Issues | Create a new record (no update lookup) |
original_name | Locations | No rename |
original_po_number | Purchase Orders | No rename |
latitude, longitude | Locations | Unset — 0 is not a falsy value for a coordinate |
last_maintained_date, uri | Tool Inventory | Unset — no date is written and no URI is stored |
due_date, quantity, assigned_to | Runs | Unset — no due date, quantity, or assignee is written |
Each importer’s column table calls out which fields behave this way.
| Field Type | Empty Cell Value | Examples |
|---|
| Text | "" | description, address |
| Numeric | 0 | quantity |
| Boolean | false | made_on_assembly, available, archived |
If you leave a boolean column blank, ION treats it as false (unchecked). To set a field to true, you must explicitly write a truthy value.
Accepted boolean values
Boolean fields accept any of the following (case-insensitive):
| Truthy | Falsy |
|---|
true | false |
yes | no |
1 | 0 |
Errors
When validation fails, ION reports up to 100 errors with the specific row number and a description of the problem. Row numbers correspond to the CSV file where row 1 is the header and row 2 is the first data row.
If your file contains more than 100 errors, fix the first batch and re-upload. ION caps error reporting at 100 to keep the output manageable.
Tips for successful imports
- Check your columns — Review column headers and values before uploading. Pay special attention to boolean columns — blank cells default to
false, so any field you intend to be true must be set explicitly.
- Start with Validation only — Use the validation-only option on your first attempt to catch errors without modifying any data.
- Fix all errors before re-uploading — Since imports are all-or-nothing, partial fixes will still fail if other rows have issues.
- Import in staging first — Run your import in a staging environment and verify the results before importing into production.