A lead list from an event is the messiest data your CRM will receive all year. It arrives from three or four sources at once, it was captured standing up by people who were also trying to have conversations, and it is under time pressure because the follow-up window is already closing.
The temptation is to import it and tidy up later. Later never comes, and the tidying gets harder every day the records accumulate activity. This is the run order that avoids that, and the reasoning behind each step.
Why the order matters
Each step below makes the next one work. Doing them out of sequence means redoing them. Deduplicating before normalising, for example, misses every duplicate that differs only by letter case, and you will not notice until the second import.
Step 1: consolidate, and record where each row came from
Pull everything into one sheet: each staff member’s captures, the organiser export if you rented lead retrieval, any tablet form submissions, and the prize draw bowl if you ran one.
Add a source column. This takes thirty seconds and pays for itself repeatedly. It tells you which capture method actually produced usable leads, which is the only way to make a better decision about tooling next year rather than repeating the same setup out of habit. It also tells you which rows to trust when two sources disagree about somebody’s job title.
Step 2: normalise before you match anything
Normalising means making the same value look the same everywhere, so exact matching works. Four columns need it.
Do not overwrite the original values. Put the normalised version in a new column and keep the raw one, because when a phone number turns out to be wrong you will want to see what was actually printed on the card.
Company suffixes matter more than people expect. If half your rows say Northwind Logistics and half say Northwind Logistics Pvt Ltd, your CRM will create two company records, and every report that groups by account will be wrong in a way nobody notices for months.
Step 3: deduplicate on email
This is covered in depth in why your event lead import creates duplicate contacts, so the short version here: match on email, never on name, and treat generic addresses such as info@ and sales@ as company addresses rather than people.
When you find a duplicate pair, keep the row with the most context rather than the earliest one. Then copy anything unique from the other row into it before discarding. The row that arrived second frequently has the voice note and the event tag while the first has only a name and a company.
Step 4: verify selectively, not exhaustively
The instinct is to check every field on every row. On two hundred leads that is hours, so it does not happen, and the list gets imported unverified instead. Verify selectively.
Check three things: the fields your extraction flagged as low confidence, every email address that looks structurally odd, and any row where the company name and the email domain disagree. That last check catches a surprising number of misreads, because a card for Northwind Logistics with an email at a completely unrelated domain is usually an extraction error rather than a person using a personal address.
This is the entire argument for per-field confidence scoring. Without it you are choosing between checking everything and checking nothing, and in practice everyone chooses nothing.
Step 5: what to reject rather than fix
Not every row deserves rescuing, and deciding that deliberately is part of cleaning rather than a failure of it.
Reject rows with no email and no phone. There is nothing to contact them with. Keep the card image on file in case somebody recognises the name later, but do not put an uncontactable record into the CRM where it will inflate your counts.
Reject obvious non-leads. Students, job seekers, competitors, and the vendors who worked the aisle handing out their own cards. A polite reply is right; a place in the pipeline is not.
Quarantine anything you cannot read. Not reject, quarantine. Put unreadable captures in a separate tab with their card images attached. Somebody who worked the stand can often identify them in five minutes, and that five minutes is worth more than an hour of guessing at characters.
Record the rejections with a one-line reason. A lead marked rejected with a reason is useful six months later. A lead that silently never got imported is indistinguishable from one your process dropped, and you will never know which it was.
Step 6: tag, test, then import
Every row needs the event name in a column that maps to whatever your CRM uses for campaign or source. This is the step that decides whether you can answer the question the finance team will eventually ask, which is covered in the 48-hour playbook under measurement.
Then import ten rows first. Check that they landed where you expected, that the tag came through, that no field got mapped to the wrong place, and that the CRM did not create duplicates against records already present. Fix the mapping, then import the rest.
Ten rows takes two minutes and catches the mapping error that would otherwise affect two hundred. The field-by-field mappings for the common CRMs are on the HubSpot, Zoho and Salesforce guides.
What good looks like afterwards
A cleaned event list has four properties, and you can check all of them in about a minute.
The drop from 247 to 198 is not a loss. It is the difference between the number people report and the number that was ever real, and finding it before the import is considerably better than discovering it during a pipeline review.
Doing this when the list is not yours
Marketing operations teams frequently clean a list they did not capture, handed over by a sales team that has already left for the next show. That changes the job, because you cannot resolve ambiguity from memory.
Three rules make it survivable. Never guess at a field you cannot verify: leave it blank and flag the row, because a blank is honest and a guess is a bounce. Never discard a row without recording why, since the person who captured it may well ask. And send the quarantine tab back to whoever worked the stand within twenty-four hours, while they can still identify the unreadable ones.
It also helps to agree the handover format before the show rather than after. A shared sheet with agreed columns costs nothing to set up and removes an entire category of argument about whether a field was captured or lost.
Automating the parts worth automating
Most of this run order is mechanical, which raises the obvious question of what to automate. The honest answer is: the normalising, and almost nothing else.
Lowercasing emails, trimming whitespace, standardising phone formats and unifying company suffixes are deterministic rules. Write them once as spreadsheet formulas and reuse them every show. That is fifteen of your thirty minutes gone, permanently.
Deduplication is semi-automatable: matching on email is a formula, but deciding which of two rows to keep needs a human, because the richer row is not identifiable by any rule you can write. Verification cannot be automated at all, which is the entire point of a confidence score narrowing what needs looking at.
Be wary of tools that promise to clean event data end to end. The steps that need judgement are exactly the steps where a wrong automated decision is invisible, and an invisible wrong decision in a lead list is considerably more expensive than fifteen minutes of your time.
The mistake that costs the most time
If there is one habit worth changing, it is treating cleaning as a task that happens after the show rather than as part of the show.
A list cleaned on the Monday after a Friday close is far harder to clean than one cleaned on the Friday evening, because the ambiguities are no longer resolvable. Which of these two rows is the real email? Who is the person with no company name? Was this row the person who asked about pricing or the one who wanted a job? On the night, somebody knows. By Monday, nobody does, and the honest options narrow to guessing or discarding.
The version that works is twenty minutes each evening rather than ninety minutes the following week. It is less total time, it produces a better list, and it means the follow-up described in the 48-hour playbook can actually start on time rather than waiting on data work.
The counter-argument is always that the team is exhausted after a show day. That is true, and twenty minutes of tidying while the details are still fresh is genuinely easier than ninety minutes of forensic reconstruction when they are not.
The short version
Consolidate every source into one sheet with a source column. Normalise emails, phones, company suffixes and names before matching anything. Deduplicate on email, keeping the richest row. Verify only the flagged fields and the structurally odd ones. Reject uncontactable rows and obvious non-leads with a recorded reason, and quarantine what you cannot read. Tag every row with the event, test ten, then import.
The whole thing takes about thirty minutes for a typical show, and it is the difference between a lead list your sales team trusts and one they quietly stop opening. If you want the export to arrive already deduplicated, tagged and carrying the voice transcript, the CSV export does that, and 20 free scans covers a first event.