Mailing lists
A mailing list is a named audience. Each list has its own settings for opt-in, welcome emails, and the default sender used when campaigns don’t override it. Lists live under CampaignCanvas → Mailing Lists.
List properties
| Property | Description |
|---|---|
| Name | Human-readable label shown in the backoffice |
| Alias | Unique programmatic reference. Used when embedding a signup widget by alias rather than ID. |
| Description | Internal note — helps editors pick the right list |
| Default From Name | Sender display name used when a campaign targeting this list doesn’t specify its own |
| Default From Email | Sender address used as the campaign default |
| Double Opt-In Required | When enabled, new signups receive a confirmation email and aren’t fully subscribed until they click the link |
| Send Welcome Email | Dispatch the welcome transactional email after a subscriber successfully joins |
| Send Unsubscribe Confirmation | Send a confirmation email when a subscriber unsubscribes |
| Send Resend Confirmation | Dispatch a transactional email when a subscriber requests a fresh confirmation link |
Archiving
Lists can be archived instead of deleted. An archived list:
- Is hidden from the default list view
- Cannot accept new signups — signup forms silently skip it
- Preserves its membership history so you can restore later
- Is excluded from campaign audience pickers
Archive seasonal lists (e.g. “Holiday 2025”, “Product Launch Waitlist”) when they’re no longer active instead of deleting them. You keep the historical signup record without cluttering the send UI.
Subscribers
A subscriber is a person identified by email address. Subscribers are globalto the workspace — one row per address — and attach to lists via list memberships. This means a person can be on multiple lists without duplicate records, and unsubscribing from one list doesn’t affect the others.
Subscriber properties
| Field | Description |
|---|---|
| Unique, required. The canonical identifier. | |
| First Name / Last Name | Used for personalisation via merge fields |
| Language | ISO 639-1 code (en, nl, de...) for translated content or language-based segmenting |
| Tags | Freeform labels — see Tags below |
| Custom fields | Any values defined by your custom field schema — see Custom fields |
| Consent history | Append-only audit trail of every opt-in event — source, policy version, timestamp, IP address |
| Bounce counters | Hard and soft bounce counts plus last-bounced timestamp. Drives automatic suppression after repeated hard bounces. |
Per-list membership state
A subscriber’s state is tracked per list, not globally. The same person can be:
| State | Meaning |
|---|---|
Subscribed | Active member — receives campaigns targeting this list |
PendingConfirmation | Signed up but hasn’t clicked the double opt-in link yet |
Unsubscribed | Opted out of this list. Other list memberships are unaffected. |
Bounced | Automatic — set after hard-bounce threshold |
Complained | Automatic — set when the ESP reports a spam complaint |
Subscriber detail view
Click any subscriber to open the drawer view. You’ll see:
- Profile— email, name, language, and any custom field values
- List memberships— which lists they’re on with their per-list state
- Tags— all tags currently applied, with inline add / remove
- Consent history— every opt-in event ever recorded, source, policy version, IP, and timestamp
- Activity timeline— every campaign open, click, bounce, or complaint across all campaigns
Custom fields
Custom fields extend the subscriber schema with your own columns. They are tenant-wide— define them once and every subscriber gets the schema. Values are stored in normalised tables (not a JSON blob), so they’re queryable and indexable at scale.
Field types
| Type | Use for |
|---|---|
| String | Company name, job title, city, country |
| Number | Age, loyalty points, count values |
| Date | Birthday, signup anniversary, renewal date |
| Boolean | VIP flag, beta opt-in, any yes/no attribute |
Field properties
| Property | Description |
|---|---|
| Name | Label shown in the subscriber editor |
| Alias | Immutable programmatic key. Referenced as {{subscriber.{alias}}} in merge fields. |
| Default value | Applied when a new subscriber is created without the field |
| Required | Rejects subscriber saves without a value |
| Sort order | Controls the display order in the subscriber editor |
Custom fields are a centralised schema, not per-list. Unknown keys on import or API writes are silently dropped. This prevents stray data from different sources polluting the subscriber database — every field must be defined first.
Tags
Tags are freeform labels you apply to subscribers. Unlike custom fields, tags don’t require a schema — just type them in.
Common patterns
- Source tracking —
site-signup,import-2026-q1,event-attendee - Interest flags —
webdev,marketing,product-updates - Lifecycle stages —
lead,customer,churned
All active tags can be viewed from the Subscribers page — the tag picker autocompletes from existing tags to keep your tagging consistent.
Segments
A segment is a saved filterthat resolves to a subscriber set at send time. Unlike lists (which are static memberships) segments are dynamic — a subscriber is automatically included or excluded based on whether they match the segment’s rules right now.
Rule types
| Rule | Example |
|---|---|
| Tag | Subscriber has tag webdev |
| Custom field | country equals NL, or loyaltyPoints> 100 |
| List membership | Subscribed to the “Weekly Digest” list |
| Language | language equals nl |
| Hard bounce count | Fewer than 2 hard bounces |
Match modes
Combine multiple rules with a match mode:
- Match all (AND) — a subscriber must satisfy every rule
- Match any (OR) — a subscriber must satisfy at least one rule
Live preview
The segment editor runs a live count against your subscriber database as you edit the rules, so you can see how many people the segment currently resolves to before saving.
Targeting campaigns with segments
When scheduling or sending a campaign, you can pick lists, segments, or both. Recipients are dedupledacross the union — a subscriber who matches multiple targets only receives one email.
TipSegments are particularly powerful paired with custom fields. A segment like “customers in NL with a renewal date within 30 days” becomes the exact audience for an automated renewal reminder.
Importing subscribers
The Subscribers section includes an import wizard for bulk adding from CSV. Open Subscribers → Import in the backoffice to start.
Wizard steps
- Upload a CSV file with a header row.
- Map columns— the wizard auto-matches common column names (
email,first_name, etc.), but you can override any mapping. Each column maps to either a built-in property (email, first name, last name, language) or a custom field alias. - Choose options— target list, duplicate strategy (skip or update), and consent policy version.
- Dry run— the wizard reports how many rows would be created, updated, or skipped, plus any validation errors.
- Commit— only after you’ve reviewed the dry run, the actual import runs.
Duplicate strategies
| Strategy | Behavior |
|---|---|
| Skip | Existing subscribers are left untouched — the row is reported as skipped |
| Update | Existing subscribers have their profile fields and custom field values overwritten with the CSV row’s values |
Consent on import
Every imported row gets a consent entry with source = import:{timestamp} and your chosen policy version. This gives you a defensible audit trail showing when and under what policy the address was added.
Importing a list you bought, scraped, or obtained without explicit opt-in is a fast way to get your sender domain blocked. Only import addresses that have given you permission to email them, and keep your consent audit trail strong.
Error handling
Rows that fail validation (missing email, invalid format, or unknown custom field type) are skipped and reported. The wizard produces a downloadable error CSV so you can fix and re-import failing rows without touching the rest.
Bulk operations
The Subscribers list supports bulk actions against multi-selected subscribers (or against a search-based selection):
- Add to list — attach everyone to a chosen list
- Remove from list — detach from a list without deleting the subscriber
- Tag — apply one or more tags in bulk
- Untag — remove tags in bulk
- Delete — permanently remove subscriber records
Bulk deleteremoves subscriber records but does not add their addresses to the suppression list — meaning a re-import can add them back. For GDPR right-to-erasure, use the dedicated Erase action instead, which hashes the address into suppression so it cannot be re-added. See Compliance → Right to erasure.
Exporting subscribers
The Subscribers list supports a full export for backup or migration. Exports paginate through every subscriber with their profile, custom field values, tags, and list memberships. This is the cleanest way to move a subscriber database between environments or to hand deliver a full snapshot to your data officer.