How to Clean a Google Maps Lead List Before Cold Outreach
Build a Google Maps lead list with LocalProspects, then review fit, duplicates, contact data, and exports before cold outreach.

Table of contents
First, you need the right list. If you sell websites to independent HVAC companies in Phoenix, start by finding those businesses in that market. With LocalProspects, you can search a business category and location, pull Google Business Profile results, and get more than the basic name, address, and phone number. The search also checks business websites for public emails and useful context, adds owner names when supported by public evidence, and classifies phone numbers when that data is available.
That gives you a working lead list. It is not yet a send-ready campaign. Two rows may be the same location, an email may belong to a different company, and a business that once fit your offer may have moved or closed. Cleaning means making a decision about each business, contact, and outreach route before the file reaches a sender or CRM.
Here is the short version:
- Define the niche, location, and offer for the list.
- Search those businesses in LocalProspects and export the enriched results.
- Keep an untouched copy of the export.
- Check for duplicate locations and companies, then confirm the business and contact details.
- Separate public email discovery from email verification.
- Exclude opt-outs, customers, and contacts already in another active campaign.
- Mark each row Ready, Needs Review, or Remove, then export only the rows that fit the destination.
You can download a blank lead-list cleaning worksheet to follow along.
Build a list worth cleaning
A clean list for a web design agency is different from a clean list for a reputation management agency. A business without a website might be the first agency's best prospect and irrelevant to the second.
Write down the rules before you search:
| Question | Example rule |
|---|---|
| Who is a fit? | Independent HVAC companies, not suppliers or national franchises |
| Where? | Businesses serving the Phoenix area |
| What makes the offer relevant? | A site that does not clearly explain the company's services |
| Which channel? | Email when an appropriate address is available; otherwise a separate call list |
| Who is excluded? | Customers, past opt-outs, active opportunities, and companies already in another campaign |
Then build the list in LocalProspects:
- Search your niche and location. For the example above, search for HVAC companies in Phoenix. Start with a focused market so the results match the offer you plan to send.
- Review the enriched results. Alongside Google Business Profile details such as category, website, rating, and map identifiers, LocalProspects can surface public business emails from websites, owner names when found, phone type, and website content. Missing fields stay missing; a blank owner name is not a reason to invent one.
- Export a working CSV. Keep the business and source fields you will need to check fit and duplicates. LocalProspects also offers Instantly and GoHighLevel CSV formats for the final import, but do the review below before sending either one.
The result is a pool of possible prospects, not a claim that every business is a fit or every discovered email is verified. Do not label a business as ready to buy because it has a low rating or an old website. Those are public observations, not proof of intent. A useful Fit Reason column says why this business belongs in your campaign without pretending you know what its owner wants.
Keep the raw file and choose what one row means
Save the original CSV before you change it. Make a working copy and add review columns there. If a later merge looks wrong, the source row is still available.
Next, decide whether a row represents a location, a company, or a person. Google Maps primarily describes places. One company can have five locations, one website, and one central inbox. Five map listings are useful for location research, but sending the same pitch to that inbox five times is not.
For company-level outreach, keep one contact path per company and retain the other locations as context. For a location-specific service, keep the branches separate, but decide which person or inbox should receive a single message about them. This one decision prevents a surprising number of duplicate sends.
Dedupe in two passes
First, group rows with the same Place ID or Google Maps URL. If the same location appeared in both a "plumber" and a "drain cleaning" search, keep the more complete record and note which searches found it.
Then look for likely duplicates that do not share an ID: the same website domain and address, or a close business-name match with the same phone and location. Review those instead of deleting them automatically. Two real branches can share a domain and phone. Google also says Place IDs can change and that one place can have more than one ID, so an ID is a strong first check, not a permanent company key.
Do the same at the contact level. Two different businesses may legitimately share a franchise website, but the same email address should not enter a cold email campaign twice. Keep the business rows you need for analysis; pick one appropriate contact record for outreach.
Recheck the business before checking its email
Open the map listing and company site for rows you intend to contact. Confirm the category, location, website, and phone still point to the same business. A profile can be marked temporarily or permanently closed, and a business can move while an old record remains in your file.
Use Needs Review for unclear cases. An unreachable website does not prove a business closed. A missing website is not always a bad lead. The goal is to avoid confidently importing a stale or mismatched record.
Keep a Last Checked date in your working file. That lets you distinguish a lead researched today from a row copied out of a six-month-old spreadsheet.
Normalize fields without hiding the source
Consistent formatting makes matching and importing easier. Keep the original values in the raw file, then use cleaned values in the working copy.
- Trim extra spaces from names and emails; use a consistent email form for matching.
- Compare websites by their main domain when looking for duplicates, while keeping the full site URL for review.
- Keep phone numbers with the correct country code. Do not guess that two similar-looking numbers from different countries are the same.
- Put business name, owner name, and contact name in separate columns. A named owner should come from a source that actually identifies that person.
- Leave unknown values blank or mark them for review. Do not fill an owner field by guessing from the email address.
This is also the time to catch CSV problems: shifted columns, broken commas, mixed date formats, and multiple emails crammed into one cell.
Treat a found email as a candidate, not a verified mailbox
Google Maps helps you find the business. An email is usually found on the business website or another public page. If you find info@business.com on a contact page, you have a publicly listed business email. You do not yet know that the mailbox currently accepts mail, and you have not shown that it reaches the owner.
Keep these questions separate:
| Check | What it answers |
|---|---|
| Email source | Where did we find the address? |
| Contact match | Does the address belong to this business, and is a named person actually tied to it? |
| Email verification | What did a separate check report about the mailbox or domain? |
| Outreach status | Is this contact appropriate for this campaign after all other checks? |
Use an independent verifier before an email campaign if you need a deliverability check, and keep its actual result: valid, invalid, catch-all, or unknown. Hunter's explanation of those statuses makes the key limit clear: a catch-all domain cannot confirm a specific mailbox, and even a valid result can change later. A general inbox can still be the right business contact; a guessed personal address is not better simply because it looks more personal.
Review the fields you will use in the message. The presence of an email in a LocalProspects export does not turn it into a verified mailbox or make a blank owner field safe to invent.
Check your suppression list before the import
Compare the working list with your CRM, current customers, active opportunities, previous campaigns, and opt-outs. Match by normalized email first, then review business-domain and phone matches where appropriate. Keep a persistent suppression list so an excluded contact does not reappear in the next fresh search.
For US commercial email, the FTC says businesses must provide an opt-out method and honor opt-out requests. Requirements vary by country and channel, so check the rules that apply to your campaign. A mobile number or a public email is not permission by itself.
Run the suppression check again before sending, especially if the file has sat in a spreadsheet for a while. Contacts can unsubscribe or become customers after you first build the list.
Give every row a clear decision
Use three statuses in the working file:
| Status | Use it when | Next action |
|---|---|---|
| Ready | The business fits, the contact path is appropriate, and suppression and required checks are complete | Export to the relevant campaign |
| Needs Review | The business might fit, but the website, contact match, email check, or location is unclear | Research the missing point or route to a different channel |
| Remove | The business is outside your target, clearly duplicated for this campaign, closed, or suppressed | Keep the reason in the audit file; do not send |
For example, a second location with the same central inbox may stay in your research file but be removed from the email export. A phone-only roofer might be a good fit but cannot go into an email-only file. An existing customer belongs on the suppression list even if a fresh Maps search returns it again.
The status is about this campaign. "Remove" does not always mean deleting the business from every system.
Make the final CSV for the tool you will use
The working file can contain detailed notes and source links. The sending file should contain only the rows and columns the destination needs. Instantly's CSV import guide requires an email on each row and asks you to map the columns; it also offers duplicate and verification checks during upload. HighLevel's contact import guide accepts a name, email, or phone and asks you to review field mapping and duplicates.
LocalProspects has dedicated Instantly and GoHighLevel CSV exports as well as a broader export. Those formats save mapping work, but you should still review fit, duplicates, and suppression before sending.
For a small agency workflow, the audit file can use these columns:
Business Name, Place ID, GBP URL, Category, City, Website,
Email, Email Source, Email Check, Owner, Phone, Phone Type,
Fit Reason, Review Status, Suppression, Outreach Route, Last Checked
The sender import can be much smaller. For Instantly, keep a single reviewed email per row plus the company and personalization fields you will actually use. For HighLevel, you can keep phone-first records separate from email-ready contacts and map the right fields on import.
A final check before you press upload
- Does every row fit the offer and location?
- Have duplicate places, companies, and email addresses been handled at the right level?
- Are business and contact details recent enough for this campaign?
- Are public emails clearly distinguished from verification results?
- Are opt-outs, customers, and active opportunities excluded?
- Does every row have a Ready, Needs Review, or Remove decision?
- Does the final CSV match the destination tool's current import rules?
A smaller list that passes those checks gives your team a reason to contact each business and a way to explain where the information came from. That is more useful than exporting every map result and hoping the sender cleans it later.
