Import and clean your data

Get your contacts, companies, and deals into HubSpot cleanly. Deduplicate, map properties, and set naming conventions before anything else touches the data.

Introduction

Once your account settings are locked down, the next step is getting your existing data into HubSpot. Most teams have contacts scattered across spreadsheets, old CRMs, email tools, and systems nobody has touched in years.

Importing feels simple: upload a file, map some columns, click a button. But imports are where most CRM projects go sideways. One client imported 50,000 contacts on their first try without an email column. Thousands of duplicates. HubSpot's support team won't revert an import for you. Another client migrated from an old HubSpot portal and left the wrong internal IDs in the file, which overwrote almost all their existing contact data with outdated values. There is no undo button. Get the preparation right, and importing is painless. Skip it, and you're cleaning up by hand for weeks.

Top picks

No items found.

Understand HubSpot's data model first

Before you import anything, you need to understand how HubSpot organises data. There are four primary objects:

  1. Contacts. Records of people (leads, prospects, customers).
  2. Companies. Records of organisations.
  3. Deals. Records of potential or closed sales.
  4. Tickets. Records of service or support inquiries.

Each object has properties: data fields like first name, email, deal amount, company domain. Every property belongs to exactly one object. "Email" is a contact property. "Deal stage" is a deal property. "Company domain" is a company property.

When you import a file, HubSpot maps your spreadsheet columns to properties on specific objects. If your file only has contact properties (first name, last name, email), that's a single-object import. If it also has a "Company domain" column, HubSpot runs a multi-object import: it creates both the contact and the company, and links them automatically.

This matters because if you put company data in contact fields (or vice versa), your reporting breaks and your segmentation becomes unreliable.

Start small, then scale

The most important rule: never start with your full database. Import three to five contacts first. Check that everything mapped correctly, that no duplicates were created, and that the data looks right on the records. Only then scale up.

Too many teams treat their first import as their final import. They upload everything, discover that "Full Name" didn't map because HubSpot expects separate "First Name" and "Last Name" columns, and now they have ten thousand contacts with blank name fields. Starting small turns a potential disaster into a minor correction.

How HubSpot prevents duplicates

HubSpot uses the email address as the primary identifier for contacts. If you import a contact whose email already exists, it doesn't create a new record. It updates the existing one with the new property values from your spreadsheet.

This is powerful, but it means an import can also overwrite good data with bad data. If your file has outdated phone numbers or incorrect job titles, those values will replace what's already in HubSpot. Use the "don't overwrite" toggle on the mapping screen for any column where your existing CRM data is more reliable than the import file.

For company records, HubSpot uses the company domain as the de-duplication key. Same principle: if the domain exists, it updates. If it doesn't, it creates.

The takeaway: every contact in your import file needs an email address. No email means no dedup check, which means a new record every single time you import that person.

Preparing your spreadsheet

Your import file needs to meet two requirements:

  1. Column headers must match HubSpot properties. Standard properties like First Name, Last Name, Email, Phone Number are already in HubSpot. If you have a column that doesn't match (e.g. "Project type"), the import wizard lets you create a custom property on the spot.
  2. Split first name and last name into separate columns. HubSpot stores them as separate properties. A single "Name" or "Full Name" column won't map. This catches almost everyone on their first import.

Marketing contacts versus non-marketing contacts

During the import, HubSpot asks whether to bring contacts in as marketing or non-marketing. This is a billing decision:

  • Marketing contacts can receive marketing emails and be part of ads audiences. Charged on a tier basis.
  • Non-marketing contacts are free but can only receive one-to-one sales emails and sequence emails.

Always import as non-marketing. If you import as marketing and later decide you don't need to market to them, you can't switch them back until your next billing cycle. You'll pay for contacts you're not using. Going the other direction is instant: a two-minute workflow converts non-marketing to marketing whenever you're ready. The asymmetry matters.

The import process step by step

Once your spreadsheet is ready, the actual import takes about five minutes. You'll go to Settings, Data Management, Import and Export, and start a new import. HubSpot walks you through selecting your file, choosing your objects, and mapping columns to properties.

The mapping screen is where you verify everything. Each column header from your spreadsheet shows next to the HubSpot property it matched to. Green checkmarks mean HubSpot found a match. If something didn't match, you can manually select the right property or create a new custom property right there.

One useful feature: the "don't overwrite" option. If your spreadsheet has a column you want to import but not use to update existing records, toggle this on. It prevents the import from overwriting data that's already in HubSpot. This is useful when you're importing a list where some of the data is less reliable than what you already have in the CRM (e.g. phone numbers from a third-party list versus numbers your sales team collected directly).

Before you click "Finish Import", you'll see a consent checkbox: "I agree that these contacts know and expect to be contacted by me." This isn't just a formality. Under GDPR, ePrivacy, and CAN-SPAM regulations, you need a legal basis to contact the people you're importing. If you collected these contacts at a trade show where they gave you their card, that's legitimate interest. If you scraped them from LinkedIn, it's not. HubSpot requires this checkbox on every import and won't let you proceed without it.

On the same screen, you'll also see an option to enrich contacts using HubSpot's AI. When enabled, HubSpot searches public data sources to fill in missing properties like job title, company name, and industry. It works well for B2B contacts with professional email addresses. For personal email addresses (Gmail, Outlook.com), it won't find much. I enable it on most imports because the extra context saves manual research later.

What to check after importing

After the import finishes, HubSpot shows you a summary: how many rows were imported, how many new records were created, how many existing records were updated, and how many associations were formed.

Check for formatting issues. HubSpot flags common problems: lowercase names that should be capitalised, invalid email formats, missing required fields. These aren't errors that block the import but they do create data quality issues you'll want to clean up.

Click through to a few individual contact records to verify the data looks correct. Check that properties populated in the right places, that company associations were made, and that no unexpected duplicates appeared.

One tip that pays off weeks later: name your imports consistently. I use the same name as the source file (e.g. "2026-Q1 Webinar attendees") so I can trace any contact back to where it came from. In the contacts view, you can filter by import name. Type "import" in the filter dropdown, select the specific import, and you'll see exactly which contacts came from that batch. When something looks off in your data three months from now, this is how you track down the source.

Associations: linking contacts to companies and deals

If your import file includes both contact and company data, HubSpot automatically associates them during import. But you can also create associations manually after the fact.

On any contact record, you'll see an Associations panel showing linked companies, deals, and tickets. To add one, click the plus icon and search for the record. HubSpot also has a default setting that automatically associates contacts to companies when the email domain matches the company domain.

This automatic association is on by default and you should leave it on. It's one of the most useful features in HubSpot for keeping your data connected without manual effort.

Conclusion

Importing data is not a one-time event. You'll import from multiple sources over time: old CRMs, event attendees, webinar registrations, partner lists. The principles stay the same: start small, ensure email addresses are present, import as non-marketing, and always check the results.

The companies that run clean CRMs are the ones that treat every import as a deliberate act, not a data dump.

Related tools

No items found.

Related wiki articles

No items found.

Further reading

CRM foundations

CRM foundations

Get your contacts, companies, and deals into HubSpot cleanly. Deduplicate, map properties, and set naming conventions before anything else touches the data.

No items found.