Changelog

Product updates, improvements, and fixes

Follow us on X

All changelog posts

  • Dynamic Delay

    Dynamic Delay (Payload-Driven Scheduling) lets you control when each workflow continues by passing a datetime field in your payload. Novu pauses and resumes execution at that moment, giving you precise, per-trigger delivery without fixed delays or cron rules.

    Author:Dima Grossman
    Dima Grossman
    Cover

    Schedule a workflow to pause until a datetime you provide at trigger time. Configure a Delay step with a delayPath, then pass the ISO datetime in your event payload. Each trigger can resume at its own time, making it ideal for appointment reminders, renewals, or any other per-user timing.

    What you can do

    • Per-trigger timing: Each event determines its own resume time via its payload.
    • Works anywhere in the workflow: Before or between any steps (including before digests).
    • Cancelable: Use transactionId to cancel pending delays.
    • Frictionless: No cron required for per-user scheduling.

    How it works

    In the Dashboard

    1. Add a Delay step
    2. Select Dynamic
    3. Set Path for scheduled date (e.g., payload.sendAt)

    At trigger time (API/SDK)

    Send an ISO 8601 UTC datetime on that path:

    {
      "workflowId": "appointment-reminder",
      "to": { "subscriberId": "user_123" },
      "payload": {
        "sendAt": "2025-12-01T09:00:00.000Z",
        "name": "Alex"
      }
    }

    The workflow pauses and resumes exactly at payload.sendAt.

    Behavior & validation

    • Required: delayPath on the step AND an ISO 8601 UTC value (...Z) in the payload.
    • If missing/invalid: The Delay job is canceled, and execution details show DELAY_MISCONFIGURATION with an error message.
    • If the datetime is in the past, it is rejected with a “future date required” error.
    • Canceling: client.cancel(transactionId) stops pending delay jobs for that transaction.

    Example Use Cases

    Appointment reminder

    • Delay (Scheduled) → delayPath = sendAt
    • After the delay → SMS/Email/In-app step
    • Trigger with sendAt per appointment.

    Subscription renewal

    • Delay (Scheduled) → delayPath = renewalAt
    • After the delay → Email/In-app notice
    • Trigger with renewalAt per subscriber.
  • Throttle Step

    The new Throttle Step allows you to limit the frequency of a workflow execution for each subscriber within a specified time window. This will prevent duplicate or excessive notifications across all channels. You can use fixed or dynamic windows. Perfect for managing high-frequency alerts, cron jobs, or multi-project notifications.

    Author:Dima Grossman
    Dima Grossman
    Cover

    The new Throttle step in the Novu workflow editor allows you to limit the number of notifications a subscriber receives within a specified time frame, ensuring they receive the right amount, neither too many nor too few.

    When a trigger fires repeatedly (e.g., from cron jobs or high-frequency alerts), throttling ensures that subscribers don’t receive duplicate messages across any channel.

    Throttle Step

    You can now:

    • Configure throttling directly in the workflow editor.
    • Define Fixed or Dynamic throttle windows.
    • Limit executions by subscriberId or add a secondary grouping key from your payload (e.g., payload.projectId).
    • Prevent notifications from executing beyond your defined threshold (even for critical workflows).
    • Transparently control frequency across all channels (email, in-app, SMS, chat, push).

    Configuration options:

    • Fixed window: Set a predefined duration (e.g., “1 per hour”) with an execution threshold.
    • Dynamic window: Define flexible time ranges using trigger payloads (payload.throttleUntil or payload.customWindow).
    • Group throttling by: Combine subscriber and payload-level keys for granular control (e.g., per project or account).

    Learn more by visiting the Throttle Step documentation →

    Improvements (3)
    • Schemas now support null values for optional fields in workflows, ensuring executions no longer fail when data is intentionally unset.

    • Add support for excluding specific subscribers from topic-triggered workflow fanouts using an optional exclude array.

    • Add support for defining a custom display order of workflows in the Preferences UI, allowing prioritized workflows to appear at the top.

    Fixes (1)
    • fix(dashboard-ui): Unify and align all dashboard tables (Workflows, Subscribers, Topics, Topic Subscriptions) using the new OriginUI table component for consistent layout, pagination, and record visibility.

  • Translations in Email Layouts

    Translations support in email layouts. Localize headers, footers, and templates once - and reuse them across all your workflows.

    Author:Paweł Tymczuk
    Paweł Tymczuk

    You can now add translations directly at the email layout level. This means that when you configure a default or reusable email layout in your organization environment, you can also provide localized versions of that layout.

    Previously, translations were only available on a per-email-step basis within workflows. Now, layouts themselves can be localized once, and the translations will automatically apply to any email workflow that uses that layout.

    How It Works

    1. Go to Workspace → Layouts and create or edit a layout.
    2. Add translations for your chosen locales (JSON format).
    3. Any workflow email step using that layout will render the correct translation automatically, based on the subscriber’s locale.

    Layout and step content are translated independently, then combined during rendering to deliver fully localized emails.

  • Scheduled Delay

    Schedule your workflows with precision - pause until the exact minute, hour, or weekday in each subscriber’s local time, and even align delivery with their working hours.

    Author:Paweł Tymczuk
    Paweł Tymczuk
    Cover

    You can now schedule workflow pauses using an intuitive time selector - allowing you to delay messages until an exact time, day, or week in your subscriber’s local timezone.

    Scheduled delay

    This new Scheduled Delay option (when configuring the Delay step) provides developers with fine-grained, time-aware control over workflow timing, allowing you to match your subscribers’ schedules, respect working hours, and ensure messages arrive at the optimal moment, not just after a fixed interval.

    What you get:

    • Two delay modes: choose between
      • Regular Delay: wait a fixed duration (e.g. “5 minutes”)
      • Scheduled Delay: wait until a specific time or date pattern
    • Flexible scheduling options:
      • Until minute — delay until the next minute mark
      • Until hour — at X minute(s) of the hour
      • Until day — at X hour(s) : X minute(s)
      • Until week — choose one or more days (Mon–Sun) at X hour(s) : X minute(s)
      • Until month — choose specific day(s) of the month and time of day
    • Time zone–aware delivery: All delays are evaluated and executed in the subscriber’s local time zone.
    • Working hours support: toggle “Extend to subscriber’s schedule” to automatically hold delivery until the subscriber’s next available time window.
    • Configurable limits: by default, delays can extend up to 1 day (contact support to extend for longer intervals)

    Example use cases:

    • Send a weekly digest every Friday at 9:00 AM subscriber local time.
    • Deliver a trial reminder at 8:00 AM on the day of expiry.
    • Respect user schedules by delaying notifications until working hours.

    How to use it:

    In the workflow editor → add a Delay step → select “Scheduled” → configure your timing (minute, hour, day, week, or month) and enable “Extend to subscriber’s schedule” if needed.

  • Email Activity Tracking

    Activity tracking gives you visibility into what happens to notifications after they are sent to the subscriber. With it, Novu receives and processes real-time events from third-party providers, so that you know when the notification is delivered, opened, clicked, or bounced.

    Author:George Djabarov
    George Djabarov
    Cover

    Now, you can track real-time delivery and engagement events from email providers right in Novu. Events such as delivered, opened, clicked, and bounced are turned into a uniform set of statuses.

    You can see these in your Activity Feed, workflow traces, and outbound webhooks.

    Before, you only knew if a message was “sent.” You now have complete visibility. You can see if the recipient received your message, opened it, clicked it, or rejected it.

    This helps you resolve issues, measure engagement, and create more effective notification experiences.

    How to Use It

    1. Go to your Integrations Store in the Novu dashboard.
    2. Connect your email provider (SendGrid, Mailgun, Resend, Amazon SES).
    3. Scroll to Email Activity Tracking and toggle it on.
      • Novu will automatically configure webhooks using your API key.
      • If auto-config fails, follow the manual setup guides.
    Email activity tracking

    Once enabled, events flow into:

    • Activity Feed → real-time status updates.
    • Outbound webhooks → forward normalized events into your own systems (logging, analytics, workflow triggers).

    Supported Events

    • Delivered
    • Opened
    • Clicked
    • Bounced
    • Delayed
    • Rejected
    • Complaint
    • Unsubscribed

    Links & Resources

  • Notifications Schedule

    Subscribers can set weekly schedules for their notifications. Messages sent outside these times will be suppressed. But critical alerts will still be delivered. You can manage schedules through API, SDK, or Dashboard. The smart workflow delivery waits for subscribers to be available.

    Cover
    Note

    Requires <Inbox /> version 3.10.1 or higher

    Give your subscribers control over when they receive notifications with customizable availability schedules. Subscribers can set their preferred hours for notifications. The system will then block messages sent outside those times. This helps them balance work and life. It also makes sure they always get important alerts.

    Weekly Schedule Configuration

    Subscribers can create a full weekly schedule right from their inbox settings. They can pick the days and times they want to get notifications. Subscribers can set their availability from Monday to Friday, 9 AM to 5 PM. The system will then ignore notifications sent by email, push, SMS, or chat outside these hours. Time ranges are set in 30-minute increments. They follow the subscriber's time zone. For example, a user in Europe/Warsaw gets notifications only during their local hours.

    Availability Preferences

    Copy Schedule Across Days

    With the copy feature, you can set up the same schedule for multiple days. Subscribers can set their Wednesday hours from 8 AM to 4 PM. With one click, they can easily apply those hours to Monday, Tuesday, Thursday, and Friday. There is no need to configure each day individually.

    Copy availability to other days

    Multiple Time Ranges Per Day

    Subscribers can set several availability windows for one day, which helps them manage complex schedules. For example, a person may be free for morning updates from 8 AM to 10 AM or from 1 PM to 5 PM. They won’t send notifications during lunch or meetings.

    Smart Workflow Delivery

    The system evaluates availability at the exact moment of delivery for each workflow step, which means notifications in multi-step workflows adapt dynamically to subscriber schedules. A workflow with a delay step could still be delivered successfully if the subscriber returns to their availability window when the delay is complete.

    Smart Workflow Delivery

    You can also configure digest and delay steps to automatically extend until the subscriber is back within their scheduled hours, ensuring messages are delivered when they're most likely to be seen.

    Critical Notifications Always Deliver

    Workflows labeled as critical—like security warnings, billing failures, or system alerts—go straight to delivery. This means urgent messages arrive right away, without any delays.

    In-app notifications always come through, no matter the schedule settings. They don't interrupt subscribers, so users can check them whenever they want.

    Full Management Control

    Subscriber schedules can be managed through the API and SDK. You can also view and edit them directly from the Dashboard. You can set a default schedule for subscribers who haven't set their own.

    Notification schedule dashboard management

    This eliminates the need for migrations for existing users. The activity feed logs when notifications are missed due to scheduling limits, making it easier to fix delivery issues and understand user actions.

    The new useSchedule hook in the React SDK provides the subscriber's current schedule and an update function, making it easy to create custom schedule interfaces.

    Check the documentation to explore the available configurations for setting up the notification receiving schedule (subscriber availability preferences).

    Improvements (2)
    • Translations CLI Integration: The CLI lets you easily sync translations by pulling them from Novu Cloud to your project and pushing updates back with simple commands.
    • Translations API

Free to start, ready to scale

10K events/month free forever. From weekend projects to enterprise scale, we've got you covered.