Import multiple customers at once using a spreadsheet file. Upload a CSV or XLSX export from Skimmer, PoolBrain, ServiceTitan, or another provider, map the columns to Chisel Tide fields, and review the results.
Prepare your file
Before importing, make sure your file is formatted correctly:
Header row required: The first row must contain column headers. Data rows follow.
Maximum rows: 2,000 customers per import.
Required columns: A name column (either Full Name or both First Name and Last Name), Status, and LocationAddress.
If you're creating a file from scratch, use the Download example template link in the import modal to get a properly formatted starting point.
Import customers
Go to Customers in the navigation.
Open More actions.
Select Bulk import.
Upload your file:
Drag and drop the file into the drop zone, or click to browse.
The modal accepts exports from Skimmer, PoolBrain, ServiceTitan, and other pool service platforms.
Review the column mapping:
The table shows your file columns on the left and the Chisel Tide fields on the right.
Map each column to the corresponding field.
Full Name, First Name, or Last Name is sufficient.
The preview shows the first 5 rows of your data.
Choose import options:
Update existing customers — When enabled, customers that match existing records are updated with the new data. When disabled, the customer record is left unchanged, though its property and service-plan portions may still be processed.
Create service plans — When enabled, automatically creates a service plan for each property that has a rate.
Add tags — An optional field that adds the same tags to every imported customer. Use a comma-separated list for multiple tags.
Optionally run a preview before changing anything: turn on the preview option and review which customers will be created, matched to existing records, or skipped, along with the planned service, pricing, and warnings. The preview does not change your data.
Click Import to start the import.
Review the results when the import completes:
Customers created
Customers updated
Properties created
Service plans created
Skipped rows — Rows that weren't imported are listed with the name and reason.
Column fields
The following fields can be mapped during import:
Field
Description
First Name
Customer's first name. Required if Full Name is not provided.
Last Name
Customer's last name. Required if Full Name is not provided.
Full Name
Customer's complete name. Can be used instead of First Name + Last Name.
Company Name
Business name for commercial customers.
Is Company
Mark as a commercial account.
Email (primary)
Main email address for the customer.
Email (secondary)
Alternate email address.
Mobile Phone
Mobile contact number.
Home Phone
Home contact number.
Work Phone
Work contact number.
Status
Customer status. Required. Only Active is preserved; every other value, including Prospect, is imported as Inactive.
Billing Address
Address for invoices and billing correspondence.
Service Address
Address where technicians perform service.
Location Code
Internal identifier for the property.
Gate Code
Access code for the property.
Dogs Name
Pet information for technicians.
Rate
Service rate or price.
Rate Type
How the rate is calculated (weekly, monthly, etc.).
Labor Cost
Cost of labor for the service.
Minutes at Stop
Expected service duration.
Location Notes
Notes about the property.
Customer Notes
Internal notes about the customer.
Tags
Labels for organization and filtering.
Lead Source
How the customer found your business.
Customer Code
Internal reference code for the customer.
Imports from another service system can also include migration details such as the customer's start date, cancellation details, contact preferences, service notes, access and parking instructions, billing chemicals, and pool information. Map these columns alongside the standard fields above before importing.
Troubleshooting
The file won't upload
Check that:
The file is a supported type: .xlsx, .xls, .csv, .tsv, or .txt.
The file has a header row followed by at least one data row.
The file isn't corrupted or password-protected.
If you see Could not parse file — make sure it has a header row and at least one data row, your file is missing headers or contains no customer rows.
Import blocked due to missing columns
Your file must include these required columns:
Name: Either a Full Name column, or both First Name and Last Name columns.
Status: The customer's status (Active, Inactive, Prospect, etc.).
LocationAddress: The property address for service.
If your export is from Skimmer, PoolBrain, or ServiceTitan, these columns should be present automatically. If you're creating a custom file, use the Download example template link to get a file with the correct structure.
Some rows were skipped
After import, check the Skipped rows table in the results. Each skipped row shows the row number, customer name, and reason it wasn't imported.
Common reasons for skipped rows:
Duplicate email or name that matches an existing customer (if Update existing customers is disabled).
Missing required data in a row.
Invalid status value.
Fix the data in your file and re-import, or update the customer manually.
Import exceeded the row limit
The maximum is 2,000 rows per import. If you have more customers, split them into multiple files and import them separately.