Import Your Existing Data
Bring your contacts, properties, and pricebook items into JobsiteOn using CSV imports so you do not start from scratch.
Bring your contacts, properties, and pricebook items into JobsiteOn using CSV imports so you do not start from scratch.
This guide explains how to import your existing business data into JobsiteOn using CSV files. You will learn how to prepare your data, map columns to JobsiteOn fields, review imports before they commit, and handle common errors. JobsiteOn supports importing contacts, properties, and pricebook items.
Screenshot: Import Data page showing three import options as cards: "Import Contacts", "Import Properties", and "Import Pricebook Items" with a description and "Start Import" button on each
Before preparing your file, download the CSV template for the data type you want to import. The template includes all supported column headers with example rows.
Tip: Always use the template as your starting point. It ensures your column headers match exactly what JobsiteOn expects, which prevents mapping errors during import.
The contacts template includes these columns:
| Column | Required | Description |
|---|---|---|
| first_name | Yes | Contact's first name |
| last_name | Yes | Contact's last name |
| No | Email address | |
| phone | No | Primary phone number |
| company | No | Company or business name |
| type | No | "customer", "vendor", or "lead" |
| notes | No | Free-text notes |
Note: Duplicate detection runs on email address. If a contact with the same email already exists, the import skips that row and reports it as a duplicate.
The properties template includes:
| Column | Required | Description |
|---|---|---|
| address | Yes | Street address |
| city | Yes | City name |
| state | Yes | State abbreviation |
| zip | Yes | ZIP or postal code |
| contact_email | No | Links the property to an existing contact |
| property_type | No | "residential" or "commercial" |
| notes | No | Free-text notes about the property |
Tip: If you include
contact_email, JobsiteOn links the property to the matching contact automatically. Make sure the email matches a contact that already exists or is included in a contacts import you run first.
The pricebook template includes:
| Column | Required | Description |
|---|---|---|
| name | Yes | Item name (e.g., "Drain Cleaning") |
| description | No | Detailed description |
| type | Yes | "service" or "material" |
| unit_price | Yes | Price per unit in dollars |
| unit | No | Unit of measure (e.g., "each", "hour", "sqft") |
| taxable | No | "true" or "false" |
Screenshot: Column mapping screen showing CSV headers on the left ("First Name", "Last Name", "Email") mapped to JobsiteOn fields on the right with green checkmarks for matched columns and a yellow warning for one unmapped column
Animation: A user dragging a CSV file onto the upload area, the file parsing, and the column mapping screen appearing with auto-matched fields
After mapping, JobsiteOn shows a preview of the first 10 rows so you can verify the data looks correct.
Screenshot: Import preview table showing 10 rows of contact data with green checkmarks on 8 rows, a yellow warning icon on 1 row, and a red error icon on 1 row with an error message "Missing required field: last_name"
Review the preview carefully. When satisfied, click Confirm Import.
After the import completes, JobsiteOn shows a summary:
Note: You can download a CSV of failed rows, fix the errors, and re-import just those rows. This saves you from re-uploading your entire file.
If your data is interconnected, import in this order:
Make sure your file is saved as UTF-8 encoded CSV. Some spreadsheet apps default to other encodings. In Excel, use Save As and select "CSV UTF-8" as the format.
Check that your CSV uses the exact column headers from the template. Headers are case-sensitive. "First Name" does not match "first_name". Use the downloaded template headers exactly.
Check the import summary for skipped duplicates. If all records were flagged as duplicates, your data may already exist in JobsiteOn. Verify by searching for a few records in the Contacts or Properties module.
Did this answer your question?