Imports — bring your shop's data from another tool
Who it's for
The owner or manager moving the shop off another CRM — OrbisX, Urable, Tint Wiz, Zoho, Jobber, or anything that can export a CSV. One export file brings the book of business across instead of retyping it.
Where it fits
Migration is a day-0 job: bring your customers (with their vehicles) and the work already in flight, then run everything in Wraptor from the first real day. Two places point here — the Finish setup checklist item Bring in your first real job (the strip on your jobs board and dashboard) carries a second link, Import your data, and the first-run picker's Moving from another system? panel links Import from OrbisX, Urable, Tint Wiz, Zoho & more. Picking Bring over existing work in the first-run picker drops you straight into the jobs wizard. See onboarding.md and workflow-map.md.
Overview
The migration hub (/import) lists the tools shops usually come from.
Every tile opens the customers wizard with that tool stamped on every row
it creates; the jobs lane is the second card below the tiles. There are two
lanes:
- Customers & vehicles (
/customers/import) — names, contact details, addresses, notes, newsletter opt-in, plus one vehicle per row (year, make, model, color, VIN, plate). A customer appearing on several rows gets several vehicles. - Jobs (
/jobs/import) — active work from Trello, Asana, monday.com, Jobber, or ClickUp, mapped onto your workflow stages. Jobs with no customer land on the shop's Unassigned bucket for triage.
Column mapping comes in three tiers:
- Recognized exports are detected from their headers and pre-mapped — Jobber Clients and Zoho CRM Contacts in the customers lane; Trello, Asana, monday.com, Jobber and ClickUp in the jobs lane.
- In the customers lane, everything else auto-maps by header name — "Cell Phone", "E-mail Address", "Vehicle Make" and dozens of synonyms land on the right fields instantly, free.
- In the customers lane, AI auto-map — a file that wasn't recognized as a known export gets a button that sends the headers plus up to three sample rows — never the whole file — and proposes a mapping. It reads Auto-map with AI when the synonyms found nothing that names a customer, and Re-map with AI when they did. It costs no AI credits, and you see and can change every row before anything imports.
The jobs lane has no synonym table and no AI button: an unrecognized jobs file starts with every column on — ignore — and you map it yourself.
Safe to re-run — with one caveat. Every imported record carries its source and original id. Re-uploading a corrected customer export updates the same customers and vehicles instead of duplicating them. Jobs only dedupe when your file carries a Source ID column; without one, a second upload creates a second copy of every job.
Screens & navigation
Migration hub (/import) — headed Bring your shop's data. Six tiles:
OrbisX, Urable, Tint Wiz, Zoho CRM, Jobber, and Another
tool / plain CSV. Every tile opens the customers wizard with that source
stamped on it. Below, under What you can import, two cards open the lanes:
Customers & vehicles and Jobs. The last line — "Stuck on an export
format we don't recognize?" — offers Send it to us, a mail link to
support@wraptor.app.
Import customers (/customers/import) — four steps across the top:
Upload / Map columns / Preview / Import. Also reachable from
Customers → Import. Arriving from a named tile, the heading reads "Import
customers from {tool}"; from Another tool / plain CSV, or from the
Customers button, it reads "Import customers".
Import jobs (/jobs/import) — five steps: Upload / Map columns /
Map stages / Preview / Import. Also reachable from the jobs board
toolbar (Import jobs) and from the empty-board panel (Import existing
jobs).
Both wizards move on Continue and go back with Back. No customer, job or vehicle is written until you press the final import button — the one exception is Create stage on the jobs wizard's Map stages step, which adds the workflow stage to your board straight away.
Capabilities
Customers & vehicles
- File type: CSV only. The upload box reads Click to choose a CSV
export; pick a
.jsonfile anyway and it is refused — "Customer imports are CSV only — export your clients as a CSV file." - The upload step lists the export recipe for Jobber (Clients → the ⋯ menu → Export as CSV) and Zoho CRM (Contacts → ⋯ → Export).
- Columns you can map: Company name · Contact name · First name · Last name · Email · Phone · Street address · City · State · ZIP · Website · Notes · Newsletter opt-in (yes/no) · Source ID (re-import protection) · Vehicle — year · make · model · color · VIN · license plate. Anything else stays on — ignore —.
- One column per field. Map a second column to a field that is already taken and it resets to — ignore — with a note under it — Email is already mapped from "Primary Email". The column you just changed always wins the field.
- To continue you need one way to name the customer — Company name, Contact name, First name, Last name, or Email. Phone alone is not enough.
- Preview counts the run before it happens: "N rows · N new · N update existing · N in-file duplicates skipped", plus an amber "N ambiguous (email and phone point to different customers)" when a row's email and phone point at two different existing customers. The first 50 rows show as Company / Contact / Email / Phone / City / Vehicle.
- Import N customers runs it. The result line reads "N created · N updated · N duplicates skipped · N failed", with "N vehicles" added when the run wrote any, and failures listed row by row. View customers returns you to the Customers hub.
Jobs
- File types: CSV, or a Trello JSON board export. Tick Include archived / closed cards (Trello JSON export only) before you upload if you want closed cards.
- Columns you can map: Title (required) · Description · Stage / list · Customer · Due date · Start date · Prep date · Priority · Estimated sq ft · Wrap type · Note (appends to description) · Source ID (re-import protection). Note is the one target several columns can share — they are appended to the description under "Imported notes:".
- Map stages gives one row per distinct value in your stage column. Each one gets a picker — — use default ({your default stage}) — or any active stage — and a Create stage button that makes a new workflow stage named after the source value, there and then. A value you leave unmapped uses the default stage. Map no stage column at all and the step just says every imported job will start in your default stage.
- Closed work is grouped for you. Rows whose completion column is filled (Jobber's closed date, Asana's Completed At) are offered as one row, Closed / completed rows, pre-set to your terminal stage.
- Subtasks are dropped — Asana rows with a Parent task and ClickUp rows with a Parent ID would otherwise import as duplicate top-level jobs. The preview says how many were skipped.
- Customers are matched by company name, case-insensitively. A name that matches nothing creates a customer; a row with no customer name lands on the shop's Unassigned bucket.
- Preview reads "N jobs · N unassigned · N new customers · N duplicates will be skipped", with the first 50 rows as Title / Customer / Stage / Due / Priority.
- Import N jobs runs it; the result line reads "N created · N duplicates skipped · N failed". View jobs opens the board.
- Every imported job gets the next job number on your board (JOB-0001, JOB-0002 …) and a status note — "Imported from trello", "asana", "monday", "jobber", "clickup", or "custom" for a file we didn't recognize. Priority text is read (Low / Medium / Normal / High / Urgent / Critical), and a bare 1–4 is read the ClickUp way, 1 = Urgent. A wrap-type column is matched to the closest wrap type; anything unrecognized leaves the job on Full Wrap.
Triage: jobs that came in without a customer
- The jobs board shows a Needs a customer · N chip whenever the shop has any; clicking it filters the board to exactly those jobs.
- Open one and its sidebar carries an amber Imported without a customer panel with an Assign a customer… picker. Choosing a real customer moves the job off the bucket.
- The Unassigned bucket is a system record — it can't be edited or deleted, and you can't assign a job back onto it.
How re-uploads are matched
- Customers: a row matches on this source's Source ID first, then email, then phone — and updates that customer in place. Only cells that actually carry a value overwrite what's on file, so a sparse re-upload can't wipe good data. Rows that duplicate each other inside the same file fold onto one customer.
- Vehicles: matched by VIN when the row carries a full one (11 characters or more), otherwise by the owner plus year / make / model / plate. A re-upload updates that vehicle rather than adding another, and only cells with a real value overwrite — a "TBD" placeholder never overwrites a make or model you have already fixed. A vehicle is never moved to a different customer by an import.
- Jobs: a job already imported from that source with the same Source ID is skipped, not updated. Map a Source ID column whenever your tool offers one — it is the only re-import protection the jobs lane has.
Step-by-step tasks
- Migrate customers and vehicles from another CRM
- In your old tool, export customers (include vehicle columns if it has them) as CSV.
- Open /import, click the tile for your tool — or Another tool / plain CSV.
- Upload the file. A recognized export says "Detected {tool} — mapping pre-filled below"; anything else is auto-mapped by header name.
- Check every row of the Maps to column and fix anything mis-guessed. If most columns came in as — ignore —, click Auto-map with AI (Re-map with AI when the auto-mapper already found something) and check its proposal.
- Continue → read the preview counts → Import N customers.
- Re-export and re-upload any time — records update, never duplicate.
- Bring your active jobs over
- Export your board (Trello without Premium: Menu → Print/Export → JSON; monday.com: save the .xlsx as CSV UTF-8 first).
- Open /jobs/import — from the hub's Jobs card, or Import jobs on the board.
- Upload, then map columns. Title is required.
- On Map stages, point each of your old lists at a Wraptor stage, or press Create stage to make one with the same name.
- Continue → preview → Import N jobs.
- Fix a job that came in without a customer
- On the jobs board, click the Needs a customer chip.
- Open a job, and in the sidebar's Imported without a customer panel pick the real customer from Assign a customer….
- Repeat until the chip disappears.
Settings & permissions
- Permissions. The hub opens for anyone with the Customers or Jobs permission. The customers wizard needs Customers. The jobs wizard writes both jobs and customers, so it needs Jobs and Customers. Without them you land back on the jobs board.
- Plans. Importing is open on every plan and during the 7-day free trial, and there is no limit on how many customers, vehicles or jobs you can bring in. See plans.md.
- Your file stays in your browser. Both wizards read the file locally — the CSV or Trello JSON itself is never uploaded. Only the mapped rows are sent, up to 200 rows at a time.
- Accounting sync is deliberately skipped during the run. A bulk import does not push each customer to QuickBooks or Xero — a 5,000-row import must not fire 5,000 accounting writes. Imported customers reach the books later: the first time one of their invoices or approved quotes pushes, or when you press Sync Now in Settings → Accounting & Billing, which pushes every customer that isn't in the books yet. The Unassigned bucket is never pushed. See invoicing-billing.md.
Tips & common pitfalls
- Trello's CSV export needs Premium. On a free or Standard board use Menu
→ Print/Export → JSON and choose the
.jsonfile in the jobs wizard. - monday.com exports .xlsx. Open it and Save As → CSV UTF-8 first, and add an Item ID column before exporting so re-imports dedupe.
- Jobber jobs come from Insights → Reports → One-off jobs report; use the Columns button to include Client name, Title, dates and Job #.
- Zoho Accounts-module exports work too — map Account Name to Company and the Billing address columns by hand.
- A vehicle row identified only by VIN or plate imports with "TBD" make/model placeholders you can fix later.
- A blank or unrecognized Newsletter opt-in cell never flips an existing answer — only "yes"/"no" style values do. New customers start opted out.
- OrbisX, Urable and Tint Wiz don't publish their export formats, so their tiles run the auto-mapper rather than a fixed template. If a file won't map, mail it to support@wraptor.app — we'll map it with you.
- Every tile on the hub opens the customers wizard. For jobs, use the Jobs card underneath, or Import jobs on the board.
- Don't confuse this with Smart import from PDF, which reads a supplier cost sheet or price sheet into materials and labor rates. That one lives in Inventory — see inventory.md.
Related modules
- Customers — where imported customers, contacts and opt-ins land.
- Vehicles — the vehicle records the customers lane creates.
- Jobs — the board and the Needs a customer filter.
- Onboarding — the setup checklist and first-run picker that link here.
- Inventory — Smart import from PDF for pricing, a separate tool.
- Plans — the plans and the 7-day free trial.
- Workflow map — where migration sits in the shop's lifecycle.