Over time, I’ve seen many CRM systems become tangled. When I joined Blossom Automation, I inherited a HubSpot account with thousands of duplicate contacts, stale leads, and a pipeline that was hard to trust. In early 2025, HubSpot released a set of data tools that let me clean things up efficiently. In this post, I’ll explain how I solved three major challenges—duplicate contacts, inactive leads, and messy deal stages—using HubSpot’s latest functions. I’ll show you step by step what I did, why it mattered, and suggest a few screenshots to document your own cleanup process.
Why Cleaning Your CRM Pays Off
Even if a CRM seems beyond rescue, you usually have valuable data under the surface. When I audited our HubSpot account:
- We had over 12,000 contacts, and about 30 percent were duplicates—different emails or phone numbers for the same person.
- Nearly 20 percent of leads sat untouched in “New” for three to six months despite automated campaigns.
- Our pipeline had deals in “Negotiation” for weeks with no clear plan for next steps, making forecasting nearly impossible.
If any of this rings true for you, read on. I’ll share how I cleaned each mess using HubSpot’s 2025 features.
1. Removing Duplicate Contacts
The issue:
We had multiple “John Smith” records with slightly different emails and phone numbers. Marketing emails bounced, sales sequences went to the wrong inbox, and we didn’t know which record was accurate.
The steps I took:
- Turn on Data Quality Monitoring
- In HubSpot, I went to Contacts > Data Management > Data Quality. Under the “Duplicates” section, I enabled checks for Contacts and Companies. HubSpot started flagging duplicates automatically.
- I set an alert threshold: if more than ten duplicates appeared in one day, my operations team would get notified.
- In HubSpot, I went to Contacts > Data Management > Data Quality. Under the “Duplicates” section, I enabled checks for Contacts and Companies. HubSpot started flagging duplicates automatically.
- Use Bulk Merge in Operations Hub
- Because we use Operations Hub Professional, I opened Contacts > Manage Duplicates. HubSpot grouped likely duplicates—such as “john.smith@xyz.com” and “john_smith@gmail.com.”
- For each group, I clicked “Review Duplicate Group” and then “Merge as Master Record.” I picked the record with the earliest creation date and the most activity as the master. Over a few hours, I consolidated 2,500 duplicate records, merging names, phone numbers, email addresses, and notes into a single contact.
- Because we use Operations Hub Professional, I opened Contacts > Manage Duplicates. HubSpot grouped likely duplicates—such as “john.smith@xyz.com” and “john_smith@gmail.com.”
- Create a Workflow to Prevent New Duplicates
- I built a contact workflow triggered when “Create Date is less than 1 day old” and “Email or phone matches an existing record.” That workflow automatically assigned a task: “Review potential duplicate.”
- I added a custom property called “Master Record” (Yes/No). In our lead capture forms, “Master Record = Yes” is required. If someone tries to submit a form without that checked, the record is routed to a “Review Queue” list instead of getting added to marketing campaigns.
- I built a contact workflow triggered when “Create Date is less than 1 day old” and “Email or phone matches an existing record.” That workflow automatically assigned a task: “Review potential duplicate.”
Why this worked:
- HubSpot flagged duplicates right away, so we didn’t need to run manual imports.
- Bulk merging lets me combine records with one click, preserving the most detailed information.
- The workflow caught new duplicates immediately, so data stayed clean as we kept growing.
2. Reviving Inactive Leads
The issue:
About 18 percent of our “New” leads were untouched after 90 days. Our old process relied on reps remembering to check their “New Leads” list, and they often missed leads. Many prospects went cold before anyone followed up.
The steps I took:
- Build a 90-Day Check Workflow
- In Automation > Workflows, I created a contact workflow with the enrollment trigger:
- Lead Status = New
- Create Date is more than 90 days ago.
- Lead Status = New
- I added a custom action that analyzed their recent engagement—email opens, clicks, website visits—and set a property called “Next Action Suggestion” to either “Call,” “Send Email,” or “Archive.”
- In Automation > Workflows, I created a contact workflow with the enrollment trigger:
- Use Predictive Lead Scoring to Decide Next Steps
- I turned on Predictive Lead Scoring (in Settings). HubSpot assigns each lead a score from 0 to 100 based on over 200 factors, including email engagement, website behavior, and firmographic data.
- In the workflow, if “Next Action Suggestion = Call” and the lead score was 60 or higher, I automatically assigned the lead to our SDR queue. If the score was below 60, I triggered a simple email template:
“Hi [Name], it’s been a while since we last connected. Are you still researching [product/service]? Let me know if you need more information.” - If there was no reply after seven days, the workflow archived the lead and added a note: “Archived due to inactivity.”
- I turned on Predictive Lead Scoring (in Settings). HubSpot assigns each lead a score from 0 to 100 based on over 200 factors, including email engagement, website behavior, and firmographic data.
- Set Up a Dashboard for Dormant Leads
- In Reports > Dashboards, I created a custom report:
- Filter: Lead Status = Dormant AND Last Activity Date is more than seven days ago.
- Display: Bar chart by lead owner.
- Filter: Lead Status = Dormant AND Last Activity Date is more than seven days ago.
- I added this report to Sales Workspace Home. Now, each rep sees their list of dormant leads every time they log in. I also connected HubSpot to Slack, so when a lead moved to “Dormant,” #sales-ops received a notice.
- In Reports > Dashboards, I created a custom report:
Why this worked:
- The workflow automatically surfaced leads that needed attention.
- Predictive Scoring helped me decide which leads were worth reassigning and which to let go.
- The dashboard kept reps accountable by showing them their inactive leads at a glance.
3. Streamlining Deal Stages and Next Steps
The issue:
Our pipeline had many deals stuck in “Negotiation” with no clear next step. Sales reps weren’t sure what to do, and our forecast accuracy dropped to around 55 percent because we didn’t know which deals were truly active.
The steps I took:
- Enable Sales Workspace and Deal Scoring
- I activated the new Sales Workspace under Sales > Sales Workspace. This view shows each rep’s deals sorted by Predictive Deal Score, helping reps focus on high-value opportunities first.
- The Deal Insights panel flagged missing fields—close date, deal amount, decision-maker—and recommended required information for each stage. This made it clear what data was missing before moving a deal forward.
- I activated the new Sales Workspace under Sales > Sales Workspace. This view shows each rep’s deals sorted by Predictive Deal Score, helping reps focus on high-value opportunities first.
- Require a “Next Step” Property Before Stage Changes
- I created a custom dropdown property called “Next Step” with options: “Send Reminder,” “Schedule Demo,” “Update Proposal,” “Archive Deal.”
- In Sales Workspace settings, I turned on Guided Actions. Before a deal moves into “Negotiation,” the rep must pick a “Next Step.” If the field is blank, a prompt appears: “Select the next step: Send Reminder, Schedule Demo, or Update Proposal.” This ensures each deal has a clear plan.
- I created a custom dropdown property called “Next Step” with options: “Send Reminder,” “Schedule Demo,” “Update Proposal,” “Archive Deal.”
- Automate Cleanup for Stagnant Deals
- I built a deal workflow called “Pipeline Health Check”:
- Enrollment: Anytime a deal stays in the same stage for more than seven days.
- If Predictive Deal Score is below 30, set a “Stalled” property to Yes and create a task: “Review stalled deal—call or archive.”
- If Predictive Deal Score is 30 or higher, send a follow-up email template: “Just checking in on [Deal Name]—do you have an updated timeline?”
- If “Next Step” remains empty three days after the workflow starts, a task is assigned: “Update Next Step or mark as stalled.”
- Enrollment: Anytime a deal stays in the same stage for more than seven days.
- In Sales Workspace, I created a saved view called “Pipeline Health” with filters:
- Deals in a single stage for over seven days OR “Next Step is empty.”
- Deals in a single stage for over seven days OR “Next Step is empty.”
- I pinned that view to each rep’s dashboard.
- I built a deal workflow called “Pipeline Health Check”:
Why this worked:
- Sorting by Predictive Deal Score helps reps focus on the most valuable deals first.
- Enforcing “Next Step” before stage changes brings consistency to our pipeline.
- Automated workflows catch stalled deals and prompt timely follow-up.
Key Takeaways
- Turn on Data Quality Monitoring so duplicates are flagged immediately.
- Use Bulk Merge in Operations Hub to consolidate records into one master.
- Build a 90-Day Dormant Lead Workflow that uses engagement data and lead scoring to decide whether to call, email, or archive.
- Adopt Sales Workspace and Deal Scoring to prioritize the most valuable deals.
- Require a “Next Step” before moving deal stages, and automate checks for deals that haven’t moved after a week.
By following these steps, you can transform your CRM from a source of frustration into a reliable engine for revenue growth. If you’d like a fresh set of eyes, DM me “Clean Sweep” for a full account review—covering data quality, workflows, and pipeline health.