alori
← Partner playbook

Data migration checklist: move a service business from many tools to one app

Short answer: a data migration checklist for a small service business starts with an inventory of every tool, not just the CRM: customer records, scheduling, field service, invoicing, phone and texting, email lists, website forms and chat, help articles, tasks and files. For each source, decide what moves and what gets archived, map its fields to the new record types, test on a sample, import, verify counts, then cut over the phone number, email, forms and booking links on one planned day. Freeze the old tools, keep a read-only archive, and tell the team and customers what changes.

This guide is for partners switching a small service business onto one app. The client rarely leaves only a CRM: they leave a field service app like Jobber or Housecall Pro, a booking tool, accounting, a phone provider, a mailing tool and a pile of spreadsheets, often at once. The checklists are copy-ready.

Step 1: inventory every source

Small businesses keep data in more places than they think. Walk through this list with the owner and the office manager, one line at a time, and write down the tool, who uses it, and roughly how many records it holds.

SourceTypical toolsWhat it holds
Customer records (CRM)A CRM like HubSpot, a spreadsheet, the owner's phone contactsCustomers, companies, contacts, deals, notes
Scheduling and online bookingA booking page, a shared calendarAppointments, booking types, availability
Field service appJobber, Housecall ProJobs, visits, service addresses, equipment, photos
Recurring service plansField service app, spreadsheet, memoryMaintenance contracts, visit frequency, renewal dates
Price list and templatesField service app, Word, spreadsheetServices and prices, quote and invoice templates
Accounting and invoicingQuickBooks, StripeInvoices, payments, open balances
Phone and textingA phone provider like Aircall, a cell planThe business number, call flows, greetings, call history, texts
Email and mailing listsGmail, a mailing toolInboxes, shared addresses, lists, unsubscribes
Website, forms and chatWebsite builder, form tool, chat widget like IntercomLead forms, chat history, booking links on the site
Help desk and help articlesZendesk, IntercomTickets, support conversations, help center articles
Tasks and projectsA task app, Jira, Linear, Notion, spreadsheetsTo-dos, projects, internal docs
FilesShared drive, email attachmentsSigned quotes, photos, contracts, manuals
Automations and workflowsField service app, mailing tool, Zapier-style linksReminders, follow-ups, review requests
  • Every tool on the list is either named or crossed out
  • Each source has an owner on the client side and a record count
  • Each paid subscription is noted with its renewal date
  • One source of truth is picked when two tools disagree (usually accounting for invoices)
  • Every automation that sends something to customers is written down

Settle the list during discovery, before you quote. See discovery questions for what to ask, and put the agreed sources in your proposal and SOW so "move everything" doesn't turn into a surprise.

Step 2: decide what moves and what gets archived

The goal is a clean start, not a perfect copy. Move what the team needs in the next 12 months. Archive the rest where the owner can find it.

SourceMoveArchive
Customer recordsActive customers, companies, contacts, service addresses, open deals, notes on active customersLost deals older than a year, customers inactive for years (or move them with a tag)
Scheduling and bookingUpcoming appointments, booking types and hoursPast appointments
Field service appUpcoming jobs, open quotes, equipment detailsClosed jobs (keep a total or a history note per customer)
Recurring service plansEvery active plan, with its next visit dateExpired plans
Price list and templatesCurrent services and prices, quote and invoice wordingOld prices
AccountingOpen invoices, or keep the sync with accountingPaid invoices stay in accounting
Phone and textingThe number itself, call flows, greetingsOld call logs and texts unless they are tied to active customers
Email and mailing listsLists of people who agreed to receive emails, unsubscribesOld campaign reports
Website forms and chatWhere each form sends, recent chat historyOld form submissions
Help deskOpen tickets, help articles that are still trueClosed tickets older than a year
Tasks and docsOpen tasks, docs the team still readsDone tasks
FilesRecent signed quotes, equipment photos, contractsOld photos
AutomationsA written list, rebuilt in the new appNothing: turn them all off at cutover
  • The owner agrees to the decision for each source
  • Unsubscribes and do-not-contact flags always move

Step 3: export, clean and map

Export

  • Export each source to CSV or Excel, one file per record type
  • Export notes, attachments and custom fields where the tool allows it
  • Save the raw exports in a dated folder and never edit them
  • Work on copies only

Clean

  • Put phone numbers in one format with the country code (+1 514 555 0123), and drop fake ones
  • Lowercase emails and remove placeholders like noemail@
  • Merge duplicates across sources: match on email, then phone, then name plus address
  • Tag or archive inactive customers (for example, nothing in three years)
  • Split names and addresses into separate columns, one address per site
  • Translate old status values into the new ones

Map fields across record types

Every column in every export gets a home, a rule, or a "skip", for each record type, not only contacts. An example for an HVAC company leaving a field service app, a spreadsheet and accounting:

Record typeOld columnNew fieldRule
CustomerClient nameCustomer › NameTrim spaces, fix ALL CAPS
CustomerMobile, PhoneCustomer › PhoneOne format, mobile first
CustomerService street, City, Postal codeCustomer › AddressOne address per site
CompanyCompanyCompany › NameCreate the company, link the contact
CustomerEquipment / Unit modelCustom field: EquipmentCreate the field first
DealQuote statusDeal › StageDraft → New, Sent → Quoted, Approved → Won
QuoteLine itemsQuote › LinesMatch each line to the price list
JobVisit date, Assigned techJob › Date, CrewMatch techs to team members by email
Recurring planPlan name, Frequency, Next visitJob or custom fieldsAgree how plans are tracked before import
InvoiceNumber, Amount, StatusInvoice › Number, Total, StatusKeep the old number for reference
AnyInternal IDSkip, or keep as a reference fieldUseful to trace a record back
  • Every column in every export has a destination or is marked "skip"
  • Custom fields exist in the new app before the import
  • Status and stage values have a translation
  • Old team members are matched to new users by email
  • The client signs off on the mapping

Step 4: test, import and verify

Test on a sample

  • Import 10 to 50 recent customers with everything linked to them: jobs, quotes, invoices, notes
  • Open each one and compare it with the old tools
  • Undo the sample, fix the mapping, and repeat until it's right

Full import

  • Import parents first: companies, then customers, then quotes, jobs and invoices
  • Import the other sources after the customer records, so conversations, tickets and meetings attach to the right customer
  • Keep the import log or the list of errors
  • Don't let the team edit the new app while the import runs

Verify

  • Compare record counts per type with the inventory from step 1
  • Explain every gap (skipped duplicates, rows with no name or contact)
  • Spot-check 20 records at random, plus the 10 biggest customers
  • Check that open invoice totals match accounting
  • Check that every recurring plan has its next visit

Moving records is half the job. The other half is everything customers touch: miss one and a lead lands in a tool nobody reads.

Phone and texting

  • Decide: keep the current number (port it) or take a new one. Keeping it is almost always better.
  • Start the port early: it takes days to weeks, and the old provider keeps working until it's done
  • Rebuild the call flow: who rings, business hours, voicemail, greeting
  • Register the business for texting where the carrier requires it
  • Test a call and a text in and out on cutover day

Email

  • List every address customers write to (info@, service@, the owner's own)
  • Connect each mailbox to the new app or set forwarding
  • Move mailing lists with their unsubscribes, and set up sending from the client's own domain
  • Update email signatures and the invoice and quote sender

Website, forms, chat and booking links

  • Point every website form to the new app
  • Replace old booking links on the site, Google Business Profile, email signatures and social profiles
  • Swap the chat widget on the site
  • Move help articles that are still true, and redirect old help center links

Old tools

  • Turn off every automation, reminder and review request in the old tools so customers don't get messages twice
  • Set the old tools to read-only, or remove edit rights
  • Save the final exports in a shared folder the owner controls
  • Cancel each old subscription only after the owner confirms they can open the archive

The cutover plan

When to switch

Pick the slowest week of the client's year. For HVAC, that is usually between the heating and cooling peaks, never during the first heat wave or cold snap. Avoid month-end, when invoices go out. Start on a Monday or Tuesday so you have a full week to fix things. Time the phone port to finish close to that date.

Hard cutover or parallel run

A parallel run, with old and new tools side by side, feels safer but means double entry and copies that drift apart. Most small service businesses do best with a hard cutover on a set day, plus a last "what's new" import that morning. You can also move one source at a time (accounting sync first, then customers and jobs, then phone and email) as long as each step has its own date. Put the dates in the implementation plan from day one.

Team and customer communication

What to tell the team

  • The date and time of the switch, and which old tools become read-only
  • Where to find their schedule, customers, quotes, calls and texts in the new app
  • That the business number stays the same (or what the new one is)
  • Who to call when something looks wrong
  • That a missing record is a bug to report, not a reason to go back to the old tool

What to tell customers

Only what they will notice: a new booking link, a new number, new-looking quotes and invoices, a new sender for reminders. If any of that changes, send one short message before the switch.

Common mistakes

  • Treating it as a CRM migration. The customer list moves fine, then nobody remembers the booking link on Google or the form on the contact page.
  • Cleaning after the import. It always takes longer inside the new app.
  • Skipping the sample. One wrong mapping repeated on 3,000 records is a week of fixes.
  • Starting the phone port late. The number is the one thing customers can't work around.
  • Forgetting old automations. The old tool keeps sending reminders, so customers get two.

Doing this on Alori

On Alori, customers, quotes, schedule, jobs, invoices, phone, email, website and help center live in one app. Run the migration in the client account you created as a partner, before handing it over, mostly from Import data. What exists today:

  • HubSpot: a full migration. You check what comes over, try a sample of 10, 25 or 50 contacts, then import everything: companies, contacts, deals, quotes, invoices, products, notes with files, emails, calls, meetings and tasks. Bring what's new picks up later changes, which is your cutover-day import. Marketing emails, lists and sequences don't come over.
  • QuickBooks Online: a sync from Connectors, not a one-time import. Customers, companies and invoices stay the same in both places, so accounting keeps working during and after the switch.
  • Stripe: brings the owner's Stripe customers, subscriptions, invoices, payments and prices into the CRM, read-only, and keeps them coming.
  • Phone: Phone system › Numbers › Bring a number you already have moves the client's current number; the old provider keeps working until the move is done. From Aircall, the import reads numbers, greetings, users and teams and rebuilds them as call flows you check before they go live.
  • Email: each person connects their own Gmail under Connectors, and Google or Outlook Calendar the same way.
  • Support and help center: Intercom and Zendesk imports bring conversations or tickets into Conversations, each customer's history in one thread, plus help center articles into the Help center.
  • Everything else: tasks from CSV or Excel, Jira and Linear tickets, Notion pages, Clockify time, Fathom, Granola and Claap meetings, Slack and Discord channels, and what ChatGPT or Claude knows about the business, into Company memory.
  • Spreadsheets, Jobber, Housecall Pro and other tools: there is no direct connector for these. Export to CSV, clean the file with the checklist above, then pick a route. For a short list, paste it into Ask Alori after "Add these customers:", even messy. For a large file, make an Import key in Import data and send customers, companies, quotes, jobs and invoices through the import API, up to 500 records per request. Sending a record again updates it instead of copying it.

Imports can be undone from Recent imports, and the HubSpot import can be tried on a sample first. Agencies in the partner program usually include the migration in the setup fee, scoped by sources and record counts.

FAQ

What should a data migration checklist include for a small business? An inventory of every tool, a move-or-archive decision per source, a field mapping per record type, a sample test, a full import with count checks, a cutover plan for the phone number, email, forms and booking links, a message to the team and customers, and a read-only archive.

How long does a data migration take for a small service business? For a few sources and a few thousand customers, plan a few days of work spread over one to three weeks. Cleaning usually takes the longest, and a phone number port can set the date, since it takes days to weeks.

What is the difference between a data migration plan and a data migration checklist? The plan covers the whole project: dates, people, training and cutover. The checklist covers the data and the switch itself: what moves, how it is cleaned and mapped, how you verify it, and what gets pointed to the new app.

Can the client keep their phone number and email address? Usually yes. The number is ported to the new provider while the old one keeps working, and email addresses stay the same: only where the mail is read changes. Plan both early.

Who should sign off on the migration? The owner, or whoever knows the customers best. They approve the source list and the field mapping, check the sample, and confirm the counts before you switch.

Your first client starts here

Turn your account into an agency, build your app, and add your first client today.