How to Merge Duplicate Contacts, Companies, Deals, Tickets, or Custom Objects
You have multiple records that represent the same underlying entities in your HubSpot database. These duplicates hinder your marketing team's ability to effectively filter and personalize your communications. Sales teams step on each other's toes and lack vital context in conversations. Support teams miss important information, and analysis and reporting are skewed.
The Merge Duplicates module can identify duplicate contacts, companies, deals, or custom objects and merge them flexibly, in bulk. You set rules for determining the master record that other duplicates will be merged into—such as the first record created, record with the most email opens, or any other field.
Process Summary
- Set rules to identify duplicates.
- Review and analyze the identified duplicates.
- Configure merge logic—choose Bulk mode, set master selection rules, and specify field data retention.
- Deduplicate your records in HubSpot.
Step-by-Step Instructions
Step 1: Configure Rules to Identify Duplicates
Navigate to Data Management > Merge Duplicates, pick the object type, and explore the default templates for a pre-built solution.
Set Your Matching Fields
Matching fields tell Insycle which fields to compare across records. When two or more records have the same values in all of your matching fields, Insycle groups them together as potential duplicates.
For example, to find duplicate contacts, you might match on First Name, Last Name, and Email Domain. Records that share the same value in all three fields will be flagged as a duplicate group.
Add a field by clicking + Field. Remove a field by clicking the X at the end of the field row.
When you're done, click Find. Insycle will scan your records and generate a list of potential duplicates for you to review in Step 2.
Expand Criteria for Matching Duplicates
After adding fields on the Simple tab, you can use the Advanced and Conditions tabs to further customize your options for the selected fields.
If you'd like to look at the data in two different fields (that contain similar data) as if it were one, you can set up Related Fields under the Advanced tab. For example, you might want to look at both the Email and Additional Email fields for duplicate values.
The Conditions tab provides rules that one or more records in a duplicate group must meet.
Not seeing the results you expected? Return to the Simple tab and try loosening your criteria — for example, switching to Similar Match, adding a Related Fields rule, or removing one of your matching fields.
For a full reference of all matching options, conditions, and advanced configuration, see Setting the Criteria for Finding Duplicate Matches.
The CSV tab lets you upload a list of known duplicate record ID pairs directly into the Merge Duplicates module, bypassing field-based matching entirely. For complete details, see Merging Duplicates from a List You Already Have.
Step 2: Analyze the Identified Duplicates
After clicking Find, Insycle displays your results as a list of duplicate groups in Step 2. Each row represents a set of records that matched your Step 1 criteria — click the chevron at the right end of a duplicate group row to expand it and see the individual records.
Spot-Check Your Results
Before moving forward, take a few minutes to review several groups:
- Confirm the matches are accurate. Open a handful of groups and verify that the records truly represent the same person or company. If you're seeing records grouped together that shouldn't be, return to Step 1 and tighten your matching fields.
- Look for patterns. Notice which records tend to have the most complete data, the most recent activity, or other valuable attributes. This will inform how you set your master selection rules in Step 3.
- Start forming a sense of which record should become the master. The master record is the one that survives the merge — all other records in the group are merged into it and removed. Common approaches include keeping the oldest record, the most recently updated record, or the one with the highest engagement.
Here, you can also exclude a duplicate group from all future deduplication analysis by clicking the X on the group row. Learn more about adding and removing duplicate groups from the Exclusions list in the Tips for Better Results below.
Add Columns for Better Analysis
By default, Step 2 displays the fields you used in Step 1. To see more context about your records, click the gear icon at the right end of the Step 2 header to add columns.
Consider adding fields like owner, create date, lifecycle stage, or engagement metrics — anything that will help you evaluate which record is the strongest candidate for master. Any fields you add here will also appear in the CSV report generated in Step 4.
Step 3: Configure Merge Logic
In Step 3, you define how your duplicates are merged. You'll choose your operation mode, set rules for which record becomes the master, and optionally control which field values are retained after the merge.
Choose Your Operation Mode
At the top of Step 3, select Bulk or Manual mode:
- Bulk mode (recommended) — Automatically merges all duplicate groups according to your master selection rules. This is the right choice for most deduplication operations and is required for Templates, Recipes, and Automation. Bulk mode also supports the Exclusions feature in Step 2, which lets you permanently skip entire duplicate groups from being merged.
- Manual mode — Lets you select specific records to merge one at a time from the Record Viewer. Reserve this for high-value records or complex situations that require hands-on review of each merge. Learn more about merging using Manual mode.
Most users should select Bulk mode and proceed.
Set Master Selection Rules (Master Tab)
On the Master tab, define which record becomes the master in each duplicate group. Insycle evaluates your rules in order from top to bottom — the first record that uniquely matches a rule becomes the master.
For example, you might prioritize records with active owners, or select the contact with the highest engagement score, or the company with the most associated deals.
See Choosing Which Records to Merge Using a CSV for a full breakdown of all rules and options.
Customize Field Data Retention (Fields Tab)
On the Fields tab, 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 only need to visit the Fields tab if you have fields that require special handling—for example, combining notes from all duplicates, preserving a specific lifecycle-stage value, or retaining record IDs in a custom tracking field. Otherwise, the default behavior is a reasonable starting point for most merges.
See Keeping the Right Data When Records Merge for all available criteria and conditions.
Select Merge Method (Method Tab)
The Method tab lets you choose between Native and Synthetic merge. Most situations should use the default Native merge. Synthetic merge is intended for specific scenarios, such as when the HubSpot-Salesforce sync is enabled. For full details on when and why to use each method, see Native vs. Custom Merge: Two Ways to Combine Records in HubSpot and Salesforce.
Step 4: Preview and Run the HubSpot Merge Operation
Before applying any changes to your HubSpot database, Insycle lets you preview exactly what will happen. Always run a preview first.
Preview Your Changes
Under Step 4, click the Review button and select Preview mode.
On the Notify tab, you can add recipients who should receive the preview report and include any additional context. On the When tab, click Run Now. If you have a large number of duplicate groups, consider limiting the preview to a smaller batch to review more quickly. Then click Run Now to generate the report.
Insycle will email you a CSV report. Open it in a spreadsheet application and review the results. Each duplicate group appears as a set of rows. Look for the Status column to understand what Insycle is planning to do:
Duplicate — This record will be merged into the master and removed.
Master — This is the record Insycle selected as the master based on your Step 3 rules. Confirm these selections look correct.
Master (After) — This row shows the field values the final merged record will contain. Review this carefully to confirm your field retention rules are working as expected.
Error — Insycle could not determine a master record for this group. See the Merge Duplicates Troubleshooting article for next steps.
If the preview looks good, return to Insycle and proceed to Update mode. If something looks off, return to Step 3 and adjust your master selection or field retention rules, then run another preview.
Apply the Merge to Your HubSpot Records
When you're satisfied with the preview results, it's time to apply the changes.
Under Step 4, click Review and select Update mode. On the When tab, select Run Now. If this is your first time running this configuration, consider starting with a small batch to verify the results — including association reassignments — directly in HubSpot before processing all records.
If the Merge API is set to Synthetic on the Module tab in Step 3, clicking Run Now in Update Mode displays a Please confirm dialog before the operation begins. This dialog shows the number of records being merged and an estimated time for the operation.
Click Yes to proceed.
Processing time for Synthetic merges depends on the volume of associated records and complexity of data to be reassigned; it will be longer than for Native merges — avoid running multiple operations in parallel on the same database. You can monitor progress in the Activity Tracker.
Once you're confident in the results, you can run the full operation.
Next Steps: Save, Automate, and Schedule
Once you've confirmed that your merge operation is working as expected, you can save your configuration and set it up to run automatically — so your HubSpot data stays clean without manual effort.
Save Your Configuration as a Template
Return to the Template menu at the top of the page and click Copy to save your current configuration as a new template. Click the pencil icon to give it a meaningful name.
Saving as a template preserves all of your Step 1 matching rules, Step 3 merge logic, and notification settings so you can reuse or refine them later.
Learn more about Templates.
Set Up Automation
Under Step 4, click the Review button, and select Update mode. On the Notify tab, choose the send option appropriate for your needs — Always send, Send when errors, or Do not email — and confirm your recipient list.
On the When tab, select Automate and configure how frequently you'd like the operation to run. Click Schedule when finished.
You can view and manage all scheduled Automations at any time from the Operations > Automations page.
Learn more about Insycle automation.
Bundle into a Recipe
When you have multiple templates that work reliably together — for example, separate templates for contacts, companies, and deals — you can combine them into a Recipe. A Recipe runs your templates in sequence, in the order you define, on a consistent schedule.
To trigger a Recipe from a HubSpot Workflow, set it to Execute as HubSpot Workflow Action. This allows you to incorporate Insycle deduplication directly into your HubSpot automation processes.
Learn more about Recipes and integrating Recipes with HubSpot workflows.
Need More Control Over Which Records Are Merged?
If your scenario requires selecting specific records to include or exclude that can't be handled with matching rules alone, you have three options:
If you already have a list of known duplicates, such as an export from HubSpot's manage duplicates tool, you can upload a CSV file of duplicate record ID pairs directly into the Merge Duplicates module using the CSV tab in Step 1.
For more complex scenarios — such as designating master records or excluding specific records using custom attributes — you can use the Merge Duplicates module in combination with Magical Import. Learn how to choose which records to merge using a CSV.
To handle records one at a time, use Manual mode in the Merge Duplicates module. Learn more about merging duplicates one at a time.
Tips for Better Results
Use a filter to work with a subset of your data
If your database is large or you're getting an overwhelming number of duplicate groups, use the Filter button in Step 1 to narrow down the records Insycle analyzes. Filtering to a subset — for example, contacts created in the last 30 days, or companies in a specific region — makes it easier to validate your configuration before running it across your full database. A filtered dataset also processes faster.
To add a filter, click the Filter button in Step 1, choose a field, select a condition, and set a value. The filter is applied before the matching step runs.
Most of the options in the Field dropdown match the fields that are found in your HubSpot records, and for contact records, there are three additional options related to the Email value:
- Email Username: The portion of the email address before the “@.” For example, if the email address were “maria@acmewidgets.com,” the username value would be “maria.”
- Free Email Provider Domain: Choose True to filter out records where the email domain is Gmail, Hotmail, Yahoo, or any of about 10,000 other free email providers. This filter helps ensure these are real clients, or can determine which record is the legitimate one, because it’s most likely that customer companies aren't using free Gmail accounts (though a contact may have accidentally emailed us from one at some point).
- Email Top-Level Domain: The top-level domain (TLD) is everything that follows the final dot of a domain name. For example, in the domain name acmewidgets.com, '.com' is the TLD. Some other popular TLDs include '.org', '.uk', and '.edu'.
Start narrow, then broaden
When setting up your matching fields for the first time, start with your highest-confidence criteria — fields that, together, are very unlikely to match unless the records are true duplicates. Exact Match on email address plus first and last name is a reliable starting point for contacts. Domain Name is a strong starting point for companies.
Once you're confident your configuration is catching true duplicates without pulling in false positives, you can broaden your criteria — for example, by adding Similar Match to catch typos and slight variations:
Or, by using Related Fields to compare values across two fields that contain similar data (such as Email and Additional Email).
Understanding how master selection works
Insycle evaluates your Master tab rules from Step 3 in order, eliminating records that don't match each rule until only one remains. If multiple records still match after all rules are evaluated, no master can be determined, and the group will show an error in the CSV.
For example, imagine having four duplicate records for the same contact. (In this image, we are examining the records in the Grid Edit module.)
In the Merge Duplicates module, you have configured the first three Master rules based on email engagement metrics, but all four records have identical values of zero, so no records are eliminated. Your fourth rule checks for an active Contact Owner — three records have no owner, so they're eliminated. The one remaining record becomes the master.
This is why rule order matters. Place your most reliably differentiating rules — like record owner, lifecycle stage, or engagement activity — where they're most likely to yield a clear winner. If you're frequently seeing errors in your CSV, revisit your rule order and consider adding a tiebreaker rule, such as earliest Create Date or latest Last Modified Date, as a final fallback.
In this CSV report example, you can see that the one record with an active owner was chosen as the master.
Even though this was the fifth rule, it is the first one that matched only one record:
When Insycle processed the first three rules—Marketing emails clicked, emails bounced, and emails opened—Insycle couldn't eliminate any records because they all had a value of 0.
None of the record email addresses are "role-based," so there isn't a single choice for the master using the Email rule either.
In the next rule about contact owner, there is one record with an active contact owner; therefore, that is the master record.
Exclude duplicate groups from deduplication
By default, all duplicate groups identified in Step 1 are candidates for merging. If there are specific groups you want to permanently prevent from being merged — regardless of which matching rules or templates you use — you can add them to the Duplicate Groups Exclusion List directly in Step 2.
Note that this feature applies only to Bulk mode. If you are using Manual mode in Step 3, use the record checkboxes to deselect individual records instead.
To exclude a duplicate group:
In Step 2, click the X on a duplicate group row. The group will be added to the Exclusion List and will no longer appear in duplicate analysis 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. This opens a dialog showing all excluded groups.
You can expand each group to view the individual records and their values, and use the Layout tab to configure which fields are displayed. To remove a group from the Exclusion List, click the X next to it — those records will once again be considered during duplicate analysis.
Important considerations:
- Exclusions apply to Bulk mode only and to the entire duplicate group — they cannot be applied to individual records within a group. If you need to exclude a single record rather than the entire group, switch to Manual mode in Step 3 and uncheck the records that should not be merged.
- Exclusions are based on a specific set of record IDs. If a new duplicate record is later added to your CRM, the system may detect a new group containing that record alongside previously excluded records. Because the group now includes a different set of record IDs, it will appear again during duplicate analysis and can be evaluated or excluded as needed.
Explore additional deduplication techniques that address a variety of challenges in our Common Scenarios articles.
HubSpot Specific Considerations
Supported HubSpot Object Types
Insycle supports merging the following HubSpot object types:
- Companies
- Contacts
- Courses
- Deals
- Leads
- Line Items
- Listings
- Orders
- Tickets
- Custom Objects
Insycle <> HubSpot Merge Logic
When you merge HubSpot records using Insycle, properties are handled in the following way:
Contacts
- Record ID: A unique Record ID is created for the new resulting merged record.
- Email address: The email address from the master record becomes the primary, and the duplicate email addresses are added as additional email addresses.
-
Fields/Property values:
- To customize how field data is retained in the master record on a field-by-field basis, use the Field tab under Step 3.
- 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 history.
- Certain specific fields are uniquely handled by HubSpot. These will trigger special messages in the CSV that indicate how values are retained. See the table "Special CSV messages for select HubSpot contact fields" below for details.
- Associated deals, contacts, companies, and any other objects: Reassigned from the duplicates to the master.
- Activities (notes, emails, tasks, etc.): Reassigned from the duplicates to the master.
- Attachments: Reassigned from the duplicates to the master. (Note that there may be a short delay before the attachment appears in the merged record.)
Companies
- Record ID: The Record ID from the master record is kept when HubSpot-Salesforce sync is enabled (uses Synthetic merge by default). Otherwise, a unique Record ID is created (uses Native merge by default).
- Domains: Copied from the duplicates into the master and appended as secondary domains to avoid future duplicates with the same domain.
-
Fields/Property values:
- To customize how field data is retained in the master record on a field-by-field basis, use the Fields tab under Step 3.
- 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 history.
- Parent company associations: If you don't configure this field in Step 3 on the Fields tab and the master record has no parent company, Insycle automatically keeps the parent company from the most recently modified duplicate record that has one. To override this behavior, configure the Parent Company field on the Fields tab of Step 3.
- Associated deals, contacts, companies, and any other objects: Reassigned from the duplicates to the master.
- Activities (notes, emails, tasks, etc.): Reassigned from the duplicates to the master.
- Attachments: Reassigned from the duplicates to the master. (Note that there may be a short delay before the attachment appears in the merged record.)
Courses, Deals, Leads, Line Items, Listings, Orders, Tickets, and Custom Objects
- Record ID: A unique Record ID is created for the new resulting merged record (uses Native merge by default). When using Synthetic merge, the Record ID from the master record is kept.
- All other properties, apart from Domain, follow the same merge logic as company records.
Learn more about HubSpot's merging behavior.
Special CSV messages for select HubSpot contact fields
When you include certain fields in Step 3, Master rules, a special message will appear in the Master (After) row of the CSV. These fields do not follow the standard merge logic, and the message lets you know how HubSpot will choose the value. This applies to the following fields:
| Field | Master (After) message |
|---|---|
| Lifecycle Stage | Stage furthest down the funnel |
| Number of Form Submissions | Added together with the values for each contact |
| Number of Unique Forms Submitted | Added together with the values for each contact |
| Marketing contact status | Most marketable status is kept |
| Number of Pageviews | The total number of page views for both contacts combined |
| Original Source | The oldest value for the original traffic source property is kept unless the source has been manually updated. In that case, the manually updated value will remain. |
| Legal basis for processing contact data | The most recent values from both contact records are kept |
See HubSpot's contact merge exceptions info to learn more.
Insycle Merge Process
When merging HubSpot records, Insycle goes through the following steps:
- Select the master record according to the rules set in Step 3: Merge Logic, Master tab.
- Determine field values to retain in the master record based on rules configured in Step 3: Merge Logic, 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 #2 (from Field rules).
- Adding the non-empty values identified in #3 using the "fill in the blanks" approach (unless this is disabled on the Method tab).
- Preserve 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.
Native Merge vs. Synthetic Merge
There are unique features and applications for HubSpot's Native merge functionality compared to the Synthetic merge capabilities provided by Insycle. While both methods may be available for most object types, the default method varies. This option is available on the Method tab under Step 3.
| Native HubSpot Merge | Insycle’s Synthetic Merge | |
| Availability | This is the default option for all object types except companies when the HubSpot-Salesforce sync is enabled | Available for all object types except contacts. This is the default for companies when the HubSpot-Salesforce sync is enabled. |
| Merge Logic | Uses HubSpot’s built-in merge logic | Insycle’s customizable merge logic |
| Record ID | A unique Record ID is created for the new resulting merged record in HubSpot | The Record ID from the master record is kept. There is no new record |
| Associated Leads on Companies | When merging companies, associated leads from the duplicate companies will appear in the master company after the merge. | When merging companies, Insycle automatically recreates leads from the duplicate companies and associates them with the master company. These new leads retain the same name, type, stage, and owner. Learn more |
| Track Changes |
In HubSpot: Record Activity tab for merged events and IDs |
In HubSpot: Custom Insycle Run ID fields or Merged Record ID fields In Insycle: Activity Tracker and reports |
When to use the synthetic merge:
- Record ID: When you want to retain the master record and record ID instead of creating a new record.
- Salesforce Integration: To merge companies when the Hubspot Salesforce integration is enabled.
- Parent-child relationships: If you have complicated parent-child associations that aren’t merging properly, synthetic merge can automatically handle reassigning relationships.
- 250+ duplicates: HubSpot limits the number of duplicates that can be merged into a single record to 250. Synthetic merge lets you bypass this cap.
- Revert: If there's a chance you want to unmerge records. Learn how to partially restore merged duplicates and undo the changes to the master records.
Note that due to its complexity, the Synthetic merge may take longer to run than the Native merge.
Merging Child or Parent Companies While Retaining Associations
When deduplicating child/parent companies in HubSpot, Insycle can detect even the most complex company hierarchy associations, ensuring that the correct child company master records are associated with the correct parent company master records after the companies are merged.
Parent Company Retention: During the merge, if a duplicate company has a parent company and the master company does not, Insycle keeps the parent company from the most recently modified duplicate that has one and applies the Parent label.
Customizing Parent Company Selection: To control which parent company value is retained, configure the Parent Company field in Step 3 on the Fields tab. You can choose to keep the master's value even if empty, select from a record that has a parent company, or base the selection on other field criteria.
Insycle Run ID Property in HubSpot
When working with HubSpot, for every Insycle operation that updates or creates a record, the Run ID will be updated in the custom property, Insycle Run ID.
If the Insycle Run ID doesn't already exist in your HubSpot database, add it as a custom property with the label "Insycle Run ID" to each object type as needed.
This object label is the only requirement for the integration to work properly. It's not dependent on the internal name or underlying API field name.
When using an Insycle Recipe that includes templates for more than one object type, such as companies and contacts, the same Run ID will appear in both HubSpot records.
Additional Resources
Frequently Asked Questions
Check out the Merging Duplicates FAQ for help with questions about merging HubSpot duplicates.
Related Help Articles
- HubSpot Merge Duplicates Module Overview
- HubSpot Custom Objects
- Deduplicate HubSpot & Salesforce While Keeping the Sync Active
- Solve Salesforce and HubSpot Sync Issues
- Deduplicate HubSpot Companies and Salesforce Accounts
Related Blog Posts