Everything Lettr shipped in August 2026: 1 new feature, 10 improvements and 17 bugfixes.
Published
Pick a badge to see only the entries carrying it.
New features
AudienceCampaignsUI/UX
Manage Email Preferences Page Replaces The Unsubscribe Screen
The unsubscribe link in every email now opens a page where recipients choose their topics, pause emails or unsubscribe, instead of a screen that could only unsubscribe.
The page shows the recipient's current status (Subscribed, Paused, Unsubscribed or Not receiving emails), a checkbox for each topic, a pause of 30, 60 or 90 days, and the campaigns they recently received, each linked to its web version. One “Update preferences” button saves everything. Unticking every topic unsubscribes, after asking for a reason, and ticking topics again brings an unsubscribed recipient back.
Topic opt-outs and pauses are checked again just before each part of a campaign is sent, so a change made during a large send still counts. A full unsubscribe also removes the recipient from private topics for good, so subscribing again does not bring them back.
The page still opens when a link carries a broken parameter. Its limits count requests per contact, not per IP address, so security gateways that open links before delivery can't stop a real recipient from unsubscribing.
Pauses show in Audiences too: a Paused badge with its end date, a Paused filter (the Subscribed filter no longer includes paused contacts), and the status and a paused_until column in CSV exports. The API adds a paused_until field that can be null; status still reads subscribed for a paused contact, and nothing else changes.
Bulk Contacts Endpoint Accepts Per-Contact Properties, Lists And Topics
POST /audience/contacts/bulk now takes a list of contacts, each with its own properties, lists and topic subscriptions, and imports them in one call.
Importing contacts with their own properties used to take one request per contact, and more for topics, at 3 requests per second for each team. Ten thousand contacts with properties and two topics each took about 30,000 requests and almost three hours; the same import now takes about 10 requests and a few seconds.
The response includes the ids of the new contacts, so there is no need to page through the audience to find them. Rows that fail validation are skipped and listed in the response while the rest are imported, and update_existing updates the properties of contacts that already exist. Top-level properties, list_ids and topics apply to every row unless the row sets its own. A topic set to opt_out keeps a new contact out of a topic that would otherwise subscribe them automatically.
New POST and DELETE /audience/contacts/topics/bulk endpoints add and remove topics for many contacts at once, like the existing ones for lists. The old {emails, list_id, properties} request works exactly as before, so existing integrations and lettr-php 2.4.0 need no changes.
Topic Opt-Outs In Bulk Imports Apply To Existing Contacts
An opt_out in a bulk import now unsubscribes an existing contact from that topic, whether or not update_existing is set.
Without update_existing, the opt-out used to be ignored: the request returned 201 with no error and the contact stayed subscribed. update_existing now only controls whether properties are updated, because withdrawing consent is not something a request option should override. Check any import that counted on opt-outs being ignored.
Topic changes made through the bulk endpoints are now also recorded in each contact's consent history, which they used to skip.
The 50-recipient limit on sends now counts to, cc and bcc together, as the documentation always said.
Only to used to be limited, so one request could carry, and be billed for, any number of recipients. A request with more than 50 in total now returns a 422, and scheduled sends follow the same limit, so check how many recipients your integration puts on one send.
The API reference now states that options.transactional defaults to true, so an API send also goes to unsubscribed recipients unless it is set to false.
Sending has always worked this way; only the reference was missing it. Marketing emails sent through the API need options.transactional set to false.
Adamko, the AI assistant, is now available to every team while it is in beta.
The chat panel now opens with its introduction only once for each team, instead of on every visit, and the onboarding banner on the dashboard can be dismissed for good.
Adamko Creates API Keys And Sending Domains In Conversation
Adamko can now create an API key or add a sending domain when asked in chat, not only in the “Set up everything” scenario.
In ordinary chat he used to refuse, with reasons that were not true, such as needing your domain registrar login. Adding a sending domain in Lettr never needs one.
He now takes the same steps as the setup scenario. An API key can be live or sandbox, with full or sending-only access. When a domain is already in use or blocked, he gives the real reason, and he still walks you through the DNS setup when you ask for that instead.
A reply from Adamko can now be stopped while he is writing it, and a new message can be queued while he is still answering.
The message box used to stay locked until he finished. A stopped reply keeps the text already shown, and a queued message sends itself when the current reply ends. Work he has already started in the background, such as a brand kit or a set of emails, still finishes, and the stopped reply says so.
PlatformDeliverability
Backoff Schedule For Repeat DNS Failure Alerts
With the default settings, a DNS record that stays broken now alerts on day 0, 1, 4 and 11 and then goes quiet, instead of alerting every day.
The domain still shows as failing in the app, and the summary email follows the same schedule. A record that newly breaks still alerts right away, and fixing a record starts the schedule again. The alert settings slider, now called “First repeat after”, sets the first gap; the next two are three and seven times as long.
Move And Duplicate Folder Pickers Limited To The Email's Module
The folder pickers for moving and duplicating an email now list only folders of the same kind, marketing or transactional.
Picking a folder of the other kind used to change the email's type without warning. The duplicate picker now opens on a folder (the email's own, the module's main folder or the first one offered) instead of an empty choice. Marketing email cards also get “Copy to Transactional”, and a copy made for the other module now goes into one of that module's folders.
PlatformDocsUI/UX
Documentation Link In The App Top Bar
The top bar of the app now links straight to the documentation.
Bugfixes
PlatformUI/UX
Confirmation and warning messages appear again after actions such as adding or deleting a domain, and editor settings no longer confirm a save twice.
PlatformBilling
Fixed the dashboard returning a 500 error for teams whose subscription no longer exists; they now see the free plan's limits.
PlatformDeliverability
Deleting a domain now removes its health alert from the dashboard, including alerts from earlier deletions, and old “Check domain” links open the domain list.
TransactionalCampaignsUI/UX
Fixed previewing a premade email in the Create Email dialog changing the look of the app behind it, with stretched thumbnails and a resized logo.
PlatformAI
A closed Adamko panel now stays closed after a page reload or a new sign-in, even before onboarding is finished.
PlatformAI
Fixed the Adamko chat opening on the first message instead of the latest one when reopened.
PlatformAI
The “Drop your CSV to attach it” overlay in the Adamko chat no longer gets stuck and blocks the chat until the page is reloaded.
PlatformAI
Fixed Adamko's suggested quick actions not updating, so “Help me set up my sending domain” stayed after a domain was already added.
PlatformAI
“Set up everything” now creates the emails when the account has only one blank untitled draft, instead of reporting them as already created.
PlatformAI
Brand kit logo detection no longer picks another site's logo from the page, such as a partner badge, over the site's own logo.
PlatformAI
Brand kit logos now use the right light or dark version, and very light logos get a darker tile, instead of vanishing against the background.
PlatformAI
Fixed brand kit logos sometimes showing as a broken image while emails were being generated.
PlatformAI
Generated emails no longer include pink dividers or other colors from outside the brand; those now become a shade of the brand color.
PlatformAI
Fixed brand kits with only one color producing generated emails with empty content blocks, large gaps and oversized rounded corners.
CampaignsAI
Campaign drafts that Adamko creates now go into a marketing folder instead of a transactional one.
PlatformAI
Social icons in generated emails now turn white on dark or strongly colored footers, where the grey icons used to disappear.
PlatformAI
A brand kit website that can't be read now gets a clear explanation and a prompt to try another address, instead of near-empty setup emails.