Managing multi-channel transactional application notifications across web and mobile applications can be tedious, yet it impacts any application's reputation greatly. In this blog, we describe why and how we introduced Novu to streamline this process.
Notifications and constant user activation are a crucial component in a product's journey towards product-market fit. Most recently, we started experimenting with Novu as a communication service. Whether it's sending emails, push notifications, or in-app messages, it's important to keep users informed and engaged with your product. Typically, each of these notification channels requires a separate integration with a specific provider; a non-trivial process that involves additional integration code and testing.
For example, email implementations range from static and easy to manage templates designed in a provider such as Sendgrid, to templates stored in a database as plain HTML to which variables are injected using string replacements with Nodemailer. Regardless, template management remains a challenging task for developers.
Specifically, let’s zoom into the challenges that we faced in two of our products. In QIT online, email templates were stored in the database and changes were either made through migrations or SQL operations. Developers also had to ensure that the correct order of variables was used to make sure the template was filled out correctly. For Launch.career, multiple email providers were used based on the type of email to be sent. To increase user interaction with the application, we wanted to include push notifications when new companies join the platform. As a result, we needed a solution that supports multiple types of notifications while also being easy to set up and maintain across our various products.
Novu is an open-source cloud-based notification management platform that enables developers to send and configure notifications across multiple channels, including email, SMS, chat, push notifications, and in-app notifications. Using Novu, developers can create triggers that are fired from the backend. The architecture we implemented for these triggers in our backend is easily extensible and adaptable. The Event interface enforces a generic format that can trigger an event in Novu as can be seen in Figure 1. The specific event contains the exact data that is needed for each individual trigger and the handler contains the Novu specific logic. With an intuitive drag-and-drop workflow editor, developers can then specify how these triggers are handled, as shown in Figure 2. Each step in the workflow can be configured with filters, digests or delays. Filters, for example, can be used to handle the language of an email while digests and delays can be used to aggregate certain types of notifications to avoid flooding users.
For email templates, Novu supports handlebars templating to create interactive designs by using either their template builder or inserting custom HTML templates. The resulting email can be previewed with specified parameters and sent out for testing, as seen in Figure 3. This format of workflows removes complexity from the backend while also allowing non technical collaborators to help with the notifications such as pms and designers. The sidebar also provides summarized information about the variables used in the email, which can be configured with default values or set as required.
Novu also provides integrations with a large number of email and notification providers such as Sendgrid, Slack and Firebase Cloud Messaging, with a detailed integration guide for each.
From our experience, setting this up reduced an otherwise tedious task to a matter of minutes. So far, in our existing products, we would have to refactor each notification type one at a time while sending them through the same provider. Being able to gradually handle this with Novu without changing providers was crucial to prevent losing metrics for our applications that are already in use. The collected metrics are important to be able to follow up on how users interact with our communications to guide us to make them better and more relevant.
When running into bugs in our code, we were pleasantly surprised with Novu’s debugging capabilities. Most third-party notification services typically respond with a generic error message when a request fails. Novu, however, provides an entire interface that shows each notification individually, along with the exact stack trace and error message in the case of a failure. Additionally, the exact inputs of the event are also displayed, making it easy to reproduce the errors. An example of an error stack trace is shown in Figure 4.
Naturally, we did run into some limitations, such as the lack of support for the way Firebase Cloud Messaging handled data in push notifications. The original implementation only allowed us to send a notification title, body and generic data. We need to be able to send data that is handled by Android and iOS even if the application is not running. This feature enables us to send notifications that redirect a user to a specific screen when they click the notification. Due to their open-source and community-oriented approach, we were able to fork the project, implement the feature, and get it reviewed and deployed by the Novu maintainers in less than a week. Their communication through Discord and approachability of the devs really helped here.
At Panenco, we proactively monitor how users interact with our products and use this information to steer an application’s roadmap to fit their needs as best as possible. We already have a number of success cases in this approach that can be found on our website. It is essential to use the right tools during this process. Therefore it is essential that a large number of tools are investigated and critically evaluated. Novu is one of those tools where Panenco is one of the early adopters as we see great potential in using a streamlined process for all notifications.
To wrap this up, dealing with notification management across multiple channels is a common, yet tedious challenge in almost any web application. At least, that has been our experience until we discovered Novu. With its streamlined process for sending and handling notifications, top-notch debugging capabilities, and easy-to-customize design, Novu quickly became an invaluable tool in our arsenal. Plus, we are very confident that it will continue keeping up with the ever-changing needs of developers and users alike, thanks to its open-source philosophy and vibrant community of contributors. In the meantime, we continue to keep our eyes and ears open for cutting-edge tools like Novu, that we can incorporate into our software delivery processes to improve the quality of our products.