Merging Contacts in Salesforce NPSP with WeGive
Last updated: March 3, 2026
When duplicate contacts exist in Salesforce and WeGive, merging them in Salesforce will automatically sync the merge to WeGive — archiving the losing household and donor records. This article covers which merge tool to use, the required WeGive settings, and how to verify the merge completed successfully.
How Merges Sync Between Salesforce and WeGive
WeGive detects merges by looking for the MasterRecordId field on losing records in Salesforce. Every 15 minutes, WeGive queries Salesforce for contacts that have been updated and contain a MasterRecordId. If this field is set, WeGive knows the record was merged and archives the losing contact and its orphaned household in WeGive.
Merges are one-directional. If you merge records in WeGive, the merge is not automatically reflected in Salesforce. WeGive only detects merges that originate in Salesforce. If you need records merged in both systems, always initiate the merge in Salesforce first. If you merge in WeGive first, you will need to manually merge the corresponding records in Salesforce separately.
Which Merge Tool to Use
Always use the NPSP Contact Merge tool — not the standard Salesforce merge tool.
How to Access NPSP Contact Merge
Click the App Launcher (the 9-dot waffle icon in the top left corner of Salesforce).
Type "Contact Merge" in the search bar.
Select Contact Merge from the results.
Why Not the Standard Salesforce Merge?
The standard Salesforce merge tool only merges Contact records. It does not merge or clean up the associated Household Accounts. When you use the standard tool, the losing contact's Household Account becomes orphaned and is renamed to "Anonymous" by NPSP — but it is never deleted. This means WeGive will not detect the merge at the household level, leaving orphaned household records in both systems.
The NPSP Contact Merge tool handles the full picture. It merges the Contact records and, when the merge leaves a Household Account with no remaining Contacts, it automatically merges the two Household Accounts, re-parents all related records, and deletes the empty one. This is what allows WeGive to detect and sync the merge.
Third-Party Merge Tools
Some third-party merge tools (such as DemandTools, Apsona, or other AppExchange tools) may not populate the MasterRecordId field when merging contacts. Without this field, WeGive cannot detect the merge and the losing records will remain as separate supporters in WeGive. If you use a third-party tool, verify that it sets the MasterRecordId on the losing record after a merge. If it does not, use the NPSP Contact Merge tool instead.
How to Merge Contacts
Open the Contact Merge tool from the App Launcher.
Search for the duplicate contact by name. You can use wildcards — for example,
Robert* Smithwill match both "Robert Smith" and "Roberto Smith."Select up to three contacts to merge from the results.
Choose the master record (the winning contact) and select which field values to keep from each duplicate.
Click Merge to complete the process.
All related records — opportunities, payments, activities — are moved to the master contact so no data is lost. The losing contact and its orphaned household account are deleted in Salesforce, which triggers the archive in WeGive on the next sync cycle.
Permissions Required
To merge contacts in Salesforce, you need security settings that allow you to delete contacts and access every field on the Contact records being merged. Only an admin or a user with sufficient permissions can perform merges.
WeGive Salesforce Integration Settings
For merged and deleted household records to sync from Salesforce to WeGive, the following settings must be enabled in the WeGive Salesforce integration.
How to Access Integration Settings
In the WeGive dashboard, navigate to Integrations → Salesforce.
Open the General Settings tab.
Required Settings
Sync Deleted Households — This setting must be enabled. When turned on, WeGive will detect Household Accounts that have been deleted in Salesforce (including those deleted as part of a contact merge) and archive the corresponding household record in WeGive.
Custom Field Mappings
If your integration includes custom field mappings for households, ensure that all mapped field names are valid Salesforce API names (e.g., Custom_Field__c). Invalid field names — such as names containing spaces — will cause the entire household sync query to fail, which also blocks the deleted household sync from running. If you encounter sync errors, review your custom field mappings and remove or correct any invalid entries.
Verifying the Merge Completed in WeGive
After merging contacts in Salesforce, allow up to 15 minutes for the next automatic sync cycle to run. Then verify the results in WeGive.
Verify the Donor Record
Navigate to Supporters in the WeGive dashboard.
Search for the losing (merged) contact by name or email.
The losing donor record should now be archived. If you cannot find it in the active supporters list, it has been archived successfully.
Verify the Household Record
The archived household will not display an archived status indicator on the household record itself. To confirm it has been archived, use the Household table with filters.
Navigate to Supporters → Households in the WeGive dashboard.
Click the filter icon on the Households table.
Change the view filter to Archived.
Search for the household by name or CRM ID.
If the household appears in the archived list, the merge has been synced successfully.
If the Merge Did Not Sync
If the household record has not been archived after 15 minutes, try the following steps. You can also review the Integration Logs and Ignored Integrations sections in WeGive (under Integrations → Salesforce) to identify specific sync errors.
Resync the donor record. Go to the winning (master) donor's profile in WeGive and click Resync Supporter. Wait for the next sync cycle and check again.
Run a manual Salesforce sync. Go to Integrations → Salesforce and click Sync From Salesforce. Select Sync since last update.
Check your integration settings. Confirm that the Sync Deleted Households setting is enabled in the General Settings tab.
Check custom field mappings. Review the household custom field mappings for any invalid field names that could be causing the sync to fail.
Verify the merge in Salesforce. Confirm that the losing contact's Household Account was actually deleted in Salesforce. If the household still exists and shows as "Anonymous," the standard merge tool was likely used instead of the NPSP Contact Merge tool. In this case, you will need to manually delete the orphaned household in Salesforce or re-merge using the NPSP tool.
Check the MasterRecordId. On the losing contact record in Salesforce, verify that the
MasterRecordIdfield is populated. If it is empty, WeGive cannot detect the merge. This can happen when using third-party merge tools that do not set this field.
Bulk Merges and Cleanup
If you have a large number of orphaned household records in WeGive from past merges that were not synced, the recommended approach is as follows.
Ensure orphaned Household Accounts have been deleted in Salesforce (not just left as "Anonymous").
Enable the Sync Deleted Households setting in WeGive if it is not already enabled.
Run a Sync From Salesforce to trigger the deleted household detection.
Verify the results by filtering the Households table for Archived records.
For cases where the Salesforce records were permanently deleted (past the 15-day Recycle Bin retention period), the sync will not be able to detect them. In these situations, contact WeGive support for assistance with bulk archiving household records.
How WeGive Prevents Duplicates During Sync
WeGive has built-in logic to prevent duplicate records when syncing data from Salesforce. When syncing households, WeGive checks if a household with the same Salesforce ID already exists before creating a new one. When syncing contacts, WeGive checks for an existing email match in Salesforce — if found, it updates the existing contact rather than creating a duplicate. For recurring donation installments, WeGive checks for open installments before pushing transactions to Salesforce to avoid duplicate entries, particularly when Salesforce auto-creates future installments.