Skip to content

Releases: novuhq/novu

v0.20.0

24 Oct 08:53
Compare
Choose a tag to compare

What’s new in Novu 0.20?

TL;DR: All you need to know about the latest Novu 0.20.0 release. Global User Preferences, Integrations conditions, Digest and delay filters and more!

0.20 Release Updates

We're thrilled to announce the newest features in our most recent release. Let's get started and explore what's waiting for you!

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1jxs3nc6jp6abbjvis8i.gif

Global Channel Preferences for Subscribers API

It's now possible to set subscriber preferences globally for either a particular channel or all channels via API.

I'm really stoked about this because before now it was only available per workflow, /:subscriberId/preferences/:templateId

With these API URLs, you can fetch and update global subscriber preferences.

  • PATCH /subscribers/:subscriberid/preference - Update a subscriber preference globally.
  • GET /subscribers/:subscriberid/preferences/global - Fetch a subscriber preference globally.

Note: These methods are also available in the NodeJS SDK. They will be available in other language SDKs very soon.

If you're using the Headless service and Notification Center Widgets, you can set or fetch via the following APIs:

  • widgets/preferences - PATCH : Update subscriber preferences globally
{

    "enabled": true,
    "preferences": [
        {
            "type": "in_app",
            "enabled": true
        },
        {
            "type": "email",
            "enabled": false
        }
    ]
}
  • widgets/preferences/global - GET : Fetch subscriber preferences globally.

The exposed methods from the widgets are:

  • fetchUserGlobalPrereferences
  • updateUserGlobalPreferences

Note: If a workflow is marked as critical, the subscriber global preferences will be ignored, and notifications will be sent.

Filters Usage in Digest and Delay Nodes

Users can now add filters to the digest and delay nodes inside the workflow editor to dynamically control if a digest should be used or not.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g1l0dao60xd7eixps56r.png

Digest Node: Adding filter

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8epc6ew33s9accvtmjzm.png

Delay Node: Adding filter

Improved Error Messages In The Workflow Editor

We have improved the error icons and states for each node in the workflow, when no provider is connected or not configured.

SMS & Email Custom Data Overrides

We now support adding custom data in email overrides as shown below:

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

const novu = new Novu('<NOVU_API_KEY>');

await novu.subscribers.trigger("workflowIdentifier", {
  to: "subscriberId",
  payload: {
    customKey: "customValue",
  },
  overrides: {
    email: {
      from: "support@novu.co",
      // customData will work only for sendgrid
      customData: {
        "customKey": "customValue"
      }
    }
  }
}

Email Custom Data overrides

Note: This works for Sendgrid only at the moment.

You can override sms values via the code below.

...
...
await novu.subscribers.trigger("workflowIdentifier", {
  to: "subscriberId",
  payload: {
    customKey: "customValue",
  },
  overrides: {
    sms: {
      to: "<insert-phone-number>",
      content: "<insert-content>"
    }
  }
}

SMS Overrides

Enabling The Addition of Conditions to Integrations

Users can now create conditions for the channel integrations to be executed for specific tenants only.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c4j4ioad8tjqljy3qzqx.png

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o187yxcsmtgfgq7a7gyp.png

In the image above, you can add the condition (to an integration) to state that the integration should be used if the tenant identifier used in trigger matches the tenant identifier set here.

Note: The integrations are the provider instances on the Integration store dashboard.

When Novu runs a trigger code with a tenant Identifier attached to it like so:

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

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

await novu.trigger('<WORKFLOW_TRIGGER_ID>',
  {
    to: {
      subscriberId: '<UNIQUE_SUBSCRIBER_IDENTIFIER>',
      email: 'john@doemail.com',
    },
   tenant: "tenantIdentifier"
  }
);

..Novu runs checks on the integrations in the Integration store to determine which integration matches to be used to send the notification based on any condition that has been set. If nothing was set, it defaults to the primary provider set for the channel used in the workflow.

Mailtrap Email Provider Integration

Now, you can use the Mailtrap Email provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fb9pmn5xu3ep6f8lcpq3.png

Clicksend SMS Provider Integration

Now, you can use the Clicksend SMS provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1f5154c9alnn4aqollxl.png

All Changes

Read more

v0.19.0

14 Sep 06:47
8a10c63
Compare
Choose a tag to compare

What’s new in Novu 0.19?

TL;DR: All you need to know about the latest Novu 0.19.0 release. Multi-tenancy management, bulk subscriber creation, override layouts and more!

0.19 Release Updates

We're eager to showcase the latest features in our most recent release. Let's dive in and discover what's in store for you!

giphy (2) (1)

Multi-tenancy Management

We are stoked to let you know that you can now manage tenants from the UI (Novu’s dashboard) and the API.

tenants-management (1)

Self-hosted users need to add and turn on the IS_MULTI_TENANCY_ENABLED env flag to be able to manage tenants in their Novu installation.

Tenants Usage in Workflows as Variables

With tenants feature now generally available, there are different ways you’ll be able to use it in your app depending on your use case.

One of those ways is using it as variables in your workflows and triggers. When triggering a notification using the events trigger endpoint, you can pass in a tenant property as a parameter like so:

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

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

await novu.trigger('<WORKFLOW_TRIGGER_ID>',
  {
    to: {
      subscriberId: '<UNIQUE_SUBSCRIBER_IDENTIFIER>',
      email: 'john@doemail.com',
      firstName: 'John',
      lastName: 'Doe',
    },
    payload: {
      name: "Hello World",
      organization: {
        logo: 'https://happycorp.com/logo.png',
      },
    },
	 actor: "actorId"
   tenant: "tenantIdentifier"
  }
);

passing in tenant property when triggering a notification

The tenant can also be accessed in a workflow template like so:

{{ tenant.data.logo }}

accessing tenant properties in a workflow

Bulk Subscriber Creation

This release also ships the wildly requested “bulk subscriber creation.” Starting v0.19, you’ll be able to create subscribers in bulk (up to 500 at once) using an API endpoint.

Note: The bulk API is limited to 500 subscribers per request.

await novu.subscribers.bulkCreate([
      {
        subscriberId: 'test-subscriber-1',
        email: 'test-user@sd.com',
        firstName: 'subscriber-1',
        lastName: 'test-1',
      },
      {
        subscriberId: 'test-subscriber-2',
        email: 'test-user-2@sd.com',
        firstName: 'subscriber-2',
        lastName: 'test-2',
      },
      {
        subscriberId: 'test-subscriber-3',
      },
    ]);

Addition of Tags in Workflow Settings

We have added the ability to use tags in the workflow settings screen.

This change allows use cases where you need to group multiple workflows under the same tag, and then use it to filter subscriber preferences for example.

taggs-workflow-settings (1)

Allow Override layout On Trigger

To override your assigned layout during a trigger event use the layoutIdentifier property, the layout specified will be used for all emails in the context of that trigger event.

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

const novu = new Novu('<NOVU_API_KEY>');

novu.trigger('workflow-identifier', {
  to: {
    subscriberId: '...',
  },
  payload: {
    attachments: [
      {
        file: fs.readFileSync(__dirname + '/data/test.jpeg'),
        name: 'test.jpeg',
        mime: 'image/jpg',
      },
    ],
  },
  overrides: {
    layoutIdentifier: 'your-layout-identifier',
  },
});

Show Primary Providers on Workflow Nodes

Now you can see the primary provider of a channel in the nodes that show on the workflow editor. This gives you more context and better identification without extra clicks!

Screenshot 2023-09-11 at 16 11 03

Enhanced Workflow Nodes Misconfiguration Error

Nodes and workflows will now display mis-configured workflows on the dashboard like so:

Screenshot 2023-09-11 at 16 20 25

All changes

  • Nv 2474 styles tag css in email is not showing in few email clients by @davidsoderberg in #3978 - We now convert all email styles to inlince CSS for compatibility across browsers
  • fix: so swagger json validates by @davidsoderberg in #3969 - Improved our swagger validation for the API Swagger data
  • Reduce count 1000 to the db by @djabarovgeorge in #3993 - Breaking: For socket events we will return hasMore boolean field incase there are more than 100 results available.
  • feat: add tags for workflow settings by @scopsy in #4065 - Tags could now be added to workflows in the workflow settings page, once added they can be used later for usecases such as filtering the user preferences in the notification center
  • Nv 2517 displays that workflow has nodes that will fail to send a notification by @BiswaViraj in #3966 - Nodes and workflows will now display mis-configured workflows
  • feat: show providers on workflow nodes by @BiswaViraj in #3998 - Providers will be shown on nodes for better identifications
  • feat: add override layout in trigger functionality by @ainouzgali in #3961 - You can now override the default layout using the overrides part of the trigger
  • feat(worker): remove performance svc as it was temporary by @p-fernandez in #3944
  • Docs platform guide handlebars by @sumitsaurabh927 in #3833
  • fix: sidebar intercepting workflow editor by @davidsoderberg in #3968
  • feat(wip): initial bulk subscriber create by @ainouzgali in #3938
  • Nv 2690 add identifier field to layouts scheme by @ainouzgali in #3956
  • feat(ci): reuse instructions to tidy up pipelines by @p-fernandez in #3975
  • feat: migration script to add identifier to layouts by @ainouzgali in #3967
  • feat(ci): separate the swagger validation in own runner plus improvement by @p-fernandez in #3981
  • fix(ci): indenting action by @p-fernandez in #3984
  • patch : remove rows only when steps are truthy by @djabarovgeorge in #3980
  • Update ReadMe to include Java SDK link by @mayorjay in #3974
  • Add Analytics call to Track Deletion of Templates by @Cliftonz in #3971
  • feat add organization id index in integration by @djabarovgeorge in #3983
  • fix: so add a provider is not displayed in empty state by @davidsoderberg in #3985
  • feat(ci): reusable action to run backend (api, worker) for clients by @p-fernandez in #3991
  • fix(ci): proper settings for secrets for run backend by @p-fernandez in #3992
  • Changed the sidebar position of Python by @bcsamrudh in #3997
  • docs: add nestjs quickstart guide by @michaldziuba03 in #3747
  • fix: remove github discussion link by @jainpawan21 in #4002
  • feat: fix logger error order by @djabarovgeorge in #4003
  • fix: add missing sharable url in the new integration form by @djabarovgeorge in #3986
  • next fix logger error order by @djabarovgeorge in #4006
  • clean patch - execution details no write concern by @djabarovgeorge in #4008
  • optimization : merge two redis calls in api key authenticate by @djabarovgeorge in #3982
  • Fix failing test for web and widget by @scopsy in [https://github.com//pull/4009](https://github.co...
Read more

v0.18.0

27 Aug 08:08
9094f81
Compare
Choose a tag to compare

What’s new in Novu 0.18?

TL;DR: All you need to know about the latest Novu 0.18.0 release. General Layout design, multi-provider configuration and more!

0.18 Release Updates

We're excited to unveil the freshest developments in our latest release. Let's plunge right in and uncover what awaits you!

General Layout Design

We have refreshed the layout design to accommodate and provide a foundation for a lot of upcoming future updates regarding the navigation stack and general usability of the system.

Multi-provider Configuration

In the last update, I mentioned that Novu now supports multiple providers.

Now you can specify who should be the primary provider when you have multiple providers for a particular channel for a given environment. As mentioned in the last release, you can programmatically call a provider identifier during a trigger event.

await novu.trigger("<workflow_trigger_id>", {
  to: {...},
  payload: {...},
  overrides: {
    email: { integrationIdentifier: 'the identifier"} ,
    sms: { integrationIdentifier: 'the identifier"}
  }
});

Migration for Self-hosted Novu Users - BREAKING CHANGE

A migration needs to be run prior to the new version update:

cd apps/api
npm run migration:primary-provider

# .env file in apps/api/src/.env should have a MONGO_URL pointing to your deployment

Plunk Email Provider Integration

Now, you can use the Plunk Email provider on Novu.

Screenshot 2023-08-24 at 11 28 47

All changes

New Contributors

Full Changelog: v0.17.2...v0.18.0

v0.17.1 - Release

10 Aug 08:21
3bd16bc
Compare
Choose a tag to compare

What’s new in Novu 0.17.1?

TL;DR: All you need to know about the latest Novu 0.17.1 release. Multi-provider Integration support, Multi-tenancy support, cookbook, notification center updates and more!

0.17.1 Release Updates

We're excited to unveil the freshest developments in our latest release. Let's plunge right in and uncover what awaits you!
image

Multi-provider Integration Support (BETA)

Now you can connect multiple providers per channel and make them active. This feature is currently in beta.

We also redesigned the Integrations store page to make it more intuitive in selecting & enabling channel providers.

image

With this feature, you can now do the following:

Specify the provider you want when triggering notifications. Add the integrationIdentifier to the overrides object for the specific channel.

await novu.trigger("<workflow_trigger_id>", {
to: {...},
payload: {...},
overrides: {
              email: { integrationIdentifier: 'the identifier"} ,
                sms: { integrationIdentifier: 'the identifier"}
	}

If you're self-hosting Novu, you'll need to pass the env flag, IS_MULTI_PROVIDER_CONFIGURATION_ENABLED to all services.

Note: In the nearest future, you will be allowed to select a provider based on a tenant and other execution conditions.

Multi-tenancy Support (BETA)

We've been hard at work building the base flow, API and processes to support multi-tenancy. This feature is currently in beta testing. It will become generally available in the next release.

Delete Provider Credentials API

We have added support to delete a provider credentials via an API endpoint

PR here for reference

Remove All Messages In Notification Center Widget & Headless Service

The Notification Center widget allows users to see all notification messages. Before now, you can only delete messages one after the other.

There are a few notable updates:

  • We have added a useRemoveAllNotification hook in the React Notification Center widget. You can remove all notifications from a feed or entirely!
  • We have also added a removeAllNotifications method to the headless service.

Additional Handlebar helpers

We have added a unique and groupBy handlebar helpers.

  • unique: To remove duplicates in array iteration
{{#each (unique names "name")}}
--<b>{{this}}</b>---
{{/each}}

  • groupBy: To group array values by property
{{#each (groupBy names "name")}}
 <h1>{{key}}<h1>
 {{#each items}}
   {{age}}-
 {{/each}}
{{/each}}

Notification Feed Page Size Changes (BREAKING CHANGE)

By default, the notification feed page will return 100 notifications and return a hasMore field if more than 100 notifications exist.

Activity Feed & Subscriber API Changes (BREAKING CHANGE)

The Activity Feed & Subscriber API will no longer return totalCount. Due to performance optimizations, they will return a hasMore boolean flag in cases where there are more results to fetch.

listenNotificationReceive in Headless Service.

We have added a new function, listenNotificationRecieve, to listen to when a new notification comes in!

It can be used to retrieve a new notification in real-time and trigger UI changes.

headlessService.listenNotificationReceive({
  listener: (message: IMessage) => {
    console.log(JSON.stringify(message));
  },
});

Sendchamp SMS Provider Integration

Now, you can use the Sendchamp SMS provider on Novu.

image

Update on Workers

Workers will now wait for health check to pass before accepting jobs to process, and will perform a graceful shutdown on a terminate signal received by the service manager.

Docs, Cookbook & Guides

We currently offer [quickstart guides](https://docs.novu.co/overview/quickstart/general-quickstart) for a wide range of major languages and technologies. Feel free to explore these guides to swiftly begin your projects in your preferred programming language.

We have added a [Cookbook section](https://docs.novu.co/cookbook/introduction) to our docs to provide recipes on common tasks.

All Changes

Read more

v0.16.4

18 Jul 09:53
fb4c302
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.16.3...v0.16.4

v0.16.3 - Patch Release

12 Jul 07:38
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.16.1...v0.16.3

v0.16.1

12 Jul 07:37
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.16.0...v0.16.1

v0.16.0 - Template Store and integration store improvements

21 Jun 05:44
9408da4
Compare
Choose a tag to compare

What’s new in Novu 0.16.0?

TL;DR: All you need to know about the latest Novu 0.16.0 release. Template Store, Demo SMS Provider, Notification Templates Renaming and more!

0.16.0 Release Updates

We are thrilled to share the latest updates on our most recent release. Let's dive in headfirst and discover what's in store for you!

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tdzueooohncgk6czgq0s.gif

Template Store

The Novu dashboard now has a new embedded template store with ready-to-use notification workflows for everyone.

You can simply choose a sample notification workflow from the template store, modify it and be ready to trigger a notification in record time!

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vxewbhmfs43dmt3matap.gif

Demo SMS Provider

We now have a built-in SMS provider for our cloud users to test SMS notifications quickly without setting up and providing credentials for external SMS providers. It's similar to what's available for Email.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hs1f158idnbksa0abyi4.png

In-App Notification Center In Integration Store

The Integration Store houses the providers for all the channels: Email, SMS, Chat and Push. The In-App channel is now part of the integration store.

The configuration has been moved to the integration store now from the settings page as it was previously.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ifqdhpa3zbsdh7tho3b1.png

BREAKING CHANGE (Novu Self-hosted Only)

Prior to upgrading to 0.16.0, a migration script needs to be run. This migration script will create a notification center integration and activate it to allow the delivery of in app messages. If you are not using the notification center, there is no need to run the migration scripts.

To run the migrations, follow the next steps:

Clone the novu repository, and install the dependencies (npm run setup:project)

Update the MONGO_URL to your production environment in apps/api/src/.env file, and run the npm run migration:in-app command from the apps/api folder.

After running the migration script, the version can be updated.

Renaming Notification Templates To Workflows

Notification templates as we have all known it are now called Workflows. It was renamed for more consistent terminology across the entire system.

New API endpoints will be introduced in v0.17.0 and current endpoints of notification templates will be marked as deprecated.

https://res.cloudinary.com/dxc6bnman/image/upload/v1687321553/workflow_ia3p0n.png

The isDefined Filter

This new isDefined filter checks the presence of a variable. Essentially, it checks if a variable is available or not!

It works for all channels. You can check if a payload, subscriber or webhook variable is defined.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xvfu8vit9bnh7aqqfwyi.png

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/232hx77zgn3839rd2jqi.png

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0fdzi55mjyzy2d3vd6gq.png

All Changes

Read more

v0.15.0 - Scheduled Digest and Slack OAuth for webhook urls

24 May 14:17
9373896
Compare
Choose a tag to compare

What’s new in Novu 0.15.0?

TL;DR: All you need to know about the latest Novu 0.15.0 release. Scheduled Digest, In-App Onboarding playground, Slack Webhook URL managed flow and more!

0.15.0 Release Updates

We're excited to unveil fresh updates about our most recent release. So let's dive right in!

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uyvgje77r0sbm9f9l8yc.gif

Scheduled Digest

Now you can schedule digest at specific intervals according to your preference. This feature eradicates the need to create cron jobs to suit your use case.

From the Novu dashboard, you can specify the times when a digest will be sent - Every two days, Daily, Weekly, etc. The Digest engine aggregates events before a set time and fires them when that time is reached.

Typical Use Case

A digest is scheduled for Tuesday and Thursday at 7:07 AM weekly. A notification event is triggered a couple of times to a subscriber every day.

The digest engine aggregates all events that occur before Tuesday. On Tuesday at 7:07am, it fires an event comprising all the aggregated events. Similarly, all events occurring between Tuesday and Thursday are aggregated, and an event is fired on Thursday at 7:07am. This cycle continues.

Note: For now, the time is UTC-based. We plan to make it user-timezone aware soon!

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ds4v0jiiejlw3xbyms93.gif

In-App Onboarding Playground

We have integrated a new playground in our onboarding flow to test and explore In-App notifications. So take it for a spin!

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pug70auggz9vussml1xh.gif

Slack Webhook URL Managed Flow

Until now, developers had to manually spin up and deploy an https server with an endpoint to listen for redirect requests. They had to follow numerous steps to get Slack webhook Url generation right and working seamlessly for subscribers.

Now, Novu manages the OAuth flow for you. No more spinning of servers! All you need to do is:

  • Add https://api.novu.co/v1/subscribers/ to the Redirect URL in OAuth & Permissions on your Slack Developer Dashboard.
  • Add the Add to Slack button or the shareable URL to your application to request access permission (scope: incoming-webhook). More information here

Africa's Talking SMS Provider Integration

Now, you can use the Africa's talking SMS provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jrxgh7mvseb0rbiopg7f.png

OneSignal Push Provider Integration

Now, you can use the OneSignal Push provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m8bordqacaw8uc6mg8qq.png

Push Webhook

Now you can add a webhook URL to trigger push notifications on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y3osipx08eq7tzo8jokn.png

There is work ongoing for Email Webhook Provider. You can follow the commits here

All Changes

Read more

v0.14.0 - Performance optimization and redesigned workflow editor

28 Apr 10:56
376f568
Compare
Choose a tag to compare

What’s new in Novu 0.14.0?

TL;DR: All you need to know about the latest Novu 0.14.0 release. Performance optimization, Workflow UI Editor, Data expiration, Headless Notification Center and more!

0.14.0 Release Updates

We're stoked to share new updates on our latest release. Let's dig in!

Performance Optimization

We have worked extremely hard to improve the core performance of Novu. I'll highlight crucial things to note and be aware of:

  1. Improved Caching.
  2. Optimized Indexes. Indexes are defined on each schema file at the bottom.

New Worker Service

Breaking Change: A new service is required to run with Novu called @novu/worker , extracted from the @novu/api monolith to ensure that queues and jobs are processed faster. Novu Cloud users do not need to be concerned about this change.

Novu self-hosted users can now scale the worker service independently as much as the hardware their hosted domain runs on.

For Novu self-hosted users running on Docker, it is now necessary to pull in the new worker service image in order for Novu to work properly. This is already taken care of here & here. When you run docker-compose up, the worker image will be automatically pulled in. No extra steps are needed.

Data Expiration

The Jobs and Messages collection now has a TTL and will be removed from the database when it expires. For Novu cloud users, notifications and activity feed data will be saved for 1 month, while in-app messages will be saved for 6 months. After that time, the records will be archived.

For Novu self-hosted users, the same time frame applies before records will be deleted. However, they can disable the TTL setting by adding the environment variable DISABLE_TTL=true.

Affected schemes:

  • Notification (for 1 month)
  • Job (for 1 month)
  • Message (for in-app messages - 6 months, for all other messages - 1 month)
  • Execution Details (for 1 month)

New Workflow UI Editor

We're constantly iterating on the UI editor to reduce the number of clicks needed to perform specific actions, improve the UX, and provide a great experience in setting up notification workflows.

In this release, we simplified the workflow editor UI like so:

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/msm9mf9i3thhvtb8i4yg.gif

Headless Notification Center

You might have heard the phrase: “Bring Your Own...” or something along those lines.

We encourage you to bring your UI with the newly released framework-agnostic headless version of Novu's notification center.

This lightweight library allows you to incorporate our notification system into any framework or vanilla JavaScript app without UI constraints. Install and call the API methods needed to access the notification system.

Install:

npm install @novu/headless

Use:

import { HeadlessService } from '@novu/headless';

You can now fetch all In-App notifications shown like so:

const headlessService = new HeadlessService({
  applicationIdentifier: 'APP_ID_FROM_ADMIN_PANEL',
  subscriberId: 'USER_ID',
  backendUrl: 'YOUR_BACKEND_URL',
  socketUrl: 'YOUR_SOCKET_URL',
});

headlessService.initializeSession({
  listener: (session) => {
    console.log(session);
  },
  onSuccess: (session) => {
    console.log(session);
  },
  onError: (error) => {
    console.error(error);
  },
});

headlessService.fetchNotifications({
  listener: ({ data, error, isError, isFetching, isLoading, status }) => {
    console.log({ data, error, isError, isFetching, isLoading, status });
  },
  onSuccess: (response: IPaginatedResponse<IMessage>) => {
    console.log({response.data, response.page, response.totalCount, response.pageSize});
  },
  page: 1, // page number to be fetched
});

Maqsam SMS Provider Integration

Now, you can use the Maqsam SMS provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yj8mleheehqi0rjm97q0.png

Termii SMS Provider Integration

Now, you can use the Termii SMS provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ctsjas4ajli9o14n48i7.png

SMSCentral SMS Provider Integration

Now, you can use the SMSCentral SMS provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gpub5ixz2rspw0au1a5j.png

Sparkpost SMS Provider Integration

Now, you can use the Sparkpost SMS provider on Novu.

https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p52oukji6lzi9aww2p6a.png

All Changes

Read more