Import leads with their companies and contacts from one file
A HubSpot lead is not a standalone record: it belongs to a contact, and most teams also want it linked to the contact’s company. When the source is one spreadsheet, you would otherwise import companies, then contacts, then link them, then create the leads. This guide shows how to import leads with their companies and contacts from one file, what is matched, what is created, and what is never touched.
Last checked 5 Nov 2026 against HubSpot’s published documentation.
Why one file needs a chain
HubSpot’s Leads API creates a lead from a name and an association to an existing contact. The contact in turn is usually tied to a company. So a correct import has an order: the company, then the contact, then the lead. Done by hand or in several imports, that order is easy to break, and a mismatch in an e-mail or a domain gives you a duplicate record or a lead with nothing attached.
How a row is matched
- Company, by domain. The domain comes from the company domain column, or from the contact’s work e-mail when the column is empty. Scheme,
www.and any path are stripped. If a company with that domain exists, it is reused. If not, it is created, with the company name from the file when there is one. - Contact, by e-mail. If a contact with that e-mail exists, it is reused. If not, it is created with the first name, last name, phone and job title from the file. A contact is linked to its company when it is not linked yet.
- Lead. Created with the lead name and linked to the contact and the company. Lead type, label, pipeline, stage, owner and source are set when the file has them and HubSpot knows the values.
What is never touched
An existing contact or company is never overwritten. If your file has a different phone number or job title for a contact that already exists, the HubSpot value stays. The optional setting “fill empty contact fields” (off by default) only writes into fields that are empty. LeadCascade does not update existing leads either.
Free mail addresses
A personal address such as gmail.com says nothing about an employer. LeadCascade never uses a free mail domain to create or match a company, so a row with only a personal e-mail produces a contact and a lead, and no company. If you know the company, put its domain in the company domain column.
Running the same file twice
A contact that already has a lead with the same name is skipped. Run the file again after fixing a few rows and the leads that were created the first time are not created again; they show as skipped in the preview.
A worked example
Take five rows. Two share the domain acme-example.com, one has a domain that HubSpot already knows, one has only a gmail.com address, and one has an e-mail that belongs to a contact who is already in HubSpot with a company. The preview shows the result before anything is written: one new company for Acme, linked to both of its contacts; the known company reused; the gmail.com contact with no company at all; the existing contact reused as it is, with its current phone number and job title. Five leads are planned, and each of them is linked to its contact, and to the contact’s company where there is one. You read it, fix what needs fixing in the file, and only then type the confirmation.
Common mistakes
- A company name without a domain. Companies are matched by domain only, so a name on its own does not find or create a company. Put the domain in the company domain column.
- Two spellings of one domain. A scheme,
www.or a path is stripped before matching, but different domains stay different. - Expecting an update. A contact that already exists is not changed by the import. Edit it in HubSpot if its details are out of date.
- The same lead name for one contact twice. The second row is refused as a duplicate; a lead that already exists under that contact is skipped.
Doing it with LeadCascade
- Put everything on one row. E-mail and names for the contact, domain and name for the company, and a name for the lead.
- Connect HubSpot and upload the file. Columns are matched by header and can be changed by hand.
- Check the file. The preview shows how many leads, new contacts and new companies the run would create, and which rows are skipped.
- Confirm. Type
IMPORTand the number of leads. - Review the result. The result CSV marks, for each row, whether the contact and the company were created or already existed, with links into HubSpot.
What the preview tells you
Before anything is written, the preview reads your HubSpot account: the lead properties, the pipelines and stages, the owners, and the companies, contacts and leads your file names. It then counts the leads to create, the new contacts, the new companies and the skipped rows, and lists every row with a problem, with its row number and the reason. The list can be downloaded as a CSV.
What to expect
The run goes in phases: companies, then contacts, then leads, in batches of up to 100, and a run holds up to 1,000 rows. Each phase is saved before the next starts. The result lists every row, and for undo within 30 days see how to undo a lead import in HubSpot. For the file layout and the first steps, read how to import leads into HubSpot from a CSV. Prices are in pricing, excl. VAT/sales tax.
Questions
Which associations does each imported lead get?
Each lead is associated with its contact as the primary contact and, when the row has a company, with that company as the primary company. The association types are read from your HubSpot account. A contact created by the run is linked to its company as the primary company; an existing contact gets HubSpot’s default contact-to-company association.
Does it overwrite an existing contact or company?
No. An existing contact or company is reused as it is. One option, off by default, fills empty contact fields; it never replaces a value that is already there.
What if the file has no company column?
The domain of the contact’s work e-mail is used. A free mail domain such as gmail.com or outlook.com is never used, so those leads are linked to their contact only.
What if the company already exists under that domain?
It is found by domain and reused. If two rows in one batch name the same new domain, one company is created and both leads are linked to it.
Does it delete the contacts and companies on Undo?
No. Undo deletes only the leads the run created. Contacts and companies are real CRM data, so the result CSV marks the ones the run created and links them, and you decide what to do with them in HubSpot.
What does it cost?
Checking a file is free, and so are the first 10 leads in each HubSpot account. A lead counts once when it is created; the contacts and companies created with it are not counted separately. Then $29 for a 7-day pass (up to 3,000 leads) or $49 a month, excl. VAT/sales tax.
Related guides
- How to import leads into HubSpot from a CSV
Why HubSpot’s own import does not list Leads, the file layout, and importing leads with LeadCascade.
- Undo a lead import in HubSpot
Deleted leads go to the recycling bin: how to undo by hand, and how LeadCascade Undo works for 30 days.
- Pricing
Free file checks, a $29 pass or $49 a month, excl. VAT/sales tax.
- LeadCascade overview
What LeadCascade does with your file, the rules for each row, and how undo works.
Atesen Software makes LeadCascade. HubSpot is a trademark of its owner; LeadCascade is independent software.
Every row of your file becomes a HubSpot lead linked to its contact and company, with a result CSV, a link to each record in HubSpot and Undo for 30 days.
Who it is for: RevOps, sales ops and HubSpot consultants who move leads into HubSpot from another CRM or a spreadsheet and want each lead in the Leads workspace with its contact and company. The HubSpot account needs the Leads object (Sales Hub Professional or Enterprise).
Start free: connect HubSpotCompare plans
Free to connect and check a file. First 10 leads free, then $29 for 7 days or $49 a month, excl. VAT/sales tax.
Three steps

Connect HubSpot
You sign in on HubSpot’s own page and choose the account. LeadCascade never sees your HubSpot password.

Check the file, free
Choose a CSV or Excel file with one row per lead. LeadCascade reads your account and shows the leads, new contacts and new companies the run would create. Nothing is written yet.

Type IMPORT n
Type IMPORT and the number of leads. You get a result CSV, a link to each record in HubSpot, and Undo for 30 days.