Free for Illawarra businesses: score your AI readiness in 5 minutes
Guide

HubSpot migration: a step-by-step guide

Moving to HubSpot from Insightly, Mailchimp, spreadsheets or an old Access database? This is the method I use to bring your history across with its dates, leave the junk behind and switch over without a gap.

By Reece Conley12 min readUpdated October 2026

A HubSpot migration is a one-way door. Once your team works in HubSpot and the old system is off, anything that didn't come across properly is gone, or expensive to fix. Notes lose their dates. Contacts lose their companies. People who unsubscribed years ago get your newsletter again.

This is the step-by-step method I use to migrate to HubSpot from Insightly, Mailchimp, spreadsheets and Access databases, for businesses in Wollongong, the Illawarra and across Australia. It covers the data side of the move. For the setup decisions (objects, pipelines, lifecycle stages, permissions), read the HubSpot implementation guide first.

Step 1: decide what moves and what dies

Start with a decision, not an export. Every record and field you bring across costs time to map, money in contact fees and clutter in every search. A migration is the cheapest chance you will get to leave the junk behind. Go through the old system type by type with the people who use it. My default calls:

DataDefaultWhy
Active contacts and companiesMoveThe core of the CRM. Cleaned on the way in.
Open dealsMoveWith stage, amount, owner and close date, or the pipeline report is wrong on day one.
Won and lost dealsMove the years you report onRevenue history and win rates need them.
Notes, calls and emailsMove, with original datesThe history your team misses first.
Custom fieldsOnly if usedEmpty on almost every record means it stays behind.
Junk, test records, hard bouncesLeaveKept in the archive export, not in HubSpot.
Unsubscribes and opt-outsAlways moveEven when the rest of the record stays behind.
Old automationsRebuildThey don't export. Rebuild the ones worth keeping as HubSpot workflows.

Write the decisions down and get the business owner to sign them off.

Step 2: audit and clean the source data

Take a full export and look at what is really there. Count records, check fill rates, find duplicates and note which fields feed forms, reports or integrations. Each source has its own habits:

SourceHow the data comes outWhat to watch for
InsightlyRecord exports, plus the API where the export falls shortProjects need a home in HubSpot. Check notes and record links came out intact.
MailchimpAudience export, split by statusUnsubscribed and cleaned contacts come out separately. Tags and groups become properties.
Other email platformsContact export and the suppression or do-not-contact listForms live on your website and must be swapped on cut-over day.
Spreadsheets and OutlookThe files themselvesSeveral versions of the truth and inconsistent spelling.
Access databasesTables and queries exported to CSVRelated tables need joining. Often one person understands it.
Zoho and other CRMsExports or APISame method. Check early whether you need that platform's admin.

Then clean, in the export, not after the import. Merge duplicates, standardise values and park dead records. Cleaning a spreadsheet is fast. Cleaning inside HubSpot is slow and risky. The method is in the CRM data clean-up guide, and very rough data may need a dedicated data clean-up first.

Merge across sources too. The person in your Mailchimp audience and your sales spreadsheet is one contact. Match on email, then name plus company, and decide which source wins for each field.

Step 3: map objects, properties and associations

The field map is the most important document in the project. Every old field gets a destination, a transformation or a polite goodbye, and someone who knows the business signs it off before anything moves. Example object mapping:

Old systemBecomes in HubSpot
Insightly contactsContacts
Insightly organisationsCompanies, with domain as the key
Insightly opportunitiesDeals, with stages mapped to the new pipeline
Insightly projectsA delivery pipeline, tickets, or a custom object on an Enterprise tier
Mailchimp tags and groupsContact properties or lists you can segment on
Access products and pricesProducts in the product library, ready for quotes

Then properties

  • Dropdown values must match. HubSpot rejects values that don't match an option, so "NSW", "N.S.W." and "New South Wales" become one value first.
  • Check the date format. 03/04/2021 is March or April depending on who is reading. Pick day-month-year in the import every time.
  • Keep the old record ID in a property such as "Legacy CRM ID". It links records across files, lets you rerun an import as an update, and traces any record back to its source.
  • Tag the source and batch. A "Migration batch" property shows exactly what one import touched.

Then associations

Associations link records: contact to company, deal to company, note to all three. Import companies, then contacts, then deals, then activities. HubSpot's import can link two files through a shared column, such as company domain or your legacy ID. Check the links on the test import, not after go-live.

Would rather hand it over?My HubSpot migration service covers the audit, a field map you sign off, clean-up, test import, cut-over and training. From $7,500, with a fixed quote once I've seen your data.

Step 4: keep the history

History is what your team misses first and what careless migrations drop first. My rules:

  • Timeline, not a text field. Notes, calls and emails become timeline activities, not one giant "Old notes" property.
  • Original dates. Each activity keeps its original date and who logged it, so the timeline reads in order.
  • Right records. Each activity links to its contact, company and deal, and files land on the record they belong to.
  • API where the import tool stops. Where the import tool falls short, I use the HubSpot API, which can set each activity's original timestamp.
  • A fallback. What can't move cleanly is archived as a file on the record, and the old system stays read-only for a while.

Decide how far back to go. Open-by-open email logs from Mailchimp usually become summary properties, such as last engaged date.

Step 5: owners and users

HubSpot matches record owners to its users. Get this wrong and views, task queues and reports are wrong from day one.

  1. Create users first, with teams if you use them.
  2. Build an owner map: old system user, their email, their HubSpot user. "Sam S" and "Samantha Smith" might be one person.
  3. Decide on former staff. Reassign their records by a clear rule (territory, account, round robin). If the history matters, keep the original owner's name in a text property.
  4. Check after import. Filter for unowned records. Anything with an open deal or recent activity needs an owner.

Step 6: unsubscribes, bounces and consent

This step has legal teeth. Under the Spam Act 2003 you need consent to send commercial email, and when someone unsubscribes you must stop. Changing CRM doesn't reset that. A migration is the easiest time to break it by accident: the unsubscribe flag stays in Mailchimp or the old email tool, the contacts arrive fresh in HubSpot, and the next newsletter goes to everyone.

  • Export unsubscribes separately. Mailchimp splits them out by status. Other email tools usually keep a suppression or do-not-contact list. Elsewhere, look for an opt-out field or a list someone kept by hand.
  • Import them as opted out before any email goes out, using the opt-out option in HubSpot's import. Do it even for people you are not otherwise bringing across.
  • Treat hard bounces the same way. A burst of bounces hurts deliverability for everyone else.
  • Import as non-marketing by default. Set marketing status only on people you may email and plan to. You don't pay for contacts you never mail.
The one rule with no exceptionsNever email anyone who unsubscribed. Not even a one-off "we've moved systems" announcement. Before anyone presses send, check the opted-out count in HubSpot matches the old system.

Step 7: run a test import

Never make the real import your first one. Run a test, have people who know the customers check it, fix the map and rerun until it is boring. Pick the test set on purpose:

  • Your 20 biggest customers. Your team knows them and will spot problems fast.
  • A company with many contacts and deals, and a record with years of notes.
  • Someone who unsubscribed, someone whose email bounced, and records owned by former staff.
  • The odd ones: overseas addresses, two companies with the same name, contacts with no email.

Use a sandbox if your HubSpot tier has one. If not, tag test records by batch so you can find and delete them cleanly. Check counts, associations, owners, timeline dates, dropdown values, amounts and subscription status. Read the import error file every time.

Step 8: plan the cut-over

Pick a quiet window, such as a Friday afternoon or a weekend. Avoid month end, end of financial year and your busy season. A typical plan:

WhenWhat happens
Two weeks beforeField map signed off. Final test checked. Training booked. New forms tested on a staging copy of the website.
One week beforeDate announced. No new fields or bulk edits in the old system from here.
Cut-over dayOld system frozen. Final export of changes since the test, then import. Forms swapped. Email, calendar, phones and integrations reconnected.
Next working dayTeam works in HubSpot. Old system set to read-only.
30 to 90 days afterArchive export stored safely. Old subscription cancelled.

Switch workflows on last. When HubSpot asks whether to enrol existing records, think hard before saying yes, or a welcome sequence fires at thousands of people you met years ago.

What to check after go-live

Day one

Record counts match the export, minus what you chose to leave. Submit every website form and check where it lands.

Week one

Compare 20 customers with the old system, field by field. Run the pipeline report in both and compare totals.

Week two

Check opted-out and bounced counts before the first campaign. Look for new duplicates from integrations.

Month one

Check reps are logging in HubSpot, not their inbox. Share the field map so "where did X go?" has an answer.

Already live and something feels off? A HubSpot health check ($1,950, fixed price) finds what broke in the move and gives you a ranked fix list.

Common HubSpot migration mistakes

  • Importing before the portal is designed, so the old fields become your HubSpot property model, mess included.
  • No legacy ID, so you can't rerun an import or trace a record back.
  • Australian dates read as US dates, so close dates land in the wrong month.
  • Unsubscribes left behind in Mailchimp or the old email tool.
  • Workflows switched on before the import, emailing years of old contacts.
  • The old system turned off on cut-over day, with no read-only fallback.

How long a HubSpot migration takes and what it costs

A single-source migration typically takes 2 to 4 weeks from audit to cut-over. Several sources, years of email history or custom objects push it to 4 to 8 weeks. The data work is rarely the slow part. The decisions are.

ServiceWhat it coversPrice
HubSpot migrationAudit, field map, clean-up, test import, cut-over and training. Fixed quote after I've seen your data.From $7,500
HubSpot implementationA new portal designed around how you sell, quoted with the migrationFrom $9,500
HubSpot health checkAlready migrated and it went badly. Ranked fix list and walkthrough.$1,950 fixed
Data clean-upWhen the data needs serious work before any moveFrom $4,500

All prices AUD. HubSpot licences are paid to HubSpot directly. Price depends on sources, record volume, history and integrations.

FAQ

How long does it take to migrate to HubSpot?

Typically 2 to 4 weeks for one source system, from audit to cut-over. Several sources, years of email history or custom objects push it to 4 to 8 weeks.

Can we do a HubSpot migration ourselves?

For one clean spreadsheet of contacts, yes. Once you have history to keep, linked records, several sources or unsubscribes to protect, DIY imports usually go wrong.

Will we lose our notes and email history?

Not if it is done properly. Notes, calls and emails come across as timeline activities with their original dates, on the right records, and the old system stays read-only as a fallback.

What happens to our Mailchimp unsubscribes?

Every one comes across and is set as opted out in HubSpot before any email goes out. Under the Spam Act you can't email people who have unsubscribed, and changing CRM doesn't change that.

Can you migrate from Zoho or another CRM?

Yes, as a source system, using the same method from its exports or API. If getting the data out needs that platform's admin, I'll flag it in the audit.

Should we clean our data before migrating?

Clean it during the migration, in the export, before anything reaches HubSpot. If the data is in very rough shape, a data clean-up may come first.

Next steps

Do Step 1 this week: list what is in your old system and decide what deserves to move. The free CRM Migration Checklist in the sidebar has every step as a printable list. If you want it done once and done properly, see how I run a HubSpot migration, or tell me what you're moving from. I work on site in Wollongong and across the Illawarra, and remotely Australia-wide.

Move to HubSpot once, and do it properly.

Audit, a field map you sign off, clean-up, test import, cut-over and training. HubSpot migration from $7,500, with a fixed quote once I've seen your data.

Free AI checkBook a call