HUBSPOT CRM CASE STUDY

HubSpot Company Deduplication & Merge Automation Case Study

A controlled deduplication workflow combining full-dataset analysis, weighted primary-record selection, manual-review safeguards and scripted HubSpot API merging.

Client
Tim
Company
Not Publicly Named
Project Period
May to June 2026
Platform
HubSpot CRM
Project Type
CRM Data Quality + Automation

Executive Summary

A Clear Decision Behind Every Merge

Tim needed a duplicate-company cleanup that could work at scale without losing the records the business depended on. Tech Striker built a rule-led process: analyze the full dataset, choose the primary record, protect critical data, review exceptions and execute approved merges in controlled batches.

14,208

Records Identified for Merge

Under the selected Phone + Postal Code rule

4

Validation Rules Tested

Compared against the actual company dataset

14,111

Records Routed Through Manual Review

A dedicated review workload, not an automatic merge count

0

Eligible Merges Pending

Under agreed criteria at project completion

The Starting Point

A Large Portal. A Company-Data Problem.

Duplicate company records had accumulated across the CRM, affecting ownership, reporting and confidence in customer data. The task was to identify genuine duplicates and decide which record should survive, not simply combine anything that looked similar.

185.2K

Contact Records at Assessment

Approximate portal scale. The cleanup in this case study concerned company records.

At the time of the project, the portal’s native duplicate-management view exposed approximately 10,000 potential duplicates, so the full company dataset was exported for analysis.

Native Duplicate ReviewView Full Size ↗
Redacted HubSpot contact duplicate-review interface showing pair review and reject controls

The Challenge

Matching Was Only the First Decision

Hidden Scale

The native duplicate view exposed only part of the problem during the project. Full-dataset analysis was needed.

Inconsistent Data

Empty fields, postal-code variations and non-standard domains could turn simple comparisons into false matches.

Irreversible Merges

Records could not simply be unmerged. Choosing the wrong pair could permanently combine separate companies.

Look-Alike Companies

Branches, franchises and regional entities could share contact details while remaining legitimate separate records.

Large Volume

More than 14,000 records required merge consideration. One-by-one execution was not practical.

Limited Client Sign-Off

The client could not inspect every edge case. Clear protection rules and a structured review process were essential.

See the Full Dataset

Analyze Beyond the Visible Queue

Exporting the company data made it possible to evaluate every record, compare matching criteria and build a review process around the client’s business rules. Empty and null values were excluded from comparisons, postal codes were normalized and domains were standardized.

01Export

Full company dataset

02Normalize

Usable, consistent values

03Compare

Tested matching rules

04Review

Explicit merge decisions

Match-Rule Testing

Choose the Rule That Fits the Data

Four validation rules tested on this company dataset
Validation RuleProject Evaluation
Company Name + PhoneA name-and-phone comparison
Company Name + Domain + Phone + Postal CodeA multi-field validation rule
Company Name + Domain + Postal CodeAn alternative without the phone field
Phone + Postal Code14,208 records identified for mergeSelected with client approval

Primary Record Selection

Decide Which Record Should Survive

A weighted scoring model helped select the primary record within each duplicate group. The model considered completeness, ownership and activity alongside record age. Business-protection rules could override an otherwise straightforward match.

Record Age

Consider how long the record has existed.

Phone Availability

Check whether a phone value is available.

Domain Availability

Account for populated domain information.

Company Owner

Consider existing ownership of the record.

Recent Activity

Review activity associated with the company.

Industry

Include available industry information.

Protect Business-Critical Data

Keep the Records the Business Relies On

Active Customers

Protect customer and current/active-customer records from merge or deletion.

Partner-Program Data

Prioritize records carrying business-critical partner-program values.

Linked Service Records

Retain records with linked service activity under the client's protection rules.

Open Tasks

Consider outstanding work before deciding which record survives.

Multi-Location Companies

Handle branches and separate locations without assuming they are duplicates.

Overlapping Conditions

Route conflicting protection conditions to manual review.

Human Review

Automation Had a Deliberate Boundary

Duplicate groups were classified before execution. Ambiguous matches, branches and overlapping protection conditions stayed in review. A team of four shared the manual-review workload, with an approval column recording Approved to Merge or Do Not Merge.

14,111Records Routed Through Manual Review
SAFE AUTO MERGEMANUAL REVIEWREVIEWBRANCH REVIEWREVIEW BEFORE MERGE
Company Review and Primary-Record SelectionView Full Size ↗
Redacted company review sheet with match indicators, review classifications, scoring and primary or secondary roles

Scripted Merge Automation

From Approved Decisions to Controlled Execution

Merging around 14,000 records one by one would have been slow and error-prone. The approved Google Apps Script tool called the HubSpot API, with dry runs, result logging and validation between batches. When the client revised the criteria, the merge conditions were rebuilt to reflect the new direction.

Google Apps Script Merge ToolView Full Size ↗
Google Apps Script deduplicateCompanies function and generic spreadsheet column structure

Canonical ID Chaining

Track the surviving HubSpot ID when a previously merged record is referenced later.

Exponential Backoff

Back off and retry when API rate-limit constraints are encountered.

Dry-Run Mode

Preview intended merge actions before executing them in HubSpot.

In-Sheet Result Logging

Record merge results, response codes and retry counts alongside the review data.

Custom Merge Menu

Run a batch or dry run, and start or stop a scheduled auto-run directly from Google Sheets.

Controlled Batching

Process smaller batches and validate each output before continuing.

The Workflow

A Repeatable Route From Export to Validation

  1. 01Full Company Export
  2. 02Normalize Data
  3. 03Apply Match Rule
  4. 04Group Duplicates
  5. 05Score Primary Record
  6. 06Apply Protection Rules
  7. 07Safe Auto Merge or Manual Review
  8. 08Dry Run
  9. 09HubSpot API Merge
  10. 10Log Result
  11. 11Validate Batch
  12. 12Continue

Execution and Traceability

Run, Inspect and Validate Each Batch

Batch RunDry-Run PreviewScheduled Start / StopIn-Sheet Logging
Merge Controls and Execution LogView Full Size ↗
Google Sheets HubSpot Merge menu with batch, dry-run and scheduled controls, plus mixed merge outcomes and API response logging

The execution capture includes both failed and merged attempts, with HTTP response codes and retry counts. It shows the logging process, not an all-success completion screen.

Technologies Used

Connected Through the Existing Toolset

  • HubSpot CRM
  • HubSpot API
  • Google Apps Script
  • Google Sheets
  • CRM Data Export
  • Operations Hub Trial

The Outcome

Resolved Under the Agreed Criteria

All company records eligible under the client-approved rules were processed. Duplicate groups resolved to selected primary records, while protected customer and business-critical records were retained. The final sheets preserved the primary/secondary mapping and merge results.

0

Eligible Merges Pending

At completion, under the agreed criteria.

  • Selected primary records retained
  • Protected records preserved
  • Merge outcomes logged
  • Final record mapping delivered
  • Repeatable process documented
  • Client handover completed

Project Summary

Cleaner Company Data, With a Process to Continue

The result was a controlled company-deduplication workflow, supported by review sheets, client-specific rules and API automation. The handover gave the next stakeholder a documented way to continue the work. Contact-level deduplication was identified as a possible follow-on phase, not part of this completed company cleanup.