All seven imports follow the same pattern, so it is worth understanding it once before you look at the individual column lists.
The import dialog
- Click the button for the record type you want to import (for example Clients). A dialog opens, titled for that type — Import Clients (CSV), Import Client Properties (CSV), Import Routes (CSV), Import Catalog Items (CSV), Import Invoice Templates (CSV), Import Recurring Jobs (CSV) or Import Recurring Charges (CSV).
- Click Download Sample File. The sample has the exact columns the importer expects, in the right order, with example rows or bracketed hints such as
[YES or NO]. - Fill the sample in with your data. Keep the columns in the same order and delete the example rows before you import.
- Use the file chooser to select your CSV, then click Import. The button reads Processing… while the file is handled.
- A message appears in the corner of the screen. A green Successfully imported N … message means every row was saved; a red message tells you which row failed and how many rows were saved before it.
Note: The file chooser is your browser’s own control, so its label follows your browser language (in the screenshot above it reads Escolher arquivo because the browser is set to Portuguese). The dialog itself is always in English.
Columns are read by position, not by name
Every importer skips the first line of your file and then reads each row by column position. Renaming a header does no harm, but inserting, deleting or reordering a column shifts every value after it into the wrong field. Always start from the current Download Sample File, never from an old copy — the Clients and Properties files have grown extra columns over time.
Two exceptions read the header row deliberately: the Properties import locates the Pool Gallons column by its header and refuses the file if that header is missing, and the Clients import uses the header to find its optional trailing QBODepartment, QBOTaxCode and InvoiceReminders columns.
The ID* column: create or update
Clients, Properties, Invoice Templates, Recurring Jobs and Recurring Charges start with an ID* column that decides whether a row creates or updates a record:
-
NEW— creates a new record. - An ID copied from the matching export — updates that existing record. The ID is the number PSS prints in the export’s first column (it is your company number followed by the record number, so it never matches an ID you see elsewhere in the app). Never type an ID by hand: export first, edit the rows, then import.
- Anything else (blank, a typo, an ID from another company) — stops the import at that row.
This is also the answer to “what happens with duplicates”. The importers do not look for an existing client, property or template with the same name: a row marked NEW always creates a new record, even if one with the same display name already exists. To change existing records, export them, edit, and import with their IDs. The two exceptions are Catalog (a row whose item type and name match an existing item updates that item) and Routes (a row for a property and day that already has a stop moves or reorders that stop) — see their sections.
Matching by name
Where a row refers to another record, it does so by the display name you see in the app, not by an internal ID:
- Clients are matched on their display name (Properties, Invoice Templates, Recurring Charges match case-insensitively; Recurring Jobs also require the client ID from the export).
- Technicians and managers are matched on their team member display name. A technician must hold the Technician role on your team; a manager must hold the Manager role.
- Item types, catalog items, job types and visit views are matched on their names (case-insensitive for item types and catalog items).
If the name is not found, the import stops at that row and tells you which name it could not find.
Yes/No, lists and dates
- Yes/no columns expect
YESin capitals. Anything else —NO,no,Yes, blank — is read as no. (The Clients InvoiceReminders column and the Recurring Charges Is Taxable column are the exceptions and acceptNOexplicitly; see below.) - Multi-value columns such as Tags, Property Tags and email lists are separated with a semicolon (
Tag A;Tag B), never a comma, because the comma separates CSV columns. - Dates are
YYYY-MM-DD.
Rows are saved one at a time
Imports are processed row by row and saved as they go. When a row fails, everything before it has already been saved and the message tells you how many rows that was (Saved 42 records successfully). Fix the failing row, remove the rows that were already saved (or change their ID* to the exported ID so they update instead of duplicating), and import again.
Import limits
- Per file: up to 5,000 rows for Clients, Properties, Routes and Catalog; up to 2,000 rows for Invoice Templates, Recurring Jobs and Recurring Charges. Larger files stop at the limit with a message naming the last record saved; import the rest as a second file.
- Clients and Properties are also limited by your subscription. On a paid plan you can hold up to five clients per property slot in your plan, and up to 30% more properties than your plan’s property limit (measured against properties in use, see Section 5). During the free trial the total is 50 clients and 50 properties. With no active subscription, imports of clients and properties are refused with An active subscription is required to import. The other imports are not metered.