Skip to content
All changes Lettr changelog

What's new in March 2026

Everything Lettr shipped in March 2026: 2 new features, 9 improvements and 8 bugfixes.

Published

Pick a badge to see only the entries carrying it.

New features

Audience APIUI/UX

Audience Module With Contacts, Lists, Segments And Topics

The new Audience section keeps the people you send to as contacts and groups them into lists, segments and topics.

A contact is an email address with a status and any number of properties your team defines. Each property has a type and can have a fallback value, so a merge tag still shows something for a contact who never filled the field in. Lists are groups filled by hand, by import or through the API. Topics record what each contact agreed to receive, so unsubscribing from one topic keeps the others.

A segment stores conditions instead of members and is checked every time it is used, so it matches different contacts as the audience changes. It offers sixteen operators, limited to the ones that fit each property type, can be limited to one list, and shows the matching contacts while the conditions are being written. A segment can also be described in a sentence, which is turned into conditions you can edit.

A CSV import has three steps: upload, column mapping, and an import that runs in the background and emails you when it is done. Lettr detects whether the first row holds headers, adds headers when it doesn't, and suggests which column goes to which property. A contact that already exists is either skipped (the default) or updated with the row's properties, and contacts are matched by email address regardless of letter case, so an import never creates duplicates. Rows with a missing or invalid address are counted and reported instead of stopping the import. Contact exports arrive by email as a download link that works for 7 days.

The new audience:read and audience:write API key scopes allow listing, creating and deleting contacts and lists, and reading segments and their contacts. A contact created through the API can go through double opt-in: Lettr sends a confirmation email, using one of your emails named in the request, and a public confirmation link confirms the contact and redirects to an address you choose.

Audience
PlatformTransactional WebhooksDeliverability

API Failure Rate Alerts By Email And Webhook

A new Alerts page in Settings tells the team owner when the share of failing API requests goes up.

Two checks run, one over the last 15 minutes for sudden failures and one over the last day for slower ones. When the failure rate crosses the alert threshold, the team owner is notified, at most once per cooldown period you set. A quiet account needs a minimum number of requests before it can be alerted, so one failed call is not enough, and the daily alert is skipped when the 15-minute one has already gone out.

Alerts arrive by email, by webhook, or both. A webhook address must be public, a test button sends a sample alert, and every delivery is signed with a secret for your team that can be regenerated.

Alerts

Improvements

AudiencePlatform Billing

Separate Contact-Based Billing Tier For Audience

Audience is billed on its own, by the number of contacts you keep, separately from the plan for emails sent.

Adding an audience doesn't change what your current plan costs, and the first 500 contacts are free on every subscription. Moving to a smaller tier is refused while you have more contacts than it allows, instead of removing contacts to fit.

Billing
TransactionalPlatform APISecurity

Sending Domain Allow-List For API Keys

An API key can now be limited to a list of sending domains, and a send from any other domain is rejected with a domain_not_allowed error.

A key with no domains listed can send from any domain, so existing keys work as before. A leaked key that is limited this way can only send from the domains on its list.

API key permissions
Transactional API

Custom Headers Field For The Send Email Endpoint

POST /api/emails now accepts a headers object with up to 10 custom headers, each value up to 998 characters.

Headers that decide where an email goes or how it is signed can't be set, including From, To, Reply-To, Subject, Date, Message-ID and DKIM-Signature. List-Unsubscribe and List-Unsubscribe-Post can't be set either, because Lettr adds them itself.

curl -X POST https://app.lettr.com/api/emails \
  -H "Authorization: Bearer $LETTR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "billing@example.com",
    "to": ["jane@example.com"],
    "template_slug": "invoice",
    "headers": {
      "X-Mailer": "acme-billing/2.1",
      "X-Entity-Ref-ID": "inv_88213"
    }
  }'
Send an email
Transactional APIDocs

Optional Subject Field For Sends With A Template

A send with template_slug and no subject now uses the subject saved on that email, or the email's name when it has no subject.

subject used to be required on every send. A subject in the request still takes priority over the saved one, GET /api/templates/html now returns the saved subject too, and the API reference no longer lists subject as required.

Send an email
Transactional AIUI/UX

AI Content Chat In The HTML Email Editor

The HTML email editor now has an AI chat that changes the email from a description in plain language.

Each change is saved as a new version of the email, so the previous version is still there.

Platform UI/UX

Quick-Create Menu In The Top Bar And Refreshed App Design

A “+” menu in the top bar now creates a sending domain, an API key, an email or a teammate invitation from any page.

The sign-in and registration pages were redesigned at the same time, the team switcher was rebuilt, and buttons, cards, inputs, tabs and dialogs got a refreshed look. The Lettr logo, in light and dark versions, replaced the text label.

Platform SecurityUI/UX

Password Confirmation For Account Email Changes

Changing the email address on your account now requires your current password, while changing only your name does not.

TransactionalCampaigns UI/UX

Dark Mode In The Topol Editor

The Topol editor in Lettr now has a dark mode.

Transactional DocsAPI

Templates HTML And Projects Endpoints Added To The API Reference

The API reference now documents GET /templates/html and GET /projects, and no longer lists an old request format that no endpoint used.

API reference

Bugfixes

  • Transactional API

    reply_to sent as an array or an object is now accepted, where it used to fail with “must be a valid email address”. A one-item array is unwrapped, and an object's email and name become reply_to and reply_to_name.

  • Transactional API

    Fixed emails with attachments sent over SMTP bouncing instead of being delivered.

  • Platform UI/UX

    Sign-in, registration and password reset forms now work when the CAPTCHA is slow to load or times out, instead of failing.

  • Platform Security

    The password reset form no longer reveals whether an email address has a Lettr account, because both outcomes now show the same message.

  • Platform UI/UX

    Fixed a tab left open during a Lettr update breaking on the next click; the page now reloads onto the new version.

  • Platform Security

    The sign-in and registration pages are now served with their security response headers, which they used to be missing.

  • Platform UI/UX

    The description line under the headings on the sign-in and registration screens is shown again.

  • Platform Docs

    Fixed a mistake in the Laravel code example on the onboarding screen.