You have a list of leads sitting somewhere, maybe a scraper export, maybe a spreadsheet you built by hand, and you want them in Instantly so a campaign can start. The upload itself takes a minute. The part that goes wrong is everything around it: bounced addresses, empty first names, a {{companyName}} variable that shows up blank in someone's inbox.
This guide covers one job: getting leads into Instantly as a clean CSV that maps correctly the first time. Follow the steps in order and you can launch today.
Step 1: Decide what columns your emails actually need
Before you touch the list, open the email copy you plan to send. Write down every variable in it. A typical cold email to local businesses might use:
- Email (required)
- First name
- Company or business name
- Website
- City
- Category or industry
Anything your copy does not use is optional. Extra columns are fine to bring along, but every variable your copy references must exist as a column, and it must be filled for every row, or you need a fallback.
A practical rule of thumb: if a field is empty for a large share of your list, rewrite the line so it does not depend on that field. "Hi there" beats "Hi ," every time.
Step 2: Build or collect the list
Where the leads come from matters less than how complete they are. For local service businesses, Google Maps is usually the richest public source because listings carry a name, category, address, phone and website. If you have not pulled a list yet, here is how to scrape Google Maps without code.
Whatever your source, check three things per row:
- There is an email address, and it belongs to the business, not a web designer or directory.
- The business name is how the owner would write it, without "LLC | Best Plumber in Austin" stuffed in.
- The first name, if you have one, is a real person's name and not "Info" or "Admin".
Step 3: Clean the spreadsheet
Open the file in Google Sheets or Excel and fix the things that will look odd in an email:
- Trim business names. Remove taglines, location suffixes and keyword stuffing.
- Fix capitalization. "JOE'S ELECTRIC" should read "Joe's Electric".
- One email per row. If a lead has several addresses, pick the best one (an owner's address over info@) and put others in a separate column or drop them.
- Remove duplicates by email, then by domain if you only want one contact per company.
- Strip role addresses you do not want, such as noreply@ or careers@.
- Save as UTF-8 CSV so accented names and apostrophes survive the upload.
Step 4: Verify emails before you upload
Sending to dead addresses produces bounces, and bounces hurt the sending accounts you have warmed up. Run the list through an email verifier and remove anything marked invalid. Treat "risky" or "catch-all" results with caution: either send to them in a small separate batch or drop them.
Do this before the upload, not after. Once the leads are in a live campaign, cleanup is slower and some emails may already have gone out.
Step 5: Match column headers to Instantly variables
This is where most personalization bugs come from. Instantly lets you map each CSV column during import. Standard fields include email, first name, last name and company name; anything else becomes a custom variable named after the column.
To keep it simple:
- Name your headers plainly:
email,first_name,last_name,company_name,website,city,category. - During import, map each to the matching field and check that nothing is marked "do not import" by accident.
- In your email copy, use the exact variable names Instantly shows you after import. A header called
Cityand a variable calledcitymay not match, so check the spelling and case.
| Your CSV column | What to map it to |
|---|---|
| first_name | First Name |
| company_name | Company Name |
| website | Website or custom variable |
| city, category | Custom variables |
Step 6: Import, then test before launching
In Instantly, open your campaign, go to the leads section, and upload the CSV. After mapping:
- Open three or four random leads and preview the email for each. Look for blank variables, odd capitalization and wrong names.
- Send a test to yourself with a lead that has missing fields to see how fallbacks behave.
- Check the duplicate and blocklist settings so people already contacted in other campaigns are skipped.
- Start with a modest daily volume and watch bounces for the first days.
Also consider when emails land. If your list spans several regions, read up on time zones in cold email before you set the schedule.
A shorter route if you find leads in GetClient
If you collect leads in GetClient, you can skip most of the reformatting. Its exports include an Instantly-ready CSV, so columns like business name, website, city and category come out in a shape that maps cleanly. You can run email verification on the list in GetClient first, then export. If you would rather automate the handoff, there is a REST API for leads you can call from your own scripts.
You also do not have to export at all. GetClient can send campaigns itself from your connected Gmail or SMTP accounts, with follow-ups that branch on opens and clicks. Whether you keep Instantly or not is your call; the steps above work either way. New accounts get 100 free credits, and plans are on the pricing page.
Common mistakes to avoid
- Uploading straight from the scraper. Raw exports carry messy names and duplicate rows. Always clean first.
- Skipping verification to save time. Bounces cost you sender reputation that takes much longer to rebuild.
- Writing copy before checking data. If 40 of your 300 leads have no first name, plan for that in the copy.
- Forgetting the reply plan. Leads in a campaign are only useful if replies turn into calls. Have a process ready: see how to turn replies into meetings.
Cold email rules differ by country, including identification and opt-out requirements. Include a clear way to unsubscribe and check the rules that apply where you and your recipients are.