To find contacts who never replied in GoHighLevel, you have to answer a question HighLevel doesn't store as a single field: did this person ever write back after we reached out? This guide walks through the native ways to answer it, from the Conversations filters to reply-tracking workflows, and explains where each one quietly gets it wrong.
What "never replied" actually means
Before you build a list, decide which question you're asking. They need different filters.
| Question | Example use |
|---|---|
| Never replied to anything, ever | Cleaning up a cold list before a new campaign |
| Didn't reply since a specific message | Resending a blast to non-responders |
| Didn't reply on any channel | Deciding who gets a call from a rep |
| Didn't reply by SMS specifically | Testing a new text script |
Most mistakes come from using a check built for one question to answer another. A "last message was outbound" view answers none of these exactly.
Method 1: Conversations filters
The quickest native check lives in Conversations, not Contacts. As of October 2026, the Conversations filter builder includes:
- Last Message Direction: Inbound or Outbound
- Last Outbound Message Type: Manually or Automated
- Last Message Channel: SMS, Email, Calls, WhatsApp and others
- Assigned user, follower, mention and tag
To see conversations where you spoke last:
- Open Conversations in the sub-account.
- Open the filters and add Last Message Direction is Outbound.
- Optionally add Last Message Channel is SMS and a tag filter for the campaign you care about.
- Apply the filter and work the list.
This is great for daily inbox work: reps can see every thread waiting on the contact. It's weak for building a contact list because:
- It only looks at the last message. If a contact replied yesterday and your automation sent a follow-up an hour later, the last message is outbound and they look silent.
- It's per conversation, not per contact list. You can't save it as a smart list or use it as a bulk send audience.
- Smart lists don't have the same filter. There's an open request on HighLevel's ideas board to add last message direction to contact filters, which tells you it isn't there yet.
Method 2: Tag replies with a workflow
If you want a contact-level answer you can filter in a smart list, tag people when they reply.
- Go to Automations > Workflows and create a workflow.
- Add the Customer Replied trigger. Choose the channels that should count as a reply.
- Add an Add Tag action, for example
replied. For campaign-specific tracking, add a dated tag such asreplied-2026-10-14, and filter the workflow to contacts who have that campaign's tag. - Publish it.
Now build a smart list:
- Go to Contacts > Smart Lists.
- Filter by your campaign tag, and add tag is not
replied. - Exclude DND contacts if you plan to message the list.
- Save the list.
This is accurate going forward. Its limits:
- It only knows about replies after you published it. Anyone who replied last month isn't tagged.
- Calls aren't replies. If a contact phones you back instead of texting, the trigger may not fire, depending on the channels you selected.
- It needs to exist in every sub-account. Agencies with dozens of sub-accounts end up maintaining dozens of copies.
Method 3: Wait for a reply inside the workflow
If the outreach itself runs in a workflow, use the Wait action set to wait for a contact reply, placed directly after the message. Turn on the timeout. Contacts who reply continue on one branch; contacts who time out go down the other, where you can tag them no-reply or take the next step.
This is the most accurate native method for workflow-driven sequences. It doesn't help with bulk sends from Contacts, and it doesn't look backward.
Method 4: Export and compare
For a one-off historical check, some teams export data and compare it in a spreadsheet:
- Export the contacts you messaged from Contacts > Smart Lists to CSV.
- Pull message history, either by working through Conversations or by using the API. HighLevel's Conversations API has an "export messages by location" endpoint that returns messages with direction and timestamps.
- For each contact, check for any inbound message after your outreach date.
This gives the right answer, but it's a project. The contact CSV doesn't include message history, so you need a second data source and a way to join them. If you go this route, exporting SMS conversations from GoHighLevel covers the options.
Which method to use to find contacts who never replied
- Working the inbox today: Conversations filter on Last Message Direction.
- Sequences you control: Wait step with a reply timeout.
- Ongoing campaign tracking: Customer Replied workflow plus a smart list.
- Looking backward at a blast that already went out: export and compare, or a tool that reads the history for you.
Whatever you use, spot-check ten contacts by opening their conversations. If any of them actually replied, your filter is wrong.
Where the native way runs out
The pattern is the same in every method: HighLevel knows every message, but it doesn't summarize "has this contact answered since date X, on any channel" as something you can filter. You either track it ahead of time with workflows or reconstruct it afterward by hand.
That's fine for one sub-account and one campaign. It breaks down when you run blasts across many sub-accounts every week, and the list you need is "everyone who got Tuesday's text and hasn't responded."
How Blast Follow-Up does the check
Blast Follow-Up from RGS Tools answers that question directly, without any setup before the send.
- No-reply checker reads each recipient's real history and drops anyone who texted, called, emailed or chatted back. Choose strict mode to leave out anyone who ever replied, or lenient mode to leave out only people who replied since this blast.
- Preview and CSV export shows who will be tagged before anything changes. Filter the list and download it.
- Resend tagger adds a dated tag to everyone left, so the list becomes a smart list filter in HighLevel.
Blast Follow-Up only adds tags. It doesn't send anything. It's $39/mo per agency, covers unlimited sub-accounts, and has a 7-day free trial. If your next step is a follow-up text, read how to resend an SMS blast to non-responders for the compliance checks to run first.
Questions
Can I filter GoHighLevel smart lists by contacts who haven't replied?
Not directly, as of October 2026. Smart lists don't have a last message direction filter. The Conversations inbox does, so most people either filter there or use a workflow to tag contacts who reply and then exclude that tag in a smart list.
What does Last Message Direction mean in GoHighLevel Conversations?
It filters conversations by whether the most recent message was inbound (from the contact) or outbound (from you). Outbound means you spoke last, which often, but not always, means the contact hasn't answered.
Does a phone call count as a reply in GoHighLevel?
It depends on how you check. The Customer Replied workflow trigger watches message channels you select, and a Conversations filter on SMS only looks at SMS. If a contact called you back, an SMS-only check will still show them as silent.