Subscribers & analytics

The lifecycle

signup → pending → (clicks confirm) → active → (opts out) → unsubscribed
                                        ↓
                              bounced / complained
StatusReceives campaignsHow it's reached
pendingNoSigned up, hasn't clicked the confirmation link
activeYesClicked the confirmation link
unsubscribedNoUsed an unsubscribe link
bouncedNoDelivery hard-failed; suppressed automatically
complainedNoMarked your mail as spam; suppressed automatically

Only active subscribers are ever sent a campaign.

A pile of pending subscribers usually means confirmation emails aren't arriving — check domain verification before concluding people simply didn't click.

Re-signups

Someone signing up again with the same address doesn't create a duplicate; addresses are unique per project. If they're already active, no confirmation email is sent — they're simply still subscribed.

A previously unsubscribed person can resubscribe through the form and confirm again. Bounced and complained addresses stay suppressed.

Viewing subscribers

The Subscribers tab lists everyone with their status, signup source, and date. The source label is whatever the signup form sent — use distinct labels per surface (footer, blog-post, crm-import) and you'll be able to tell what's actually converting.

To pull the list programmatically, see GET /api/v1/subscribers. It needs a key with subscribers:read; there's no public access to subscriber data.

Analytics

The Newsletter tab shows per-project figures over a time range:

MetricMeaning
total_subscribersEvery subscriber, all statuses
active_subscribersConfirmed, currently receiving campaigns
pending_subscribersSigned up, never confirmed
signups_in_rangeNew signups in the window
campaigns_in_rangeCampaigns sent in the window
sent_in_range / delivered_in_range / failed_in_rangeSend outcomes
open_count_in_range / click_count_in_rangeTracked opens and clicks
unsubscribes_in_rangeOpt-outs in the window
average_open_rate / average_click_rateOpens and clicks over delivered

Per campaign, you also get sent, delivered, bounced, complained, failed, open, click, and unsubscribe counts.

Reading the numbers honestly

Open rates are soft. An open is recorded when a tracking pixel loads. Apple Mail Privacy Protection pre-loads images for every message, inflating opens; clients that block images suppress them entirely. Treat opens as a trend line, not a measurement.

Click rates are the real signal. A click requires deliberate action, so it survives both of the distortions above. If you optimise for one number, use this one.

Delivered is not "landed in the inbox." It means the receiving server accepted the message. It may still have been filed as spam.

Watch complaints and unsubscribes as a ratio. A rising unsubscribe rate after a change in frequency or tone is the clearest feedback you get. Complaints matter more than they look: they damage sending reputation for every site on your domain, not just this newsletter.

Privacy

IP addresses recorded with opens and clicks are hashed with a secret salt before storage — raw IPs are never persisted. Subscriber data is not public and has no unauthenticated API path.

If you're subject to GDPR or DPDP, note that you're the controller of this data: honour deletion requests by removing the subscriber, and make sure your privacy policy says what you track. Double opt-in gives you a defensible record of consent, which is much of why it isn't optional here.