Importing your data
Bring clients and records in from a spreadsheet, another system's export or a DoneWell archive, one guided step at a time.
All help topics
Settings → Data → Import data walks you through an import in six steps. Nothing is written until you press Start import on the Preview step, and every finished import can be undone for 14 days.
1. Source
Pick the shape of the file:
DoneWell export — the zip you get from Settings → Data → Export company data, from this or another DoneWell company. Every file in it maps itself.
Own table — a CSV or Excel sheet you keep yourself, or an export from any other system. You match its columns on the Map step.
Jobber — Jobber's Clients export, Products & Services and the report CSVs. The columns are matched for you, the J_ID becomes the client's id with one property per row, and the reports' clients are found by name and contact. Open the in-app guide (Settings → Data → Switching from Jobber?) for the eight exports in the order to load them, what each one becomes and what does not move; you can tick the files off as they come in. A Jobber file uploaded as Own table is recognised on the Map step, where one click switches it to the preset.
Housecall Pro, ServiceTitan, Workiz and QuickBooks Online — their customer, job, estimate, invoice and item exports (ServiceTitan's Customers, Jobs and Estimates workbooks; QuickBooks' Customers and Products & Services lists). The columns are matched for you the same way; the source's own ids are kept so a second import updates the same records (ServiceTitan's LocationID becomes the property's id). What does not move: ServiceTitan's Equipment template and QuickBooks' invoices — QuickBooks stays your accounting system. As with Jobber, a file uploaded as Own table is recognised on the Map step and one click switches it to the preset.
Direct presets for other systems are listed as Coming soon.
2. File
Drag a file onto the page or choose one: CSV, TSV, Excel (.xlsx) or a zip of CSV files, up to 50 MB. The first row must hold the column names.
DoneWell reads the file and shows what it found — the text encoding, the separator (comma, semicolon, tab or pipe), the sheet for an Excel workbook, and how dates are written. When a date like 05/03/2026 could be either day-first or month-first, the page asks you to confirm. Change anything that reads wrong; the preview of the first 200 rows follows your choice.
3. Map
First choose what the table holds under Import as: Clients (one row per client with their contact details and address — the shape most exports have), Catalog items (one row per product or service with its category, unit, price and cost), Requests, Quotes, Jobs or Invoices (one row per document with its client, dates, status and money), Document line items (a separate table of lines that name the document they belong to), Visits (one row per visit of a job: the day, the window, who went, whether it was completed), or one of the DoneWell archive files. Coming from the Import button on the Clients or Catalog list, this is already chosen for you.
Every column of your file goes to one field, or to Skip. DoneWell fills the mapping in for you — common column names from spreadsheets and other systems are recognised, a typo (Fisrt Name) still counts, and if you have imported a file with the same columns before, your last mapping comes back exactly as you left it. Under each column name a small tag says how it was matched: Exact, Alias, Close match, Preset, Remembered, AI, or You chose once you change it by hand.
AI matching. For the columns nothing else recognised (Cust. Name, Svc Addr), DoneWell can ask an AI model. It sends only those column names and up to five sample values per column, with phone numbers and email addresses masked before anything leaves DoneWell; the provider keeps none of it (see the Privacy Policy). A confident answer is applied and tagged AI; a less sure one is shown under the column as AI suggests: … (60%) with an Accept button, and the column stays in your notes until you accept it. A line above the table says how many columns the AI matched and what was sent. When AI matching is switched off for the platform, or unavailable, the wizard simply leaves those columns for you — nothing is sent anywhere. Fields marked Required must be mapped before you can continue; for clients that means at least one of first name, last name or company name, for catalog items the name.
For clients, a column DoneWell has no field for is set to Keep in notes: its values land in the client's notes as a block headed with the file's name (for example Gate code: 1234), so nothing from the old system is lost. Switch a column to Skip if you do not want it.
For documents, columns named Line Item 1 Name, Line Item 1 Qty, Line Item 1 Price and so on — the way most systems export a document's lines side by side — are recognised as Line item columns and become the document's lines; a Document line items table links each line to its document by the document's number or id. The document's number is kept when it is free, otherwise the next free number is used and the original one is shown on the document as Imported as …. Status words from other systems (Awaiting Payment, Past Due, Approved, Requires Invoicing…) are translated to DoneWell's; one that is not recognised is noted as a warning and the document gets its default status. Money is imported exactly as the file states it, and an invoice with a paid amount gets one payment for that amount so its balance is right; imported history sends no reminders.
For visits, import the jobs first: each visit names its job by the same Job # the jobs file carried. The day and time are taken as your company's clock, exactly as printed — a visit at 9:00 lands at 9:00 on the calendar; a date with no time is an Anytime visit. The end comes from an end-time column or a Scheduled duration (2h, 2:30, 90 min); with neither, one hour is assumed and noted. Assigned to is matched to your team members by email, then by full name, then by an initial (J. Smith); a name nobody on your team has is listed on the last step and that visit is imported without them — invite the person and import again to link their work. Visit completed = Yes makes the visit completed; a visit in the past nobody completed is marked skipped with a warning, a future one stays scheduled. The old system's Time tracked and the report's Line items summary are kept in a note on the visit — they never become hours on a timesheet. A job's Type and Schedule columns (Recurring, Weekly on Monday, Every 2 weeks until 12/31/2026…) make it a recurring job with that rule; the import never generates visits of its own, so the calendar shows exactly the visits your file had. A request's Assessment date, times and Assigned to become the request's assessment.
Five sample values are shown under each column so you can tell a phone column from a fax column at a glance — each phone type (main, mobile, home, work, fax, other) has its own field and keeps its label on the client.
4. Check
Rows are checked one cell at a time. A cell with a problem is shown in red with the reason — an email address that is not one, a date that cannot be read, a link to a record that does not exist. Fix it right there: click Edit (or double-click the value), type the correction and press Enter. When DoneWell can suggest a fix, Use suggestion applies it. Skip row leaves that row out of the import.
A row with an error is left out until you fix or skip it; the rest of the file still imports. A warning (for example a phone number that could not be normalised) is imported as is. The Only errors switch hides the warnings. Editing cells needs a larger screen; on a phone you can review the rows but not change them.
5. Preview
The page shows what the import will do, per kind of record: how many will be created, updated or skipped. Records that already exist in your account — a client by phone or email, a catalog item, tag, category or unit by name — are listed under Already in your account, and for each one you decide whether to update the existing record, skip the row, or create a new record anyway. A client who appears on several rows of the file with different addresses is imported once, with all of those addresses. Catalog prices go on your default price list. Then press Start import.
Your plan's client limit does not cut an import short: every client in the file is imported. If the file would take you past the limit, the Preview says so before you start — how many clients your plan includes, how many the file adds, and how many will stay locked until your plan allows more. Locked clients are the least active ones (the longest since their last request, quote, job or invoice); they keep their documents, they just disappear from the Clients list until you upgrade. See Clients.
6. Run
The import runs in the background; you can leave the page and come back through the Import history at the bottom. When it finishes you see the summary; if the file named team members who are not in your company, they are listed here — an import never creates team members, so invite them under Settings → Users and import again to link their work. You can download the rows that failed as a CSV, and can Undo import — every record the import created is removed and every record it updated goes back to how it was. Undo stays available for 14 days.
Who can import
Only members of your company who can manage settings can open the import page, upload a file or undo an import.
Missing something? Every guide is short on purpose — write to support@donewellapp.com and we will add it.