All posts

Export GoHighLevel Contacts to a Clean Email List (DND Included)

··4 min read

In HighLevel, open the Smart List, turn on the DND column in Manage Fields, export, and download the file from Bulk Actions. Set aside DND and duplicate contacts, check the remaining addresses, and import the valid ones back with a tag to build the campaign from. The DND step is the one people miss: the export only has the columns you can see in the table.

Agencies do this most when a client wants to email a list that's been sitting in a sub-account for a year, or when a sub-account's contacts move to another platform. The GoHighLevel contacts to email list tool does the splitting in your browser.

Step 1: Show the columns you need

HighLevel's export article says: "The CSV file will only contain the columns that are currently visible in the Contacts table." So before exporting:

  1. Go to Contacts > Smart Lists and pick (or build) the list.
  2. Click Manage Fields and tick Email, Additional Emails, DND, any channel-specific DND fields you use, and Tags.

If you skip this, you'll get a file with emails and no way to tell who opted out.

Step 2: Export

  1. Select the contacts, or Select All Contacts.
  2. Open More (or the three dots next to + Add Contact) and click Export, then confirm.
  3. Wait for the push notification and download the file from Bulk Actions. It stays there for 30 days.

Limits worth knowing, from the same article: only admins can export, each sub-account exports separately, notes over 255 characters may be truncated, automation history isn't included, and scheduled exports aren't available.

Step 3: Set aside DND and duplicates

Upload the CSV to the GoHighLevel contacts to email list tool, or do it in a spreadsheet:

  • DND on: any value of true, yes, enabled or one naming email sets the contact aside. If your file has a single DND column, it may be for SMS or calls; the safe reading is to set the contact aside.
  • Blank DND: keep, but remember it isn't permission. Whether you can email someone still depends on how they came to you.
  • Duplicates: the same address on two contacts. If either copy has DND on, the address is set aside.
  • Additional Emails: off by default. Second addresses are often old or personal; include them only if you mean to.

Our post on duplicate leads from multiple sources covers merging inside the CRM, if you'd rather fix the duplicates at the source.

Step 4: Check the addresses

HighLevel contacts come from funnels, ad lead forms, chat widgets and imports. None of those check that the inbox exists when the contact is created, so typos and throwaway addresses go in with the rest. And addresses that worked a year ago have closed since.

That matters on HighLevel more than most places. Its bounce suspension article (modified 17 September 2026) says you get a warning at 3% bounces and a 12-hour block at 5%, with a third block permanent. The details are in our post on HighLevel bounce suspension.

Upload the send list at /verify. Every address gets a live mailbox check, and valid, risky and invalid download as separate files. To estimate first, run a sample through the bounce rate estimator.

Step 5: Import back with a tag

  1. In HighLevel, import the valid file using the CSV import (HighLevel import help). If the import offers to update existing contacts, choose it, so you don't create duplicates.
  2. Add a tag such as verified-2026-11.
  3. Build the campaign or workflow from that tag, not from the original Smart List.
  4. Tag or mark the invalid contacts too, so they're excluded from future sends.

If you'd rather check new contacts as they arrive, our HighLevel workflow guide shows a Custom Webhook that writes the result into custom fields.

Honest limits

  • Column names aren't published. HighLevel doesn't document export headings; the tool finds Email, Additional Emails, DND and Tags by name, so read the notes above the result.
  • DND channel isn't always clear. A single DND column may have been set for SMS or calls only; the tool can't tell, so it sets those contacts aside.
  • A clean list isn't a consented list. Verification removes addresses that will bounce; it doesn't change who agreed to hear from you.

Where SimpleVerifier fits

The export tool is free and runs in your browser. The live check is the paid part: the first 100 checks are free with a Google sign-in on the verify page. Pro is $39 a month with the first 100,000 checks a month at full speed, then slower, never cut off, and one-time packs of 10,000 checks for $15 never expire. Agencies with several sub-accounts can compare plans on pricing.

Common questions

Why is there no DND column in my HighLevel export?

HighLevel's help says the CSV only contains the columns currently visible in the Contacts table. Open Manage Fields, tick DND (and any channel-specific DND fields you use), then export again.

Where does the HighLevel export file go?

Exports run in the background. HighLevel says a ready-to-download file appears in Bulk Actions, stays there for 30 days, and you get a push notification when it's ready. Only Agency Admins and Location Admins can download it.

Can I export all sub-accounts at once?

No. HighLevel's help says exports have to be run separately for each sub-account (location).

Doesn't HighLevel already validate emails?

HighLevel has an Email Verification Service you can enable, including first-send validation and re-validation every 90 days. Checking a CSV outside HighLevel is useful when you're cleaning a whole old list at once, moving it to another tool, or want the results in a file.

Check your list before you send

Real mailbox checks over SMTP, and nothing is sent to the address. Sign in with Google and your first 100 email checks are free, no card. Plans for bigger lists are on the pricing page.