Mailerflow Start free
Blog › Email Marketing Automation › Behavioral Email Automation

Inactivity-Triggered Emails: How to Catch Customers Before They Churn

Published October 13, 2026 · 9 min read

Illustration for Inactivity-Triggered Emails: How to Catch Customers Before They Churn

Inactivity triggered emails are automations that fire based on elapsed time since a contact's last meaningful action — a login, purchase, click, or site visit — rather than on a single event. Instead of reacting to what someone just did, you react to what they have stopped doing, and you do it in escalating steps: a soft check-in, a value reminder, a stronger offer or question, and finally a "should we stop emailing you?" step that protects your sender reputation.

What you'll set up and what you need

The escalation model matters more than any single email. A contact who has been quiet for two weeks is a different person from one who has been quiet for three months, and treating them identically is the fastest way to burn a list. Build the ladder once, then tune the day counts.

Before you start, you need three things:

  • A last-activity timestamp per contact. Either event tracking that writes to a custom date field, or a field you update from your product or store. Without this, an inactivity trigger has nothing to measure against.
  • A working definition of "active" for your product. For a daily-use app it might be a login; for a store it is a purchase; for a content business it is a click or a return visit.
  • A sending domain with DKIM, SPF and DMARC configured. Win-back mail to quiet contacts is exactly the kind of sending that exposes authentication gaps.

Mailerflow supports triggers on inactivity and website behavior, plus waits and conditions inside visual automations, so the steps below map directly onto the builder. If you would rather start from a draft than a blank canvas, the AI automation builder takes a one-sentence description and produces the trigger, waits, conditions and emails for you to review before activation.

Step-by-step: building the automation

1. Define your inactivity window and anchor event. Decide which action you are measuring and how many days of silence count as a signal. For a SaaS product, "days since last login greater than 21" is a reasonable starting point. For ecommerce, "days since last purchase greater than 60" suits a consumable, longer for a considered purchase. For lead nurture, "days since last click greater than 30." Write the exact field name and comparison you will enter, e.g. last_login_at is more than 21 days ago.

2. Scope who can enter. An inactivity trigger applied to your whole list will mail people who never activated in the first place. Add entry conditions such as: signed up more than 30 days ago, has at least one completed purchase or session, is not currently in an active trial, and is not tagged as a competitor or internal test. In Mailerflow you can express this as a dynamic segment or as a condition at the top of the automation.

3. Create the automation and set the trigger. Choose the inactivity trigger type, select the date field, and enter the day count. Check the preview panel: it should show the estimated number of contacts currently matching. If that number looks like your entire list, your scope conditions are too loose.

4. Add the first wait and email. The first email should not contain an offer. It should be short, human, and ask a single question with one call to action back to the product. Set the wait before it to zero if the trigger fires exactly at day 21, or a small buffer if you want the contact to have one more chance to return on their own.

5. Add escalation branches with re-engagement checks. After each email, insert a wait followed by a condition: "has the contact's last-activity date changed since entering the automation?" If yes, exit. If no, continue to the next email. This is the difference between a ladder and a drip.

6. Add the exit condition. Configure the automation so any qualifying activity removes the contact immediately, not at the next step. A contact who logs in on day 22 should not receive the day-26 email.

7. Set send-time behavior. Rather than a fixed hour, use "send when the contact is most active" so the email lands when that person historically opens. For a win-back flow this measurably improves the odds that the message is seen at all.

8. Activate and monitor. Turn the automation on, then watch three numbers per step: delivery, click rate, and exit rate. A step with a high exit rate is doing its job; a step with near-zero clicks is a candidate for deletion.

If writing the emails is the bottleneck, the AI email builder takes a description and returns a complete responsive design with subject lines and preview text, which you can then edit in the visual block editor.

Choosing the right inactivity window

The right day count comes from your own data, not from a template. Look at the median gap between repeat actions for contacts who stayed. If your median returning user comes back within nine days, a trigger at day 21 catches the genuinely drifting; a trigger at day 10 catches people who were simply on holiday.

Business type Starting window First-email angle
Daily-use app 14–21 days since login "Everything okay? Here's what you missed"
Weekly-use SaaS 21–30 days since login Unfinished work in their account
Consumable ecommerce 45–60 days since purchase Reorder reminder with a usage cue
Considered purchase 90–180 days since purchase New arrivals relevant to their last order
Content / lead nurture 30 days since last click Best-of digest, no offer

Triggering too early annoys people who are still engaged but quiet. Triggering too late means the contact has already built a habit somewhere else, and no email will undo it.

A worked example: a 4-step win-back flow for a project management tool

This is an illustrative scenario, not a real customer.

A fictional project management SaaS has a median return gap of nine days. They set the trigger at 14 days without a login, scoped to accounts older than 30 days that have created at least one project.

Trigger — no login for 14 days. Entry condition: account age > 30 days AND projects created ≥ 1. Exit condition: any login event.

Step 1 (day 14): short check-in. Subject: "Did something get in the way?" Body: two sentences, one button back to the dashboard. No discount, no feature list. Wait 5 days, then condition: still no login?

Step 2 (day 19): show what changed. Pull in the contact's unfinished projects and any features shipped since their last visit using event and website-behavior data. Subject: "Your Q3 board is still waiting." This step works because it references their own data, not generic product news. Wait 7 days, condition: still no login?

Step 3 (day 26): offer help, not a discount. Link to a 20-minute onboarding session or a template pack matched to their use case. Subject: "Want us to set it up with you?" Wait 10 days, condition: still no login?

Step 4 (day 36): the honest question. Subject: "Should we pause these emails?" One-click preference option. Anyone who chooses to pause moves to a low-frequency nurture segment rather than being deleted.

In the visual builder the branch logic reads as a straight line with three condition nodes between the emails. Each condition checks the same thing — has the last-login date moved? — and each "yes" branch routes to the exit.

How to check it works

Do not activate and hope. Verify in this order:

  1. Add yourself as a test contact with a backdated last-activity date that satisfies the trigger, and watch the contact move through each step in the automation's contact view.
  2. Fire the exit condition mid-flow. Trigger a login event for your test contact between step 2 and step 3 and confirm they leave the automation rather than receiving step 3.
  3. Check per-step analytics. Delivery, clicks and exits per step tell you whether the ladder is escalating or just repeating.
  4. Inspect webhook delivery logs if re-engagement events are pushed to another system, such as a CRM or support tool. Mailerflow's signed webhooks include retries and delivery logs, which is what you would review if a downstream system should be notified the moment someone returns.
  5. Confirm suppression is on for bounces and complaints, so the flow stops mailing dead addresses instead of hammering them for a month.
  6. Compare segment counts before and after activation to catch a trigger that is broader than you intended.

Common mistakes and fixes

  • Triggering on the wrong anchor event. Email opens are not product use. Fix: anchor on the action that predicts retention in your business.
  • No exit condition. Re-engaged users keep receiving win-back mail. Fix: exit on any qualifying activity, checked immediately.
  • One email instead of a ladder. A single message either works or wastes the contact. Fix: three to four steps with increasing directness.
  • Identical messaging at day 15 and day 90. Fix: branch by inactivity depth and change the angle, not just the subject line.
  • Fixed send hour. Fix: use send-when-most-active in automations.
  • No frequency cap. A contact in three automations can receive three emails the same day. Fix: set a global cap and let the highest-priority flow win.
  • Treating all inactivity as churn risk. Some contacts are seasonal. Fix: exclude known seasonal segments or lengthen their window.
  • Ignoring consent on the final step. Fix: make the "pause these emails" option a real preference update that writes back to the contact record.

Once the first flow is live, measure re-engagement rate per step and delete the step that never converts — a four-step ladder that becomes three is an improvement, not a loss. Then build a second flow on a different anchor event, such as days since last purchase alongside days since last login, and route anyone who re-engages into a normal nurture track instead of back into the win-back ladder.

This article is the pillar piece of the Inactivity cluster under Behavioral Email Automation. Supporting guides on inactivity window sizing, win-back offer strategy, re-engagement segmentation and sunset flows will be linked here as they are published.

If you are deciding where to build this, Mailerflow's Free plan covers 2,500 contacts, 10,000 emails a month and 3 active automations, and paid plans start at $14.90/month with unlimited emails.

FAQ

How many days of inactivity before sending the first email?

Derive it from your own data: find the median gap between repeat actions for contacts who stayed, then set the first trigger slightly beyond it. Common starting points are 14–21 days for daily-use apps and 45–60 days for consumable ecommerce.

Should the first win-back email include a discount?

Usually not. The first email should test whether the contact still has a reason to return. Save offers for the third step, after a value reminder has failed, so you do not train your list to wait for discounts.

How is an inactivity trigger different from a re-engagement campaign?

A re-engagement campaign is a one-off send to a list. An inactivity trigger is continuous: contacts enter and exit automatically based on their own behavior, and the flow keeps running without manual list building.

Can I trigger on days since last purchase and days since last login in the same automation?

Yes, if both timestamps exist as fields. Use separate automations with a shared frequency cap rather than one flow with two triggers, so the messaging stays relevant to each behavior.

What happens if someone re-engages halfway through the flow?

With a properly configured exit condition, they leave immediately and receive no further win-back emails. Check this by triggering an event for a test contact mid-flow and confirming they exit.

How do I stop win-back emails from hurting deliverability?

Keep the ladder short, suppress bounces and complaints automatically, authenticate your sending domain, and move chronic non-responders to a low-frequency segment instead of mailing them indefinitely.

Describe this automation in a sentence and Mailerflow drafts the workflow for you to review — start free.