A step-by-step user guide with screenshots for these changes is available at Customising Email Wording.
Branded emails were already rendered by the website's own code, but the HTML was fetched from templates stored in Brevo. Editing those templates in Brevo's WYSIWYG editor URL-encoded the merge-field tokens inside links, which broke the server-side substitution and produced dead password-reset links (See ticket #212). The forgot-password email had already been moved onto a local file; this release completes the job for every branded email.
Each notification config names a template file held in the code repository, via a new templateName field. Rendering always uses that local file. The old templateId field, the render-time fetch from Brevo, the Brevo template picker in Mail Settings and the related admin tooling have all been removed. Brevo's only remaining job is delivering the emails, so nobody ever needs to login there now.
Templates can declare named sections using {% block %} markers. For each section, a group can keep the standard wording, supply its own wording, or leave the section out, and these choices are stored on the notification config as typed overrides. The welcome and login-details emails and all five booking emails (confirmation, cancellation, waiting list, restored, reminder) use this mechanism. Booking emails also gained proper merge fields (attendee name, event title, date, places booked) in place of the old bespoke placeholders.
Configurations that are not block-based get a single-document editor in Mail Settings: rich text with merge-field insertion, internal page links, image embedding, and a reset-to-default option where a standard template exists. A toggle records whether the body is written in the configuration or supplied by the Email Composer at send time, and switching between the two never loses work. Bold and italic are now saved as HTML rather than markdown, which fixes the stray asterisks that previously appeared around bold labels and merge fields.
Existing notification configs were given the right templateName automatically based on their subject, image overrides were converted to the new typed shape, and any custom site-level or per-event booking templates were moved onto content blocks. New tests lock in that the welcome and login-details emails render from the repo files with the password-reset link intact.