Contact Status
Every contact has one of five statuses:| Status | Description |
|---|---|
subscribed | Active contact eligible to receive campaigns |
unsubscribed | Contact has opted out of receiving campaigns |
bounced | Email address has hard-bounced and is suppressed |
complained | Contact marked an email as spam |
unverified | Contact has not yet confirmed via double opt-in |
Custom Properties
Custom properties let you store additional data on each contact beyond the email address and status. You can create properties in the dashboard or via the API.Property Types
| Type | Description | Example |
|---|---|---|
string | Text values | Name, company, city |
number | Numeric values | Age, order count, revenue |
boolean | True/false values | VIP status, newsletter preference |
date | Date values | Sign-up date, last purchase date |
json | Structured data | Preferences object, tags array |
Using Properties in Templates
Custom properties are available as merge tags in campaign emails. If a contact has a property calledfirst_name, you can use {{first_name}} in your campaign template. See Template Language for syntax details.
Lists
Lists are named, static groupings of contacts. A contact can belong to multiple lists. Use lists to organize contacts by purpose — for example, “Newsletter Subscribers”, “Beta Users”, or “Enterprise Customers”. Lists are managed manually: you add and remove contacts explicitly, either through the dashboard, CSV import, or the API. This is different from segments, which are dynamic and update automatically based on conditions.Subscription Topics
Topics let contacts manage their subscription preferences at a granular level. Instead of a single subscribe/unsubscribe toggle, contacts can opt in or out of specific topics — for example, “Product Updates”, “Weekly Digest”, or “Promotions”. Topics can be public (visible to contacts in preference centers) or private (used internally for segmentation).Double Opt-In
Double opt-in adds a confirmation step when a contact is created. Instead of immediately becomingsubscribed, the contact starts as unverified and receives a confirmation email. They become subscribed only after clicking the confirmation link.
This is a best practice for GDPR compliance and ensures that only real, engaged email addresses enter your audience.
Import and Export
CSV Import
Import contacts in bulk from a CSV file:Upload Your CSV
Go to Audience → Import and upload your CSV file. The file is uploaded directly to secure storage via a presigned URL.
Map Columns
Map CSV columns to contact fields (email, status, custom properties). The email column is required.
CSV Export
Export your contacts to a CSV file:- Go to Audience → Contacts
- Apply any filters you want (optional)
- Click Export
- The export processes in the background and you’ll receive an email with a download link when ready
Export download links expire after 7 days.
API Access
The API provides full CRUD access to contacts with theaudience:read and audience:write scopes. You can create, update, list, and delete contacts programmatically.
Next Steps
Segments
Create dynamic groups of contacts based on conditions
Campaigns
Send email campaigns to your contacts
Template Language
Personalize campaign emails with merge tags
API Key Permissions
Configure audience API scopes