Home / Resources / DonorPerfect Duplicates
DonorPerfect

How to Fix Duplicate Constituents in DonorPerfect

If your DonorPerfect database is filling up with duplicate donor records and duplicate address entries, you're not alone. This is one of the most common — and most frustrating — problems that nonprofit Development Directors face.

Why DonorPerfect creates duplicate constituents

DonorPerfect is a powerful CRM, but its batch import functionality has a well-known limitation: it does not automatically check for existing constituent records or existing addresses before creating new ones.

When you import a spreadsheet of gifts — whether from a DAF disbursement report, a Givebutter CSV export, or an annual appeal mailing list — DonorPerfect will create a brand new constituent record for every row where it cannot find an exact system ID match. Even if "Sarah Jenkins" is already in your database, a slightly different spelling, a missing middle initial, or a new email address is enough for the import to create a second Sarah Jenkins.

The address duplication problem is even more pervasive. DonorPerfect's batch import creates a new address record on every import, even when the donor's address is already on file and completely unchanged. After a few years of batch imports, a long-tenured donor can have five, ten, or twenty identical address records — each associated with a different gift batch — cluttering their history and causing havoc in mail merge outputs.

The downstream effects of duplicate records

Duplicate constituents in DonorPerfect are more than an annoyance. They create real operational problems:

  • Inaccurate giving history. A donor's total lifetime giving is split across two records, so neither record reflects their true relationship with your organization.
  • Duplicate thank-you letters. A donor receives two acknowledgment letters for one gift — one of the fastest ways to damage donor trust.
  • Broken major donor identification. Your LYBUNT and SYBUNT reports and major gift prospect lists become unreliable when giving is fragmented across duplicates.
  • Finance reconciliation errors. GL coding discrepancies arise when gifts that should be on one record are posted to two different constituent profiles.

How to merge duplicate constituents in DonorPerfect

DonorPerfect includes a built-in Constituent Merge tool for cleaning up duplicates after the fact. To use it:

  1. Open the constituent record you want to keep as the primary record.
  2. Navigate to Tools → Merge Constituents in the menu bar.
  3. Search for and select the duplicate record you want to merge into the primary.
  4. Review the merge preview — DonorPerfect will show you which fields will be retained from each record.
  5. Confirm the merge. DonorPerfect moves all gift history from the duplicate to the primary record and deletes the duplicate constituent.

The limitation is that this process is one-to-one and entirely manual. If you have hundreds of duplicate pairs — a common situation after a year of batch imports from multiple channels — the cleanup effort is enormous.

How to prevent duplicate constituents from being created

Cleanup is necessary but prevention is better. The root problem is that standard import workflows run blind — they don't check your existing records before creating new ones. The solution is to match donors before any gift or record hits your live database.

This is exactly what Precheck does. Before posting any gift to DonorPerfect — whether it came from Givebutter, a scanned check, a DAF letter, or a spreadsheet — Precheck searches your DonorPerfect database for matching constituents using name, email, phone, and address. If a match is found, you merge the gift to the existing record with a single click. If no match is found, you create a new constituent intentionally. Nothing is posted to your live database until you've reviewed and confirmed each match decision.

Precheck also solves the address duplication bug specifically. Instead of triggering DonorPerfect's standard batch import engine, Precheck posts each gift the same way a staff member would — as a direct API write that checks whether the address already exists and reuses it, rather than creating a duplicate.

Stop duplicates before they start

Precheck gives Development Directors a review queue where every gift is matched before it's posted — across Givebutter, checks, DAFs, and spreadsheets.

Book a Demo →

Frequently asked questions

Why does DonorPerfect create duplicate address records during batch imports?

DonorPerfect's batch import does not check whether a constituent's address already exists on file. It creates a new address record for every imported row, even when the address is identical to one already in the database. This means a single donor can accumulate multiple identical address records, cluttering their giving history and causing confusion in mail merge outputs.

How do I merge duplicate constituents in DonorPerfect?

DonorPerfect has a built-in Constituent Merge tool. Go to the constituent record you want to keep, open the Tools menu, and select Merge Constituents. You then search for and select the duplicate record. DonorPerfect moves the gift history from the duplicate to the primary record and deletes the duplicate. However, this process is manual and must be done one pair at a time.

How can I prevent duplicate constituents from being created in DonorPerfect?

The most reliable way to prevent duplicates is to match donor records before any import is executed — not after. Tools like Precheck scan your existing DonorPerfect constituents by name, email, phone, and address before posting any gift, prompting you to link the gift to the existing record rather than creating a new one.