How to import leads into HubSpot from a CSV
If you need to import leads into HubSpot from a CSV, for example a list from a CRM you are leaving, an event spreadsheet or a distributor report, you will find that HubSpot’s import tool does not offer Leads as an object to import. This guide shows what HubSpot does offer, the by-hand way, the file layout that works, and how LeadCascade reads that file, creates the contact and company each lead needs, and creates the leads, with a preview first and an undo afterwards.
Last checked 5 Nov 2026 against HubSpot’s published documentation.
What HubSpot offers on its own
HubSpot’s import tool brings in contacts, companies, deals, tickets, custom objects and activities from a file. The article that describes it, last updated 7 Oct 2026, never lists Leads. Users have asked for it: a feature request for bulk-importing leads from a CSV is on HubSpot’s ideas forum, and HubSpot has marked the related idea “Export/Import of Leads” as Not Currently Planned (12 Jun 2026).
The Leads API can create leads, with two conditions that matter for a file: a lead needs a name, and it must be associated with an existing contact. Requests go in batches of up to 100.
The by-hand way
Create the leads one at a time in the Leads workspace, picking the contact for each. Or import the file as contacts first and then create leads from those contacts: community answers describe doing it in bulk from the contact index page or with workflows (see the HubSpot community thread on importing leads). For a handful of leads this is fine. For a list of two thousand, or a migration from another CRM, it is hours of the same few fields, and the company links still have to be made.
The file layout
Use one row per lead. These are the columns LeadCascade understands:
- E-mail. Required. It finds or creates the contact, and a row without a valid e-mail is refused with its row number.
- First name, last name, phone, job title. Optional. Used when the contact has to be created.
- Company domain and company name. Optional. The domain finds or creates the company. If it is missing, the domain of the work e-mail is used.
- Lead name. HubSpot needs a name on every lead.
- Lead type, lead label, pipeline, stage. Optional. They must exist in the HubSpot account.
- Owner e-mail and source. Optional. The owner must be a user in the account.
Any other column can be matched by hand to any existing lead property. The file can be a CSV or an Excel (.xlsx) workbook: for Excel, the first sheet is read. Example, three leads:
Email,First Name,Last Name,Job Title,Company Domain,Lead Name,Owner Email
ana.lopez@acme.example,Ana,Lopez,Head of Sales,acme.example,Acme renewal enquiry,rep@yourteam.example
bo.chen@northwind.example,Bo,Chen,RevOps Manager,northwind.example,Northwind demo request,rep@yourteam.example
name@gmail.com,Cy,Mora,,,Event contact: Cy Mora,rep@yourteam.example
The third row has no company: a free mail domain such as gmail.com is never used to create or match a company, so the lead is linked to its contact only.
A worked example
Take a spreadsheet of 1,200 people from an old CRM, 900 with a work e-mail and 300 with a personal one. Put the 1,200 rows in a file with a lead name for each. The preview shows, for example, the leads to create, the contacts that already exist in HubSpot and are reused, the new contacts, the companies that were found by domain and the new ones, and the rows to fix. You correct those rows in the original file or run the rest, and the run creates the rest in batches.
Common file problems
- Missing or invalid e-mail. The row is refused with its row number, because a lead cannot exist without a contact.
- The same person and lead name twice. The second row is refused as a duplicate.
- Unknown owner, pipeline or stage. The name must match what the HubSpot account has; the row is listed with the reason.
- Existing records. An existing contact or company is reused and never overwritten.
- File size. A run holds up to 1,000 rows and a file up to 4 MB. Larger loads go in several runs.
Doing it with LeadCascade
- Prepare the file. One row per lead, with an e-mail for the contact and the other columns listed above. A company domain and a lead name make the result complete.
- Connect HubSpot. Sign in on HubSpot’s own page and choose the account. The person who connects needs permission to install apps in that account.
- Upload the CSV. LeadCascade maps the columns by their headers. Fix the mapping by hand if a header was not recognised, or match a column to any existing lead property.
- Check the file. This is free and writes nothing. The preview counts the leads, new contacts and new companies the run would create, and lists the rows that are skipped or need fixing, with their row numbers.
- Confirm. Type
IMPORTand the number of leads. The number is checked against the preview. - Open the result. Each row is listed with its outcome and a link to the records in HubSpot, and the result CSV can be downloaded.
Fixing errors and trying again
The rows to fix can be downloaded as a CSV file. Their row numbers match your original file, so you can correct the cells in the original and upload it again. Checking a file is free and unlimited, so uploading the same file several times while you clean it costs nothing.
What to expect
Companies, then contacts, then leads are created in batches, each batch saved before the next starts. If HubSpot’s answer to a write is lost, LeadCascade reads HubSpot before it repeats it. A run of up to 1,000 rows finishes in minutes, and closing the page does not stop it.
Connecting, uploading and checking are free, and so are the first 10 leads in each HubSpot account. After that a $29 one-off pass covers one HubSpot account for 7 days and up to 3,000 leads, and $49 a month per account has no limit; both prices are excl. VAT/sales tax. See pricing. To create the company and contact chain from one file, read how leads, companies and contacts are created from one file.
Questions
Can HubSpot import leads from a CSV on its own?
Not through the built-in import tool, as far as HubSpot’s own page shows on 5 Nov 2026: the article on importing objects lists contacts, companies, deals, tickets, custom objects and activities, and not Leads. A feature request for a bulk lead import from a spreadsheet is open on HubSpot’s ideas forum, and a related idea for importing and exporting leads shows the status “Not Currently Planned” (12 Jun 2026). Leads can be created through HubSpot’s API, which is what LeadCascade uses.
Can I import leads from an Excel (.xlsx) file?
Yes. LeadCascade reads the first sheet of an .xlsx file in your browser, the same way as a CSV, so you do not have to convert it first. A file can be up to 4 MB, and a run holds up to 1,000 rows.
How do I bulk create leads in HubSpot from a spreadsheet?
Inside HubSpot the route is two steps: import the contacts (and companies) first, then create leads from those contacts, from the contacts index or with a workflow, and set owner, stage and the other lead fields afterwards. LeadCascade does it from the spreadsheet in one pass: it creates up to 1,000 leads per run, each linked to its contact and company, with owner, pipeline, stage, type and label filled.
Why does every lead need a contact?
HubSpot’s Leads API creates a lead only with a name and an association to an existing contact. LeadCascade therefore finds or creates the contact for each row first, by e-mail, and links the lead to it.
Which HubSpot plan has Leads?
The Leads object is part of the prospecting workspace in HubSpot accounts with Sales Hub Professional or Enterprise. LeadCascade needs an account that has it.
What happens if I run the same file twice?
Nothing is created twice. A contact that already has a lead with the same name is skipped and listed in the preview.
Can I undo the import?
Yes, for 30 days. See how to undo a lead import in HubSpot. The first 10 leads in each HubSpot account are free.
Related guides
- Import leads with their companies and contacts from one file
How one row becomes a company, a contact and a lead linked to both, and what is reused.
- 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.