Skip to content

Releases: Notifuse/notifuse

v28.3

Choose a tag to compare

@pierre-b pierre-b released this 20 Mar 13:52
  • Security: Upgraded google.golang.org/grpc to v1.79.3
  • Security: Upgraded fast-xml-parser to v5.5.8

v28.2

Choose a tag to compare

@pierre-b pierre-b released this 17 Mar 12:17

Release 28.2

Postmark Message Stream Support

Postmark integrations now support configurable Message Streams, allowing a single Postmark account to be used for both transactional (outbound) and broadcast/marketing emails. The stream ID can be set in workspace integration settings.

Contacts API: Partial Email Search (#292)

The /api/contacts.list endpoint now accepts partial email strings in the email filter parameter. Previously, the API rejected anything that wasn't a fully-formed email address with a 400 - invalid email format error, even though the underlying query already supported ILIKE partial matching. You can now search by domain (@company.com), username prefix, or any substring.

Broadcasts: MJML Code Mode Fix

Fixed MJML code mode templates failing with "template missing content" error when sending broadcasts. Templates created with the MJML code editor now send correctly.

v28.1

Choose a tag to compare

@pierre-b pierre-b released this 10 Mar 13:47

Notifuse v28.1 — Release Notes


What's New

Transactional Emails — Dynamic Preheader Text

Added subject_preview override to email_options, allowing dynamic email preheader text per API call with Liquid templating support.

Templates — Language Selection for Test & Preview

Added language selection to the "Send Test Email" modal and "Preview Template" drawer, allowing users to preview and test translated email variants.

Demo — Multi-Language Email Templates

The demo workspace now includes French and Spanish translations for all 4 email templates, showcasing the multi-language feature.

Email Builder — mj-liquid Block

Added the mj-liquid block type for embedding raw MJML+Liquid code in the visual editor. This enables dynamic structural content like for-loops generating columns or conditional sections.

Improvements

  • Templates: Downloaded template files now use the template's name as filename instead of a generic name (#286)

Security

  • Upgraded liquidjs to 10.25.0

v28.0

Choose a tag to compare

@pierre-b pierre-b released this 08 Mar 19:02

Notifuse v28.0 Release Notes


What's New

Visual or MJML — You Choose

When creating a new email template, you can now pick between the visual drag-and-drop builder or the MJML code editor. Use whichever workflow fits the task.

Template Translation

Email templates can now be translated into every language configured in your workspace settings, making it easier to run multi-language campaigns from a single template.

Configurable SMTP EHLO Hostname

Some SMTP servers reject the default EHLO localhost greeting. You can now set a custom EHLO hostname (e.g. your own domain) via:

  • The SMTP_EHLO_HOSTNAME environment variable
  • The setup wizard
  • Workspace integration settings

When left empty, the hostname defaults to the SMTP host value.


Bug Fixes

  • Contacts — Removed the invalid "Blacklisted" status from the change-status dropdown and replaced it with the correct "Bounced" and "Complained" options.
  • Transactional Notifications — Delivery stats (sent, delivered, failed, bounced) were always showing 0. Messages are now linked to their originating notification via a new transactional_notification_id column.
  • Email Builder<mj-attributes> global styles now apply correctly in both preview and sent emails.

Upgrade Notes

This release includes a workspace database migration that adds a transactional_notification_id column to the message history table. The migration runs automatically on startup and is backward-compatible.

No manual action is required.

v27.4

Choose a tag to compare

@pierre-b pierre-b released this 01 Mar 11:07
  • Notification Center: Fixed browser language auto-save overwriting contact's manually chosen language. Now only auto-detects when contact has no language set.
  • Email Builder: Fixed missing MJML component defaults (border-radius, borders, background, direction, textAlign) causing styles not to render in the WYSIWYG editor
  • Transactional Emails: Added subject override to email_options, allowing dynamic email subject lines per API call with Liquid templating support (#281)

v27.3

Choose a tag to compare

@pierre-b pierre-b released this 28 Feb 22:16
  • Segments: Added template filter to email activity conditions, allowing segments like "opened template X at least 3 times"
  • SMTP: Fixed TLS override option not working for system emails (magic codes, invitations, alerts). The "Use TLS" toggle was ignored, causing certificate errors on local SMTP relays (#275)
  • Automations: Fixed automation emails rendering {{ notification_center_url }} and {{ unsubscribe_url }} as empty strings by using the shared template data builder (#279)
  • Segments: Fixed race condition where background task execution could pick up unrelated tasks, causing flaky segment recompute behavior
  • Security: Upgraded rollup to 4.59.0 and minimatch to 10.2.4

v27.2

Choose a tag to compare

@pierre-b pierre-b released this 21 Feb 19:13

v27.2

Bug Fixes

  • Fixed 502 panic when calling /api/contacts.list without limit parameter
  • Fixed email builder block toolbar not appearing on divider blocks
  • Fixed Liquid template variables not rendering in email preview (Tiptap v3 &nbsp; issue)
  • Fixed double-slash URLs when API endpoint has trailing slash

Security

  • Upgraded fast-xml-parser to 5.3.6

Updates

  • Anthropic Sonnet model updated to claude-sonnet-4-6

v27.1

Choose a tag to compare

@pierre-b pierre-b released this 15 Feb 16:33

Release 27.1 - February 14, 2026

What's New

  • Automations: Per-email integration override — choose which email provider sends each email node, enabling IP warming and load distribution (#257)

Changes

  • Updated Anthropic Opus model from claude-opus-4-5-20251101 to claude-opus-4-6

Fixes

  • Segments: Allow count_value=0 in activity conditions to support "never did X" segments (#249)
  • Security: Upgraded markdown-it to 14.1.1

v27.0

Choose a tag to compare

@pierre-b pierre-b released this 08 Feb 16:40

v27.0

New Features

  • Broadcast Data Feeds: Added external data feed integration for broadcasts, allowing dynamic content injection from external APIs
    • Global Feed: Fetch data once before broadcast starts, available to all recipients via {{ global_feed.* }} template variable
    • Per-Recipient Feed: Fetch personalized data for each recipient via {{ recipient_feed.* }} template variable
    • Custom HTTP headers support for API authentication
    • Automatic retry with circuit breaker protection
    • SSRF protection with URL validation (blocks localhost and private IPs)
    • Real-time feed testing from the broadcast editor

Database Migration

  • Added data_feed JSONB column to broadcasts table (workspace migration)
  • Added recurring_interval and integration_id columns to tasks table (system migration)

Fixes

  • Upgrade from v26: Fixed startup crash when upgrading from v26 due to index referencing integration_id column before the migration could add it
  • SMTP M365 OAuth2: Fixed XOAUTH2 authentication to use sender email instead of fixed auth email, resolving SendAs permission errors and incorrect Sent folder placement (#250)
  • File Manager: Sanitize uploaded filenames by replacing spaces with dashes and lowercasing extensions (#252)
  • Broadcasts: Fixed custom endpoint URL not propagating to click tracking and open tracking URLs in sent emails (#254)
  • Email Builder: Fixed text color/background changes not applying when re-selecting already-styled text in the rich text editor
  • Contacts: Bulk import now processes contacts in batches of 500, fixing crashes on large imports and improving performance

v26.15

Choose a tag to compare

@pierre-b pierre-b released this 01 Feb 08:51
  • Contacts: Emails are now normalized to lowercase on import to prevent case-sensitivity issues (#231)
  • Security: Upgraded fast-xml-parser to 5.3.4