# How statuses change

> The 14 contact statuses — when Reply assigns each one, which are user-settable, and the reconstructed transition rules including one-way and retained statuses.

**Reply assigns 14 contact statuses automatically as outreach events occur — Active, Paused, Missing Data, Bounced, Out of office, Finished, Contacted, Opted Out, Replied, Opened, Clicked, Auto-replied, To call, and Called. Some are user-settable; Contacted, Opened, Clicked, and Auto-replied are not, and Opted Out is retained outside sequences.**

_Status: Reviewed — human-edited, facts not yet confirmed against the product._

## At a glance

| Aspect | Detail |
| --- | --- |
| **What it governs** | Which of the 14 contact statuses Reply assigns, when, and which transitions are allowed |
| **Trigger** | An outreach event (send, open, click, reply, bounce, auto-reply, opt-out, call) or a manual status change |
| **Inputs** | The event, the contact's current statuses, whether at least one email was received, sequence ownership under Team Edition |
| **Result** | The status set updates; incompatible combinations fail with no resulting transition |
| **Configurable** | Replies handling determines the reply outcome; opens and link tracking gate Opened and Clicked |
| **Does not** | Track engagement across the whole outreach process — statuses are per-sequence state; that is what contact stages cover |
| **Plans** | With Team Edition in public mode, only the sequence owner can change contact statuses — except Opted Out, which any team member can assign |

## Rule summary

Contact statuses represent the current state of processing a contact within a sequence.
Reply assigns them automatically based on interaction, and most — not all — can also be
managed manually from the People page (Change status, then add or remove with the + and -
buttons). Not all statuses are compatible with each other: if a requested combination is
not allowed, the change **fails and no transition occurs**. Statuses are not
[contact stages](/reference/statuses), which describe engagement across the entire
outreach process rather than one sequence.

## Trigger

An outreach event arrives (delivery, open, click, reply, auto-reply, bounce, opt-out,
call activity), a contact reaches a specific step type, or a user changes the status
manually.

## The 14 contact statuses

| Status | Assigned when | User-settable | Removal and transition rules |
| --- | --- | --- | --- |
| **Active** | The contact is added to an active sequence | Yes | Can be changed to Paused, Finished, Out of office, or Opted Out at any time; to Bounced or Replied only after the contact received at least one email in the current sequence |
| **Paused** | Set manually to temporarily halt email sends and reply tracking | Yes | Only for contacts in a sequence — setting it on a contact in no sequence produces an error; revert to Active manually to resume |
| **Missing Data** | A template variable has no matching value in the contact's profile | No — system-assigned | Must be removed manually; no emails send while it is set; fix by filling the variable or removing it from the template |
| **Bounced** | An email is returned undelivered; can also be set manually after at least one email was sent | Partially | Update the address, uncheck Bounced, set Active to resend within the same sequence; **not retained** when the contact moves to a different sequence |
| **Out of office** | An auto-reply with out-of-office keywords is detected | Yes | Stops further steps until removed manually or resumed by automatic out-of-office handling; a later real reply is handled per Replies handling |
| **Finished** | The prospect replies to a sequence email, or all steps have been sent | Yes | Change to Active only if the prospect did not complete all steps or extra steps were added; reply detection and sending stop while set |
| **Contacted** | The contact received at least one email from the current sequence | No | Cannot be changed manually |
| **Opted Out** | The prospect clicks the opt-out link, or a text unsubscribe reply is sorted into the Do Not Contact inbox category by AI | Yes | Can be set and removed manually; the **only status retained outside sequences**; a contact with it **cannot be moved to a different sequence**; any team member can assign it |
| **Replied** | The prospect responds from the same address the email was sent to (or forwarded from the thread), or replies by SMS to a sequence-related SMS | Yes | Sequence stops by default unless Continue processing steps is selected; usually comes together with Finished; reply tracking stops once set |
| **Opened** | The prospect opens an email (opens tracking on) | No | Cannot be changed manually; opens tracking can be disabled in Sequence > Settings > General Settings |
| **Clicked** | The contact clicks a link with link tracking enabled | No | Cannot be changed manually |
| **Auto-replied** | An automatic reply is detected | No | Cannot be assigned or removed manually; comes along with Finished, which stops further steps until Finished is changed to Active |
| **To call** | The contact is moved to a Call step in a sequence | Yes | Can also be set manually from the Contact sidebar |
| **Called** | Any call action: completing a Call-type task, making a Cloud Call, or logging a call via the Contact sidebar | Set by call actions | Permanent — removable only manually via the Contact sidebar |

## Transition rules

The original transition matrix is documented as a rule set rather than a diagram; the
table below reconstructs it from the per-status rules.

| From | To | Condition |
| --- | --- | --- |
| Active | Paused, Finished, Out of office, Opted Out | Manual, any time |
| Active | Bounced, Replied | Manual, only after at least one email was received in the current sequence |
| Paused | Active | Manual resume |
| Out of office | Active | Manual, or automatic after the configured number of days |
| Out of office | Finished or continue in sequence | The contact replies; outcome follows Replies handling (Mark person as finished vs. Continue sending emails) |
| Finished | Active | Only when steps remain uncompleted or extra steps were added to the finished sequence |
| Bounced | Active | After correcting the email address and unchecking Bounced; the email can be resent within the same sequence |
| Opted Out | (removed) | Manual only |
| Missing Data | (removed) | Manual only, after fixing the data or the template |
| Any disallowed combination | — | Fails: no resulting transition occurs |
| Any, under Team Edition | — | Fails if the sequence does not belong to the user changing the status (Opted Out excepted) |

## Result

The contact's status set updates and sending, tracking, and detection behavior follow the
new statuses — for example, no sends to `Missing Data`, `Finished`, or `Bounced` contacts,
and no reply detection for `Finished` or `Replied` contacts.

## Exceptions

- **Bounced + Opened together** is possible: the recipient provider's email checker may register an open (the address is likely invalid but the domain exists), or the open reflects your own view of the bounce-back message, which contains your original email.
- **Bounced is not retained across sequences** — moving the prospect to a different sequence drops it. **Opted Out is the opposite**: it is the only status retained even outside sequences, and it blocks moving the contact to another sequence.
- **The inbox AI that assigns Do Not Contact (feeding Opted Out) understands English only** — replies in other languages need the inbox category set manually, and the AI is not 100% accurate even in English.
- **Called is permanent** until removed manually via the Contact sidebar.

## Configuration that changes this rule

Sequence > Settings > **Replies handling** decides whether `Replied` comes with `Finished`
(Mark as finished) or the contact continues (Continue processing steps). **Opens
tracking** and **link tracking** in General Settings gate whether `Opened` and `Clicked`
can ever be assigned. Automatic **out-of-office handling** controls when `Out of office`
contacts resume — see [Reply detection](/behavior/reply-detection).

## Limits

| Limit | Value |
| --- | --- |
| Statuses in the enum | 14 |
| Never user-settable | Contacted, Opened, Clicked, Auto-replied |
| Removable only manually | Missing Data, Called, Auto-replied comes with Finished (Auto-replied itself cannot be removed) |
| Retained outside sequences | Opted Out only |
| Team Edition (public mode) | Status changes restricted to the sequence owner, except Opted Out |

## FAQ

### Which statuses can I set manually?

Paused, Finished, Out of office, Opted Out, and To call at any time (Paused requires the
contact to be in a sequence); Bounced and Replied only after the contact received at least
one email in the current sequence. Contacted, Opened, Clicked, and Auto-replied are
assigned by the system only.

### Why does a bounced contact show as Opened?

Either the recipient provider's email checker opened the message — suggesting the address
is invalid but the domain exists — or the open is your own view of the bounce-back
message, which contains your original email. See [Bounce handling](/behavior/bounce-handling).

### Why can't I change a contact's status?

Two common causes: the status combination is not allowed (the change fails with no
transition — for example, Replied before any email was received), or Team Edition in
public mode is enabled and you are not the sequence owner. Any team member can still
assign Opted Out.

### What is the difference between statuses and stages?

Statuses are per-sequence processing state — the 14 values on this page. Stages describe
the level of interaction and engagement across your entire outreach process. See
[Statuses](/reference/statuses).

## Related

- [Statuses](/reference/statuses) — the reference list
- [Sequence stopping](/behavior/sequence-stopping) — which statuses stop outreach
- [Reply detection](/behavior/reply-detection) — how Replied and Out of office get set
- [Lifecycle diagrams](/reference/lifecycle-diagrams)

## Build with Reply

- REST API: [docs.reply.io](https://docs.reply.io/api-reference/introduction) — contact status operations
- MCP: [agents.reply.io/mcp](https://agents.reply.io/mcp) — agents change contact statuses with the same rules
