How to Exclude Bounced and Risky Contacts in GoHighLevel
To stop sending to bad addresses in GoHighLevel, write a verification status onto each contact, then build a smart list that includes only the good ones and excludes anything tagged risky or bounced. Point your campaigns and workflows at that smart list, and dead and risky addresses are filtered out of every send automatically, without deleting a single contact.
The idea: filter, do not delete
You rarely want to delete contacts, because the data is still useful and the history matters. The goal is to control who gets a send. A verification status on each contact, plus a smart list that reads it, lets you exclude the junk from campaigns while keeping every record in your account.
Step by step
- Verify your contacts so each one carries a status of good, risky, or bounced in a custom field.
- In Contacts, open Smart Lists and create a new one.
- Add a filter on the email status custom field: include where status is good.
- Add filters to exclude where status is risky or bounced, depending on how strict you want to be.
- Save the smart list with a clear name like Deliverable, then point campaigns and workflows at it instead of your full list.
How strict should you be?
| Send type | Include | Exclude |
|---|---|---|
| Cold outreach | Good only | Risky and bounced |
| Warm, engaged contacts | Good and selected risky | Bounced |
| One-time large blast | Good only | Risky and bounced |
Wire it into workflows too
A smart list controls campaigns, but you can gate workflows on the same field. Add an if/else condition that checks the email status and only continues for good contacts, so automated sends respect the same rule as your manual ones.
Keep the field fed automatically
This only works if the status stays current. Verify new contacts on entry so every record has a status the moment it arrives, and re-scan periodically so the smart list keeps reflecting reality as addresses decay.
Frequently asked questions
Does excluding bounced contacts delete them?
No. A smart list only changes who receives a send. The contacts stay in your account with their full history; they are simply filtered out of the campaigns pointed at that list.
Should I exclude risky addresses or just bounced?
It depends on the send. For cold outreach, exclude both risky and bounced. For warm, engaged contacts, you can often include risky and exclude only bounced. Bounced should always be excluded.
Can I use the status in workflows, not just campaigns?
Yes. Add an if/else condition in the workflow that checks the email status custom field and only proceeds for good contacts, so your automations follow the same rule.
Related guides
How to Clean Your Email List in GoHighLevel
Clean your GoHighLevel email list by re-scanning existing contacts, verifying new ones automatically, and filtering out risky and bounced addresses with a smart list before you send.
How to Fix a High Email Bounce Rate in GoHighLevel
Lower a high bounce rate in GoHighLevel by verifying new contacts on entry, bulk-cleaning your existing list, and excluding risky and bounced addresses before every send.
Soft Bounce vs Hard Bounce: What Is the Difference?
A hard bounce means the address does not exist and should be removed forever. A soft bounce is temporary. Here is how to tell them apart and what to do with each in GoHighLevel.
Keep your GoHighLevel list clean automatically
Bounce Cleaner verifies every new contact in real time and bulk-cleans your existing lists. 250 free checks, no card.
Install free