7-day silence window
If a contact hasn't replied within 7 days, the conversation is automatically closed with state TIMED_OUT. No follow-up message is sent — the contact is treated as disengaged and the conversation exits the bump queue.
How it works: Measured from the last inbound message, or last outbound if no inbound exists. Enforced by the scheduler's silence timeout job.
30-day archival
Conversations that have been in a closed state for 30 or more days are moved to ARCHIVED. Archived conversations remain visible in the operator platform but no longer appear in active campaign views.
How it works: Archival job runs nightly — no manual intervention required. Archived conversations are still accessible for compliance review and export.
Reach-back-out scheduling
When a contact says they are busy and asks to be followed up later, the AI returns a REACH_BACK_OUT directive. The scheduler sets reach_back_out_at on the conversation and fires a follow-up at the appropriate time.
How it works: reach_back_out_enabled is a per-campaign setting. If disabled, the directive is overridden to PAUSE — no follow-up is scheduled.
Burst traffic handling
All scheduler eligibility queries use FOR UPDATE SKIP LOCKED — multiple workers can run simultaneously without selecting the same conversation for bumping twice, even under heavy load from large campaigns.
How it works: Queue-backed via Redis + RQ — worker restarts don't lose queued jobs. All state is persisted in PostgreSQL before the job is enqueued.