You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Dormant contacts segment and re-engagement sequence #29
Criteria: a contact goes dormant only if they ignored at least N issues (default 6, range 2–100) and at least D days have passed since their last sign of life (default 180). "Last sign of life" is the max of last engaged, last open, last click, confirmed and subscribed dates. Each send increments an ignoredIssues counter, and any open, click, confirm or resubscribe resets it to 0.
Runs at send time, no cron needed. Contacts who qualify get the "still want this?" email instead of the issue. After 14 days with no response they become dormant, and the update re-checks ignoredIssues > 0 to avoid racing with a late engagement. This matters here because SendLit's background loops run on every API instance.
"Keep me" link: signed, valid for 90 days (longer than the 14-day window, so a late click still revives the contact), rate-limited. The re-engagement email has no tracking, so a machine open can't count as a "keep".
Activity
clbotdev commentedon Oct 10, 2026
The dormancy logic in https://github.com/marclou/mailcheap (
lib/cleanup.js) is worth copying closely:ignoredIssuescounter, and any open, click, confirm or resubscribe resets it to 0.dormant, and the update re-checksignoredIssues > 0to avoid racing with a late engagement. This matters here because SendLit's background loops run on every API instance.