Why subscription lists
Subscription lists give you and your customers control over who receives what. Instead of every user getting every marketing email, you create lists (“Product Updates”, “Beta Newsletter”, “Weekly Tips”) and customers can opt in or out independently. Halo enforces consent on every send. Users who’ve unsubscribed from a list never receive emails for that list, even if they’re in the audience. Configure at Settings > Emails > Subscriptions.Two consent models
Each subscription list has aconsent_type:
| Model | Behavior |
|---|---|
| Opt-in | Only users who have explicitly subscribed receive emails for this list. Default for new lists. |
| Opt-out | All users except those who have explicitly unsubscribed receive emails. |
| Use case | Recommended |
|---|---|
| Marketing newsletter | Opt-in |
| Product update emails | Opt-in or opt-out depending on regulation (GDPR-leaning teams use opt-in) |
| Transactional notifications (account, billing) | Don’t use a subscription list; these aren’t subject to opt-out |
Subscribing and unsubscribing
Subscriptions live oncontact_subscription_preferences:
- Users can subscribe by interacting with your product (e.g. clicking a “Subscribe to updates” button)
- Users can unsubscribe via the unsubscribe link in any email tied to a list
- The unsubscribe page is hosted by Halo (
/unsubscribe?...) and includes branding
subscribed: false for that pair. Future sends in that list are filtered out automatically.
Unsubscribe page
The unsubscribe page is auto-generated and includes:- The list name and description
- Unsubscribe and resubscribe buttons
- Your help center logo and brand colors
- Optional secondary lists for the user to manage at the same time
- Footer with your company info (CAN-SPAM compliant)
Failsafe behavior
Halo fails closed when subscription configuration is wrong:- Missing list ID → no recipients
- Wrong-org list → no recipients
- Subscription audience but list has zero subscribers → no recipients
Audience targeting with subscription lists
When you setaudience_type: subscription on a broadcast or series, you must specify a subscription_id. The audience is computed:
- Opt-in lists: only users with
subscribed: truefor this list - Opt-out lists: all users except those with
subscribed: falsefor this list
Series with the unsubscribed exit rule
For series, you can addunsubscribed to the series’ exit rules. When set:
- Before each step send, Halo checks if the user has unsubscribed from the linked list
- If yes, the user’s pending rows are removed and they exit cleanly
- The next step in the series is skipped, not dropped
Resubscribing
Users can re-subscribe at any time from the unsubscribe page. Halo restores theirsubscribed: true and they’re eligible for future sends.
Where to go next
Broadcasts
One-shot emails with subscription audiences.
Series
Multi-step sequences with subscription audiences and unsubscribe exit rules.
Sending Settings
The default unsubscribe link toggle and email branding.