---
title: How Jon Mogard Fixed 18,000 Duplicate HubSpot Records for a Swedish SaaS Company (with Koalify)
description: HubSpot consultant Jon Mogard shares how he cleaned up 18,000 duplicate records for a Swedish SaaS company using Koalify. Discover how enrichment, smart workflows, and automation unified their CRM data across ERP, e-commerce, and licensing systems.
---

[Blog](https://koalify.io/blog)

# [How Jon Mogard Fixed 18,000 Duplicate HubSpot Records for a Swedish SaaS Company (with Koalify)](https://koalify.io/blog/how-jon-mogard-fixed-18000-duplicate-hubspot-records-for-a-swedish-saas-company-with-koalify)

 Written by [Jonas](https://koalify.io/blog/author/jonas) | October 8, 2025

When you connect multiple systems to HubSpot — ERP, e-commerce, licensing, and a legacy CRM — data chaos is almost guaranteed.  
That’s exactly what happened to a Swedish SaaS company in the construction industry: thousands of duplicate companies, conflicting IDs, and outdated records slowed down sales, confused support teams, and inflated marketing data.

In this episode of *How I Fixed Your Data*, **Jon**, a HubSpot consultant with over 11 years of experience, explains how he used **Koalify** to clean and merge **18,000 duplicate records** — turning fragmented systems into a single, reliable CRM.

🎥 **Watch the full conversation with Jon:**

 

## The Industry Problem: Siloed Systems = Duplicate Chaos

The client is a **Swedish SaaS company in the construction industry**, co-owned by several large construction firms. Their purpose: to share knowledge, standards, and licensing information through a digital platform and regular in-person briefings.

Over the years, they built an ecosystem of **in-house systems and integrations**, including:

- An ERP for billing and accounting
- A custom-built licensing and user management platform
- An e-commerce system for digital products
- A legacy CRM called **SuperOffice**
- Plus marketing tools, help desk, and analytics systems

When all these systems were connected to HubSpot Enterprise, every import and sync brought along duplicates.

### The result:

- Sales didn’t know which company to attach deals to.
- Marketing sent duplicate emails to the same person.
- Customer support handled the same organization multiple times under different records.
- Reporting was unreliable — totals, ARR, and segmentation were all off.

As Jon describes: “We expected duplicates, but not on this scale. Once all the data landed in HubSpot, we realized how much overlap there really was.”

## The Fix – From Enrichment to Automation

Before diving into merging, Jon’s team needed to *trust* the data.

### Step 1: Enriching Company Data with UC (the Swedish Registry)

Sweden has a national company database called **UC (Upplysningscentralen),** similar to other business registries in Europe.  
Jon’s team built an integration to automatically **enrich companies in HubSpot** using UC data:

- Verified company name and registration number
- Industry classification and company size
- Turnover and employee count

This enrichment allowed them to **identify true duplicates** with confidence — even when domain names or email formats differed.

> “We couldn’t rely on domain names because subsidiaries often shared the same domain. Once we had official company names and business IDs, we knew exactly what was a duplicate.”

### Step 2: Smarter Deduplication with Koalify

HubSpot’s default deduplication tool wasn’t enough, it could only compare simple fields like email or company domain.  
**Koalify** offered a more flexible and automated approach.

**Duplicate rules:**

- Company Name
- Organization Number (Business ID)
- VAT Number

**Primary record logic:**

- Prefer companies enriched with UC data
- Prefer records originating from the old SuperOffice CRM (the cleanest dataset)
- Prefer companies with more active subscriptions and deals

> “Koalify let us merge based on real business logic, not just text matches. That made it safe to automate thousands of merges.”

### Step 3: Handling HubSpot’s New Merge Behavior

When HubSpot updated how it handles merges (creating a new record instead of keeping the old one), it caused problems for systems connected via the API.

To solve this, Jon created a **workflow-based workaround**:

1. Mark the soon-to-be-deleted companies with a “Deleted = Yes” flag before merging.
2. Delay the merge by four hours to let other systems sync.
3. Perform the merge using **Koalify’s workflow action**.
4. Run a follow-up workflow that clears the deletion flag on the surviving record.

This ensured that external systems could safely identify which companies to keep or remove.

> “It’s a bit of a hack, but it works beautifully. Now the external systems always know which company survived the merge.”

### Step 4: Tackling Contact Duplicates

Company merges were straightforward — contact duplicates were trickier.  
Swedish naming conventions (with many shared last names) made simple name-based matching risky.

The solution:

- Match on **First Name + Last Name + Company Name (synced from UC)**
- Exclude the largest enterprise clients from automated merges
- Use manual review for uncertain duplicates
- Add phone number logic when available

This hybrid approach balanced safety with efficiency.

## Results for the Client

The results were immediate and measurable:

- ✅ **18,000 duplicate companies merged automatically**
- ✅ **8,000 duplicate contacts cleaned up**
- ✅ **Unified data across ERP, e-commerce, and licensing systems**
- ✅ **Increased confidence in HubSpot reporting**
- ✅ **Sales, marketing, and support teams now work from one source of truth**

> “The sales team trusts HubSpot now. They no longer have to double-check everything in the ERP before taking action.”

## Lessons Learned

### 1. Clean Early or Plan for Cleanup

If you can, clean up before importing into HubSpot.  
If not, plan for a cleanup phase immediately after launch — with the right tools in place.

### 2. Use Enrichment to Identify True Duplicates

Official business registries like UC (Sweden), KBO (Belgium), or Handelsregister (Germany) can make duplicate detection far more accurate.

### 3. Don’t Fear Automation, Just Design It Well

Koalify’s rules and workflows allowed Jon to merge safely at scale without losing control.

### 4. Expect Merge-Sync Challenges

HubSpot’s merge behavior may create new record IDs; design workflows to keep external systems in sync.

> “You can’t trust data until it’s unified, but once you do, HubSpot becomes an entirely different platform.”

## FAQ

**Q: Why not use HubSpot’s built-in deduplication?**  
A: It only compares limited fields (like email or domain). Koalify allows flexible, multi-field logic and automation.

**Q: How did UC enrichment help with duplicates?**  
A: It ensured company names and registration numbers were accurate, creating reliable identifiers across systems.

**Q: How did Jon handle HubSpot’s merge API issue?**  
A: By flagging records before merge and clearing them after sync — ensuring connected systems stayed aligned.

**Q: What were the results after cleanup?**  
A: Over 18,000 company duplicates and 8,000 contact duplicates merged, improving reporting and team efficiency.

[View full post](https://koalify.io/blog/how-jon-mogard-fixed-18000-duplicate-hubspot-records-for-a-swedish-saas-company-with-koalify)

```json
{
  "@context" : "http://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Jonas"
  },
  "dateModified" : "2026-02-09T20:26:34.819Z",
  "datePublished" : "2025-10-08T08:46:03Z",
  "headline" : "How Jon Mogard Fixed 18,000 Duplicate HubSpot Records for a Swedish SaaS Company (with Koalify)",
  "image" : {
    "@type" : "ImageObject",
    "height" : 522,
    "url" : "https://koalify.io/hubfs/How%20Jon%20Mogard%20Fixed%2018%2c000%20Duplicate%20HubSpot%20Records%20for%20a%20Swedish%20SaaS%20Company%20%28with%20Koalify%29.png",
    "width" : 926
  },
  "mainEntityOfPage" : "https://koalify.io/blog/how-jon-mogard-fixed-18000-duplicate-hubspot-records-for-a-swedish-saas-company-with-koalify",
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "height" : 60,
      "url" : "/hs/hsstatic/content_shared_assets/static-1.4092/img/default-amp-logo.png",
      "width" : 60
    },
    "name" : "Blog"
  }
}
```