internal
Weekly sweep: send win-back emails to inactive Basic/Pro orgs (30-90d stale)
Weekly cron targeting paid orgs whose most-recent api_keys.last_used_at is between 30 and 90 days ago.
Audience (audit R15):
- status='active' (skip canceled / past_due / payment_at_risk)
- tier IN ('basic', 'pro') — free-tier excluded: free cooling-off is evaluation behavior, not churn, and over-emailing degrades sender reputation.
- max(api_keys.last_used_at) between 30 and 90 days ago.
Upper bound (90d) prevents cold-contacting fully abandoned trials indefinitely. Frequency cap (30d) in send.py means a user stuck in the 30-90 band gets at most one win-back every 30 days, not once per weekly cron fire.
post/internal/cron/winback
Headers
x-internal-secretstring nullable
Response
Successful Response
object required