Turn a conference attendee list into net new CRM contacts
Point the app at your attendee spreadsheet and get three clean tabs: who is genuinely new, who you already know, and who needs better data.
Build me an app for triaging event attendee lists. After every conference or webinar I get handed a raw attendee spreadsheet and waste a day working out who is actually new to us. I want to point the app at a Google Sheet, have it enrich and match every row, and then work out of the results.
Setup: I paste a Google Sheet URL or ID and pick the tab and header row, and the app reads the attendees using the Google Sheets Get Values operation. Show me the detected columns and let me map which one holds full name, work email, company name, job title and LinkedIn URL. Save that mapping along with an event name so the next import remembers it. Each import is stored separately so I can reopen the list from a conference weeks later.
Enrichment: run every attendee through Lusha Enrich People (Bulk). That operation accepts at most 100 records per request, so chunk the list and show a progress indicator with a running count of records processed rather than a blank loading state. Lusha can match on name plus company, on work email, or on LinkedIn URL, so send whatever identifiers each row actually has. Important: a 404 from Lusha means no data was found for those identifiers, not a failure, so those rows belong in the could not be matched tab and must never surface as an error. Keep the per record isCreditCharged flag Lusha returns so I can see how many credits the import consumed.
CRM matching: for each enriched attendee, check HubSpot using Search Contacts, matching on the verified email first and falling back to name plus company when there is no email. HubSpot search is limited to roughly four requests per second, so pace the calls and batch where possible.
The main screen is three tabs, each showing its count in the label. Net new: enriched people with no HubSpot match, each row showing name, job title, employer, verified email and phone. Already in the CRM: attendees that matched an existing contact, showing the existing owner, lifecycle stage and a link through to the HubSpot record so I can see who already owns the relationship. Could not be matched: rows Lusha returned nothing for, plus rows whose source data was too thin to even attempt, with a plain reason on each row such as no email or company in the source row, or no data found for these details. Let me edit the identifiers on those rows and re-run enrichment on just that selection. This tab matters as much as the other two because it tells me which rows had bad input data instead of silently dropping them.
I work out of the net new tab. Every row has a checkbox, with select all and per row ticks. One button, Create in HubSpot, takes the ticked people and creates them using Batch Create Contacts in chunks of 100, writing first name, last name, email, phone, job title and company, plus the event name as the original source. Before creating anything, re-check the ticked emails against HubSpot with Search Contacts so a contact someone else added since the import cannot become a duplicate. Anything that turns out to already exist moves into the already in the CRM tab instead of being created, and tell me that happened.
For every contact created, file a follow-up task using Create Task, associated to the new contact, with a subject like Follow up: event name, a due date I choose when I hit the button (default three business days out) and a priority. Load the rep list with List Owners and let me choose how tasks are assigned: all to one rep, round robin across a set of reps I select, or by a simple rule such as employer size. Show me the resulting per row assignment before I confirm.
Write the enriched results back to the source sheet with Update Values so the list itself stays useful to everyone else. Add columns for verified email, phone, job title, employer, match status (net new, already in the CRM, or could not be matched), the HubSpot contact ID where one exists, and the date it was created. Write back to the same rows so the sheet keeps its original order, and let me trigger the write back manually as well as automatically after a create run.
Add a Build my call list button that starts a background agent. I keep an editable description of my ideal customer profile in the app settings. The agent takes the net new attendees, groups them by employer, enriches the top employers with Lusha Enrich Company (Single) to pull industry, headcount, revenue and technologies, then ranks the net new attendees by fit against my ICP description using both that company data and each person's seniority and role. It writes a prioritized call sheet back into the app as a fourth tab: one row per person in rank order with a one line reason for the ranking, for example VP of Operations at a 400 person logistics firm, matches your mid market ICP and they run the stack you integrate with. Show the run status while the agent works, and keep the last generated call list with the date it was generated so I can reopen it.
Persist everything from an import inside the app: the enriched rows, the tab assignments, my ticks, which contacts were created, and the generated call list, so reopening the app after the event picks up exactly where I left off. Show a header for each import with the event name, the total row count, and how many people landed in each of the three tabs.
What does this prompt do?
- Reads your attendee spreadsheet and fills in each person's verified email, phone number, job title and employer
- Sorts everyone into three tabs, net new, already in your CRM, and could not be matched, so no row gets silently dropped
- Tick the people worth pursuing and create them in HubSpot in one click, each with a follow-up task filed on the right rep
- Writes the enriched details back into the original sheet, and builds a prioritized call list ranked against your ideal customer
What do I need to use this?
- A Google Sheet of attendees, with at least a name and company, or an email address, in each row
- A Lusha account with enrichment credits available
- A HubSpot login that can create contacts and tasks
- A short description of your ideal customer, used to rank the call list
How can I customize it?
- Change which spreadsheet columns map to name, email, company and job title, and save the mapping for next time
- Set how follow-up tasks get assigned: everything to one rep, round robin across a group, or by a rule like company size
- Rewrite the ideal customer description any time to re-rank the call list after a different kind of event
FAQs
What happens to attendees we cannot find any data for?
Will this create duplicate contacts in HubSpot?
How large an attendee list can it handle?
Does it work with webinar exports, not just conferences?
Do I have to add everyone to the CRM at once?
Related templates
Every weekday at 10am, an AI voice agent phones your most overdue Xero accounts, logs what each customer promised, and reports back to finance in Slack.
See every Google Maps listing you manage on one screen, ranked worst first, with an audit button that writes the fix list for you.
Your team picks a template, finds the customer, checks they are safe to email, then sends it, with every send logged where the whole team can see it.
Twice a day we spot the people clicking your pricing and demo pages, create a follow-up task for their owner, and post a ranked recap to Slack.
Every night at 2am, pull the contacts on your open and won deals and block them from your cold outreach before the next send goes out.
Build every text campaign in one screen: check who is actually reachable, see a realistic send plan, then watch delivery land row by row.
Stop losing a day to every post-event attendee list.
Set this up once and every conference, webinar and trade show list gets triaged the same way, in minutes rather than a day.