> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lekalao.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> What changed in Lekalao, most recent first.

What changed for the people who use Lekalao and for the applications that call it. The most recent first.

**31 October 2026**

Billing, gallery, interface; API, webhooks, test keys; security

* **Your plan, in sentences.** The billing page says where the team stands and what comes next: the days of trial left, until when it is paid, what happens after. Paying during a trial loses no trial day, and moving to Free in the middle of a paid period asks first. See [Your plan](https://docs.lekalao.com/account/billing.md#your-plan).
* **An invoice for every paid period.** Numbered `LKL-2026-000123` without a gap, printed or saved as a PDF, and announced by a receipt with a link that needs no account. Owners fill in the name, address, tax ID and language of their invoices. See [Invoices](https://docs.lekalao.com/account/billing.md#invoices).
* **Cards through Stripe.** Mobile Money or a card through Wajub where Mobile Money reaches, a card through Stripe elsewhere; the page says which. See [Paying](https://docs.lekalao.com/account/billing.md#paying).
* **The gallery.** Five layouts and eight starter e-mails, already written in your brand and in the language of the list, offered when you create a template, a campaign or an automation e-mail. See [The gallery](https://docs.lekalao.com/content/gallery.md).
* **Nothing typed is lost.** A draft campaign saves itself, and every editor asks before you leave with changes. Changing the editor converts the content, or asks. See [Saving](https://docs.lekalao.com/content/editors.md#saving) and [Change the editor](https://docs.lekalao.com/content/editors.md#change-the-editor).
* **Preview text.** The line after the subject in the inbox, for campaigns, automation e-mails, transactional templates and templates. See [Preview text](https://docs.lekalao.com/content/editors.md#preview-text).
* **One editor to begin with.** A new campaign asks how you will write it, the block editor first, and a **Two columns** block joins the others. The drag-and-drop designer is off unless the installation switches it on. See [The editors](https://docs.lekalao.com/content/editors.md).
* **The right hour.** A schedule is read in your time zone and shown with it; feeds and waits keep the zone they were set in. See [Schedule](https://docs.lekalao.com/campaigns/sending.md#schedule).
* **A campaign that cannot leave says so.** It is marked **Blocked**, with its reasons, and whoever scheduled it and the owners are told by e-mail. See [Blocked](https://docs.lekalao.com/campaigns/sending.md#blocked).
* **Archive, select, sort.** A sent campaign can be archived, several campaigns archived or deleted at once, and the main tables sorted by their columns. See [Archive and delete](https://docs.lekalao.com/campaigns/create.md#archive-and-delete).
* **Asked first.** Deleting a segment says what hangs on it; unblocking an address says what is at stake, and a complaint needs the person's renewed consent. See [Delete a segment](https://docs.lekalao.com/contacts/segments.md#delete-a-segment) and [Take an address off](https://docs.lekalao.com/contacts/suppression-list.md#take-an-address-off).
* **People.** **Contacts** opens on everybody once, with the lists they are on; **Lists** and the **Suppression list** are its other tabs. See [People](https://docs.lekalao.com/contacts/subscribers.md#everybody-people).
* **Deliverability has its own entry** in the main navigation, at `/deliverability`; the old address leads there. See [Sending domains](https://docs.lekalao.com/deliverability/domains.md).
* **First steps for your team.** The dashboard's list counts your team, not the installation, leads to where each step is done, and can be put away. See [Get Lekalao ready](https://docs.lekalao.com/guide/dashboard.md#get-lekalao-ready).
* **A report that ranks.** Sent, opens, clicks and revenue (or delivered) in large, the rest on one line. A campaign that reached people opens on it. See [Statistics](https://docs.lekalao.com/campaigns/statistics.md#reach).
* **Transactional webhooks.** `transactional.sent`, `.delivered`, `.bounced`, `.complained`, `.opened`, `.clicked` and `.failed` follow each transactional e-mail: no more polling to know what became of it. See [Webhooks](https://docs.lekalao.com/developers/webhooks.md#transactional-e-mails).
* **Webhooks signed with their time, retried, deduplicable.** `Lekalao-Signature: t=…,v1=…` signs the time with the body: refuse a call more than five minutes old. `Lekalao-Event-Id` is the same for every attempt. A failed call is tried again after 1 min, 5 min, 30 min, 2 h, 6 h and 12 h, and the log shows each attempt. An endpoint is switched off after 3 days of failures, and its owners are told. `X-Lekalao-Signature` is still sent, for now. See [Check the signature](https://docs.lekalao.com/developers/webhooks.md#check-the-signature).
* **Error codes.** Every error of the API carries a stable `code` and a `doc_url`. See [Errors](https://docs.lekalao.com/errors.md).
* **Test keys.** A token created as a test key sends nothing, and the addresses at `sink.lekalao.dev` play the provider, webhooks included. See [Test keys](https://docs.lekalao.com/developers/sandbox.md).
* **One description of the API.** `GET /v1/openapi.json` serves the document of this reference, in English or French; a test in the application holds it to the routes and to real answers.
* **Transactional e-mails answer whose fault it is.** `422` `recipients_suppressed`, `429` `monthly_quota_exceeded`, `502` only when the provider or the queue failed, with `failure_code`, `delivered_at`, `bounced_at` and `complained_at` on the e-mail. An e-mail still pending seven hours after its call becomes `failed`, `failure_code: lost`. 50 addresses at most per e-mail, `cc` and `bcc` included, and each one counts against the allowance. `mailer` must be one of the team's, or one the service provides. A resend keeps the sender address. See [Transactional e-mails](https://docs.lekalao.com/developers/transactional.md#the-answer).
* **Campaign tests obey the rules.** A test goes through the sender check and the suppression list, counts against the allowance, and is limited to 100 an hour per team: otherwise `422` `test_refused`. See [Campaigns](https://docs.lekalao.com/developers/campaigns.md#test).
* **A second factor, everywhere.** A team that requires two-factor authentication refuses the API tokens and the SMTP relay of a member who has not set one up. The relay closes a connection after three wrong passwords, and holds a limited number at once. See [Authentication](https://docs.lekalao.com/developers/authentication.md).
* **Double opt-in proves a person.** The confirmation link opens a page; its button confirms. Security software that opens every link no longer confirms in the reader's place. See [Subscription confirmation](https://docs.lekalao.com/contacts/public-pages.md#subscription-confirmation).
* **Plans.** A new team starts on the plan chosen on the public site (`/register?plan=`), and a second team on Free; a trial that ends unpaid goes back to Free within the hour. See [Billing](https://docs.lekalao.com/account/billing.md#the-first-fourteen-days).
* **Amazon SES.** The first SNS topic that confirms is pinned on the mailer; another one is not believed. See [Provider feedback](https://docs.lekalao.com/deliverability/feedback.md).

**20 October 2026**

Mailers

* **SMTP encryption follows the port.** On 465, 587 and 25, an encryption that cannot work there gives way to the port: 465 uses SSL/TLS, 587 and 25 use STARTTLS, and nothing is ever sent unencrypted. Providers that call 587 "TLS", such as Zoho ZeptoMail, now work as set. See [Mailers](https://docs.lekalao.com/deliverability/mailers.md#credentials).
* **A changed mailer is used at once.** New credentials or a new host apply from the next e-mail. The sending processes no longer keep the old ones until the next restart.

**23 September 2026**

Plans, prices and payments; team settings

* **Starter**, a new entry plan: 2,000 subscribers and 20,000 e-mails a month. **Free** grows to 1,000 subscribers and 10,000 e-mails. See [Plans](https://docs.lekalao.com/account/billing.md#plans).
* **Prices in your currency**: XAF, XOF, NGN, KES, EUR or USD, settled by your first payment. Pay for 1, 3, 6 or 12 months; longer periods cost less. See [Your currency](https://docs.lekalao.com/account/billing.md#your-currency).
* **Nothing renews by itself, and you are told.** Reminders seven days before a paid period ends, the day before, and the morning it ends. See [The reminders](https://docs.lekalao.com/account/billing.md#the-reminders).
* **The postal address comes first.** It is now among a new team's first steps, before a campaign is written rather than when it is refused.
* **Inviting a member asks for the role**, with **Writer** to begin with. See [Invite a member](https://docs.lekalao.com/account/team.md#invite-a-member).
* **On a shared installation**, the public URL and the application's name belong to whoever runs it: the fields are gone from **Settings → General**. Your team shows its own name through its [brand](https://docs.lekalao.com/content/brand.md).
* **The transactional log reads nested messages.** E-mails relayed by software that wraps its parts twice (Mattermost does) show their text and HTML, not their raw source.

**22 September 2026**

Campaigns, tokens, mailers

* **Each blocker says where it is settled.** A campaign that cannot leave lists its problems with a link to the right page. **Add the footer** writes the unsubscribe link and the postal address into the content, and a new campaign starts with that footer. See [Ready or not](https://docs.lekalao.com/campaigns/sending.md#ready-or-not).
* **A new API token can be copied.** It was not shown after its creation. See [API tokens](https://docs.lekalao.com/account/integrations.md#api-tokens).
* **Confirmation and welcome e-mails leave through your mailer**, the one chosen for transactional e-mails, instead of the installation's own.
* **Mailer credentials are protected from browsers.** Password managers no longer fill your sign-in into a provider's fields, and Amazon SES keys are checked for their shape when saved.
* **The SMTP relay accepts an empty sender** (`MAIL FROM:<>`), which some software, Mattermost among them, uses for its test e-mail. See [SMTP relay](https://docs.lekalao.com/developers/smtp-relay.md).

**20 September 2026**

Trust, pages, connectors

* **Activity log.** Every change, sign-in and export is written down: who, what, from where, by the browser or by which token. Kept 400 days. See [Activity](https://docs.lekalao.com/account/activity.md).
* **Writing, sending and exporting are three rights.** A new role, **Writer**, prepares campaigns without sending them. See [The roles](https://docs.lekalao.com/account/team.md#the-roles).
* **A second pair of eyes.** A team can ask that a campaign be approved by another member before it leaves, whether by the button, the schedule or the API. See [Rules of the team](https://docs.lekalao.com/account/team.md#rules-of-the-team).
* **Two-factor authentication** can be required of every member.
* **Landing pages.** A page of its own for a list, at an address that does not move. See [Landing pages](https://docs.lekalao.com/contacts/pages-and-popups.md#landing-pages).
* **Optional help.** When the installation offers them, a real spam filter's opinion in the check before sending, and suggestions for subjects and passages. See [Checks](https://docs.lekalao.com/content/checks.md) and [Help with the words](https://docs.lekalao.com/content/editors.md#help-with-the-words).
* **API for connectors**: `GET /v1/me`, webhooks managed by program, and a sample of each event. See [Registering by program](https://docs.lekalao.com/developers/webhooks.md#registering-by-program).

**19 September 2026**

Transactional e-mails, contacts, content, deliverability

* **Transactional e-mails are queued.** The API answers `202` with `status: pending` as soon as the e-mail is logged, then sends it from a queue of its own, never behind a campaign. A failing provider is tried again for up to six hours, at its own rate limit. See [The answer](https://docs.lekalao.com/developers/transactional.md#the-answer).
* **Imports no longer greet.** Imported people get no welcome e-mail and start no automation, unless **Welcome them as new subscribers** is ticked (`trigger_automations` in the API). See [Import and export](https://docs.lekalao.com/contacts/import-export.md).
* **One person, one contact.** Someone on three lists has one name, one language and one set of fields. Plans count people, not subscriptions, and "forget me" forgets the person everywhere.
* **Typed contact fields**: text, number, date, yes or no. Dates and numbers are stored in one shape, whatever the file wrote. See [Contact fields](https://docs.lekalao.com/contacts/fields.md).
* **What people do.** Your shop reports events (an order, a basket left behind) with `POST /v1/events`. They start automations (**The person does something**), build segments and fill e-mails. See [Events](https://docs.lekalao.com/contacts/events.md).
* **Templates in Liquid**, with every standard filter and tag, and `money` for amounts written the reader's way. See [Personalisation](https://docs.lekalao.com/content/personalization.md).
* **A drag-and-drop designer**, optional, beside the four editors. See [Editors](https://docs.lekalao.com/content/editors.md).
* **A sign-up page and a pop-up** hosted by Lekalao, for a team with no form of its own. See [Pages and pop-up](https://docs.lekalao.com/contacts/pages-and-popups.md).
* **Ready-made journeys**: a welcome series, an abandoned basket, a birthday, a word after a purchase. See [Automations](https://docs.lekalao.com/automations/overview.md).
* **Birthdays on the reader's day**, in their time zone, and on 28 February when the year has no 29th. See [Triggers](https://docs.lekalao.com/automations/triggers.md#a-date-of-the-subscriber-comes-round).
* **Addresses are checked on the way in.** A throwaway mailbox or a domain with no mail server is refused, with the address that was very likely meant. See [List hygiene](https://docs.lekalao.com/deliverability/list-hygiene.md).
* **Deliverability as a trade.** Readers who stopped reading are left in peace, a new sender is warmed up over twelve days, DMARC policies and reports are read, and **Sign with Lekalao** signs what leaves through an SMTP relay. See [Sending domains](https://docs.lekalao.com/deliverability/domains.md).
* **Each reader at their hour.** With **Send to each person at the hour they open**, a campaign leaves at the hour each subscriber usually reads. See [Each person's hour](https://docs.lekalao.com/campaigns/create.md#each-person’s-hour).
* **Fairer figures.** Machine opens and link scanners are told apart from people, and the content check names what spam filters punish.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.