Contact Status
Every contact has exactly one of five statuses. The status determines whether the contact will receive your next campaign and how Lettr handles them internally.| Status | What it means |
|---|---|
subscribed | Active contact, eligible to receive campaigns. This is the default for newly added contacts. |
unsubscribed | The contact has opted out. Excluded from all campaign sends. |
bounced | A previous email to this address bounced permanently. Excluded from campaigns to protect your sender reputation. |
complained | The contact marked one of your emails as spam. Excluded from campaigns. |
unverified | The contact was created through double opt-in and hasn’t confirmed yet. Excluded from campaigns until they click their confirmation link. |
Statuses and Your Marketing Plan
Your marketing plan has a contact limit (for example, the free tier allows 500 contacts). The limit is checked against the total count of contacts in your audience, regardless of status. Unsubscribed, bounced, and complained contacts still count toward the limit. If your audience exceeds your plan’s limit, you cannot send new campaigns until you upgrade your plan or remove contacts.Adding Contacts
There are three ways to add contacts to your audience:| Method | Best for | Where to find it |
|---|---|---|
| Manual entry | A handful of contacts you want to add right now | Audience → Contacts → Add contacts |
| CSV import | Bringing in a list from another tool | Audience → Imports → New import. See Importing and Exporting |
| API | Sign-up forms on your website or app | POST /api/audience/contacts, optionally with double opt-in |
Manual Entry
The Add contacts dialog accepts one or more email addresses separated by spaces, commas, or newlines. You can optionally pick a list and a topic to attach the new contacts to in the same step. All new contacts start with statussubscribed.
Auto-Attached Topics
Whenever a new contact is created, Lettr automatically attaches every topic whose default is opt-in. This means recipients are subscribed to your default topics from the moment they enter your audience, without you having to assign them.Editing Contacts
Open any contact from the Contacts list to view their profile. From there you can:- Change their email address — the address is unique per team, so an existing email in your audience will block the change
- Change their status — useful for manually marking a contact as unsubscribed or re-subscribing them
- Edit their property values — covered in the Custom Properties section below
- Add or remove them from lists and topics
Deleting Contacts
You can delete contacts individually from their profile, or in bulk from the contacts list (select rows, then use the bulk action bar). If you want to keep a record of a contact but stop emailing them, set their status tounsubscribed instead of deleting them.
Bulk Actions
When you select multiple contacts from the list view, the bulk action bar at the bottom of the page lets you:- Delete the selected contacts
- Change their status (for example, mass-unsubscribe a set of contacts)
- Add them to or remove them from one or more lists
- Add them to or remove them from one or more topics
Custom Properties
Custom properties let you store any data you want on a contact beyond their email and status. You define each property once at the team level (giving it a name and a type), and every contact in your audience can have its own value for it. Common uses:- Personalizing campaign emails (
Hi {{first_name}}) - Filtering contacts in segments (for example, “all contacts where
plan = pro”) - Tracking signup-time data you want to keep alongside the contact
Property Types
Each property has a type that affects how it can be filtered in segments and how it’s rendered in the dashboard.| Type | Use for |
|---|---|
string | Names, companies, cities, plan tiers, any free-form text |
number | Order counts, revenue, age, any numeric value |
boolean | True/false flags like is_vip or has_completed_onboarding |
date | Sign-up dates, last purchase dates, renewal dates |
json | Structured data when one of the simple types isn’t enough |
Fallback Values
Each property can have an optional fallback value, used whenever a contact doesn’t have a value of their own for that property. Fallbacks are handy when you want to safely personalize emails without leaving variables blank — for example, afirst_name property with the fallback there will render as “Hi there” for contacts whose first name you don’t know.
Managing Properties
Go to Audience → Properties to view, create, edit, and delete your team’s property schema.Using Properties in Campaigns
Custom properties become merge tags in campaign emails. If a contact has a property calledfirst_name, you can reference it as {{first_name}} in your subject or body. See Content and Design for the full personalization syntax.
Activity Log
Every contact has a chronological log of events that happened to them. The log is visible on the contact’s profile page and includes:| Event | When it happens |
|---|---|
| Created | The contact was added to your audience |
| Subscribed / Unsubscribed | Their status changed to or from subscribed |
| List added / removed | They were added to or removed from a list |
| Topic opted in / opted out | They subscribed to or unsubscribed from a topic |
| Property set / changed / cleared | A custom property value was added, modified, or removed |
| Email changed | Their email address was updated |
Contacts added through CSV imports do not generate a “Created” event in the activity log — imports use a faster bulk-insert path that skips per-contact logging. Their list and topic memberships from the import are also not individually logged. All later changes (status, properties, manual list edits) are logged as normal.
Next Steps
Lists
Group contacts into static lists for organization
Topics
Let contacts manage their own subscription preferences
Segments
Build dynamic groups using contact data and properties
Importing & Exporting
Bulk-load contacts from CSV