Data Management

Duplicate Donor Records: Why They Keep Coming Back and How to Stop Them

Joshua Barillas  ·  August 12, 2026  ·  4 min read

You spent a weekend last year cleaning up duplicate donor records. You merged hundreds of them, felt the satisfaction of a tidy database, and moved on. Now it is a year later and the duplicates are back. Same names, same problem, and the same weekend of work waiting for you.

This is one of the most common frustrations we hear from nonprofit staff, and it is not a sign that you did the cleanup wrong. It is a sign that a one-time cleanup was never going to be enough. Duplicates are not a mess you clean once. They are a leak, and until you find where the water is getting in, mopping the floor only buys you a few months.

Where duplicates actually come from

Duplicates are almost always created at the moment a record enters your database. If you know the entry points, you know the sources of the leak.

The first source is manual entry without a search-first habit. A staff member or volunteer gets a gift from Susan Miller, types her in as a new contact, and never checks whether Susan B. Miller already exists from three years ago. Now there are two Susans, each holding half her giving history.

The second source is imports. Event registration lists, online donation exports, and spreadsheets from a colleague all get loaded into the database in bulk. If the import does not match incoming rows against existing records, every person on that list becomes a brand-new record even if half of them are already donors.

The third source is your online giving forms. When a returning donor gives online but types their name or email slightly differently than what you have on file, many systems will happily create a second record rather than recognize the person. Multiply that by every online gift over a year and the duplicates add up quietly.

Why one-time dedupes never stick

A cleanup weekend fixes the duplicates that exist today. It does nothing about the three entry points that are still wide open tomorrow. The event upload in October, the year-end online gifts in December, the new volunteer entering records in January: each one starts refilling the pile the moment your cleanup ends.

That is why the work feels endless. You are treating the symptom on a schedule while the cause runs continuously. The only way off that treadmill is to change what happens at the entry points, so fewer duplicates get created in the first place.

The standards that prevent recurrence

Preventing duplicates comes down to a few habits and settings that, once in place, do the work for you.

Make search-first the rule for manual entry. Before anyone creates a new contact, they search for the person by last name and by email. This one habit, taught to every person who touches the database, prevents the largest share of hand-created duplicates. Write it into your data entry instructions so it survives staff turnover.

Turn on your database's duplicate matching rules. Most nonprofit CRMs, including Salesforce, can warn a user when they are about to create a record that looks like an existing one, and can flag likely matches during imports. These rules are often switched off or left at default when a system is set up. Reviewing and tightening them is a small task with a large, lasting payoff.

Never import without matching. Before you load any list, decide how the system should match incoming rows to existing records, usually by email address, sometimes by name and address together. A few minutes of setup per import is the difference between updating the donors you already have and duplicating them.

Give the database a single owner. When one person is responsible for how records get created and cleaned, standards actually hold. When everyone shares the responsibility, no one enforces the search-first rule, and the leak reopens. This does not require a new hire. It requires one clear owner among the people you already have.

Put a small routine in place

Even with strong prevention, a few duplicates will slip through. Handle them with a light monthly routine rather than an annual marathon. Once a month, run your database's duplicate report and merge the handful that appeared. Ten minutes a month keeps the pile from ever growing large enough to need a weekend again.

The goal is not a database that is perfect on one Monday in July. It is a database that stays clean on its own, because the way records enter it changed. Fix the entry points, name an owner, and the duplicate problem stops coming back.

If duplicate records have your giving history split in ways you cannot untangle by hand, that is a common place we help nonprofits reset. You are welcome to book a free discovery call and we can look at it together.

Ready to get your data in order?

Book a free 30-minute discovery call. No pitch, no pressure — just an honest look at where your data stands.