Overview
The Tool Inventory importer creates or updates inventory records for tools (parts with the tool part type). It works like the Part Inventory importer — rows without an id create new inventory, rows with an id update the matching record — with two tool-specific additions: last_maintained_date and uri.
Because tools are always serial-tracked, every create row must provide a serial_number matching the physical asset’s tag or manufacturer serial. There is no serial autogeneration and no lot tracking for tool inventory.
Columns
| Column | Required | Description |
|---|
id | No | Inventory ID. Provide to update an existing record; omit to create new inventory. Lookup column — an empty cell is treated as “not provided,” not 0. |
part_number | Yes (for create) | Part number of the tool. Ignored on update. |
revision | No | Tool revision. Combined with part_number to look up the tool; if omitted, the latest revision is used. |
serial_number | Yes (for create) | Serial number identifying the physical tool. Update rows inherit the existing serial. |
location | No | Location name. Must match an existing location in ION. |
last_maintained_date | No | Date the tool was last maintained, in ISO 8601 format (e.g. 2026-05-01 or 2026-05-01T12:30:00). An empty cell leaves the field unset. |
uri | No | Link to the physical asset (e.g. an asset-management URL). Must be unique across tool inventory; an empty cell stores no value. |
last_maintained_date only accepts ISO 8601 — ambiguous formats like 1/2/3 are rejected rather than guessed.
Custom attributes
Any column not in the standard list above is treated as a custom attribute on the inventory record. Custom attribute columns must match a configured attribute key for your organization; unknown columns cause a validation error.
Related pages