Database Migration for Nonprofits Without Losing Data

You've finally decided to migrate from your patchwork of spreadsheets, sticky notes, and someone's "personal system" into an actual database or CRM. Congratulations—this is a huge step.

And then the fear sets in: What if we lose donor records? What if addresses get scrambled? What if we accidentally delete ten years of volunteer history?

I've guided dozens of nonprofits through data migrations—from Excel to Salesforce, from old CRMs to new ones, from chaos to functional systems. Here's what you actually need to know to do it safely.

Why Data Migration Feels Terrifying (And Why It Shouldn't)

The fear is real. Your data represents relationships, history, and institutional knowledge. Losing donor contact info or volunteer records could genuinely harm your organization.

But here's the truth: Data migration isn't risky if you follow a process. What's risky is migrating data without a plan, without backups, and without testing.

Most data disasters happen because someone:

  • Skipped the cleanup phase and imported messy data

  • Didn't test with sample data first

  • Didn't back up the original data before importing

  • Tried to do it all in one weekend

Follow the steps below, and you'll migrate safely. Skip steps, and you'll regret it.

Step 1: Audit What You Actually Have

Before you move anything, you need to know what you're moving.

Create an inventory:

List every place you currently store contact data. Common culprits:

  • Excel or Google Sheets (the "master donor list")

  • Email inboxes (individual staff members' contacts)

  • Event management platforms (Eventbrite, Meetup)

  • Payment processors (PayPal, Stripe, Venmo)

  • Old CRM systems you're replacing

  • Paper sign-up sheets (yes, really)

Answer these questions for each source:

  • How many records does this contain?

  • When was it last updated?

  • What unique information does it have that other sources don't?

  • Can you export it to CSV or Excel?

Identify your "source of truth"

Which system has the most complete, up-to-date information? That's your primary data source. Everything else is supplementary.

Pro tip: If no single source is complete, you'll need to merge data. That's okay—just know it upfront so you can plan for it.

Step 2: Clean Your Data (Yes, Before You Migrate)

This is the step everyone wants to skip. Don't skip it.

Importing dirty data into a clean system just gives you a dirty system. It's like moving into a new house without throwing away your junk first—you just bring the mess with you.

What to clean:

Duplicate records:

  • Use Excel's "Remove Duplicates" feature (Data → Remove Duplicates)

  • Or Google Sheets add-ons like "Remove Duplicates"

  • Look for duplicates by email address, phone number, or name

Inconsistent formatting:

  • Standardize phone numbers: (555) 123-4567 vs 555-123-4567 vs 5551234567

  • Standardize state abbreviations: CA vs California vs Calif.

  • Fix capitalization: john smith → John Smith

Missing critical fields:

  • Flag records missing email addresses or names

  • Decide now: do you import incomplete records or exclude them?

Outdated information:

  • Mark contacts you haven't interacted with in 3+ years as "Inactive"

  • Decide whether to migrate them or archive them separately

How long this takes:

For 500 records: 2-4 hours For 2,000 records: 8-12 hours For 10,000+ records: Consider hiring help

This is tedious work. Put on a podcast and chip away at it. Future you will be grateful.

Step 3: Map Your Fields (This Prevents Most Disasters)

Your old system and your new system don't use the same field names. You need to create a "translation guide."

Example field mapping:

Old System (Excel)New System (Salesforce)NotesDonor NameFirst Name + Last NameNeed to split into two columnsEmailEmailDirect matchTotal GivenLifetime Giving AmountDirect matchNotesDescriptionDirect matchLast Donation DateLast Gift DateFormat as YYYY-MM-DD

Common field mapping issues:

Splitting fields: Your old system has "Full Name" but your new system needs "First Name" and "Last Name" separately. Use Excel formulas to split before importing.

Combining fields: Your old system has "Street," "City," "State," "Zip" in separate columns, but your new system wants "Full Address" in one field. Combine them with a formula like: =A2&", "&B2&", "&C2&" "&D2

Date formatting: Excel stores dates as numbers. Your CRM needs YYYY-MM-DD format. Convert before importing or the dates will break.

Dropdown values: If your new system has predefined options (like "Donor Type: Individual, Corporate, Foundation"), make sure your old data uses the same values. "Business" won't map to "Corporate" automatically.

Step 4: Export Everything (And Back It Up Three Times)

Before you touch anything, back up your data. Then back it up again. Then back it up a third time.

Backup checklist:

  • ✅ Export current data to CSV/Excel and save locally

  • ✅ Save a copy to Google Drive or Dropbox

  • ✅ Email yourself a copy (yes, really)

  • ✅ Label each file with the date: donor_data_2026-01-02.csv

Why three backups? Because cloud storage fails, hard drives crash, and email is forever. If something goes wrong, you need multiple ways to recover.

Critical rule: Never delete your old system until the new system has been working smoothly for at least 30 days. Keep both running in parallel during the transition.

Step 5: Do a Test Import (With Fake or Sample Data)

Do NOT import all your data on the first try. Test first.

How to test safely:

Option 1: Use a sandbox environment Most CRMs offer a "test" or "sandbox" version where you can practice importing without affecting real data. Use it.

Option 2: Import 20-50 sample records Create a small CSV with 20-50 real records (or fake test records). Import just those. Check that everything mapped correctly.

What to check after test import:

  • Did names import correctly? (Check for "John Smith" becoming "Smith, John" unexpectedly)

  • Did email addresses come through intact?

  • Did phone numbers keep their formatting?

  • Did dates import as dates (not random numbers)?

  • Did dropdown fields map to the right values?

  • Are any fields blank that shouldn't be?

If anything looks wrong, fix it in your source file and test again. Repeat until it's perfect.

Step 6: Import in Batches (Not All at Once)

Once your test import works, import the real data in batches.

Why batches?

  • Easier to spot errors before you've imported everything

  • Less overwhelming to fix if something breaks

  • Gives you a chance to refine your process

Recommended batch sizes:

  • Under 500 total records: Import all at once (after successful test)

  • 500-2,000 records: Import in batches of 200-500

  • 2,000+ records: Import in batches of 500-1,000

How to batch:

Sort your data by priority:

  1. Batch 1: Active donors (donated in last 12 months)

  2. Batch 2: Active volunteers (participated in last 6 months)

  3. Batch 3: Lapsed donors and volunteers (12-36 months inactive)

  4. Batch 4: Historical contacts (3+ years inactive)

This way, if you need to pause the migration, your most important contacts are already in the new system.

Step 7: Verify and Spot-Check After Import

After each batch imports, verify that it worked correctly.

Verification checklist:

  • ✅ Record count matches: If you imported 250 records, do you see 250 in the new system?

  • ✅ Spot-check 10 random records: Open 10 contacts and compare them to your original spreadsheet

  • ✅ Search for specific people: Look up 3-5 key donors or volunteers by name

  • ✅ Check for duplicates: Did the import create duplicate records?

  • ✅ Test key fields: Can you filter by donation date? By volunteer status? By location?

If you find errors, don't panic. Most CRMs let you bulk delete imported records and try again. This is why you test first and import in batches.

Step 8: Train Your Team on the New System

Data migration isn't done when the data is imported. It's done when your team can actually use the new system.

Training plan:

  1. Week 1: Walk the team through how to search for contacts, view records, and understand the layout

  2. Week 2: Teach them how to add new contacts and update existing ones

  3. Week 3: Show them how to run basic reports

  4. Week 4: Address questions and refine workflows

Don't dump a training manual on them and hope for the best. Schedule hands-on sessions where they practice real tasks.

Common Migration Mistakes (And How to Avoid Them)

Mistake 1: Migrating everything, including junk

Fix: Be ruthless about what you migrate. If you haven't contacted someone in 5 years and don't plan to, archive them separately instead of importing.

Mistake 2: Not documenting the process

Fix: Keep notes as you go. Write down your field mapping, your import settings, and any issues you encountered. You'll need this for future imports or if you need to re-do something.

Mistake 3: Deleting the old system too soon

Fix: Run both systems in parallel for 30-60 days. This gives you time to catch missing data or mapping errors before it's too late.

Mistake 4: Assuming the import tool is perfect

Fix: Import tools make mistakes. Always verify. Always spot-check. Trust, but verify.

When to Hire Help

You can do this yourself if:

  • You have under 2,000 records

  • Your data is relatively clean

  • You have 10-20 hours to dedicate to this project

  • Your team can tolerate some trial and error

Consider hiring a consultant if:

  • You have 5,000+ records

  • Your data is a mess (duplicates, inconsistent formatting, missing fields)

  • You're migrating between complex systems (old CRM → Salesforce)

  • You can't afford downtime or errors

A good consultant can do in 8 hours what might take you 40 hours of trial and error. If your team's time is valuable, it's worth it.

Your Migration Checklist

Before you start, print this checklist:

  1. ☐ Audit all data sources and create inventory

  2. ☐ Identify source of truth

  3. ☐ Clean data (remove duplicates, fix formatting)

  4. ☐ Create field mapping document

  5. ☐ Back up all data (3 copies)

  6. ☐ Test import with 20-50 sample records

  7. ☐ Verify test import worked correctly

  8. ☐ Import Batch 1 (active donors/volunteers)

  9. ☐ Verify Batch 1

  10. ☐ Import remaining batches

  11. ☐ Spot-check 10+ random records

  12. ☐ Train team on new system

  13. ☐ Run both systems in parallel for 30 days

  14. ☐ Archive old system (don't delete yet)

Final Thoughts: It's Easier Than You Think

Data migration feels intimidating because the stakes are high. But if you follow a process—clean your data, test first, import in batches, verify everything—it's actually straightforward.

I've seen nonprofits successfully migrate thousands of records using nothing but Google Sheets, CSV exports, and an afternoon of focused work. You can do this.

And when you're done? You'll have clean, centralized data. Your team will stop wasting hours searching for contact info. Reports that used to take days will take minutes. It's worth the effort.

Need help planning or executing a data migration? Book a free 30-minute call and I'll walk you through exactly what your organization needs to do.

Previous
Previous

Building Operational Infrastructure on a Nonprofit Budget: What Actually Works

Next
Next

How to Choose the Right CRM for Your Nonprofit