Email Automation: Self-Managing Follow-Up System
An n8n automation that finds outreach emails nobody replied to and sends one polite follow-up per contact, automatically skipping anyone who replied or bounced.
Client: ClarroxWeb
Project Details
ClarroxWeb was running an outreach campaign to German businesses, but following up with the contacts who never replied was still a manual job. I built an n8n automation that takes the whole follow-up process off the founder's plate: it finds the outreach emails that went unanswered after five days and sends a single, polite German follow-up inside the original thread, with no duplicates, no follow-ups to anyone who already replied or bounced, and no contact list to maintain.
Challenge
Following up by hand does not scale. For every email sent, someone had to open the conversation, check whether the contact had replied, remember whether they had already been nudged once, and avoid anyone whose address had bounced or who had accidentally been emailed more than once.
At over 200 sent emails and growing, that is hours of error-prone work, and both failure modes cost money. Miss a follow-up and a warm lead goes cold. Send a second one by mistake and the outreach starts to look like spam, which puts the sender's reputation at risk.
Approach
I built a scheduled n8n workflow that handles the entire process unattended. It searches the mailbox for campaign emails sent more than five days ago, so only genuinely stale conversations are considered.
To decide who actually needs a nudge, the workflow reads each email thread and counts the messages instead of trying to parse the contents. A thread with only the original message means no response. Anything more, whether a reply, an auto-responder, or a bounce notice, means leave that contact alone. It then groups everything by recipient and sends exactly one follow-up per person. Anyone who replied, bounced, or was already contacted is skipped, and addresses the campaign had accidentally emailed several times are skipped entirely to remove any risk of a repeat send.
The follow-up goes out as a reply in the original thread, in German, under the same sender identity as the first email, so it reads as a natural nudge rather than a fresh cold email. Sends are capped and spread across business hours to protect deliverability.
The decision I am most pleased with is that the system is stateless. There is no separate database or "already contacted" list to keep in sync. The mailbox itself is the record: once a follow-up is sent, the thread holds two messages, so the same rule that detects replies also prevents a second one. I also worked around a real platform limitation honestly, weighing the trade-offs with the stakeholder and choosing the approach that keeps every follow-up cleanly threaded in the original conversation rather than forcing a workaround that would have read as a fresh email.
Results
- Removed the manual follow-up process entirely, with no more combing the sent folder or tracking who replied.
- Works through the full backlog automatically: over 200 sent emails reduced to the genuine, unique contacts who never replied.
- Guarantees one follow-up per contact, never contacting anyone who replied or bounced, and never sending twice.
- Runs unattended on a daily schedule, oldest conversations first, so no lead ages out without a nudge.
- Needs no database or contact list to maintain, using the mailbox itself as the record.
Tools Used
n8n, Gmail API (OAuth), Google Sheets, JavaScript
Get Started
Looking to Hire?
I bring 19+ years of cross-functional experience to every role. Connect on LinkedIn to learn more.
Need a Consultant?
Whether it's a short sprint or a long-term engagement, I'm ready to help your team deliver better results.