Skip to content

Releases: novuhq/novu

v0.10.1 - Webhook filters

06 Jan 09:18
93b8527
Compare
Choose a tag to compare

This release includes support for webhook filters of steps and also various small improvements and bug fixes.

Webhook Filters

The webhook filter support for steps allows users to filter a particular step execution based on the response received from the webhook. This can be useful in scenarios where it is necessary to take different actions based on the response from the webhook. With this feature, users have greater control over the execution of their workflows and can customize them to meet their specific needs.

Read more about step filters here.

What else has changed

New Contributors

Full Changelog: v0.10.0...v0.10.1

v0.10.0 Release - Topics and new e-mail editor

29 Dec 11:14
46aa929
Compare
Choose a tag to compare

We are excited to announce the latest release of Novu, which includes several new and improved features. One of the requested features has been the addition of Topics, which allows users to easily send notifications to groups for subscribers using a single identifier. We have also added avatar support, so notifications in the notification center can now include subscriber avatars. Another significant addition is the new e-mail editor and preview in the web UI. In addition to these new features, we have also made various performance improvements and bug fixes to enhance the overall experience. Let’s dive deeper:

Topics

We are excited to announce Topics, which allows you to create custom groups of subscribers and send targeted notifications to those groups. Using our API, you can easily create new topics and assign subscribers to them. Once a topic has been created, it is now possible to send notifications to that topic using the unique topic key.

Let’s see how it works in action.

First, we will need to create a topic:

import { Novu } from '@novu/node';

const novu = new Novu(process.env.NOVU_API_KEY);

const result = await novu.topics.create({
  key: 'posts:comments:123456',
  name: 'Post comments',
});

Assign subscriber to it:

import { Novu } from '@novu/node';

const novu = new Novu(process.env.NOVU_API_KEY);

const topicKey = 'posts:comments:123456';

const response = await novu.topics.addSubscribers(topicKey, {
  subscribers: ['subscriber-id-1', 'subscriber-id-2', ...],
});

And then trigger a notification for this topic:

const topicKey = 'posts:comments:123456';

await novu.trigger('<REPLACE_WITH_EVENT_NAME_FROM_ADMIN_PANEL>', {
  to: [{ type: TriggerRecipientsTypeEnum.TOPIC, topicKey: topicKey }],
  payload: {},
});

Read more about Topics on our documentation page.

New e-mail editor and preview

We are also excited to announce the release of a new e-mail editor that makes it easier than ever to customize and send e-mails. The editor includes a list of available variables that you can insert into the e-mail templates and a preview feature that allows seeing how the final e-mail will look. We have also added autocomplete support for variables to make it easier to use them in your e-mails. Another helpful feature is the ability to send a test e-mail to your own account, so you can see exactly how the e-mail will look and make any necessary adjustments before sending it out to your subscribers.

CleanShot_2022-12-27_at_10 04 46

Notification Center as a Vue, Angular, and Web Component (Beta)

We have converted our notification center component to be available as a vue, angular, and web component. This will allow to easily integrate the notification center into their projects regardless of their preferred front-end framework. The notification center provides a central location for users to view and manage their notifications, and we believe that making it available in multiple formats will make it even more accessible.

Let’s explore the usage of the Vue component:

import { createApp } from 'vue';
import NotificationCenterPlugin from '@novu/notification-center-vue';
import '@novu/notification-center-vue/dist/style.css';
import App from './App.vue';

createApp(App).use(NotificationCenterPlugin).mount('#app');

And then use it as a component:

<script lang="ts">
  export default {
    data() {
      return {
        applicationIdentifier: import.meta.env.VITE_NOVU_APP_IDENTIFIER,
        subscriberId: import.meta.env.VITE_NOVU_SUBSCRIBER_ID,
      };
    },
    methods: {
      sessionLoaded() {
        console.log('Notification Center Session Loaded!');
      },
    },
  };
</script>

<template>
  <NotificationCenterComponent
    :subscriberId="subscriberId"
    :applicationIdentifier="applicationIdentifier"
    :sessionLoaded="sessionLoaded"
  />
</template>

Read more about the component information in our documentation.

Are you experienced in one of the new components? Help us improve the API and developer experience by submitting an issue on GitHub.

Actors and Avatars

Now you can add an actor when triggering a notification and display their avatar on the notification feed. This allows a recipient of the notification better understand the context of a particular notification and who sent it. To use this feature, users simply need to include the actor's avatar URL when creating a notification.

CleanShot_2022-12-27_at_10 27 39

import { Novu } from '@novu/node';

export const novu = new Novu('<REPLACE_WITH_API_KEY_FROM_ADMIN_PANEL>');

await novu.trigger('<REPLACE_WITH_EVENT_NAME_FROM_ADMIN_PANEL>',
  {
    to: {
      subscriberId: '<USER_IDENTIFIER>',
      email: 'email@email.com'
    },
		actor: {
      subscriberId: '<ACTION_PERFORMING USER>',
			avatar: 'http://path-to-avatar.com/profile.png'
    },
    payload: {
      customVariables: 'Hello'
    }
  }
);

Request caching

We have also introduced an optional cache layer to cache frequent requests for the notification feed, you can optionally enable cache by specifying the following environment variable when running the novu API

  • REDIS_CACHE_HOST - The path for your Redis instance
  • REDIS_CACHE_PORT - The port of the Redis instance defaults to the default port.

Webhook support

You can now connect webhooks from supported delivery providers to get better visibility on bounces, email opens, and more… Click on the integration, if supported a webhook URL will appear, copy it, and paste it on your provider delivery dashboard.

The webhook information will appear when inspecting and item in the activity feed. Read more about it on our documentation.

Notable features

  • Activity feed list can now be filtered using transactiondId
  • Upgraded Socket.IO to version 4
  • Security fixes and best practices for the API
  • New Info Bip SMS Provider
  • New Burst SMS Provider
  • New Sparkpost SMS Provider
  • New Outlook365 Provider

Other changes in this release

Read more

v0.9.0 - Hacktoberfest Release

10 Nov 13:27
Compare
Choose a tag to compare

Excited to announce our biggest release so far at Novu. This release is the work of our team and over 100 contributors from all around the world. Welcome to version 0.9.0. Let's explore what's new!

Notification Observability

CleanShot 2022-11-10 at 17 58 15@2x

We have overhauled how we store and display the execution of the notification workflow. This change allows much more visibility on the errors or successful execution happening. Here are some of the highlights of the activity feed:

  • Each step workflow can be inspected
  • Execution details for each step are displayed with information and timestamps
  • Inspect raw provider error response
  • Understand delayed and digested events

We hope that this release will provide a ground for improvement and iteration to later support webhook information, etc... Looking forward to hearing your thoughts!

Seen and Read for notification center - Breaking Change

Since our initial launch, we've been asked countless times to provide a true seen functionality and, on top of that, to allow distinguish read from seen.

Currently, we've only had a seen property that was behaving like a read, in this release, we have introduced another property named read and the actual seen behavior is only triggered once the user has seen the notification center.

CleanShot 2022-11-10 at 18 47 36@2x

BREAKING CHANGE
seen behavior has changed to now be modified for when the user sees the notification, and the new read property should be updated on click of the notification.

Testing workflows from the UI

Want quickly to test your new notification template? From now you can easily trigger a notification and specify the payload variable without leaving the template editor.

APNS integration (beta)

Recently we have introduced the Push channel with support for FCM. From this release, you will be able to send notifications using APNS. This integration is still in beta, and we would love to hear your feedback or suggestions.

Subscribers List Page

In this version new subscribers list page was added to inspect your registered subscribers, right now we don't allow creating or editing subscribers. This will be implemented in the upcoming versions.

Integrated provider credentials check

Hearing your feedback for onboarding to Novu, we now test the providers during the integration phase by performing a test email to the provider using the credentials provided. Errors will be displayed inline when you try to integrate.

We hope this will help to identify issues much faster when connecting new providers.
CleanShot 2022-11-10 at 18 52 28@2x

New navigation Spotlight

CleanShot 2022-11-10 at 18 53 57@2x

Scheduled delay notifications

It is now possible to specify a delayed key following the ISO format, and the delay functionality will be delayed until this timestamp. This could be useful to delay the execution of a message until a predefined dynamic date rather than a hardcoded number of minutes or days.

CleanShot 2022-11-10 at 19 10 56@2x

Adding steps in the middle of the workflow

Steps could be now added in the middle between 2 existing nodes in the UI
CleanShot 2022-11-10 at 19 15 01@2x

Other notable changes

  • Regenerating API Keys is now possible by visiting the settings page
  • The novu notification center is available in 45+ new languages! 🌍
  • Novu is now available at the Vercel marketplace, for easier integration with your vercel deployed projects
  • New MS Teams chat provider
  • Various UI and bug fixes resolved (more details in the change list)
  • Documentation improvements
  • Better Kubernetes examples and support
  • Fixed invite link for self-hosted deployments
  • Improved API support in our @novu/node SDK
  • Implemented delivery providers webhook parsing, will be supported fully in next release
  • Higher unit tests coverage for our WEB platform components
  • A lot more!

Changelist

Read more

v0.8.0 - Delay and Step Filters

21 Sep 09:16
Compare
Choose a tag to compare

Exciting news to share with you all! This cycle was a bit shorter because the team was on our very first company offsite, and it was the first time we met in person 😍

Nonetheless, we prepared some of the long-awaited features based on your request. So let's dive in!

Delay Step

Starting with the v0.8.0 release, you will be able to add a new Delay step type that will delay the sending of the next step by the time you specify it too. This is useful if you wish to wait a day or an hour before sending something to the user.

In the next feature, we will also allow passing a dynamic delay timestamp on the API request so you can create reminders and snooze for users based on a dynamic field. Exciting times 🤯 And thanks to our fantastic @ainouzgali, that took ownership of this one.

Step Filters

You can now filter step execution based on the request criteria from subscriber and payload. This can help customize flows for translation and only send specific steps based on subscriber properties such as paying customers, etc...

Kudus to @davidsoderberg 🇸🇪 for making this a reality!

Integration Store Encryption

From this version, all secret credentials on the integration store will be encrypted on the database and decrypted in real time when needed to send an actual request. @djabarovgeorge made sure this feature is backward compatible, but you must add a new secret environment key when upgrading to v0.8.0.

Migration guide

You must pass a STORE_ENCRYPTION_KEY environment variable to your docker-compose .env file. This key should be 32 characters long and stored in a secret store.

Multiple organizations switch on the web

Thanks to @venarius you can now switch between multiple organizations you are part of. Look at the new organization switcher at the left bottom part of the navigation menu 😍

Template variable protection and defaults

One of the most exciting features of this release was done by the one and only @venarius. On the template level, you can make some variables required or provide polyfill values for each.

No more Hello null!

CleanShot 2022-09-20 at 15 55 31@2x

And much more!

New Contributors

Full Changelog: v0.7.3...v0.8.0

v0.7.3 - Small improvements and bug fixes

02 Sep 09:16
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.7.2...v0.7.3

v0.7.2 - Community Patch Release

30 Aug 17:09
Compare
Choose a tag to compare

A small patch release with work created by the community and our core team.

What's changed

New Contributors

Full Changelog: v0.7.1...v0.7.2

v0.7.0 - Slack, Discord, Push and Subscriber Preferences

21 Aug 14:48
Compare
Choose a tag to compare

This is our biggest release yet, with over 30 contributors and 130 Pull requests with awaited features such as Push, Chat, Subscriber Preference API, API Reference documentation, and more... Let's dive in!

Subscriber Preferences API

From this release, your application notification subscriber will be able to configure their preferences from within the notification center or directly via our API.
image

By default, all existing templates prior to 0.7.0 will be marked as critical and will be excluded from the preference list. To add them, go to the template editor page and un-mark the critical template from the preference defaults.

New templates created after this release will be added to the preference list, and the user can select from the available channels what to not receive and over which channel.

To read more about Subscriber Preference visit the documentation.

Push notifications with FCM

Excited to share that from now it's possible to send push notifications to mobile devices using FCM. This feature was entirely built by our amazing community members and specifically by @raikasdev 💖.
APNS and other providers' support will be landed in the next release. Looking for other push providers? Create a GitHub issue or contribute directly.

To send over the push channel, deviceTokens should be added to the specified subscribers. To read more about it visit the documentation on subscriber credentials and our FCM guide.

Chat Apps (Slack and Discord)

One of our requested features was to send notifications with chat applications such as Slack and Discord. And now you can! Chat apps could be directly configured from the template editor and delivered using the webhook_url mechanism of the chat providers.

To read more about it, visit our guide.

API Reference documentation

With so many requests by the community members, we just had to do something about it ;) With help from @andrewgolovanov and the entire pixel point team, we are honored to present the first version of our API reference.

Notable changes

New notification center languages

Other improvements

New Contributors

Full Changelog: https://gith...

Read more

0.6.2 - i18n support for notification center

31 Jul 08:27
Compare
Choose a tag to compare

i18n support for notification-center component

It is now possible to translate the notification center UI elements by passing a translation object or a premade translation. More info can be found on the documentation page.

Custom object implementation:

<NovuProvider i18n={{
  // Make sure that the following is a proper 2 letter language code,
  // since this is used by moment.js in order to calculate the relative time for each notification
  lang: "de",
  
  translations: {
    poweredBy: "unterstützt von",
    markAllAsRead: "Alles als gelesen markieren",
    notifications: "Benachrichtigungen",
  },
}}>
</NovuProvider>

Premade languages created by the community:

<NovuProvider i18n={'en'}>
</NovuProvider>

What else has changed

Full Changelog: v0.6.0...v0.6.2

v0.6.0 - Digest Engine & Notification Center Upgrades

24 Jul 15:01
Compare
Choose a tag to compare

Version v0.6.0 introduces so many long-awaited features such as: Digest Engine, multi-tab support on notification center, notifications actions and so many other improvements and bug fixes. This release is the hard work of more 16 individual contributors and collaborators that made this version possible.

Digest Engine

The digest engine collects multiple trigger events and aggregates them into a single message delivered to the subscriber in form of an email, ,in-app notification or any other supported novu channel.

This becomes useful when a user needs to be notified on a large number of triggers, and you want to avoid sending too many notifications. Novu will automatically batch the incoming trigger events based on the subscriberId and an optional digestKey that can be added to control the digestion of the events.

Here is an overview of the digest flow, including both supported strategies: Regular and Backoff.

image

To learn more about the digest engine and the additional strategies and usage guide, visit our docs page here.

Notification Actions

Now, creating an even richer experience with the novu notification center is possible, and adding action buttons to a dedicated notification template. Subscribers can make interactions such as accepting invites or friend requests from the notification center without navigating to a different URL.

CleanShot 2022-07-24 at 15 14 57@2x

Multiple notification feeds

It is now possible to configure multiple feed configurations for various notification center templates. The feeds created can be used to fetch notifications for each feed separately. This can help to achieve a multi-tab experience for subscribers depending on the actual use-cases.

CleanShot 2022-07-24 at 15 19 49@2x

New delivery providers

System sync for dark and light modes

Thanks to @FidalMathew you can now choose to sync your theme preference for you system, or select light & dark modes which will be persistent across browser refreshes.

New Go-lang SDK

Created by our amazing community member @samsoft00 you can now interact with Novu using the new go-lang SDK. Info can be found here: https://github.com/novuhq/go-novu

Other notable changes

New Contributors

Full Changelog: v0.5.1...v0.6.0

v0.5.1 - UI/UX improvements and bug fixes

28 Jun 09:35
Compare
Choose a tag to compare

This minor release brings some UI and UX improvements to the notification workflow editor and some bug fixes.

Upsert subscriber on event trigger

Previously when a subscriber was created using the trigger.event method, we wouldn't update it's details with new information brought from the to object when another triggered was performed. This caused multiple users not to receive an email or SMS due to invalid email saved originally on the subscriber.

Now the subscriber entity will be updated upon delivery.

Bug Fixes

When importing the @novu/notification-center using the method suggested in docs an error was received:

Uncaught TypeError: Cannot read properties of undefined (reading 'unseenBadge')

This is now fixed.

What else Changed

New Contributors

Full Changelog: v0.5.0...v0.5.1