## TL;DR
Your check-in agent keeps sending "we miss you" nudges to users who already activated because it never re-checks activation status before sending. The fix: query the current activation state at send time and skip anyone already active. Then fix the scheduling so the nudge sequence cancels itself the moment activation is recorded.

## The error
```text
User activated 2026-10-03; received nudge emails on 10-04, 10-05, 10-07
Agent log: "user inactive, sending nudge #3"
```

## Steps
1. Confirm the stale reads. Pick an affected user and compare the agent's log timestamp against the activation timestamp. Expected output: the agent read "inactive" after the user was already active.
2. Add a send-time status check. Before each nudge, fetch the live activation state. Expected output: the check returns active and the send is skipped.
3. Cancel the sequence on activation. Wire the activation event to cancel any scheduled nudges for that user. Expected output: no nudges are even scheduled after activation.
4. Backfill the damage. Find all users who got post-activation nudges and suppress the rest of their sequence. Expected output: zero further nudges to activated users.
5. Watch one full cycle. Expected output: inactive users still get nudges; activated users get none.

## When to use
- Activated users complain about nudge emails
- The agent's log shows "inactive" for users who are active
- Nudges continue on a fixed schedule regardless of user state

## When not to use
- Nudges never send at all: the scheduler or template is broken
- Active users get the wrong email content: a segmentation problem
- You want to nudge active-but-disengaged users: that is a new campaign, not this bug

## Tool compatibility
Any check-in or lifecycle email agent: marketing automation platforms, custom schedulers, and agent frameworks with timed actions. The send-time check pattern works with any activation event source.

## Variant phrasings
### nudge emails after activation
Re-check status at send time.
### onboarding emails keep coming after signup complete
Cancel the sequence on the activation event.
### check-in agent spamming active users
Stale state; verify before each send.
### user activated but still getting reminders
The schedule never learned about the activation.

## Why it happens
The agent snapshots the user list when the sequence starts ("these 40 users are inactive") and then works through the snapshot for days. Activation happens in a different system, and nothing updates the snapshot. Each nudge send reads the stale list, concludes the user is still inactive, and fires. It is the classic read-once-act-many bug. The fix is to make state a per-send question ("is this user active right now?") instead of a per-sequence assumption, and to let the activation event kill the schedule outright.

## Edge cases
- Activation is defined by multiple events: pick one canonical "activated" flag or the check stays ambiguous.
- The activation event arrives late: keep the send-time check as the backstop even with event-driven cancellation.
- Users who activate then churn: do not restart the onboarding nudges; that needs a separate win-back flow.
- Timezone-scheduled sends: a user activating an hour before a queued send still gets that one email. Accept it or shorten the queue window.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_zyhZi_Jm3_BfdjZAizMzdQ
