Find the emails that never got a reply
Pull what you sent and what you received over the same window, match them by thread, and keep the threads where the newest message is still yours. Do not filter on whether a thread has a reply, because that is a different question and it hides your best leads. Then draft, do not send.
You probably have four or five threads sitting in a blind spot right now. Not forgotten exactly, just never surfaced. Gmail has no search operator for this, which is why so many extensions exist to paper over it.
Why has this thread had a reply is the wrong question
It is the obvious test and it is wrong, because it looks at the thread as a whole rather than at the order of events. Consider a thread that goes:
Mon you Here is the proposal
Tue them Thanks, looking at it this week
Fri you Any thoughts? Happy to walk through the pricing
...silenceThat thread has a reply, and it is also a live conversation that stalled right at the decision. Filter on has-a-reply and it disappears, along with every other deal that went quiet halfway.
The test that works is about sequence, not existence:
for each thread:
lastSent = newest message you sent
lastReply = newest message you received
if lastReply > lastSent -> they answered you. Skip.
otherwise -> you are waiting. Chase it.Four lines, and it decides whether the list is worth opening.
Getting both sides of the mailbox
You need two reads over the same window, one outbound and one inbound, so the comparison is like for like:
in:sent newer_than:30d -> everything you sent
-in:sent newer_than:30d -> everything that came backBoth need full message data rather than the simplified view, because the matching key is threadId and the clock is internalDate. Read the recipient and subject from the message headers, and strip the display name so Dana Okafor <dana@acme.test> becomes a bare address you can filter and group on.
One n8n detail that will bite you here. Nodes run once per input item, so a second Gmail node placed after the first will fire once for every message the first one returned. Set it to execute once. The same applies to the digest at the end, or you get one summary email per thread rather than one summary.
Bound the window at both ends
A minimum age is obvious. The maximum is the one people leave out, and without it your first run returns every thread you have ever let go. Most are dead and a few would be odd to revive.
- Minimum three days. Below that you are chasing people who are simply busy.
- Maximum around twenty-one days. Past that, a cold restart is a different email and should be written by hand.
- Filter automated senders by keyword on the recipient: no-reply, noreply, notifications, mailer-daemon. Skip this and your list fills with newsletters on run one.
- Take the newest send per thread. If you emailed twice, the clock starts at the second one.
Draft it, do not send it
Auto-send tools cancel a queued follow-up when a reply lands. That sounds sufficient and is not, because a reply can arrive that does not resolve what you were chasing, or resolves it in a way that makes your queued nudge wrong. So the person gets nudged about something they already dealt with.
Saving each one as a draft on the original thread costs one click and removes the failure mode entirely. You also get to see the whole list ranked before you send anything, which is usually when you notice two of them are not worth chasing at all.
Three rules that make the drafts usable rather than deletable:
- Never apologise for following up. It frames the ask as an imposition before you have made it.
- Ban the phrase just checking in. It contains no ask, so it gives the reader nothing to respond to.
- Under seventy words, one concrete ask. The constraint does most of the work on its own.
Rank by how promising the thread looks rather than by age. The oldest silence is rarely the most valuable one, and a list sorted by age buries the deal that stalled last week under a cold introduction from a month ago.
Who this is for, and what to change for each
The detection logic never changes. What changes is the window, the ranking, and whether a draft is enough.
Sales and business development
The problem. Deals do not die at the pitch, they die in the gap after it. A proposal goes out, the reply says looking at it this week, and then nothing. That thread has a reply, so every has-a-reply filter drops it, and it is the most valuable thread you own.
What to change. Tighten the window to three to ten days and rank by how far the conversation got rather than by age. A thread that reached pricing and stalled outranks one that never got a first reply, regardless of which is older.
Freelancers and consultants
The problem. Chasing feels rude, so it does not happen, and the thread ages past the point where a nudge feels natural. You never find out what the answer would have been.
What to change. Let the upper bound make the call for you. Capping at around twenty-one days means everything on the list is still a normal thing to chase, so you are not deciding case by case whether you are being annoying.
Recruiting and hiring
The problem. Candidates go quiet between stages and the silence is mutual. Nobody wants to be the one chasing, and good candidates take other offers during the gap.
What to change. Run it daily rather than weekly and drop the minimum to two days. Hiring moves faster than sales, and a three-day silence is already meaningful when someone is interviewing in three places.
Client services and account management
The problem. You are blocked on something the client owes you: a login, an approval, an asset. The project stalls, and the status report says waiting on client for two weeks without anyone re-asking.
What to change. This is the one case where scoping to a label beats scanning the whole mailbox. Point the Gmail queries at a client label so the list is unblock-me threads rather than everything, and the drafts can reference the specific asset by name.
When a draft is not enough
For high volume outbound, drafts stop being practical past about twenty a week. At that point the honest answer is a sequencer built for it. This workflow is for the mailbox where every thread is a real relationship and being wrong once costs more than the time saved.
The shape of it
Schedule (weekday morning)
-> Set config (window, tone, who gets the digest)
-> Gmail: messages you sent
-> Gmail: messages you received (execute once)
-> Code: match by thread, keep the ones still waiting on them
-> Filter: inside your follow-up window
-> Code + AI: draft a nudge per thread, rate how promising it looks
-> Gmail: save each as a draft on the original thread
-> Gmail: one digest, worst first (execute once)This is a free n8n template you can import and point at your own mailbox. It handles the reply-before-your-last-message case, takes the newest send per thread, and never sends anything on your behalf.
Follow-up email questions, straight answers.
How do I find emails that never got a reply in Gmail?
Gmail has no search operator for it, which is the root of the problem. The workaround is to pull the messages you sent over a window and the messages you received over the same window, match them by thread ID, and keep the threads where the newest message is still yours. That comparison is the whole job and it takes one Code node.
Why is checking whether a thread has a reply the wrong test?
Because it looks at the thread, not the sequence. If someone replied on Monday and you wrote again on Friday, the thread has a reply but you are still the one waiting. Any tool that filters on has-a-reply silently drops exactly the threads you most want to chase, which are the live conversations that went quiet mid-negotiation.
Does Gmail not already do this with Nudges?
Nudges is passive. It floats a message back to the top of your inbox with a suggestion, and it decides for itself which ones qualify. You cannot rank what it shows you, it will not write the follow-up, and it ignores anything older than its own window.
Should follow-ups send automatically?
Not by default. Auto-send tools cancel a queued follow-up when a reply arrives, but they cannot tell that the reply already resolved the thing you were chasing, so people get nudged about something they already handled. Saving each follow-up as a Gmail draft on the original thread costs one click and avoids that.
How long should you wait before following up?
Bound it at both ends. Too fresh and you look impatient, too stale and you are reviving something dead in a way that reads oddly. Three to twenty-one days is a sane default. The upper bound matters more than people expect, because without it your first run surfaces every thread you have ever abandoned.
How do you keep automated senders out of the list?
Filter the recipient address by keyword: no-reply, noreply, notifications, mailer-daemon, calendar-notification. Without it your chase list fills with newsletters and receipts, which nobody ever replies to by design, and the list stops being credible on the first run.
What makes a follow-up email actually work?
A concrete ask and no apology. Never open by apologising for following up, never use the phrase just checking in, and never restate the original message in full. Reference the specific thing you asked for and make the next step a single decision. Keeping the body under about seventy words forces all three.
Can this work on Outlook instead of Gmail?
The logic is identical because it only needs sent messages, received messages and a thread ID, all of which Outlook exposes. The two Gmail read nodes swap for Outlook equivalents and the draft step becomes a draft in Outlook. Nothing in the matching logic changes.
What is sitting in your blind spot?
30 minutes, free. You leave with a plan for a weekly chase list that drafts the nudge and never sends without you, whether you build it or we do.
Keep reading.
Win back the churn nobody chose
Stripe retries the card but sends one generic notice. Branch the email on attempt number, keep the amount and payment link exact, and get told before a subscription is written off.
Stop finding out from the client
One error workflow for everything you run. Suppresses repeat alerts so a broken workflow sends one email not sixty, and sends the raw error even when the diagnosis fails.
Know which ad to scale, and by how much
Spend and result floors, a margin over the account average, frequency headroom and budget cap checks, then a sized raise.
Rather have it built for you?
Skip the build. A free 30-minute call and we set this up in your stack, live in a week or two.