Sergey Kopanev: you sleep — agents ship

Go Back
RemoEngine: Persuasion Mechanics · Part 2

Dormant Needs Permission Again


The user has not opened the app in two months.

Push token is still valid. Notifications are still allowed. Technically, the channel is open.

The default winback playbook ships into that silence. Discount banners. “We miss you.” Countdown timers borrowed from trial-end flows.

It does not work. It does worse than not work — it quietly burns the only chance left to bring the user back.

What RemoEngine Is

RemoEngine is the retention/monetization layer I built for a B2C health app. It tracks user state — free-new, trial-active, paid-grace, and so on — and decides what to show, when, and through which channel. The first article walks through one of those states.

Dormant is state #14: user has not opened the app for 60+ days. Token alive, intent dead.

The engine has to decide whether to push, what to say, and at what hour.

The first version got every one of those wrong.

The Implicit Contract

When a user installs an app and grants push permission, both sides sign an unwritten contract.

You can talk to me. About this thing. Within reason.

“This thing” decays with use. Open the app every other day for a month, the contract is wide. Open it twice and disappear, the contract is narrow.

Two months of silence voids the contract entirely.

The push permission flag in the OS is still true. The contract behind it is not. Confusing the two is how brands earn the “swipe to dismiss without reading” reflex.

The engine has to act like permission expired even though the OS says it did not.

The Default Misfire

First implementation pushed dormant users on the same schedule as everyone else.

Quiet hours: 22:00–08:00. Default channel exclusivity. Standard winback flow with a 50% banner. Send-time logic from free-churned.

What landed:

  • Push at 21:55 on a Tuesday. “We miss you. 50% off.”
  • User had not thought about the app in nine weeks.
  • Notification tapped. App opened. Paywall in face. App closed. App long-pressed. Notifications turned off.

Permanent damage in one tap.

The metric the dashboard rewarded was “dormant push CTR”. It went up. The metric it did not show was “permission rescinded after open”. That one also went up. The first hid the second for two release cycles.

Weekend Daytime, Not Tuesday Night

Quiet hours got rewritten per-state. Most of the table is variations on 22:00–08:00. Dormant got its own row.

state                  quiet hours (local TZ)
free-new               22:00–09:00
free-onboarded         22:00–08:00
free-churned           21:00–09:00
trial-expiring         23:00–07:00
paid-grace             09:00–21:00 (only window)
dormant                Sat/Sun 11:00–18:00 only

Dormant users get pushed exactly twice a week, in the part of the week reserved for things people choose to do.

The reasoning is selfish to the user, not to the business. Weekday evenings belong to active relationships — work apps, partner apps, kids’ school apps. Pushing into that window from an app the user has actively walked away from is trespass.

Saturday lunchtime is different. Calendar is loose. The phone is in hand for low-stakes browsing. A “remember us?” lands as a question, not an interruption.

Reach drops. Two pushes a week beats fourteen for an audience whose answer to most pushes will be “no, and now I am angry about it."

"Remember Us?” Not “We Miss You”

Copy got rewritten too.

The default winback line — “we miss you, here is 50% off” — assumes a relationship. Dormant users do not feel like they are in a relationship. They feel like they are not.

“We miss you” reads as either guilt-trip or fake intimacy. Either way, it is the brand asserting a closeness the user no longer recognizes.

The replacement is one rung lower in presumption.

Remember the app you installed in February?
We rebuilt the daily check-in. Take a look.

No “miss”. No discount in the headline. No countdown.

The discount exists. It comes after the user opens the app. The push earns the click; the offer earns the conversion. Splitting those two jobs into two surfaces — push for re-entry, paywall for the sale — stopped collapsing both into one ignored banner.

Welcome Back, Not Paywall

The first thing a returning dormant user used to see was the paywall.

Logic was: they are back, they are warm, capitalize. Reality was: they are back for thirty seconds, the paywall confirms what they suspected — this app exists to extract money — and they leave again.

The flow now: dormant user opens app, gets a “welcome back” surface and a stripped-down re-onboarding. Two screens. What changed since they were here. One feature highlight that is actually new. Then back to the regular app.

Paywall waits. If they bounce in 30 seconds, no harm done. If they engage with the feature highlight, they are no longer dormant when the paywall finally shows. They are a re-engaged user the engine treats as free-engaged with a welcome_back flag.

State transition matters more than the immediate sale.

The Trade-Off

Cost: dormant cohort revenue dropped. Aggressive winback pulls a few users back into a paid month before they re-disappear. Stripping the aggression strips that bump.

Benefit: notification-permission revocations from dormant cohorts dropped sharply. Every revocation is a permanent channel loss. Every recovered dormant user with permission intact is reachable for the next campaign.

Long-tail revenue went up. Immediate revenue went down. Most analytics dashboards show the second. Few show the first.

There is also a hidden cost in restraint that no metric captures: the engineering team has to actively resist the marketing team’s instinct to push more. The first reason the dormant flow misfired was not a code bug. It was someone in growth saying “the channel is open, why are we leaving money on the table.” The channel is open. The relationship is not.

Takeaway

Sixty days of silence is not a paused conversation. It is a closed door.

Push permission survives. Permission to push does not.

Treat dormant like a stranger you owe a polite question, in the one part of the week strangers are allowed to ask.


Next: Each Touch Burns Conviction.