Status Lifecycle¶
Every subscriber has a status that determines whether they receive your emails. Understanding how status changes work helps you maintain a healthy, deliverable subscriber list.
Statuses¶
| Status | Description | Receives Email? |
|---|---|---|
| Active | Opted in and ready to receive email | Yes |
| Unsubscribed | Opted out via unsubscribe link or manual action | No |
| Bounced | Email address is invalid or permanently undeliverable | No |
| Complained | Marked your email as spam | No |
| Pending | Awaiting double opt-in confirmation | No |
Status Transitions¶
┌──────────────┐
New subscriber │ Active │◄─── Reactivation
───────────────► │ (with audit trail)
└──────┬───────┘
│
┌────────────┼────────────┐
│ │ │
▼ ▼ ▼
┌───────────┐ ┌────────┐ ┌───────────┐
│Unsubscribed│ │Bounced │ │Complained │
└───────────┘ └────────┘ └───────────┘
┌─────────┐
│ Pending │──── Confirms ────► Active
└─────────┘
How Each Status Is Reached¶
Active¶
- New subscriber created — Default status when a subscriber is added via SDK, form, API, or dashboard
- Reactivation — An admin manually reactivates a bounced or complained subscriber (see Reactivation below)
- Double opt-in confirmed — A pending subscriber confirms their email
Unsubscribed¶
- Unsubscribe link — Subscriber clicks the unsubscribe link in an email
- Manual action — Admin changes status in the dashboard
- CSV import — Imported with
unsubscribedstatus from another platform
Bounced¶
- Hard bounce from SES — Amazon SES reports a permanent delivery failure (e.g., address doesn't exist)
- CSV import — Imported with
bouncedstatus
When a subscriber bounces, the suppression_reason field records the reason:
Complained¶
- Spam complaint via SES — Amazon SES reports the subscriber marked your email as spam
- CSV import — Imported with
complainedstatus
The suppression_reason captures the complaint feedback type (e.g., abuse).
Pending¶
- Double opt-in flow — Subscriber has signed up but hasn't confirmed their email yet
Warning
Only active subscribers receive campaign emails. Segments automatically filter to active subscribers only — you cannot accidentally email someone who has unsubscribed, bounced, or complained.
Suppression¶
When a subscriber's status changes to bounced or complained, the suppression_reason field records why. This provides context for deliverability analysis.
Bounce-specific fields on the event record:
| Field | Description |
|---|---|
bounce_type |
SES bounce type: Permanent, Transient, Undetermined |
bounce_subtype |
SES subtype: General, NoEmail, Suppressed, etc. |
diagnostic_code |
SMTP diagnostic message from the receiving server |
Complaint-specific fields:
| Field | Description |
|---|---|
complaint_feedback_type |
Feedback type: abuse, auth-failure, fraud, not-spam, other, virus |
Reactivation¶
Bounced or complained subscribers can be reactivated by an admin. This is a deliberate action with an audit trail:
- Admin reactivates the subscriber from the dashboard
- A
BounceEventwith typeREACTIVATIONis recorded - The reactivation records who did it and why (via
reactivated_byandreactivation_notes)
Warning
Reactivating a bounced or complained subscriber carries deliverability risk. Only reactivate when you have evidence the issue is resolved (e.g., the subscriber contacted you to confirm their address is valid).
Deleting Subscribers¶
When a subscriber is deleted:
- Their subscriber record is removed (email, name, custom fields, tags)
- Related analytics records (sends, bounces, events) are preserved but anonymized — the subscriber reference is set to null
- This preserves campaign metrics (open rates, click rates) while removing PII
Deletion is permanent and cannot be undone.
Source Tracking¶
Each subscriber records how they entered the system:
| Source | Entry Method |
|---|---|
sdk-swift |
SDK identify call |
api |
API identify endpoint |
form |
Public subscribe form |
csv |
CSV import (dashboard or API bulk) |
dashboard |
Manually added from dashboard |
See also: Deliverability > Bounces for managing bounce events and suppression lists.