CRM September 3, 2025 · 11 min read

From Spreadsheet to CRM: The 30-Day Migration Playbook for Service Businesses

A real day-by-day plan to move a service business off Google Sheets, Airtable, or Excel into a real CRM in 30 days — CSV hygiene, deduping, pipeline setup, notes migration, team training.

Short version: migrating from a spreadsheet to a CRM is not a software problem, it's a data hygiene project. Most service businesses fail the move because they try to import a messy spreadsheet on day 2, hate the result, and quit by day 14. Do the cleanup first, do the import second, train the team third. 30 days, broken into 4 weeks. This is the exact plan I run with inbound clients.

Why most spreadsheet-to-CRM migrations fail

I've watched 30+ service businesses try this move. The failure pattern is identical every time. They sign up for a CRM, click "Import CSV," upload their 4,000-row Google Sheet with 18 columns and no consistent format, get a CRM full of dupes, half-blank rows, and clients linked to deals that don't exist. Two weeks in they're either back in the spreadsheet or paying someone to clean up the import. The CRM gets blamed. It's not the CRM's fault. The fault is uploading garbage.

A working migration is 60% spreadsheet cleanup, 25% CRM configuration, 15% team training. Reverse those proportions and you'll burn 90 days and end up back where you started.

Before day 1: pick the CRM, then stop shopping

The single biggest mistake is picking the CRM mid-migration. Pick before day 1. Criteria for a service business:

  • Flat-tier pricing. Per-seat will punish you when your team grows. See why per-seat is dead.
  • Deal pipeline + contact dedup + bulk edit in core. No add-ons for the basics.
  • Invoicing + contracts + client portal included. No PandaDoc / Honeybook bolt-on.
  • CSV import with column mapping — and bulk re-import without duplicating.
  • 7-day free trial. Long enough to do week 1 cleanup before you pay.

For this playbook I'll reference Zay CRM (Growth tier at $400/mo) but the workflow is the same for any modern CRM. Start the trial here if you don't have one yet.

Week 1 (days 1-7): clean the spreadsheet

You're not importing yet. You're getting the spreadsheet into a state where the import will succeed. This is the work most businesses skip.

Day 1: snapshot and back up

  • Make a frozen copy of your current sheet labeled master-2025-09-01-backup. Don't touch it. If anything goes wrong, this is your truth source.
  • Make a working copy labeled master-clean-WIP. All cleanup happens here.

Day 2: column audit

  • List every column. Decide: keep, merge, drop. A typical service business has 18+ columns and only 9-12 are useful in a CRM.
  • Keep: Name, Email, Phone, Company, Owner, Lifecycle Stage, Lead Source, Last Contact Date, Notes, Tags, Created Date.
  • Drop: color-coded columns (CRMs don't import cell color), "Status v2 (new)" duplicate columns, columns nobody has touched in 6 months.
  • Merge: if you have "Phone" and "Cell" as separate columns, merge into a single Phone column. CRMs handle multiple phones via secondary fields, not separate primary columns.

Day 3: email + phone format hygiene

  • Lowercase every email. =LOWER(B2) across the whole column.
  • Trim every email. =TRIM(LOWER(B2)). Trailing spaces kill dedup.
  • Standardize phone format to E.164. +13216661102, not (321) 666-1102 or 321.666.1102. Use a sheet formula or paste into a phone-format tool.
  • Flag rows with no email AND no phone. These are unreachable contacts. Decide: delete, or move to an "Archive" tab.

Day 4: dedup pass 1 (by email)

  • Sort by Email column ascending.
  • Add a helper column: =IF(B2=B1,"DUPE","").
  • Manually scan the DUPE rows. For each pair, decide which row is canonical (usually the one with more Notes / more recent Last Contact). Move the others to an "Archive" tab. Do not delete yet.
  • Expect to find 8-15% of your rows are duplicates. Service businesses are dupe-heavy because the same person comes in as a referral, a contact form, and a phone call over 18 months.

Day 5: dedup pass 2 (by phone)

  • Same exercise on the Phone column. Catches the dupes where the email differs but the phone is the same.

Day 6: dedup pass 3 (by name + company)

  • For B2B work, sort by Name + Company concatenated. Catches the dupes with no email and no phone but same person.

Day 7: owner + lifecycle stage audit

  • Every row needs an Owner (which team member owns this contact). If "Owner" is blank, decide a default — usually whoever runs intake.
  • Every row needs a Lifecycle Stage. Use 4 stages max: Lead, Prospect, Customer, Past Customer. Don't ship 12 stages on day 7.

End of week 1: your master-clean-WIP sheet should have ~85% of the original row count (you removed 15% as dupes or unreachables), 10-12 well-formatted columns, every row with an owner and a stage. This is what you'll import.

Week 2 (days 8-14): configure the CRM, then import

Now you set up the CRM to match your business shape, then load the clean data.

Day 8: pipeline stages

  • In your CRM, define your deal pipeline stages. For a service business: Inbound Lead → Qualified → Proposal Sent → Negotiation → Closed Won / Closed Lost. That's 5 stages plus 2 outcome stages.
  • Don't ship 9-stage pipelines. The team won't keep them clean. See how to build a pipeline that doesn't lie.

Day 9: custom fields

  • Decide which columns from your spreadsheet need to become custom fields on the contact record. Examples: "Service Vertical," "Project Budget Range," "Referral Source." Add these in the CRM before import.
  • 3-5 custom fields max for day 9. You can add more later. Don't recreate every spreadsheet column.

Day 10: dry-run import with 10 rows

  • Export 10 rows from your master-clean-WIP sheet as a CSV.
  • Import those 10 into the CRM. Verify columns mapped correctly. Verify owner assignment worked. Verify lifecycle stage came through.
  • Fix any mapping issues in your CSV before the full import.

Day 11: full contact import

  • Export the full master-clean-WIP sheet as CSV.
  • Import it. In Zay CRM the only required column is email. The rest map automatically by header name.
  • Verify the row count matches what you expected (cleaned sheet row count, minus blanks).

Day 12: deals import (if you track active deals separately)

  • If you have an open-deals spreadsheet separate from the contacts sheet, do the same hygiene → import → verify cycle for deals. Link each deal to a contact (the CRM matches by contact email).

Day 13: invoice / contract back-population

  • For active customers, attach their most recent contract and most recent invoice to their contact record. This is manual but it's worth it — your team needs the paper trail in one place from day 1.
  • Don't try to back-populate 4 years of invoices. Last 12 months only.

Day 14: integrations

  • Connect email (Google Workspace or Outlook). Inbound emails to your team get logged to the contact record automatically.
  • Connect calendar. Meetings logged to contact records.
  • Connect Stripe (or Square) so invoices and payments sync.
  • Connect Zapier or webhooks for whatever else feeds leads (website forms, ad platforms).

Week 3 (days 15-21): train the team

You have a populated CRM. Now the humans need to actually use it. This is where most rollouts die.

Day 15: define the "minimum required activity"

  • What does every team member have to do in the CRM every day? Make this a concrete list. Example for a 6-person agency:
  • Sales: log every inbound lead within 30 minutes. Update deal stage at end of every customer call.
  • Account managers: log every client touchpoint as an activity. Attach every sent contract.
  • Owner: review pipeline every Monday morning.

Day 16-17: one-hour training session per team

  • Sales team: pipeline, deal creation, activity logging, AI proposal drafting.
  • Account management: client view, contracts, invoicing, client portal.
  • Operations / admin: reports, automations, custom views.

Day 18-21: parallel running

  • For 4 days, the team logs in both the spreadsheet AND the CRM. Yes, it's annoying. It's also how you catch the things you missed.
  • Each day, the owner audits: did everything that went into the spreadsheet also go into the CRM? Gaps are training opportunities, not blame opportunities.

Week 4 (days 22-30): retire the spreadsheet

Day 22: spreadsheet goes read-only

  • Lock the spreadsheet to view-only. The CRM is now the source of truth.
  • Tell the team: any data entry in the spreadsheet after today doesn't count. CRM only.

Day 23-28: real operation week

  • One full week of running the business out of the CRM.
  • Daily standup question for the team: "what's slowing you down in the CRM?" Capture answers, fix the top 2 issues each day.
  • Most issues are training (people don't know which view to use), not product. Fix with screenshots and a 3-minute Loom.

Day 29: review and adjust

  • What worked? What got skipped? Where did the data quality drop?
  • Add a weekly Monday 15-minute "CRM hygiene" ritual — see the weekly cleanup playbook.

Day 30: archive the spreadsheet

  • Move the original spreadsheet to an "Archive" folder in your Drive. Don't delete — you may need to reference it for an old contact.
  • You're done.

The shortcuts that actually work

  • Don't import historical email threads. Tempting, expensive, low-ROI. The CRM will pick up new emails from day 1 via inbox sync. The old ones live in your inbox. Search there.
  • Don't try to import historical "notes" from a free-text column. Paste the contact's notes into a single CRM notes field. Don't try to parse "every interaction" out of a 600-character notes blob.
  • Use AI to summarize messy notes. If your spreadsheet has a 400-character "history" column per contact, run it through an AI assistant and ask for a 2-sentence summary per contact. Paste those summaries into the CRM Notes field. Saves 8 hours.

What to budget

Realistic budgets for a service business with 1,000-5,000 contacts:

  • DIY: 30 hours of owner / ops time over 30 days. CRM cost: $400/mo. Total cost ~$$400.
  • Hire it out: ZRG handles the full migration on a flat $1,500-$3,500 fee depending on row count and complexity. Includes CSV cleanup, import, automation re-wiring, 2 hours team training.
  • HubSpot or Salesforce migration: $3,000-$8,000 in onboarding + the per-seat math. Usually not worth it for sub-25-person service businesses.

The bottom line

The spreadsheet served you well. It got you to a real revenue number. But spreadsheets don't scale past the point where two people need to update them at once, and they have zero defense against your own bad data hygiene. A CRM in 30 days, done right, is a one-time investment that pays back in time savings and lost-deal recovery within 60 days.

Start the 7-day Zay CRM trial. Week 1 of cleanup runs during the trial. Card hits day 7 if you don't cancel. Or browse the live demo workspace first to see what "done" looks like.


Get helptalk to us about migration · CRM services · phone 321-666-1102.

Want this applied to your business?

Book your free $500 audit.

30 minutes. We look at your business and tell you exactly what we'd do. client or not.

Book Your Free Audit