How to Merge Duplicate Salesforce Contacts, Accounts, Leads, Opportunities, and Other Record Types
Insycle's Merge Duplicates module identifies and combines redundant contacts, accounts, leads, opportunities, and custom record types in Salesforce. This article explains all available options, rules, and settings—covering matching logic, master record selection, field retention, automation, and Salesforce-specific behaviors. Use it as a reference when working in the module or to understand how various settings affect your merge results.
Insycle uses Salesforce's underlying APEX and CRUD APIs, which require the installation of Insycle's Salesforce AppExchange app.
Insycle supports the following Salesforce record types by default:
- Contacts
- Accounts
- Leads
- Opportunities
You can request enabling custom or other standard record types for your account by contacting our support team.
All enabled record types will appear in the dropdown at the top of the module.
Salesforce Merge Logic Explained
The following describes how data is consolidated using the default merge method for each Salesforce object type:
Contacts, Leads, and Accounts
Insycle uses Salesforce's Native merge using the APEX API when merging contacts, leads, and accounts. For more information, see Salesforce's Apex Developer Guide.
If you want to merge contacts, leads, and accounts using the Synthetic method, contact our support team to enable this option. Keep in mind that using Synthetic merge on leads, contacts, and accounts is slower and offers limited control over deeply nested relationships.
Opportunities and Other Standard or Custom Objects
When merging opportunities and any other standard or custom object, Insycle performs a Synthetic merge that uses the Salesforce CRUD API to merge and re-parent related objects from the duplicate records into the master.
- Record ID: The Record ID from the master record is kept.
-
Fields:
- To customize how field data is retained in the master record on a field-by-field basis, use the Field tab under Step 4.
- By default, the value is retained from the master. When a value is empty in the master, it picks a non-empty value from the most recently updated duplicate. All other values are available in the audit trail.
- To disable the automatic fill-in-the-blanks feature, toggle off the Blank Fields option on the Method tab of Step 4.
- Relationships: Insycle inspects the schema metadata for relationships to duplicate records and relinks those relationships to point to the master record instead of the duplicate. For example, that's how it would re-link "Notes" in the duplicate records into the master record.
While synthetic merge can streamline the process, because of its complexity, it is best practice to first test your merge operation with one or two records and verify that the results in Salesforce are as expected.
Deduplication Process
When merging duplicates, Insycle goes through the following steps for all Salesforce record types:
- Select the master record according to the rules set in Step 4 on the Master tab.
- Determine field values to retain in the master record based on rules configured in Step 4 on the Fields tab.
- For fields without specific rules, identify non-empty values using a "fill in the blanks" method:
- Check whether the master record has any empty fields.
- If empty, copy values from the most recently updated record in the duplicate group.
- Update the master record by:
- Applying the field values chosen in step 2 (from Field rules).
- Adding the non-empty values identified in step 3 using the "fill in the blanks" approach (unless this is disabled on the Method tab).
- Preserving all other existing values in the master record.
- Merge the duplicate records and reassign all related objects to the master record.
- Store an audit trail report accessible from the Activity Tracker and send an email notification to the designated recipients.
If you have enabled Salesforce's setting to allow a contact to be related to multiple accounts, Insycle's Merge Duplicates module ensures that all account relationships are preserved during the merge process. It automatically reassigns both primary (direct) and secondary (indirect) account links to the master record while removing any redundant relationships. This provides a comprehensive view of the contact's interactions across all linked accounts within your business.
Insycle intelligently handles scenarios where duplicate contacts are linked to the same secondary accounts. It identifies overlapping relationships and automatically removes extraneous links from the records being merged, while retaining them on the master record. This prevents the common Salesforce error:
"Can't merge contacts. These contacts have the same related account. Remove the redundant account-contact relationships and then try merging again."
By addressing these relationship-mapping challenges, Insycle streamlines the deduplication process, saves significant time and effort, and ensures valuable account-contact relationship data is not lost when merging duplicates with multiple links.
Learn more about deduplicating with Salesforce’s feature for linking contacts to multiple accounts.
When duplicate Salesforce accounts share indirect relationships with the same contacts, Insycle's Merge Duplicates module preserves all contact connections while automatically removing redundant relationships. This ensures that the merged account maintains a complete view of all associated contacts without triggering Salesforce's merge restrictions.
Insycle intelligently identifies when duplicate accounts are both indirectly related to the same contact through the Related Contacts list. During the merge process, it consolidates overlapping indirect relationships into the master account while removing duplicate connections from the records being merged. This prevents the Salesforce error:
"Can't merge accounts. These accounts have the same related contact. Remove the redundant account-contact relationships and then try merging again."
By automatically handling these complex relationship scenarios, Insycle eliminates the manual work of identifying and removing redundant contact relationships before merging accounts. This streamlines your deduplication workflow and ensures that valuable account-contact relationship data remains intact throughout the merge process.
Review Salesforce's Guidelines for Merging Duplicate Accounts.
Though you can create custom data retention rules for any fields using the Fields tab under Step 3, it is not required. There is no need to create rules for every field in your Salesforce data - Insycle automatically handles fields without specific rules with a "fill in the blanks" approach.
When the master record has empty fields, Insycle copies values from the most recently updated record in the duplicate group where that data exists. For example, if the master record's Industry field is empty but another record in the duplicate group has an Industry value, that value will automatically be copied to the master record.
This means you only need to create custom retention rules for the fields that require special handling, rather than setting up rules for all your fields. Learn more in the Field Data Retention Rule Configurations below.
Step-by-Step Process Overview
The Merge Duplicates module follows a four-step process:
Step 1 is where you define which fields Insycle should examine to find duplicate records, and set the rules for how those fields are compared. Each field you add is cumulative — records must match all of the criteria you specify to be flagged as potential duplicates. For example, matching on First Name AND Last Name AND Email Domain returns only results where all three values are the same.
Step 1 operates through three tabs:
- The Simple tab is where you add matching fields and configure comparison rules, ignored elements, match parts, and conditions.
- The Advanced tab is where you configure Related Fields for any field already added on the Simple tab.
- The Conditions tab is where you set conditions for any field already added on the Simple tab.
A field must be added on the Simple tab before it can be configured on the Advanced or Conditions tabs.
See the Duplicate Identification Rules Reference below for a complete breakdown of every option.
Additionally, Step 1 includes a CSV tab that lets you upload a file of known duplicate record ID pairs directly — bypassing field-based matching entirely. See the CSV Tab Reference below for details.
Step 2 displays all duplicate groups identified in Step 1, allowing you to review and verify the matches before proceeding. Records that match your Step 1 criteria are automatically clustered into duplicate groups — each group represents a single entity and shows how many duplicate records it contains. For example, three records for the same person would appear as a single duplicate group containing three records.
Click the chevron at the right end of a duplicate group row to expand it and examine the individual records within that group. You can also add fields as columns to provide more context when evaluating the matches by clicking the gear icon.
To exclude a duplicate group from all future deduplication analysis, click the X on the group row. Excluded groups will not appear as duplicates or be included in merges, even when using different duplicate detection templates. To review and manage excluded groups, click the Exclusions button in the Step 2 header.
Step 3 is where you configure how duplicate groups are consolidated—from choosing your operation mode to defining master selection rules and field retention logic. This step combines operation selection with the merge logic configuration through multiple tabs.
At the top of Step 3, choose between Bulk and Manual modes in the header:
- Bulk mode (recommended) automatically merges all duplicate groups according to the master record selection rules you define in the Master tab. This is the right choice for most deduplication processes, and the only mode that supports templates, Recipes, and automation.
- Manual mode lets you review and select specific records to merge individually from the Record Viewer. Reserve this for high-value records or complex scenarios where you want hands-on control over each merge.
Step 3 operates through three tabs that work together:
1) Master tab — This is where you set the rules that determine which record in each duplicate group becomes the master. Insycle evaluates your rules in order from top to bottom, and the first record that uniquely matches a rule becomes the master. If no record matches any rule, master selection fails for that group. See the Master Record Selection reference below for a full breakdown of all rules and options.
At the bottom of the Master tab, you'll also configure:
- Processing method — Choose between By Priority (evaluates rules in sequence, stops at first unique match) or Absolute (master must match all rules). Most operations should use By Priority.
- Exclusions — By default, Insycle skips any duplicate group containing more than 5 records—this prevents overly broad matching criteria from accidentally merging unrelated records. You can adjust this threshold up to 100 records per group.
2) Fields tab — This is where you control which field values end up in the master record after the merge. By default, Insycle keeps the master record's values and fills any empty fields with values from the most recently updated duplicate. You can override this on a field-by-field basis for any fields that need special handling. See the Field Data Retention Reference below for all available criteria and conditions.
3) Method tab — This tab lets you choose between Native and Synthetic merge logic, and control whether empty master fields are automatically filled. See the Method Tab Reference below for details.
Step 4 is where you preview and apply your merge changes. It operates in two modes:
- Preview Mode generates a CSV report that shows exactly how your records would be merged based on your current configuration — which records become masters, which field values end up where, and whether any errors occur. No changes are made to your CRM. Always run Preview Mode before Update Mode to verify everything is working as expected.
- Update Mode applies the merge to your live CRM. Once you've confirmed your Preview results look correct, Update Mode executes the actual merge operations.
If you are merging opportunities or custom objects, the Merge API is set to Synthetic on the Module tab in Step 3. Running in Update Mode displays a Please confirm dialog before the operation begins. Synthetic merges can take longer to process than Native merges used on contacts, leads, or accounts. This dialog shows an estimated time for the merge based on the number of associations and engagements that need to be reassigned. Click Yes to proceed.
The CSV report includes records from all duplicate groups. It shows the current state of the master record, excluding reassignments of linked contacts, deals, or activities. (To validate how the relinking will occur, run a small-scale test in Update mode.) This ensures that the CSV accurately reflects the merge setup before execution in Update mode.
The Duplicate Group ID indicates which records will be merged together.
The Status column indicates:
- Duplicate – The record is part of a duplicate group.
- Master – The master record is chosen for the duplicate group based on default behavior and your Master rules. Review the selections in this row to determine whether the appropriate records are being chosen.
- Master (After) – For each duplicate group, a Master (After) row shows the values the final record will contain based on your Field rules and the default behavior.
- Error – If Insycle cannot determine which record is the master, an error message will appear here. See the Troubleshooting section below for more details.
Configurations Reference
Duplicate Identification Rules (Step 1)
Step 1 controls which Salesforce records Insycle flags as potential duplicates. Each configured matching field acts as a filter — records must match all your specified criteria to be grouped together. For example, matching on First Name AND Last Name AND Email returns only results where all three values are the same.
Core Matching Parameters
Field Selection
Choose fields that, in combination, provide strong evidence that matched records represent the same entity. The goal is to select fields that are unlikely to be identical across unrelated records.
Choosing Unique Identifiers
Matching duplicates requires unique identifiers — data that is unlikely to be shared by any other record unless it is truly a duplicate. If you only use fields that could legitimately have the same values across different entities, you risk identifying unrelated records as duplicates and accidentally merging them.
Common Unique Identifiers by Object Type
For contacts and leads:
- Email address
- Phone number
- Full name (first + last) combined with another identifier
- LinkedIn URL or other social profile
- Account ID or external system ID
For accounts:
- Website
- Account name combined with location or industry
- Tax ID or registration number
- External system ID (HubSpot ID, ERP system ID, etc.)
- Phone number or main office address
For other object types:
- Account ID
- Transaction or campaign ID
- Any system-generated or externally synced ID
Field Length Requirement
Values must be at least 4 characters long to be considered for matching. Standalone values such as "Joe," "Ace," or "Inc" will be ignored during matching.
Comparison Rule
The Comparison Rule determines how strictly field values must align to be considered a match.
- Exact Match looks for values that are identical with no differences between records. Use Exact Match for fields that should never vary if they represent the same entity — email addresses, domain names, ID numbers, and phone numbers (when formatted consistently) are all good candidates.
-
Similar Match searches for values that are close but differ by one character, such as typos, extra characters, or missing characters. This is often called "fuzzy matching" and helps find records with minor differences. The behavior is similar to how Google suggests alternative spellings when you search.
For example, if a Company Name of "Acme" is found, it could match records with values like "Akme," "Acm," or "Acma."
Similar Match uses looser criteria, casting a wider net for what constitutes a duplicate. It works best for text fields like names or company names, where minor variations are common. Use it carefully, and always review the results to ensure the identified duplicates are what you expect. Start with Exact Match for reliable duplicates, then layer in Similar Match for edge cases.
Note: ID fields only work with Exact Match, not Similar Match.
Ignored Elements
The Ignored parameter lets you exclude specific parts of a field value from the matching process — such as text, whitespace, or special characters. These elements will not be considered when comparing records.
Available Ignore Options:
- Symbols — Ignore punctuation and special characters. Useful when comparing phone numbers where formatting varies (e.g., (555) 123-4567 vs 5551234567).
- Whitespace — Ignore spaces, tabs, and line breaks. Useful when comparing phone numbers or formatted text with inconsistent spacing.
- Subdomain — Ignore the subdomain portion of URLs or email domains (www., app., mail., etc.). For example, www.acme.com and acme.com would match.
- Top-level domain — Ignore the domain extension (.com, .co.uk, .org, etc.). For example, acme.com and acme.net would match.
- URL path — Ignore everything after the domain in a URL (/about, /contact, /us/western-region, etc.). For example, acme.com/about and acme.com/contact would match.
-
Common Terms — Ignore business entity suffixes and common words that appear in company names. Insycle comes preloaded with terms such as Inc., LLC, Corporation, and Company. Click the Terms button to view and edit the full list on the Common Terms tab.
- Text (substrings) — Ignore specific text strings you define. Click the Terms button, select the Ignored Text tab, and enter the text to ignore. Separate multiple strings with a new line. For example, you might ignore "Customer -" or "Account #" if these prefixes are inconsistently applied.
Enabling Ignored Elements
After configuring which elements to ignore, remember to enable the setting by checking the corresponding box under Ignored (for example, Ignored > Common Terms or Ignored > Text (substrings)). The ignore rules won't apply unless this checkbox is selected.
Match Parts
Match Parts lets you compare only a specific portion of the field value rather than the entire value. This is useful when records contain the same core data but differ in formatting, prefixes, or suffixes.
Available Options
Entire Value — Compare the full field value (default behavior).
Word-based matching:
- First Word, Last Word
- First 2-5 Words, Last 2-5 Words
- Any 2-4 Words (matches if any consecutive words match)
Character-based matching:
- First 3-12 Characters
- Last 3-12 Characters
When to use Match Parts
Use Match Parts when you know that a specific portion of the field value is consistent across duplicates, but the full value varies. Common scenarios include:
- Phone numbers with inconsistent country codes — Use Last 10 Characters to match the core phone number while ignoring whether a country code is present (+1 555-123-4567 vs 555-123-4567)
- URLs with varying subdomains or paths — Use First 10-15 Characters to match based on the core domain
- Names with inconsistent prefixes or suffixes — Use First Word or Last Word to match on the primary name component
- IDs with prefixes — Use Last 8-12 Characters to match the core ID while ignoring a prefix that may vary
- Long field values that slow processing — When matching on fields with very long values (such as long ID numbers, LinkedIn profile URLs, or other URLs with query strings), Insycle takes longer to process the comparison. If the unique portion of the value is at the beginning or end, use Match Parts to limit the comparison to just the first or last several characters. For example, use Last 9 Characters to match LinkedIn profiles like https://www.linkedin.com/in/svadinir-nemec-1234b31a3/ based only on the unique identifier portion. Alternatively, use the Ignored Text (substrings) option to exclude the common URL prefix (https://www.linkedin.com/in/) from the comparison entirely.
Related Fields
Related Fields lets you compare data across up to three different fields as if they were a single field. This helps catch duplicates where the same information appears in different field locations across records.
For example, you might want to check both the Billing Address and Shipping Address fields for matching values. Or compare Mobile Phone, Business Phone, and Home Phone to find duplicates where the same number appears in different fields.
To configure Related Fields:
- On the Simple tab of Step 1, select the primary field you want to match on
- Click the Advanced tab
- Under Related Fields, select up to two fields that contain similar data
- Insycle will treat values from any of these fields as potential matches
This is particularly useful when dealing with inconsistent data entry practices or records imported from different sources that map the same information to different fields.
Conditions
Conditions add requirements that one or more records in a duplicate group must meet. These let you control whether fields can be empty, require specific values, or set time-based parameters.
To set a condition on a field:
- On the Simple tab of Step 1, select the primary field you want to match on.
- Click the Conditions tab.
- Select the Condition option to configure for the field
Available Conditions
- At Least One Record With Non-Empty — At least one record in the duplicate group must contain a value in this field. The other records can have empty values.
- Value Required in All Records — Every record in the duplicate group must contain a value in this field to be considered a duplicate.
- At Least One Record Match — At least one record in the duplicate group must match the specified value, and the other records cannot be blank. If none of the records contain the specified value, the duplicate group will not be merged.
- Empty Allowed in Any Record — A record can still be considered part of the duplicate group even if this field is blank. Useful when a field is a secondary identifier. Requires using at least two fields to identify duplicates.
- Only One Record Match — If more than one record in the duplicate group contains the specified field value, the entire duplicate group is skipped and will not be merged. Use this to ensure uniqueness constraints.
- Within Timeframe — Limit duplicate detection to records created or modified within a specific time window (minutes, hours, or days). For example, find duplicates created within the last 20 minutes. This is useful for catching duplicates created during high-volume import processes or live form submissions.
- Values Don't Match — All records in the duplicate group must have a value in this field, but the values cannot be identical across records. Use this to exclude previously processed duplicates from subsequent deduplication runs.
CSV Tab (Step 1)
The CSV tab in Step 1 lets you import a list of known duplicate record pairs directly into the Merge Duplicates module, bypassing field-based duplicate detection entirely. This is useful when you already know which records are duplicates — for example, from an external audit, a data migration, or a report from another system — and want to use Insycle's merge logic to handle the consolidation.
This approach works with any supported CRM, including HubSpot and Salesforce. No custom CRM fields are required.
CSV Format Requirements
The CSV must include a header row with exactly these two column names: ID_1 and ID_2. Each subsequent row should contain the record IDs of one duplicate pair. Any additional columns in the file will be ignored — Insycle only processes the ID_1 and ID_2 columns.
Uploading the CSV
Navigate to Data Management > Merge Duplicates and select your database and record type. In Step 1, click the CSV tab, then click Upload and select your file.
Once uploaded, Insycle validates that the record IDs in the file exist in your CRM. Rows with invalid or missing record IDs will be skipped and will not appear in Step 2.
Completing the Merge
After uploading, continue through Steps 2–4 to review the duplicate groups, configure master selection rules and field retention settings, and run the operation.
Master Selection Rules (Step 3 Master Tab)
The Master tab controls which record in each duplicate group becomes the master — the record that will remain after the merge. Insycle evaluates your rules sequentially from top to bottom. As soon as one record uniquely meets a rule, it becomes the master, and no further rules are evaluated for that group. If no records match any rule, automatic master selection fails for that group.
Core Configuration Options
Choose Your Processing Method
Before adding rules, select how Insycle should process your master selection criteria. This is found at the bottom of the Master tab.
- By Priority (recommended) — Evaluates rules sequentially from top to bottom. As soon as one record uniquely meets a rule, it becomes the master, and remaining rules are skipped. This is the recommended method for most deduplication processes as it provides flexible, fallback-based master selection.
- Absolute — Requires the master record to simultaneously match every rule on your list. For example, if you need the master to be both a customer AND assigned to an active representative, Absolute ensures that only records meeting both criteria are selected. However, Absolute frequently results in no master being identified since records must satisfy all conditions simultaneously. By Priority is typically the better choice for most use cases.
Select Fields to Base Master Record Choice On
You can select any field from your CRM — whether writable or read-only — to base your master selection decision on. For each field, you'll set a condition that determines which record becomes the master.
Insycle reads rules in order from top to bottom. The first record that is the only one matching a rule becomes the master, and subsequent rules are ignored.
How Rule Ordering Works
Rule order matters. If your first rule is "Lifecycle Stage is Customer" and multiple records in the group are customers, Insycle moves to the next rule. If your second rule is "Email is work domain" and only one of those customer records has a work domain email, that record becomes the master — even if there are additional rules below.
Field Types You Can Use
- Writable fields — Any field you can edit in your CRM (Owner, Lifecycle Stage, Industry, etc.)
- Read-only fields — System fields like Email, Create Date, Last Modified Date, Record ID, engagement metrics
- Calculated fields — Number of associated records, email engagement counts, deal amounts
- System sync fields — External system IDs (Salesforce ID, ERP ID, etc.)
You can layer multiple rules for the same field to create fallback logic. For example, "Lead Source is Partner Referral" followed by "Lead Source is External Referral" — if no leads came from partner referrals, Insycle looks for external referrals.
Preventing Master Selection Failures
If none of your rules produce a unique match, Insycle cannot select a master, and the duplicate group will be skipped. To prevent this, add a catchall rule at the bottom of your list that applies to all records, such as "Create Date is earliest" or "Record ID is lowest." This ensures every duplicate group has a fallback option when more specific rules don't identify a clear winner.
Apply Conditions
Conditions define the logical criteria used to evaluate each record in a duplicate group to determine which one should become the master. When you define a condition, Insycle checks each record against your criteria (such as "Lifecycle Stage = Customer" or "Create Date is earliest") and selects the record that meets that condition. The available conditions vary based on the field type you've selected.
Standard conditions (text fields)
- Is / Is not — Match or exclude an exact value
- Contains / Does not contain — Match or exclude based on partial text
- Regex — Use a regular expression pattern for complex matching
- Exists / Doesn't exist — Filter based on whether the field has any value
Date field conditions
- Earliest / Latest — Select the record with the oldest or most recent date
Number field conditions
- Highest / Lowest — Select the record with the largest or smallest numeric value
Owner field conditions
- Active user — Select the record where the owner is currently an active user in your CRM
- Exists / Doesn't exist — Filter based on whether an owner is assigned
Email field conditions
- Not role-based (info@, etc.) — Exclude generic email addresses like info@, admin@, sales@
- Work domain (non-Gmail, etc.) — Select work email addresses, excluding common personal email providers
- Personal domain (Gmail, etc.) — Select personal email addresses from providers like Gmail, Yahoo, Outlook
- Exists / Doesn't exist — Filter based on whether an email address is present
Picklist and lookup field conditions
- Any of / Not any of — Select or exclude from multiple dropdown values at once
Most field types also support the Exists and Doesn't exist conditions to check whether the field contains any value.
Layering Conditions for the Same Field
You can create multiple rules for the same field to establish fallback logic. Insycle evaluates them in order and stops at the first one where a single record uniquely matches.
For example:
- Email is not role-based, such as hr@company.com or info@company.com
- Email is a work domain (a non-gmail.com, outlook.com, or other personal domain)
- Email exists
If no records in the group have an email that uses a name rather than department or other catchall, Insycle checks for an email that uses a work/private domain. If neither is found in any of the duplicates, select the record with an email address. This ensures you select the most qualified record available within each duplicate group.
This fallback pattern also works for other scenarios:
- Check for synced records first (HubSpot ID exists), then fall back to records with owners, then fall back to the oldest record
- Prioritize leads with closed status first, then those marked as working, and finally open leads
- Select the most engaged contact (highest email clicks), then most recently updated, then earliest created
Example: Prioritizing Synced Records
A common master selection strategy is to preserve records that sync with external systems like HubSpot or ERP platforms. Here's how you might structure the rules:
- HubSpot Contact ID exists — If a record syncs with HubSpot, it becomes the master
- Account Owner exists — If no HubSpot ID exists, pick a record that has an active owner assigned
- Create Date is earliest — If no records have a HubSpot ID or active owner, merge into the oldest record
This ensures the record that integrates with your other systems is always preserved, with clear fallback logic when that sync doesn't exist.
Considerations When Picking a Master Record
The best master selection strategy depends on your record type and business priorities.
For Contacts:
Select master records based on engagement metrics when available — highest number of email clicks, most recent email opened, or highest engagement score. You can also prioritize by lifecycle stage (customers over leads) or by assignment (records with active owners).
Common contact strategies:
- Most engaged contact (latest activity)
- Most recently updated or contacted
- Record with active owner assigned
- Most relevant email address
For Accounts:
Prioritize records with the most associated data — the highest number of associated contacts, deals, or activities. This ensures you preserve the record with the richest relationship history.
Common account strategies:
- Most associated contacts or opportunities
- Highest annual revenue or employee count
- Record synced with external systems (HubSpot, ERP)
- Record with active owner assigned
For records synced with external systems:
If you integrate with HubSpot, an ERP system, or other platforms, prioritize the record that syncs with those systems to prevent breaking your integration. Use an "exists" condition on the synced system ID field as your first master rule. See the example in the Conditions section above for how to structure this with fallback logic.
Field Data Retention Rules (Step 3 Fields Tab)
The Fields tab controls how data in each field is handled when duplicate records are merged. After selecting a master record, you can pull specific field values from other records in the group to ensure the most valuable data is retained.
By default, Insycle keeps all field values from the master record. If a master field is blank, the value from the most recently updated duplicate is used. You can create rules to override this behavior on a field-by-field basis — you only need to configure rules for fields requiring special handling, not for every field in Salesforce.
Core Configuration Options
Field Name
Choose which fields you want to control data retention for. You can only add writable fields to the Fields tab — read-only fields, like Record ID, cannot have retention rules configured.
Available criteria and condition options vary by field type. For example, number fields support rollup calculations (sum, average, max, min), while text fields support conditions like "contains" or "is."
You don't need to create a rule for every field. Fields without specific rules are handled automatically using the default "fill in the blanks" behavior — Insycle keeps the master record's value, or copies from the most recently updated duplicate if the master field is empty.
Criteria
The Criteria dropdown determines where the preserved value comes from and how it's handled during the merge. Select from the following options for choosing the data to keep:
Criteria marked with an asterisk (*) support the Group Fields feature. See the Group Fields tab for details.
From master record* — Use the value that exists in the master record. If the master field is blank, the value from the most recently updated duplicate will be used automatically. For example, you may want to keep the Owner or LinkedIn URL from the selected master.
From master record (even empty)* — If the field on the selected master record is blank, keep it blank. Don't automatically fill it in with a value from the most recently updated record.
This prevents unwanted data from being copied into the master when you specifically want the field to remain empty. This option also supports the Group Fields feature.
Example: If you're merging test records into production records and the test records have invalid data, use this to preserve the master's empty state rather than copying bad data forward.
Most frequent value — If the same value appears in multiple records within the duplicate group, use the one that appears most frequently.
Example: If three records have "Industry = Software" and one has "Industry = Technology," the master will be set to "Software."
From record where value* — Select data from one of the records in the duplicate group based on the field's value. The available options vary by field type.
- For number fields: highest, lowest
- For date fields: earliest, latest
- For text fields: exists, doesn't exist, specific value matches
Example: Keep the Employees count from the record with the highest number of employees.
From record based on other field value*— Look at a different field's value to decide which record's data to keep for this field. This lets you use one field as the decision criteria for selecting another field's value.
Example 1: Keep the Owner from the record where Industry contains "Software" or "Technology."
Example 2: Select the Account Name from the record with the earliest (oldest) Create Date.
Combine and append all values — Merge the values from the selected field across all records in the group. Values are concatenated, preserving data from each duplicate.
Example: If there is a Notes field, consolidate the notes from all duplicates into the master so no historical context is lost.
Rollup numbers— Aggregate numeric values from all records in the duplicate group. Available rollup types:
- Sum — Add all values together
- Average — Calculate the mean value
- Max — Keep only the largest value
- Min — Keep only the smallest value
Example: If duplicate contact records each have an "Amount Donated" field showing donations from different time periods, sum them and save the total to the master record.
Collect all values from other field — Select a destination field to copy and combine values into, then select what field the data should come from. This preserves data by moving it from one field location to another during the merge.
Example: Preserve the Owner values from all duplicates by collecting them into a custom "Previous Owners" field. Or collect Record IDs from all duplicates into a "Merged Record IDs" field for tracking purposes.
Select the destination field under "Field Name," then select which field the data should come from under "Other Field."
Collect non-master values from other field — Aggregate values from all duplicates except the master, excluding any values that match the master's value. This ensures you collect only unique values that differ from those already in the master.
Example: If you want a record of the Record IDs that were removed during the merge (excluding the master's ID), create a custom "Merged Record IDs" field in your CRM, then use this criteria to collect only the non-master IDs. This is helpful when you need to track which records were merged for cross-system cleanup or audit purposes.
Select the destination field under "Field Name," then select which field the data should come from under "Other Field."
Apply Condition
Conditions define the logical criteria that determine which values are retained during the merge. When you add a condition to a field, Insycle evaluates each record's value against your rule (e.g., "Country = United States" or "Email is work domain") and retains the value only if the condition is true. Not all Criteria options support conditions—when available, the Condition dropdown appears next to the Criteria you've selected.
Standard conditions
These are available across most field types:
- Is / Is not — Match or exclude an exact value. For example, retain the Country value only when it is "United States."
- Contains / Does not contain — Match or exclude based on whether the value includes specific text. For example, retain the Website value only when it contains "acme."
- Exists / Does not exist — Filter based on whether the field has any value at all. For example, retain the Phone field data only from a record where a phone number exists.
- Regex — Use a regular expression pattern for more precise matching. Useful for values that follow a known format, like ID numbers or postal codes.
Picklist and lookup conditions
For fields that use a dropdown or reference another record (such as owner fields):
- Any of / Not any of — Select or exclude multiple values at once without needing pipe separators. For example, retain the Lead Status only when it is one of the following: Converted, Working, or Open.
Field-type-specific conditions
Certain field types unlock additional condition options:
- Owner fields — Active user. Retains the value only from a record where the owner is currently an active user in your CRM. For example, use this with the "From record where value" Criteria to ensure the merged record ends up with a functioning owner assignment.
- Email fields — Not role-based (info@, etc.), Work domain (non-Gmail, etc.), Personal domain (Gmail, etc.). Filters based on the type of email address. For example, only keep the Secondary Email value if it uses a personal domain like 'outlook.com' or 'gmail.com' to ensure non-work contact information is preserved.
- Number fields — Available when using the Rollup numbers Criteria. Choose how to aggregate: sum, average, max, or min.
Using Conditions With Multiple Values
Several conditions support combining multiple values in a single rule using pipe-separated syntax.
To match against more than one value with Is, Is not, Contains, or Does not contain, separate each value with a pipe character ( | ).
Example: To retain the Country field when it contains either "United States" or "Canada," enter: "United States|Canada"
For picklist fields, use any of or not any of instead — these let you select multiple options from a list without needing pipe separators.
Be Careful with Multiple "Is Not" Rules on the Same Field
If you create two separate negative rules for the same field — for example, "Country is not UK" followed by "Country is not US" — they can work against each other. The second rule can unintentionally match values that the first rule was meant to exclude. A record with Country = UK will fail the first rule but pass the second ("is not US"), so UK could still end up being selected.
To avoid this, combine your exclusions into a single rule: Country is not any of UK|US
Keep Multiple Values Based on One Rule
The Group Fields option lets you keep values of multiple fields from the same record based on a single rule. When you select a field value based on a condition, you can also preserve other related fields — even if those other fields are empty.
Group Fields is available when using the following Criteria:
- From record where value
- From record based on other field value
- From master record
- From master record (even empty)
How It Works
Configure your primary field rule as normal, then click Group Fields and select additional fields to preserve from the same record. If the record that meets your primary condition has values in the grouped fields, those values are copied to the master. If the grouped fields are empty in that record, the blank values overwrite whatever was in the master.
Important: Group Fields will overwrite existing master values with blank values if the selected record has empty grouped fields. Use Group Fields only when you want to keep data from the same source record together, regardless of whether all fields are populated.
Example 1: Address fields
If a record has a Country value, you can group it with City, State, Street Address, and Postal Code to preserve the complete address from the same record. If any of the grouped address fields on that record are blank, those blank values will overwrite the master's existing address data.
Example 2: Record owner fields
Select the Contact Owner from the record with the earliest Create Date, then also save the Success Owner from the same record. If the Success Owner field on that record is blank, the master's Success Owner field will be blanked out as well.
Merge Method (Step 3 Method Tab)
The Method tab provides additional merge configuration options. These settings control which merge API Insycle uses and whether empty master fields are automatically filled with values from duplicates.
Merge API
The Merge API setting determines which merge logic Insycle uses to combine your records.
Native is the default for Salesforce contacts, leads, and accounts. It uses Salesforce’s APEX API merge logic.
Synthetic uses Insycle's custom merge logic. This gives you more control over field retention and master selection than the Salesforce-native merge does. Synthetic is the default for all other object types, including opportunities and custom objects.
Default Merge API by Object Type
| Object Type | Default API |
|---|---|
| Contacts, Leads, Accounts | Native |
| Opportunities, Custom Objects, all other object types | Synthetic |
Blank Fields
The Blank Fields toggle controls whether Insycle automatically fills empty fields in the master record with values from duplicates — the "fill in the blanks" behavior described in the Salesforce Merge Logic Explained section.
Enabled (toggled yellow) — Insycle automatically fills empty master record fields with values from the most recently updated duplicate where that data exists. This is the default setting and is recommended for most use cases.
Disabled (toggled grey) — Empty fields in the master record remain empty. No automatic filling occurs. Use this when you specifically want to preserve the master's empty state and prevent any data from duplicates being copied forward.
After you've seen the results in Salesforce and are satisfied with how the operation runs, you can save your configuration as a template and set up automation so this merge operation runs on a set schedule. Then, you can bundle templates into Recipes and integrate them into Salesforce flows.
Return to the Template menu at the top of the page and click copy to save your configurations as a new version of the template you started with. Then, click the pencil to edit your new template name.
Under Step 4, click the Review button and select Update mode.
On the Notify tab, select the send option appropriate for your automation: Always send, Send when errors, or Do not email.
Add any additional recipients who should receive the CSV (hitting Enter after each address) and provide context in the message subject or body.
On the When tab, select Automate and configure the frequency you'd like the template to run. When finished, click Schedule.
You can view all your scheduled automations at any time on the Operations > Automations page.
Learn More:
When you have a solid set of templates that reliably merge your records, you can put them together into a longer, ordered sequence as a Recipe. Then, you can schedule that Recipe to run on a consistent, set schedule. Your templates will run one after another in the order that you set.
To add your Recipe to a Salesforce Flow, the Automate setting must be Salesforce Flow Integration.
Learn more about integrating Insycle Recipes with Salesforce flows.
With the Activity Tracker, you have a complete audit trail and history of changes made through Insycle, including processes run in Preview mode or data syncs. At any time, you can download a CSV report that lets you see all of the changes that were made in a given run of the operation.
Navigate to Operations > Activity Tracker, search by module, app, or template name, then click the Run ID for the operation.
If you've configured the Insycle Run ID property in Salesforce, you can cross-reference these operations in your CRM records.
Advanced Techniques
If you're experiencing issues because the same person appears in Salesforce as both a lead and a contact, you can use the Merge Duplicates module to deduplicate leads and contacts together.
Open the Merge Duplicates module and pick the Contacts record type.
Then, under Step 1, check the Include Leads checkbox.
Learn more about merging duplicate individuals looking at both leads and contacts.
Having your Salesforce and HubSpot CRMs set up to sync can make cleaning up duplicates tricky. You need to determine the appropriate “master record” to use across both CRMs and consider the merging process. Often, your settings in each platform impact how the merge takes place.
When you deduplicate accounts in Salesforce, the master is kept in sync with the original HubSpot record, indicated by a Salesforce Account ID value. However, the deduplication only takes place on Salesforce, leaving duplicate companies in HubSpot. Since HubSpot doesn't allow you to deduplicate companies while the sync is active from within the HubSpot app, you need another option.
Insycle allows you to merge duplicate HubSpot companies and Salesforce accounts while keeping things simple and your sync intact.
To learn more, see Deduplicate HubSpot Companies and Salesforce Accounts.
For situations where there are no common rules you can apply for identifying duplicates for all or some of your records, you may need more granular control over which records are included or excluded from the process.
Bulk Solutions
There are two options for doing this in bulk. You can upload a CSV file of known duplicate record ID pairs directly into the Merge Duplicates module using the CSV tab in Step 1. This lets you bypass field-based duplicate detection entirely and work from a list of specific record pairs you've already identified. From there, you continue through Steps 2–4 to configure master selection rules and field retention settings, and then run the merge.
For more complex scenarios — such as designating master records or excluding specific records from deduplication using custom attributes — you can also use the Magical Import module in combination with Merge Duplicates for complete control over the process.
Learn how to customize merging duplicates in bulk using a CSV.
Single Record Solution
To do this one record at a time, you can use Manual mode of the Merge Duplicates module.
In Manual mode, you have complete control over which records are merged together by selecting them from the Record Viewer. Manual mode should be reserved for cases that require a careful, controlled process. Learn more about merging duplicates in Manual mode.
Explore additional advanced techniques in our Deduplication Scenarios article.
Tips for Backing Up Data Before Merging
When setting up your merge operation in the Merge Duplicates module, add extra fields to be included in the CSV report so you have the data later for undoing changes and/or just for general review.
Under Step 2, click the gear icon in the header.
On the Layout tab, add any extra fields to the Visible Fields list.
The fields will be included in the CSV report.
Before running a large merge operation, you can export all records directly from Salesforce to a CSV file. This can preserve all the record details, which can help later for undo and/or just for general review.
Create a Targeted Salesforce Report
To select only the necessary fields and filter out inapplicable records, you can create a Salesforce Report. This gives you a targeted export, omitting unnecessary data. Once configured and saved, you can reuse this report before each bulk merge operation.
In Salesforce, if the Reports tab doesn't appear at the top, click the App Launcher icon (nine squares) in the top left corner and search for "Reports."
Create a new report based on the specific data type, and add all the desired fields. Add filters to narrow the results. Save and Run the report.
On the results page, click the arrow next to the Edit button and select Export. In the Export popup, select Details and CSV as the format.
Export All Data for a Record Type
To get all field data for all records of the same type, you can use Salesforce's Data Export Service. There are no filtering/segmenting options, so if you have a large dataset, this can take a while to run.
In Salesforce, navigate to Setup > Data > Data Export.
Click Export Now, check the box for the record type, then click Start Export. You'll receive an email when the file is ready for download.
Troubleshooting
If you're not seeing the results you expect when merging duplicates, consider these issues:
If the Result is "Failed" and the Message column of the CSV report displays this text:
Change rules in Step 3 'Master Selection'. Failed to pick master record because multiple records (X) meet the selection criteria. In 'Master Selection', change, add, or reorder the rules such that only one record matches (if cannot determine master based on field values, use 'Record ID is lowest' as the last rule).
This means Insycle could not determine which record in the duplicate group should become the master — none of the records meet more of the rules than the others.
There are a few things you can try to resolve this:
-
Under Step 3, on the Master tab, experiment with reordering or adding rules based on fields that are likely to have unique values across your records. Think about what matters most to your business — the fields that would make one record clearly more valuable or authoritative than another. For example:
- A field that stores an ID linked to an external system, such as an ERP, data warehouse, or proprietary internal tool — the record with that ID populated is likely the one your other systems depend on
- The record with the highest number of associated records (contacts, deals, activities) — indicating it has accumulated more history and relationships
- A field indicating CRM ownership or account status — for example, a record marked as "Customer" vs. "Lead," or one with an active owner assigned
- A field that tracks revenue, subscription tier, or engagement level — the record with higher values may represent the more complete or current entry
- A custom field your team uses to flag record quality or data source reliability
The goal is to surface the fields that reflect record importance for your specific operations, not just default system fields.
-
Also on the Step 3 Master tab, confirm that By Priority is selected rather than Absolute.
With By Priority, a record only needs to match one rule to be selected as master. With Absolute, a record must meet all rule criteria, which makes it much harder for any single record to qualify.
In most cases, By Priority is the right choice. If By Priority is already selected and the error persists, none of the records in the group meet any of the criteria more than the others. Return to the Master tab and continue adding or reordering rules, focusing on the business-critical fields described in #1 above.
- As a last resort, add a rule on the Master tab that uses Record ID is lowest, or Create Date is earliest. These rules will always produce a unique winner, ensuring master selection can complete even when other field-based rules cannot differentiate the records.
There are a couple of things to look at that may be causing records to be misidentified as duplicates.
First, you may need a better unique identifier. Under Step 1, if you use only fields that can correctly contain the same values across multiple records, they aren't unique identifiers. In this case, you are likely to identify unrelated records as duplicates and may accidentally merge them.
Unique identifiers are data unlikely to be shared by any other record unless they represent the same underlying entity. Common fields used for deduplication include phone numbers, email addresses, mailing addresses, and ID numbers.
Second, this may indicate the Comparison Rule under Step 1 is too broad. Try using the Exact Match comparison rule instead of the Similar Match rule. Similar Match looks for values that may be close, even with a one-character difference (e.g., a typo), broadening the search.
Remember to always run your deduplication in Preview Mode to confirm it's working as expected before running it in Update Mode and applying the changes to your CRM records.
Most of the time, when Insycle can't find duplicates, it is due to your matching rules in Step 1. It is important to analyze the underlying data to better understand how to set up your rules. A helpful exercise for contacts is to set up your matching filters to find exact matches on only First Name and Last Name. For companies, you can use Company Name.
When you click Find, these rules can show you a broad overview of what duplicates are potentially in your database and what fields might be useful to include in your matching fields. These settings are just for discovery and should not be used for a final merge operation; many people can have the same first and last names and are not duplicates.
To get further context, on Step 2, click the layout gear button on the right side of the title bar. Here, you can add any field from your database as a column in the duplicate group review to better understand the data in these records. These will also appear in your CSV report.
You have duplicate records identified by Insycle, but not all are merging into the master. Check how many duplicates are in the affected groups. If you have duplicate groups with more than 5 records, you may want to change the Exclusions value at the bottom of Step 3 on the Master tab: Skip duplicate groups with more than 5 records per group to ensure you can get them all.
This setting is intended to prevent overly broad matching criteria from accidentally merging unrelated records. You can adjust this threshold up to 100 records per group.
Some fields are missing in the Fields tab dropdown in Step 3
Field rules in Step 3 can only update writable fields. Read-only fields are not shown in the Fields tab dropdown because the CRM prevents these properties from being written back. Insycle excludes them from the field selection options to prevent errors.
While you cannot create field rules for read-only properties in the Fields tab, you can use them in the Master tab. Read-only fields, such as "Last Activity Date," can be used to make merge decisions without attempting to modify those properties.
You can also use read-only properties for filtering and matching in Step 1. Read-only fields are also available when reviewing data in Step 2 or in the CSV report.
To identify which fields are read-only, use the Cleanse Data module. Navigate to Data Management > Cleanse Data, then select a database and record type from the top menu. You can search for a specific field by name or click the Writable heading in the table to sort and review all writable or non-writable fields. A checked box in the Writable column indicates the field is writable.
It can take Insycle a while to find and match duplicates when the fields used to identify them have very long values. The longer the values, the longer it takes Insycle to process the data and generate the results. This might come up when looking for matches based on long ID numbers, LinkedIn bio links, or other URLs with long strings attached (ex, https://www.linkedin.com/in/svadin%C3%ADr-n%C4%9Bmec-1234b31a3/).
You can speed this up by limiting how much of the value Insycle looks at.
If the beginning or ending portion of the values are all unique, you can limit the comparison to the first or last several characters using the Match Parts parameter under Step 1.
Or use the Ignore Text (Substrings) parameter, then click the Terms button.
On the Ignored Text tab of the popup, add the common portion of the URL or text string.
Occasionally, after you run a merge operation, you may see the message: "Underlying error message from Salesforce" in the Merge Result popup. This indicates there is an issue on the Salesforce side that needs to be investigated in Salesforce. One example of this error is shown in the screenshot below: "Underlying error message from Salesforce: Use one of these records?"
It's worth checking for any rules relating to the record type in the Duplicate or Matching Management settings for your Salesforce account.
Go to Setup > Data > Duplicate Management > Duplicate Rules or Matching Rules.
You may need to turn these rules off before Insycle can proceed with the merge to prevent the error. You can either completely disable them to manage all duplicates through Insycle or disable and enable the rules as needed.
If you are running a bulk merge operation on custom objects for the first time, you may see the message "Please contact support@insycle.com to enable bulk merge for type: [Custom Object Name]."
By default, you can manually merge custom objects that have been synced with Insycle, but before you can bulk merge duplicate custom objects, they must be enabled for your account. This message indicates the step has not been completed yet.
To enable bulk custom object merging for your account, please contact Insycle support by email or via the live chat at the bottom of every page on the Insycle website or in the app.
Learn more about using custom objects and fields in Insycle.
For more help troubleshooting issues with Insycle, refer to our Troubleshooting Issues article.
Frequently Asked Questions
Yes, Insycle can analyze leads and contacts together and deduplicate across those object types. See the Deduplicate Across Salesforce Leads and Contacts article to learn more.
Yes, Insycle solves numerous deduplication-related issues when Salesforce and HubSpot are syncing. See the Deduplicate Salesforce and HubSpot While Keeping the Sync Active article to learn more.
There are two ways to ensure the records you are merging are indeed duplicates.
First, always run your deduplication templates in Preview Mode before running them in Update Mode. This produces a CSV file showing how your records would have been merged. Then you can ensure that your Merge Duplicates template is working as expected and not merging non-duplicate records together.
Additionally, to ensure a smooth merge, consider narrowing the matching settings in Step 1. Try the Exact Match Comparison Rule instead of Similar Match. Then make sure that you are using actual, uniquely identifying fields—first name, last name, email, and phone number are popular choices. The more tightly defined your filter is, the less likely you are to merge non-duplicate records.
If the Message column of the CSV report displays this error:
Change rules in Step 3 'Master Selection'. Failed to pick master record because multiple records (X) meet the selection criteria. In 'Master Selection', change, add, or reorder the rules such that only one record matches (if cannot determine master based on field values, use 'Record ID is lowest' as the last rule).
None of the records meet more of the rules than the others do.
There are a couple of things you can try to resolve this:
- On the Master tab in Step 3, experiment with reordering or adding additional fields that are likely to have unique values.
- At the bottom of the Master tab in Step 3, ensure By Priority is selected, not Absolute.
With By Priority, your master record only has to match one rule. Using Absolute, your master record would have to meet all of the rule criteria. In most cases, it is best to select By Priority.
If By Priority was used, then none of the records in the duplicate group meet any of the criteria on the list more than the others. In this case, you'll need to experiment, reordering or adding additional rules for fields likely to have unique values. - As a last resort, you can add a rule on the Master tab in Step 3 that says Record ID is lowest, or Create Date is earliest.
Yes, Insycle allows you to select which field data to retain in the master record using the Fields tab in Step 3. See the Merge Duplicates module field data retention rules reference for more details.
No, matching fields do not need to match exactly. The Similar Match Comparison Rule in Step 1 acts as a fuzzy match, looking for values that may be close but differ by only one character (e.g., a typo), and broadens the search.
This search behaves like when Google shows results for a slightly different term or says, “Did you mean...” For example, if an Email of “huey@coahulldu.co” is found, it could include records with the values “hueyy@coahulldu.co" or "hue.y@coahulldu.co” as a match.
You should be careful when using Similar Match as the looser criteria can incorrectly identify non-duplicates as duplicates.
Review the Understanding Similar Matching best practices for more details.
Currently, neither HubSpot nor Salesforce provides an automated way to prioritize active owners during the merge process. You'd need to verify owner status manually for each merge operation.
However, Insycle's Merge Duplicates module includes an option to prioritize an active owner.
First, you could add a Master rule under Step 3 to tell Insycle to select the record from each group with an active owner as the master record.
Add a rule with the following parameters:
- Field: Record owner
- Condition: active user
Second, you could create a Field rule to retain the owner who is an active user.
Add a rule with the following parameters:
- Field: Owner
- Criteria: From record where value
- Condition: active user
I have a list of duplicates I need to merge. Can I deduplicate them using Insycle?
Yes. You can use an existing list of duplicates with Insycle to deduplicate it in bulk, following these steps:
- Prepare a CSV file with columns for the record IDs and a "Merge Master" column. In the "Merge Master" column, mark which record should be kept after merging.
- Create a custom field called "Merge Master" in your CRM.
- Use the Magical Import module to import your CSV file into the CRM, updating the "Merge Master" field for the relevant records.
- Go to the Merge Duplicates module and set up a filter to select records based on the "Merge Master" field.
Learn more about deduplicate records using a CSV.
By default, when merging records, Insycle will keep the master record values; if a master record has empty fields, Insycle copies values from the most recently updated record in the duplicate group where that data exists.
For example, if the master record's Industry field is empty but another record in the duplicate group has an Industry value, that value will automatically be copied to the master record.
Additionally, you can control what values are saved in the master record after the merge, regardless of the default merge behavior. By adding each field you want to control data retention for in the Fields tab under Step 3 of the Merge Duplicates module and selecting a Criteria, you can specify where Insycle should source the data for that field and how to handle it.
Any data that is not in the master or not copied to the master is removed.
Learn more about configuring data retention in the Field Data Retention Rules reference of the Module Overview article.
Additional Resources
Related Help Articles
- Deduplicate Salesforce and HubSpot While Keeping the Sync Active
- Customize Bulk Deduplication Using Exclusions and Pre-Defined Masters
- Deduplicate Across Salesforce Leads and Contacts
- Manually Merge Duplicates
Related Blog Posts
- Salesforce Duplicate Management: How to Automate Salesforce Deduplication
- How Duplicates, Lead-to-Account Matching, and Lead Routing Impact Each Other (and Your Whole Company)
- Data Retention When Merging: Keeping Critical Data For Better Customer Experiences
- Hidden Duplicates: 11 Advanced Ways to Identify & Deduplicate Customer Data