Skip to content

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 unsubscribed status 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 bounced status

When a subscriber bounces, the suppression_reason field records the reason:

Hard bounce: Permanent/General - smtp; 550 5.1.1 user unknown

Complained

  • Spam complaint via SES — Amazon SES reports the subscriber marked your email as spam
  • CSV import — Imported with complained status

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:

  1. Admin reactivates the subscriber from the dashboard
  2. A BounceEvent with type REACTIVATION is recorded
  3. The reactivation records who did it and why (via reactivated_by and reactivation_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.