Switching CRMs
Bring five years of customers in from a spreadsheet.
A new workspace does not have to start empty. Upload the export from wherever you are coming from, and the people you already know arrive with you — without becoming a pipeline event nobody asked for.
Your columns, matched for you
Upload a CSV with whatever headers your last system exported — "Client Name", "Mobile", "Status" — and the columns most likely to be name, phone, email, address and stage are suggested against your own header text. You confirm the mapping; nothing is guessed silently.
Every row, shown before it is written
A preview marks each row create, duplicate or invalid, and says why — a phone number already on file, a blank name — before a single record is created. The same function produces the preview and the import, so what you approve is exactly what gets written.
Duplicates caught inside the file too
Matched first against phone, then email, against what the business already has and against the rest of the same upload — so an export with the same customer on two rows does not create the same customer twice in one run.
An unrecognized stage does not sink the row
A stage column carrying your last system’s own wording — "Quote Sent" instead of a slug — matches by name where it can, and falls back to your first stage where it cannot, rather than rejecting the customer over a labelling difference between two systems.
The decision behind it
An import never starts automation on your behalf
The obvious design carries a customer’s stage straight into live automation — the follow-up rule for that stage fires, a reminder gets scheduled, and the first thing several hundred people hear from a business they have not dealt with in months is a text drafted by a system they have never heard of.
So an import writes the stage as information and nothing else: no follow-up date, no reminder, no trigger. The cost is real — an imported customer does not get chased until somebody consciously restarts that conversation — and it is the right cost, because the alternative is a compliance complaint and a trust failure on the first day of a new deployment.
What this does not do
- No live sync with your old system. This reads a file once; it does not keep watching where you came from.
- Notes are appended exactly as they arrive and never parsed for names, dates or amounts inside them.
- No import of quotes, invoices or job history. This brings the customer across, not their whole file.
Questions
What if my file has a phone number already in the system?
That row is marked a duplicate in the preview and skipped, so re-running the same file twice is a no-op rather than a doubling. It is checked against what you already have and against the rest of the same upload.
Will my imported customers get a "we switched systems" text?
Not automatically, and that is deliberate. Nothing about an import triggers a message. If you want to tell people you have moved, that is a follow-up you send yourself once they are in.
What if a column does not match anything?
Only the fields you map are read. A column with nothing useful in it — an internal ID from your last system, say — is simply left out of the mapping and ignored.
The rest of it
Quoting
One measurement, priced three ways.
Contracts and e-signature
Signed from the driveway, and frozen the moment it is.
Follow-up
The quote that went quiet, chased before you remember it.
Scheduling
Book it, move it, and tell the customer.
The field app
For the person standing in the crawlspace.
Recurring work
The visit in six months, remembered without you.
Job costing
What the job actually made, not what you guessed it would.
AI access
Ask it what is owed. Watch what it is allowed to touch.
Or start from your trade
See it against one real job
Fourteen days, no card. Put a job you already know through it and judge it on that.