HubSpot Guides for B2B Teams | Strocido Blog

How to Clean Up Messy HubSpot CRM Data Before It Ruins Your Pipeline

Written by Christian Stroupe | Oct 27, 2026, 11:39:00 PM

If your team has stopped trusting what HubSpot shows them, messy CRM data is usually the reason. Reps stop opening records that don't help them, leadership falls back on gut feel because the reports don't add up, and the pipeline fills with deals that look real but won't close.

The cost of messy data is also growing. AI tools inside HubSpot read the same data your team does, but they can't tell when it's wrong. A person learns to ignore a report they don't trust. AI takes the bad data as input and gives back a confident answer, and that answer can drive your automations and your decisions.

This post walks through how to clean up messy HubSpot CRM data in the order that keeps it clean: find where the mess comes from, fix the system that lets it in, and then clean up what's already there.

What are the signs your HubSpot CRM needs a data cleanup?

The clearest sign your HubSpot CRM needs a data cleanup is that your team has stopped trusting it: reps work around it, and leadership second-guesses the reports built on it.

Here are the most common signs, and what each one usually points to:

Sign What it usually points to
Reps keep notes and deal details outside HubSpot Records are cluttered with fields that don't help reps in their daily work
Leadership questions the numbers in pipeline reports Key deal fields, like amount or close date, are often empty or out of date
The same person or company shows up more than once Imports, forms, or integrations are creating duplicate records
Records are missing information your team needs, like deal amounts or contact owners Nothing asks for that information at the moment someone has it
Several properties ask the same question Properties get created on the fly, and nobody owns that process
Nobody believes the lifecycle stages on contacts or companies Lifecycle stages were never clearly defined, or never get updated
Records have no owner, contact, or company attached Records are being created without the details your team needs to act on them

If two or three of these sound familiar, the data isn't just untidy. It's costing your team its trust in the system, and fixing it starts with understanding what's causing it.

What causes messy data in HubSpot?

Messy data in HubSpot is usually caused by how the system was built, not just by the people using it.

It's easy to blame reps. Salespeople tend to take the path of least resistance, not out of bad intent, but because they're hired to sell, not to maintain a CRM. When the system makes updating a record slow and confusing, reps skip it. That makes the system the thing to fix.

Here are the three causes we see most often, what each looks like inside a portal, and what it leads to:

Cause What it looks like What it leads to
A system that doesn't help reps or enforce the process Records crowded with empty and irrelevant properties, and nothing that requires key fields at the moment they matter Reps stop opening records, fields stay blank, and the team stops trusting the data
HubSpot owned by someone who already has a full-time job A head of marketing or VP of sales building things quickly in between their real responsibilities One-off builds that don't work together as a system, plus properties and workflows nobody fully understands
Unprotected entry points Imports, forms, integrations, and workflows creating records with no structure or checks A steady flow of duplicate and incomplete records that buries the team faster than anyone can clean them up

Each of these causes is a design problem, which means each one can be fixed. The rest of this post walks through how.

How do you clean up messy HubSpot CRM data?

To clean up messy HubSpot CRM data, work through these five steps in order:

  1. Find where the messy data is coming from.
  2. Define the data your business needs.
  3. Stop new messy data at the source.
  4. Set up HubSpot so your team keeps data clean.
  5. Clean up the data that's already there.

The order matters as much as the steps. If you clean existing records before you fix what's creating the mess, new bad data keeps flowing in while you work. The cleanup drags on, and it feels like you never get ahead. Fixing the source first means every record you clean stays clean.

Step 5 covers several kinds of cleanup, and each one has its own section below: duplicate records, messy properties, lifecycle stages, and old or inactive records. Once the cleanup is done, a regular review keeps the data from slipping back.

How do you find where messy data is coming from in HubSpot?

To find where messy data is coming from in HubSpot, one of the fastest ways is to start with the messy records themselves and trace each one back to what created it.

You can audit every import, form, integration, and workflow up front, but in a large portal that takes a long time and can still miss what's actually causing problems. Starting from records you can see are wrong points you straight at the source. This approach comes down to three steps:

  1. Spot the messy records.
  2. Trace them back to their source.
  3. Check for the gaps you can't see at a glance.

Step 1: Spot the messy records

Open your contacts, companies, and deals and look for records that are clearly wrong. This could look like companies with no name, contacts with no email address or owner, or records that are almost entirely empty.

Step 2: Trace them back to their source

Open several of the messy records and check how each one was created. The "Record source" property shows which tool created a record, such as an import, an integration, a form, or a workflow. HubSpot's guide to change sources explains what each source value means. Once you know where a messy record came from, go to that source, find where it's breaking down, and fix it so it stops creating messy records.

Look for patterns. If most of the empty contacts came from one integration, or most of the deals missing an amount were created by one workflow, you've found a source to fix.

Every record tells you where it came from. Start there.

Step 3: Check for the gaps you can't see at a glance

Some of the most damaging gaps don't look wrong when you open a single record. You can find them by filtering a view of your records for the missing value or association. Here are the checks worth running once the obvious problems are found, and why each one matters:

Check Why it matters
Deals with no associated contact or company Nobody knows who to follow up with, and reports can't connect the deal to the people or account behind it
Records with no owner, or an owner who has left the company Nobody is responsible for the record, so it gets ignored
Contacts with no email address Your team can't email them, and marketing can't reach them
Companies with no associated contacts There's nobody at the company your team can actually talk to

Pro tip: You can technically fix each messy record as soon as you find it, but hold off until you know what created it. Fixing records before you fix their source means doing the same work again next week, on the next batch of records that source creates.

How do you define the data your HubSpot portal needs?

To define the data your HubSpot portal needs, write down in plain English what you want to see and report on before you touch a single property.

This is where teams most often get stuck in the weeds: field types, property options, and everything HubSpot can do. Step away from the computer, grab a notebook, and think about what would make the business easier to run.

Follow these three steps to define your data:

  1. Write down what you want to see on every record.
  2. List the reports you want to see.
  3. Work backward to the properties and where each one is captured.

Step 1: Write down what you want to see on every record

For contacts, companies, and deals, answer one question: if I could see this on every single record, what would make my work easier? Write the answers as plain sentences, not as property names.

Step 2: List the reports you want to see

Write down the reports and dashboards you'd want, like pipeline value by lead source or the reasons deals are lost. Don't think about how to build them yet. Only write down what you want to see.

Step 3: Work backward to the properties and where each one is captured

Turn each item on your lists into the property it needs, then decide where that data gets captured: on a form, in an import template, at a deal stage, or directly on the record. Anything in your portal that isn't on your lists is a candidate to cut. Cutting matters as much as adding, because every extra property is one more field reps have to look past.

Here's what it looks like to turn plain-English needs into properties and the places each one gets captured:

Plain-English need Property Where it's captured
Know which service each lead is interested in "Service Interest" (contact property, dropdown select) Contact form
See the value of every deal once a proposal goes out "Amount" (deal property) Required when a deal moves to the proposal stage
Report on which states our customers come from "State" (contact property, dropdown select) Forms and the import template
Know why every lost deal was lost "Closed Lost Reasoning" (deal property, dropdown select) Required when a deal moves to Closed Lost

Once this list is in place, it guides everything that touches your data: what you capture on forms, what goes into your import templates, what each record shows, and what your reports and dashboards need. It also becomes the blueprint for the rest of the cleanup, because it tells you which properties to keep and which ones to retire.

How do you stop new messy data from being created in HubSpot?

To stop new messy data from being created in HubSpot, protect the four places records come from: imports, forms, integrations, and workflows.

This is the most important step in the whole cleanup. A disciplined team with a well-built process will still get buried if junk keeps flowing in, and every bad record that gets in adds to the pile someone has to sort through later. Follow these four steps to protect each entry point:

  1. Protect imports.
  2. Protect forms.
  3. Protect integrations.
  4. Fix the workflows that create bad data.

Step 1: Protect imports

Most import problems come from people importing a list without knowing how the file maps to HubSpot properties. Give imports one owner, and give that person an import template whose columns match the properties your business has decided it needs, so every import comes in the same way.

HubSpot deduplicates imported records by email address for contacts and by company domain name for companies. Make sure those columns are filled in and formatted correctly, because a record without one can't be matched to an existing record.

Step 2: Protect forms

Forms are where most outside data enters HubSpot, so give them structure. Use properties with fixed options, like a dropdown select, wherever an answer comes from a set list, so every answer is saved the same way.

Conditional logic takes this further. Instead of one open "How can we help?" box, a form can ask a question with fixed options, then show only the follow-up questions that match the visitor's answer. Each answer is saved to its own property instead of being buried in a message, which gives your team structured data it can report on. Our guide to adding conditional questions to HubSpot forms walks through how to set this up.

Where an open text field is unavoidable, add validation. For example, a validation rule using a regular expression can require a website field to contain an actual web address instead of "N/A." Validation rules are enforced on forms built in HubSpot's updated form editor, not the legacy editor.

If you sell to businesses, block free email providers, like Gmail and Yahoo, so visitors have to enter a business email address. Here's how to do this in HubSpot:

  1. In your HubSpot account, navigate to Marketing > Forms.
  2. Create a new form, or hover over an existing form and click Edit.
  3. In the left sidebar, click the settings icon.
  4. Click the Submission settings tab.
  5. Toggle the Block free email providers switch on.
  6. Click Review and update.

HubSpot also has an account-level setting that blocks free email providers on every form at once.

One switch keeps Gmail addresses off a B2B contact form.

Forms also include the create record forms your team fills out when they add a contact, company, or deal by hand. Customize each one so it asks for the properties your business needs, and make the important ones required, so records your team creates start out complete. Here's how to do this in HubSpot:

  1. Click the settings icon in the top navigation bar.
  2. In the left sidebar, under Data Management, click Objects.
  3. Click the Select an object dropdown and choose the object you want to update (for example, Contacts).
  4. Under Creating contacts, click Customize the "Create contact" form.
  5. Add the properties your business needs, and click the required icon on the ones your team must fill in.

Records your team creates by hand start out complete.

Step 3: Protect integrations

Check whether each connected app creates records, not just updates them. Filtering your records by the "Record source" property shows which ones each integration created. If an integration should create records, confirm it brings in complete and correctly structured data. If it shouldn't, turn off record creation in its settings where the app allows it, or adjust its field mapping.

Check HubSpot's own Create and associate companies with contacts setting too, which you'll find under Settings > Data Management > Objects > Companies, in the Automation section. When it's turned on, HubSpot creates a separate company for each unique email domain, including subdomains, so @example.com and @info.example.com become two different companies. If another tool also creates companies, choose one system to own company creation, so the same business doesn't end up with two records.

Step 4: Fix the workflows that create bad data

Workflows can create mess from inside the portal by clearing values, overwriting owners, or creating records with missing information. Rather than reviewing every workflow cold, start from the messy records themselves. When a record's property history shows a workflow made the change, open that workflow, find where it breaks down, and fix it. Changing workflows that haven't caused a visible problem can create new problems you won't notice until later.

How do you set up HubSpot so your team keeps data clean?

To set up HubSpot so your team keeps data clean, build the data you need into the steps your team already takes, and remove everything they don't need from view.

Written rules and training on their own won't keep HubSpot clean. Standard operating procedures get skipped, not out of bad intent, but because people are busy and take the path of least resistance. SOPs don't keep a CRM clean. A system does.

Asking reps to go into each record, find the right property, and update it by hand isn't a system. It's an extra task that competes with selling, and it's usually the first thing dropped when the week gets busy. A system asks for the data inside a step the rep is already taking, at the moment they have the information, so keeping data clean becomes part of doing the work. Follow these three steps:

  1. Ask for data inside your process, at the moment it's known.
  2. Show only the properties that matter on each record.
  3. Put one person in charge of creating new properties.

Step 1: Ask for data inside your process, at the moment it's known

Look at the steps your team already takes, like creating a record or moving a deal to its next stage, and attach each piece of data your business needs to the step where that information becomes known. Don't require information before anyone could reasonably know it, or reps end up guessing.

For example, a deal may be created before anyone knows its value, but by the time a proposal goes out, the amount is known. Making "Amount" required when a deal moves to your proposal stage means the rep fills it in right there, in a pop-up, as part of moving the deal. Moving deals forward is what reps want to do anyway, so the requirement works with them instead of against them. The same approach works when a deal is lost: requiring a reason at Closed Lost is how you track closed lost reasons in HubSpot on every deal. Required properties on the forms your team uses to create records by hand work the same way.

Here's how to require a property when a deal moves to a stage in HubSpot:

  1. Click the settings icon in the top navigation bar.
  2. In the left sidebar, under Data Management, click Objects.
  3. Click the Select an object dropdown and choose Deals.
  4. Click the Pipelines tab and select the pipeline you want to update.
  5. Hover over your proposal stage (for example, "Proposal Sent"), and under Conditional logic rules, click Add rule.
  6. Make sure the rule reads Deal stage is equal to your proposal stage.
  7. Under Show these properties, click Add property and select the property (for example, "Amount").
  8. Check the Make this property required box.
  9. Click Save.

Repeat this for any other property your team should fill in at a specific stage. Keep in mind that the requirement only appears when a person moves a deal by hand. Workflows, imports, and integrations skip it, which is why fixing your workflows matters.

Reps enter the amount at the moment they actually know it.

Step 2: Show only the properties that matter on each record

Customize each record so it shows only the properties your business needs and nothing else. With fewer fields, reps can find what they need and fill it in quickly, and the record actually helps them in their day.

Here's how to do this in HubSpot:

  1. Click the settings icon in the top navigation bar.
  2. In the left sidebar, under Data Management, click Objects.
  3. Click the Select an object dropdown and choose the object you want to update (for example, Contacts).
  4. Click the Record Customization tab.
  5. Click Default view.
  6. Edit the cards on the record to remove any property your team doesn't need.
  7. Click Save and exit.
  8. Repeat these steps for companies and deals.

HubSpot's guide to customizing records covers cards, tabs, and team views in detail.

If your team doesn't need it, it doesn't belong on the record.

Pro tip: The default view applies to everyone, but different teams usually need different data. You can create team views, so the sales team sees the properties they work with while the service team sees theirs. To set one up, click the settings icon, go to Data Management > Objects, select the object, open the Record Customization tab, and click Create team view. Name the view, assign it to a team, and customize its cards. Anyone on that team then sees that view instead of the default.

Step 3: Put one person in charge of creating new properties

When anyone can create a property on the fly, the portal fills up with near-duplicates, like three different "Budget" properties. Make every new property a conversation: one person decides whether it's needed, checks that it doesn't already exist, and adds it to the list of data your business needs.

How do you merge duplicate records in HubSpot?

To merge duplicate records in HubSpot, use HubSpot's duplicate manager to review each pair of possible duplicates and merge the pairs that really are the same contact or company.

For most small and mid-sized businesses, the native tool handles this well. In most duplicate pairs, one record holds nearly all the information, and the merge simply tidies things up. Here's how to do this in HubSpot:

  1. In your HubSpot account, navigate to Data Management > Data Enrichment.
  2. Click the Manage duplicates tab.
  3. Click the Contacts or Companies tab.
  4. Next to a duplicate pair, click Review to merge the records, or click Reject if they aren't duplicates.
  5. In the dialog box, customize which property values to keep, then click Merge and review next.

Slow down when both records hold unique, important data, like different billing details or an ID another system depends on. A merge combines both records' activities and associations, and for most properties it keeps the most recent value. There are exceptions. For example, when you merge companies, the primary company's domain stays the primary domain, and the stage furthest along the lifecycle is kept. HubSpot's guide to merging records lists every exception.

For bigger organizations with more complex portals, it can be worth looking into the data quality tools that come with Data Hub Professional, or a third-party tool like Koalify.

Most duplicate pairs are one full record and one leftover.

How do you clean up messy properties in HubSpot?

To clean up messy properties in HubSpot, decide which properties your business actually needs, consolidate overlapping properties into one, and standardize the values that property holds.

Messy properties come in two forms: several properties asking the same question, and one property holding the same answer written many different ways. The worst thing you can do is leave them in place, or quietly pick one without telling anyone, because your team keeps filling in different versions. Follow these four steps:

  1. Choose the property to keep.
  2. Check where the other properties are used.
  3. Move and standardize the existing values.
  4. Retire the old properties.

Step 1: Choose the property to keep

Decide which property stays based on the data your business needs to see on its records and in its reports. If none of the existing properties has the right field type, create a new one. A property with fixed options, like a dropdown select, keeps every future value consistent.

Step 2: Check where the other properties are used

Before you retire a property, find everything that depends on it, including workflows, forms, segments, reports, and integrations, and point each one to the property you're keeping. HubSpot won't let you archive a property that's still used in certain assets, like a segment, form, or workflow, and it shows you which assets are blocking the archive. Check your reports and integrations as well, so nothing that reads the old property is left behind.

Step 3: Move and standardize the existing values

For most teams, the simplest approach is to export, clean, and reimport. Export the records with the old property, clean and standardize the values in a spreadsheet (AI tools are good at this kind of formatting), then import them into the property you're keeping. Workflows and third-party tools are other options, depending on how many records you have and how complex the values are.

Step 4: Retire the old properties

Once nothing depends on an old property, archive it. Archived properties are permanently deleted after 90 days. If the old property is a HubSpot default property, you don't need to archive it. Remove it from your record views, forms, import templates, and any workflows that use it, so your team only fills in the property you're keeping.

Here's a practical example of what this looks like. HubSpot's default "State/Region" contact property is a single-line text field, so anyone can type anything into it. Over time, the same state gets entered as "WA," "Washington," "washington," and "Wash." A report on customers by state then splits one state into four.

The fix is a new "State" contact property with a dropdown select field type and one option for each state. Export your contacts with their "State/Region" values, standardize them in a spreadsheet, and import them into "State." Then remove "State/Region" from your record views, forms, import template, and any workflows that use it. Here's what the cleanup looks like for a few of those values:

Value in "State/Region" Value in "State"
WA Washington
washington Washington
Wash. Washington
Calif California

HubSpot shows you what still depends on a property before it lets you archive it.

Pro tip: If you need to keep a free-text property, add validation rules to it so new values follow a set format. Validation rules apply to new entries and imports, but they don't reformat the values already in the property, so clean the existing values first.

How do you clean up lifecycle stages in HubSpot?

To clean up lifecycle stages in HubSpot, define what each stage means and where the handoffs happen, then move existing records to the right stage and automate the handoffs going forward.

Lifecycle stages usually get messy because nobody ever defined them. If marketing and sales disagree on what makes a marketing qualified lead (MQL), or on when a lead becomes sales qualified, every count built on those stages is unreliable. HubSpot also moves stages forward on its own, like setting a contact to Customer when an associated deal is closed won, but nothing moves them back. A customer who left years ago can still show as Customer. Follow these three steps:

  1. Define each stage and the handoffs between them.
  2. Move existing records to where they stand now.
  3. Automate the handoffs going forward.

Step 1: Define each stage and the handoffs between them

For each stage, write down what has to be true for a contact to be there, and who owns the handoff to the next stage. Get the whole team aligned on those definitions before you change anything in HubSpot.

Here's an example of what written stage definitions can look like. Your definitions will be different, because they should match how your business actually sells:

Stage What has to be true Handoff
Lead Shared their contact information through a form or a conversation Marketing follows up and nurtures
MQL Fits your ideal customer profile and has shown buying interest, like requesting a demo Marketing hands the contact to sales
SQL Sales has confirmed a real need and a good fit Sales creates a deal
Customer Has a closed won deal Sales hands the account to the team that delivers

Step 2: Move existing records to where they stand now

Once the definitions are set, existing contacts need to match them, but how you get there depends on how much of your current lifecycle data can be trusted. Treat this step with care, because resetting stages the wrong way can erase history that's actually accurate.

Two things in HubSpot make this step hard to undo. HubSpot only lets a lifecycle stage move backward after the value is cleared, either by bulk editing the contacts or with the Clear property value action in a workflow. And moving a contact backward clears the "Became a [stage] date" properties for the stages being undone, so that part of the contact's funnel history is lost.

Here's how to decide what to do with existing records, based on how reliable your current lifecycle data is:

Situation What to do Why
Lifecycle stages were barely used, and nobody trusts them Clear the lifecycle stage on the affected contacts, then set each one to the stage that matches your new definitions The old data was never accurate, so there's little history worth keeping
Some stages are accurate and others aren't Update only the contacts that clearly don't match your new definitions, and leave the accurate records alone A blanket reset would erase correct history that your reports may depend on

Either way, export your contacts' lifecycle stages and "Became a [stage] date" values before you change anything, so you have a record of where every contact stood.

Step 3: Automate the handoffs going forward

Build workflows that update lifecycle stages at each handoff you defined, so stages change when the business event happens instead of whenever someone remembers. You can also turn on lifecycle stage pipeline rules, under Settings > Data Management > Objects > Contacts > Lifecycle Stage > Pipeline Rules, to stop users from skipping stages or moving contacts backward by hand.

What should you do with old or inactive records in HubSpot?

For old or inactive records in HubSpot, delete only records that are empty, spam, or duplicates, and move everything else out of your team's daily view instead of deleting it.

A contact who engaged with your business carries history your reporting may depend on, and deleting them erases it. Moving inactive records out of view gives your team a clean workspace without losing that data. Follow these three steps:

  1. Build a segment of inactive records.
  2. Set those contacts as non-marketing.
  3. Filter them out of your saved views.

Step 1: Build a segment of inactive records

Create an active segment that collects the contacts you consider inactive, such as contacts whose email hard bounced, contacts who unsubscribed from all email, or contacts with no engagement in a set period, like a year. Because the segment is active, contacts are added automatically as they meet the criteria.

Step 2: Set those contacts as non-marketing

If you use Marketing Hub, set the contacts in that segment as non-marketing contacts. Non-marketing contacts don't count toward your billable marketing contact tier, so you stop paying for records you'll never email. A workflow that enrolls contacts based on segment membership and uses the Set marketing contact status action handles this automatically. A contact's change to non-marketing takes effect on your next update date.

Step 3: Filter them out of your saved views

Add a filter to your saved views that excludes the inactive segment. The records still exist for reporting, but they no longer clutter your team's daily workspace.

The records stay in HubSpot. They just stop crowding the view.

Who should own HubSpot data quality?

The best owner of HubSpot data quality is someone whose actual job is HubSpot, whether that's an in-house RevOps or operations hire or an outside partner.

A common mistake is handing HubSpot to a head of marketing or a VP of sales on top of their full-time job. They don't have time to learn the system deeply, so they build what they need quickly and move on. Over time, those one-off builds stop working together as a system, and many messy portals start exactly this way. For businesses that can't justify a full-time hire, an outside partner can be a cost-effective way to get a dedicated owner.

If a dedicated owner isn't realistic, make each record owner responsible for the accuracy of their own records. That only works when HubSpot is set up to support them, with the right properties, clean record views, and requirements at the right stages, so keeping records up to date fits into each person's normal work.

How often should you review HubSpot data after cleaning it up?

Once your HubSpot data is clean, review it on a consistent cadence, and once a month is a good default for most teams.

Maintenance gets much faster after the first cleanup, but skipped reviews let problems build up again. The data owner can run the review by hand, or you can build automation that flags issues as they appear. Here's what to check each month, and where to find each item in HubSpot:

What to check Where to find it
New duplicate contacts and companies The Manage duplicates tab, under Data Management > Data Enrichment
Empty values in the properties your key reports depend on Saved views filtered for records where those properties are unknown
Records with no owner, contact, or company Saved views filtered for missing owners or associations
Open deals with no recent contact, like stale deals A saved view of open deals filtered by the "Last contacted" date
Where new records are coming from A report or view broken down by "Record source"

For bigger organizations with more complex portals, the data quality tools that come with Data Hub Professional can take on part of this review, using AI to flag new duplicates and formatting issues as they appear.

It's tempting to point AI at a messy portal and ask it to fix everything. The records may look cleaner afterward, but nobody knows where the mess came from or how it was fixed, so when bad data keeps coming in, the team doesn't even know where to start. Find and fix the sources yourself first. Once the data is clean and the system is built to keep it that way, AI becomes a powerful part of keeping it clean, like catching new duplicates and formatting issues as part of a regular review.

Common gotchas

  • Merges can't be undone: Once two records are merged, HubSpot can't unmerge them. If you're worried about losing data, you can always export your contacts and companies before a merge or bulk edit, so you have a copy to check against.
  • Automation skips your rules: Many of the rules you set up to keep data clean, like required properties, only apply when a person works in HubSpot by hand. Automation, like workflows and integrations, can skip them, so anything that creates or updates records automatically has to fill in the right data itself.
  • Plan requirements: At the time of publishing, several features in this post, including the duplicate manager, team views, regular expression validation, and workflows, require a Professional or Enterprise subscription. HubSpot is actively changing its pricing and plan structure, so these requirements may change. Check what your current plan includes before you plan around a feature.