Import assets, parts, locations, users, vendors, customers, WOs, PM plans, and requests via CSV.
Supported Types
- Assets
- Parts
- Locations
- Users
- Vendors
- Customers
- Work Orders
- PM Plans
- Requests
- Asset Incidents
Process
- Download template
- Fill with data
- Save as CSV UTF-8
- Upload
- Review validation
- Confirm import
Tip
How big a file can be
Up to 8,000 rows per file. This limits ONE FILE, not your account: there is no cap on how many assets, parts, locations or any other records you can hold — on any plan, including the free Core plan. A larger dataset is simply split into several files that you import one after another, and each import adds to what is already there. Very large files also take longer and produce a longer error report, so 2,000 to 5,000 rows per file is usually more comfortable to work with than one file at the maximum.
Updating existing records
Export your data, make your edits, then re-upload the file. FreeMaint matches each row back to its existing record by the ID (or Reference) column, so records are updated in place instead of duplicated. On the preview step you choose how the import is applied:
Create new only
Always add new records. Existing ones are not touched (may create duplicates).
Update existing only
Only update records matched by ID/reference. Rows with no match are skipped and reported.
Update existing & create the rest
Matched records are updated, unmatched rows are created.
Export, edit in Excel, re-import
The exported file and the import template now use the same columns, so you can export your data, edit it in Excel and upload it straight back — no need to add or rename columns. Keep the ID column untouched: it is what matches each row to the existing record, so rows are updated instead of duplicated. Columns that cannot be imported (On Hand, On Order, Total Cost, dates) are listed as ignored during the mapping step.
A column you DELETE from the file, or a cell you leave EMPTY, keeps its stored value. That is how you update one thing without disturbing another: to fill in unit costs across hundreds of parts without touching stock levels, delete the Quantity column before uploading. Total value is recalculated from the new unit cost automatically.
To clear a stored value instead, type NONE in the cell (upper or lower case). This works for assets in Model, Manufacturer, Description, Area / Zone and Barcode, and for parts in Description, Part Number, Manufacturer and Storage Location; NONE in Location (Name) detaches the part from its location. NONE only clears on a row that updates an existing record — on a row that creates a new one it is ignored and the field stays empty. A dash (-) is not read as NONE: it is saved as typed.
Custom fields in an import
Your custom fields appear as cf_ columns in the export and can be filled in and re-imported. Leave a cf_ column out of your file to keep the stored value untouched; include it and leave the cell empty to clear it.
Vendor contacts
Vendors support individual contacts directly in import and export. Add numbered columns — Contact 1 Name, Contact 1 Email, Contact 1 Phone, Contact 1 Role, Contact 1 Primary — and repeat with Contact 2, Contact 3, and so on for as many contacts as you need. Only the name is required; the email can be left blank. Exporting your vendors already includes these columns, so you can export, edit, and re-upload. When updating, including any Contact column replaces that vendor's contacts; leave the Contact columns out to keep the existing ones.
Importing a location hierarchy
Locations can be nested as deeply as you need. In the Parent Location column, type the parent's name — or, when sub-locations share the same name in different branches, the full path with each level separated by ' > ' (for example: Site A > Building 1 > Floor 2). This lets you reuse a name like 'Office' or 'Corridor' under different parents without any conflict. Exports already fill this column with the full path, so an exported file re-imports exactly as it was.
Tip
People are matched, never duplicated
A person is matched on ID, then email, then username — so re-importing a roster export never creates a second account for someone you already have. In Create new only, those rows are skipped and listed by name. In the two update modes, only the first and last name are changed from a file: role, email, username and password are never modified by an import. Two different people with the same name stay two people — a name is not an identity.
Related articles
Was this page helpful?