The short answer: To import event leads into HubSpot cleanly, put every list into one standard template first: first name, last name, company, company domain, email if you have it, and an event code. Remove junk rows, match people with no work email to existing contacts by Record ID, and import contacts and companies together so each contact attaches to the existing company. Tag every row with the event before import, because your conference ROI reporting depends on it.
Why are event lead lists harder to import than other lists?
Most imports come from a system you control, so the columns look the same every time. Event lists come from whoever ran the event, and every organizer exports something different. One RevOps team we work with, a one-person team with a busy conference calendar, put it simply: the sheets always look different.
A conference attendee list or trade show lead file can arrive with any of these:
- One "Name" column instead of first and last name.
- Company names written inconsistently ("Acme", "Acme Inc.", "ACME Corp") or missing.
- No emails at all, or mostly personal addresses like gmail.com.
- Extra columns: badge scan notes, session, booth rating, country.
- Rows named "guest", organizer staff, and blank rows.
- The same person twice, once from registration and once from a booth scan.
- A PDF instead of a spreadsheet.
The fields that matter are few. The team above needs first and last name, company, email when the organizer provides it, and an event code they add before import. Everything else is optional, so most of the work is getting each new list into that shape.
How to import event leads into HubSpot, step by step
1. Decide what the list is for and which fields you need
Decide what should happen to these people before you touch the file. Are they going to reps for follow-up, into a nurture program, or only into reporting? That tells you whether you need marketing contact status, which owner to assign, and which columns to keep.
For most event lists, the required set is:
- First name and last name
- Company name and company domain
- Email, if the organizer provided it
- An event code
Keep an optional column only if someone will filter or report on it. Badge scan notes are usually worth keeping for the rep who follows up.
2. Standardize the columns into one template
Build one template with headers that match your HubSpot property names, and paste each new list into it. HubSpot automatically maps column headers that match existing properties, so a stable template means less manual mapping. HubSpot accepts .csv, .xlsx, and .xls files with one sheet and a header row.
A typical mapping from an organizer export to HubSpot properties:
| Column in the event file | What to do | HubSpot property |
|---|---|---|
| Full Name | Split into two columns | First name, Last name |
| Organization / Employer | Clean spelling and suffixes | Company name |
| (none) | Look up the company's website | Company domain name |
| Lowercase, trim, flag freemail | ||
| Badge notes | Keep for the rep | A notes property |
| Session / Track | Keep only if you report on it | Custom property, or don't import |
| (none) | Same value on every row | Event code (custom property) |
A few cleanup rules:
- Split full names on the first space, then review anything with prefixes, suffixes, or more than two words. Names are your main matching key when there's no email, so this is worth doing carefully.
- Clean company names in a working column (drop "Inc." and "LLC") so you can compare them against HubSpot, and keep the organizer's original value.
- Lowercase and trim emails, and add a column that flags freemail domains like gmail.com and outlook.com.
- Add a company domain. HubSpot's Company domain name property takes values up to the top-level domain (example.com), and it's how HubSpot finds existing companies.
If the list arrives as a PDF, convert it and spot-check the result, since conversion often merges columns or splits rows.
3. Remove junk rows and duplicates within the file
Delete rows that should never become contacts: "guest", "TBD", blank names, your own team, and organizer staff. Filter on your company's domain to catch colleagues who registered.
Then dedupe the file itself. Sort by email, then by last name and company, and merge rows for the same person, keeping the most complete row and any useful notes from the other.
4. Match rows to existing HubSpot contacts, including rows with no email
HubSpot deduplicates contacts on import by Email or Record ID, and companies by Company domain name or Record ID. If a row has none of these, HubSpot has nothing to match on and imports it as a new record. We see this constantly in the CRMs we work on: rows without an email or domain fall through the import's deduplication and become duplicates.
To import contacts without email and still avoid duplicates, match them before you import:
- Export your HubSpot contacts with Record ID, first name, last name, email, and company.
- Look up each event row by last name plus company, then confirm first name. HubSpot's own documentation suggests this: export with Record IDs, then cross-reference with VLOOKUP.
- Add the Record ID to every confident match. Record ID takes priority over other identifiers, so the row updates the existing contact.
- Put uncertain matches in a separate tab for a person to review.
This matching is the slowest part of every event import, and it's the part Quill automates if you import event lists every month.
Personal emails need their own rule. One team got a "confirmed attendee" list full of gmail addresses and rows named "guest", and asked whether those personal emails would still match existing contacts on other fields, and whether they would overwrite the work emails already in HubSpot.
- A personal email won't match a contact that has a work email. HubSpot matches on the Email value, so a gmail row without a Record ID becomes a new contact. Match those rows on name and company instead.
- A personal email can replace a work email once the row has a Record ID, because a mapped Email column then updates that contact. For matched rows, leave the email column out, map it to a separate custom property, or select Don't overwrite for Email in the mapping step. A work email you trust should win over a personal one from an event list, which is the kind of decision we cover in survivorship rules.
5. Make sure contacts associate with existing companies
A common failure is a bulk import that creates new companies instead of associating contacts with the ones you already have. One team we work with hit exactly this.
When you import contacts and companies together in one file, HubSpot associates the two in each row using unique identifiers: Email or Record ID for the contact, Company domain name or Record ID for the company. If the company column only has a name, HubSpot can't find the existing company, so it creates a new one. It's the same domain-matching problem behind Salesforce to HubSpot migration duplicates.
To associate contacts with existing companies on import:
- Put the Company domain name, or the company's Record ID, on every row. On import, HubSpot checks both primary and additional domains.
- Don't rely on the setting that creates and associates companies from a contact's email domain. It doesn't override associations from a multiple object import, and it won't create a company for a contact you left without one in that import.
- For freemail contacts, that setting looks at the contact's Website URL instead, and makes no association if it's empty. Another reason to add the domain yourself.
6. Tag every row with the event
Add the same event code to every row in a custom property, such as "Event code". This is what lets you track conference leads in HubSpot later.
The one-person team from earlier adds an event code to every sheet because it triggers a HubSpot workflow that attaches the contact to the right campaign. The import tool doesn't add contacts to a campaign, but the Add to campaign workflow action does (campaigns require Marketing Hub Professional or Enterprise).
Two more tags cost nothing:
- Name the import after the event. For records an import creates, HubSpot sets Record Source to "Import" and Record Source Detail 1 to the import's name.
- Create a contact segment from the import, an option at the end of the import, so you have a fixed list of who came from that file.
If you use HubSpot marketing events, you can also import participants with a registered, attended, or cancelled status. That import uses email as its identifier, so it only covers rows that have one.
7. Decide marketing contact status and consent
At the end of the import, HubSpot asks you to confirm that contacts expect to hear from you and that the file isn't a purchased list. You can set imported contacts as marketing contacts, which requires Marketing Hub and affects billing, and set a legal basis for processing if data privacy settings are on. Decide this per event based on what attendees agreed to, rather than making everyone a marketing contact by default.
8. Test a small batch, then import the rest
Import 10 to 20 rows first, including a few matched by Record ID and a few new companies. Check that matched contacts updated instead of duplicating, that contacts landed on the right companies, and that the event code and workflow fired. HubSpot lists rows with errors after an import and lets you download them with the reason for each. Fix those rows in your template, then import the rest. If something else goes wrong, such as updates you didn't intend or an import you need to undo, see HubSpot import problems and how to fix them.
Why conference ROI reporting breaks without consistent tagging
Conference ROI reporting depends on knowing which contacts, companies, and deals came from which event. If one list got an event code, another only went into a segment, and a third got nothing, you can't answer that without rebuilding the history by hand.
One team we work with tracked conference ROI in a spreadsheet next to HubSpot. It worked for a few events and broke under the volume of data once they were running dozens. Tagging every row in HubSpot at import time is what lets that reporting live in the CRM. Make the event code a dropdown property with a fixed format, such as year plus a short event name, so nobody types a slightly different version.
Build one template and one checklist for conference season
If you run events regularly, the work repeats. Save the template from step 2 and keep a short checklist: split names, clean companies, add domains, drop junk rows, dedupe the file, match to Record IDs, protect work emails, tag the event, test a batch. Every list then lands in HubSpot the same way.
How Quill helps
Quill runs an agent that takes the event spreadsheet as the organizer sent it and matches every attendee to existing HubSpot contacts and companies, including rows with no email or only a personal one. It flags uncertain matches for a person to review, and creates or updates the rest with the event tagged, without overwriting work emails you already have. See CRM Hygiene, or book 15 minutes to walk through one of your event lists.
Frequently asked questions
Can you import contacts into HubSpot without an email address?
Yes, but HubSpot can't match them to existing contacts. Without an Email or Record ID, each row is imported as a new contact, so match rows by name and company first and add their Record IDs.
How do I import a conference attendee list into HubSpot?
Put the list into a standard template and import contacts and companies together. Split names, add company domains, remove guest and staff rows, match people without work emails to Record IDs, add an event code, and test a small batch first.
Why did my HubSpot import create new companies instead of associating contacts with existing ones?
The file most likely identified companies by name instead of domain. HubSpot finds existing companies on import by Company domain name or Record ID, so a row with only a company name creates a new company.
Will a personal email in an event list overwrite a work email in HubSpot?
Not unless the row also has the contact's Record ID. Without one, the personal email creates a new contact. With one, a mapped Email column updates the email, so leave it out or use Don't overwrite for matched rows.
How do I track conference leads in HubSpot?
Add a consistent event code property to every row before import, and use it for reporting and for a workflow that adds contacts to the right campaign. Naming each import after the event also records it in Record Source Detail 1 for new contacts.
How do I map spreadsheet columns to HubSpot properties?
Name your columns to match HubSpot properties and HubSpot will map them automatically. Map the rest by hand in the mapping step, and choose Don't import column for anything you don't need.