Skip to content
Maintenance resources

Import preventive maintenance schedules from a spreadsheet

Move calendar and meter schedules into PreventiveHQ with a row preview, duplicate checks and paused review before work generation.

By PreventiveHQ · Reviewed 6 September 2026

Start with the asset register

Import your assets first. Each schedule row refers to an existing asset_code in your workspace. A retired asset or an inactive site cannot receive an imported schedule. Use a different name for each distinct schedule on an asset. The importer rejects duplicate asset/name pairs instead of overwriting existing maintenance.

Use the calendar fields

Keep the template headers in their original order. Set trigger_type to calendar, frequency_value to a whole number from 1 to 3650, and frequency_unit to days, weeks, months or years. Supply next_due_date as YYYY-MM-DD. It is interpreted as 09:00 in your workspace timezone and stored in UTC. Leave meter_interval and next_meter_value empty. Set lead_days from 0 to 90 and priority to low, medium, high or critical.

Use the meter fields

For trigger_type meter, the asset must already have a configured meter. Supply a positive meter_interval and an explicit next_meter_value in that asset’s meter unit. The next value is an absolute reading, not the distance remaining. A threshold already reached may produce due work after you resume the schedule. Keep frequency_value and frequency_unit populated for the required record fields; they do not turn a meter schedule into a calendar trigger.

Preview and review before activation

Upload at most 500 rows in a CSV file up to 1 MB. The preview is available for 30 minutes and is bound to your signed-in user and workspace. Resolve all errors before import. The workspace is revalidated at commit; no schedules are created if any row is invalid. Imported schedules are paused and unassigned, with no procedure attached. Review each plan, attach its approved procedure and owner, then resume it deliberately.

Continue your implementation