Resources

Most tools accept CSV, but they fail when column names are inconsistent or notes get dropped. This layout is intentionally simple.

The goal is not a perfect database. The goal is:

  • clean import
  • clear source attribution (“trade show”)
  • preserved booth notes (so follow-up feels human)

CSV columns that import well

Recommended headers:

  • first_name
  • last_name
  • email
  • phone
  • company
  • source (example: trade_show)
  • event_name
  • notes
  • captured_at (ISO date/time)

Optional columns (nice to have)

These are useful if your CRM supports them:

  • timeline (Now / 30d / 90d+)
  • interest (what they asked about)
  • owner (sales rep / booth staff)
  • status (Hot/Warm)
  • utm_source / utm_campaign (if you also ran digital campaigns)

Mapping tips

  • Put booth context into notes (what they asked for, timeline, budget).
  • Keep source consistent so you can filter later.
  • If your CRM requires a single “name” column, merge first/last.

Notes formatting (makes follow-up easier)

Keep notes short and structured. Example:

  • “Asked for pricing; timeline 30d; interested in X”
  • “Wants quote; service area Y; prefers text”
  • “Met at booth; wants demo; follow up next week”

Your future self will thank you.

Common import problems (and fixes)

Duplicate contacts

If the same lead appears twice:

  • prefer the row with the best notes
  • keep one row per email (email is usually your unique key)

Missing last names

It’s fine. Many CRMs can import with first_name only. If you only have a full name, put it in first_name and leave last_name blank.

Phone formats

Strip weird punctuation and keep digits consistent. Don’t guess missing digits.

Import checklist (works for most CRMs)

Most CRMs follow the same pattern:

  1. Create/import a CSV
  2. Map columns to fields
  3. Decide how to handle duplicates
  4. Apply tags/source fields
  5. Import and spot-check 10 records

The biggest mistakes happen at step 3 (duplicates) and step 5 (not spot-checking).

Spot-check rules (10 records, 2 minutes)

After import, pick 10 contacts and confirm:

  • email landed in the right field
  • notes preserved
  • source/event name is set
  • you can filter by source = trade_show

If one of those is wrong, fix the CSV and re-import before you build workflows on top of it.

Example CSV row (copy/paste)

Here’s a practical example of what one row can look like:

first_name,last_name,email,phone,company,source,event_name,notes,captured_at
Jamie,,jamie@example.com,5551234567,Acme Co,trade_show,HVAC Expo,"Asked for quote; timeline 30d; prefers text",2026-01-05T12:34:00Z

The “notes” column is the money column

If you only keep one “custom” field, keep notes. Notes are what allow you to follow up with context:

  • “Interested in demo”
  • “Asked for pricing”
  • “Wants estimate, weekend preferred”

CRMs can store dozens of fields, but follow-up happens with context.

Captured-at timestamps (optional, useful)

If you can set captured_at, it helps you:

  • sort leads by recency
  • run “post-show” automations
  • measure speed-to-first-touch

If you don’t have it, you can leave it blank.

Fast path: follow up first, CRM second

If your goal is revenue, don’t block follow-up behind the import. A good workflow is:

  1. Send follow-ups first (same day / next morning)
  2. Import to CRM once replies start coming in

Tagging / segmentation (simple approach)

Even if you don’t have a complex CRM setup, these basic tags help:

  • source = trade_show
  • event_name = {show name}
  • status = hot/warm (even if you store it in notes)

Then you can filter and run a consistent cadence.

CRM vs email tool: what to store where

  • If you use a CRM: store the lead, notes, and status there.
  • If you use an email tool: store the list there, but keep notes somewhere else (or in the CRM).
  • If you’re small and moving fast: follow up first, then import.

The “perfect system” is less important than sending the first follow-up quickly.

Basic dedupe rule (practical)

If two rows share the same email:

  1. keep the row with better notes
  2. merge missing fields (phone/company) into the kept row

If you only have phone numbers and not emails, phone can be your dedupe key—but only if formatting is consistent.

A simple status field (optional)

If your CRM supports it, a small status field helps:

  • hot (ready to book / asked for pricing)
  • warm (interested, later)
  • info (general interest)

If you don’t have a status field, put it in notes.

Where to put booth notes if your CRM is strict

Some systems have limited note fields. If that’s the case:

  • Use a custom field like trade_show_notes
  • Or store notes in the “description” field
  • Or store notes as a “contact note” after import (if supported)

The key is: don’t lose the context you captured at the booth.

Simple post-import workflow (optional)

Once leads are in your CRM, the “minimum effective” workflow is:

  1. Filter: source = trade_show and event_name = {show}
  2. Work Hot leads first (or the most recent leads first)
  3. Log outcomes: replied / scheduled / not now

Even this minimal structure prevents leads from disappearing into a list forever.

Permission / opt-outs (don’t skip this)

If someone asks you not to contact them:

  • mark them as “do not contact” in your CRM
  • keep a suppression list in your email tool

This is basic hygiene and keeps deliverability healthy.

If you also use an email newsletter tool

If you push leads into an email tool (Mailchimp, Klaviyo, etc.), keep the same basics:

  • import with source = trade_show
  • keep event_name (or a tag) so you can segment
  • start with a short, human follow-up message (not a blast)

If you attend multiple shows per year, the event_name field is the difference between “a pile of leads” and a list you can actually work. It also makes reporting simple: you can see which events produced revenue.

Ready to skip CSV entirely?

If you have photos of lead sheets, you can upload them and send follow-ups without building a spreadsheet first.