On this page
To migrate volunteer data without starting over, export everything from your current sheets or system and keep an untouched copy. Clean the data so there is one row per person and one kind of information per column, then map each column to a field in the new system. Import volunteers first, then hours and history matched to them by email. Finally, compare counts and hour totals before and after, so you can show that nothing was lost.
This guide is about the data. For planning the switch as a whole (what to move, how to tell volunteers and when to retire the old sheets) see how to replace volunteer management spreadsheets.
Decide what to bring
| Data | Usually migrate? | Notes |
|---|---|---|
| Current volunteers | Yes | Contact details, emergency contact, skills and anything you check before scheduling |
| Hours and attendance | The years you still report on | Needed so totals, milestones and grant reports do not start from zero |
| Training and background checks | Yes, if they decide who can sign up | Bring completion dates, and expiry dates where they apply |
| Signed waivers and documents | Check first | Many systems cannot bulk import files; keep the originals and decide whether to attach them one by one |
| Past application answers | Usually not | Keep the old files; new applicants use the new form |
| People inactive for years | Usually not | Archive them; importing old records adds clutter and personal data you no longer need |
Export everything and keep a clean copy
- Export each kind of data to its own file: volunteers in one, hours in another, events and rosters in a third.
- Use CSV or Excel. Almost every system can import one of the two. From Google Sheets, download each tab as CSV or Excel.
- Keep the original exports untouched in a dated folder. Do all cleaning on copies, so you can always go back.
- Note the export date. Anything changed in the old system after it will not be in the files.
- Keep it private. These files hold names, phone numbers and sometimes birth dates. Store them where only the people doing the move can open them, and delete stray copies when you are done.
Clean the data before you import it
Cleaning is most of the work, and it pays off: the import itself takes minutes once the file is right.
Cleaning checklist
- One row per person. Merge duplicates, and decide which phone number or address is current.
- Every person has an email address. Most systems use it to match people, so a missing or shared email causes trouble later.
- First name and last name in separate columns.
- One way of writing dates throughout, ideally year-month-day, and no dates typed as words.
- Phone numbers and postal codes kept as text, so leading zeros survive.
- No merged cells, totals rows, color-coding that carries meaning or notes in the header row.
- One kind of information per column: not "Phone / email" in one cell.
- Consistent values for status, skills and yes/no columns ("Yes", not a mix of "Y", "yes" and "x").
- Hours as plain numbers or as start and end times, one entry per row, with a date on every row.
Map your columns to the new system
Mapping means deciding which field in the new system each of your columns goes into. Make a short list before you start, and create any custom fields you need in the new system first, so there is somewhere for that column to go.
| Your column | New system field | What to do |
|---|---|---|
| Name | First name, Last name | Split into two columns before importing |
| Email Address | Check every row has one | |
| Cell | Phone | Keep as text |
| Emergency contact | Emergency contact name and phone | Split if both are in one cell |
| T-shirt size | A custom field | Create the field first, with the same allowed values |
| Notes | Notes | Remove anything that should not be stored, such as old passwords |
| Total hours | Not imported | Import the individual hour entries instead, so the total can be checked |
Avoid importing a "total hours" column as a single number if you have the entries behind it. A total with no entries cannot be checked, broken down by program or corrected later.
Import in order: people first, then history
- Volunteers. Everything else is matched to them, so import and review them first.
- Training, checks and other records that belong to each person.
- Hours and past activities, matched to volunteers by email or ID. Matching by name alone fails as soon as two people share one.
- Upcoming events and rosters, or rebuild them by hand if there are only a few.
Read the review screen or error report for each file before you apply it. Rows that cannot be matched to a volunteer are better left out and fixed than guessed at.
Check the results against the originals
Do not rely on "the import finished". Compare a few numbers from your original files with the new system:
- The number of volunteers imported equals the rows in your cleaned file, minus the duplicates you skipped.
- Total hours for each year match the old sheet.
- Five or ten people chosen at random have the right contact details, training and hours.
- The people with the most hours, often your most loyal volunteers, look right.
- Nobody received an unexpected email during the import.
Write down the date the new system became the source of truth and keep the original exports read-only. If a question about old hours comes up next year, you will know where to look. Getting the hour totals right from the start also makes later reports easier, which the guide to tracking volunteer hours covers in more depth.
Before you start
Ask any product you are considering for a sample import file or template, and try it with twenty rows of your real data during the trial. It is the fastest way to find out how much cleaning you will need. If you are still choosing a system, the guide to volunteer management software for small nonprofits lists what to check, including how to get your data out again later.