Skip to content
Solutions Blueprint

Importing Legacy Leads Into HubSpot Without Losing Their History

Hero featured image

Two years of home care enquiries lived in two spreadsheets, outside the CRM sales worked every day. We loaded both files into HubSpot using email to catch duplicates. New properties held the original create date and source HubSpot wouldn't let us set directly, and we removed every sensitive medical reference by hand before a single record went in.

Executive Summary

context-header-icon

Context

A not-for-profit aged care, home care and retirement living provider held two years of home care leads in spreadsheets outside HubSpot. Sales needed every historic lead in the CRM without losing the dates, sources or stages HubSpot's own fields could not hold.

what-we-built-header-icon

What We Built

We built a one-time import that loaded two legacy lead spreadsheets into HubSpot. It deduplicated by email, split a combined stage field into two properties matching the live intake form, and moved every historic note to the activity log after a manual scrub for medical references.

tech-stack-header-icon

Tech Stack

  • HubSpot CRM

Not a fit if your legacy records use a dedupe key other than email that a spreadsheet does not consistently hold, since this import's exclusion rule depends on email being present and distinct. It also assumes new custom properties can stand in for a destination platform's own locked create-date and source fields; a system that allows a direct override needs no such workaround.

the-challenge-header-icon

The Challenge

Two spreadsheets, New Leads and Previous Leads, held roughly two years of home care enquiries that had never touched HubSpot. Because the files sat outside the CRM everyone else worked from, sales had no record of a prospect's original enquiry date or source. HubSpot sets its own create date and source the moment a contact is created, and it refuses an override on either at import. A straight load would have replaced every historic date with the load date and erased months of real activity.

Seven contacts had no email on file, and HubSpot dedupes by email, so those records couldn't be loaded safely without risking a collision with an existing prospect. A handful of couples shared one email across both household members. The sheets also carried medical references inside free-text notes, the same category of data that the Privacy Act 1988 later barred from HubSpot entirely.

our-approach-header-icon

Our Approach

We loaded New Leads and Previous Leads as two separate imports, so that each sheet kept its own column mapping. Email became the dedupe key. We excluded the seven contacts with no email rather than loading them with a placeholder address, and where two people shared one email, the import created a single point-of-contact record instead of two competing ones.

HubSpot wouldn't accept an override on its own create date or source fields, so two new properties, Historic Create Date and Historic Source, took the spreadsheet's original values instead. The real timeline survived, even though HubSpot's own record reads as the import date. We also split the sheet's single combined stage column into two live properties, Home care package level approved and What stage of the journey are they at?, matching the categories sales already used on new leads.

Every free-text note was scrubbed of medical references by hand before load, and then moved into the HubSpot activity log against its contact.

impact-header-icon

Impact

check-icon

A lead's real history survives a limit HubSpot's own fields could not get around

Historic Create Date and Historic Source hold each lead's real enquiry date and channel, so sales can see how long a prospect had already been active before the import.

check-icon

Two years of enquiries stopped living outside the CRM

Every home care lead in New Leads and Previous Leads became a working HubSpot contact, so sales stopped splitting its pipeline between the CRM and two static spreadsheets.

check-icon

Deduplication ran without creating a collision

Excluding the seven no-email contacts and collapsing shared-email couples to one point of contact meant the email dedupe key never produced a false match against an existing prospect.

check-icon

Sales history moved forward without the detail HubSpot could not hold

Notes moved into the HubSpot activity log only after a manual scrub for medical references, so sales kept the history it needed without the CRM holding data it isn't licensed to store.

Technical Blueprint
1

The import matched on email to catch duplicates across both spreadsheets. Seven no-email contacts were excluded rather than loaded with a placeholder, and shared-email couples collapsed to a single contact.

2

HubSpot assigns create date and source itself and refuses an override at import, so two new properties, Historic Create Date and Historic Source, carried the spreadsheet's original values instead.

3

The sheet's combined current-stage column split into two live properties already in use on new leads, Home care package level approved and What stage of the journey are they at?.

4

Every note was scrubbed of medical references by hand before it reached HubSpot, then moved into the activity log, preserving history without carrying forward data the CRM couldn't safely store.

Diagram of two lead spreadsheets loading into HubSpot on an email key, with historic date and source properties and a scrubbed notes step.

Two legacy spreadsheets, New Leads and Previous Leads, load into HubSpot with email as the dedupe key. Contacts with no email are excluded, and couples who share an email become one point-of-contact record. Because HubSpot won't accept an override on its own create date and source, the original values are written to two custom properties, Historic Create Date and Historic Source, and the combined stage column is split into two live properties. Notes are scrubbed of medical references by hand before they are moved into the HubSpot activity log.

FAQ

How did the import keep each lead's original enquiry date once it reached HubSpot?

HubSpot assigns its own create date at creation and refuses an override at import, so a separate Historic Create Date property carried each spreadsheet's original date instead, keeping the real timeline visible.

What happened to contacts with no email address or to leads who shared one?

Email was the dedupe key the import matched on. The seven contacts with no email were left out rather than loaded with a placeholder, and where two people in a household shared one email, the import created a single point-of-contact record instead of two competing ones.

Continue reading

Hero featured image
209049082793

Luxury yacht manufacturer: CRM governance, 16.9% MQL-to-SQL

Hero featured image
209049052783

$500M+ telecom provider: one CPQ for MSP and ISP catalogs

Hero featured image
209049052785

Health insurance web broker: NPN hierarchies in HubSpot

Hero featured image
209049052787

$50M+ telehealth provider: HIPAA-compliant clinical ERP sync

Hero featured image
209049052787

$50M+ telehealth provider: attribution recovered via API fix

Hero featured image
209049052786

Environmental IoT provider: partner directory routes leads

Hero featured image
209053190299

$100M+ real estate tech firm: automated KYC gates and SSO

Hero featured image
209049052785

$1B+ financial data provider: Pardot and Eloqua into HubSpot

Hero featured image
209053177394

Global abrasives producer: 40+ sites from Kentico to HubSpot

Hero featured image
209049082792

Global abrasives producer: 13 dashboards consolidated to one

Hero featured image
209049052787

Medical device maker: five regional domains into one CMS

Hero featured image
209049052787

Medical device maker: automated clinical triage in HubSpot

Hero featured image
209049052787

Multi-site dental group: lifecycle logic rebuilt, true ROI

Hero featured image
209049052787

Multi-site dental group: assessment tool for lead quality

Hero featured image
209049082794

K-12 Catholic diocese: 80 schools on one HubDB lead system

Hero featured image
209049052787

Cell therapy biotech: HubSpot CMS migration, 92 speed score

Hero featured image
209049052787

Cell therapy biotech: 40-hour enablement and lead routing

Hero featured image
209049082794

Wellness training provider: 925k records moved to HubSpot

Hero featured image
209049052786

Cybersecurity trainer: 595 workflows audited for debt

Hero featured image
209049052785

Tier 1 auto F&I provider: 14,000% CTA lift, 21% PVR lift

Hero featured image
209049052785

Mexican retail bank: Infobip to Intercom via Apache NiFi

Hero featured image
209049052786

Global streaming platform: ETL middleware feeds Customer.io

Hero featured image
209049052786

Global streaming platform: usage milestones trigger upsell

Hero featured image
209049052786

Cloud and edge provider: Intercom to Salesforce via MuleSoft

Hero featured image
209049052785

$50M+ FinTech SaaS provider: advisor onboarding 30% faster

Hero featured image
209049082792

Mining autonomy provider: global consent and data governance

Hero featured image
209053177394

Industrial IoT division: compliant list purge, leads 3 to 62

Hero featured image
209053177394

Industrial IoT division: 25,000 records merged, one portal

Hero featured image
209049052786

Logistics SaaS portfolio: Salesforce sync rebuilt on Tray.io

Hero featured image
209049052786

Logistics SaaS portfolio: brands consolidated into HubSpot

footerCTA footerCTA-mobile
Spice up your inbox
Sign up for our newsletter
Don't worry - we only average, like, two emojis per subject line.