diff --git a/api-reference/subscribers/get-subscriber.mdx b/api-reference/subscribers/get-subscriber.mdx index 7168b7b3..0961602e 100644 --- a/api-reference/subscribers/get-subscriber.mdx +++ b/api-reference/subscribers/get-subscriber.mdx @@ -33,7 +33,7 @@ response = requests.request("GET", url, headers=headers) print(response.text) ``` -```js JavaScript +```javascript JavaScript const options = {method: 'GET', headers: {Authorization: ''}}; fetch('https://api.novu.co/v1/subscribers/{subscriberId}', options) diff --git a/channels-and-providers/chat/mattermost.mdx b/channels-and-providers/chat/mattermost.mdx index 3dd14420..fb5baf66 100644 --- a/channels-and-providers/chat/mattermost.mdx +++ b/channels-and-providers/chat/mattermost.mdx @@ -47,7 +47,6 @@ To integrate Mattermost with your application using the Mattermost Bot integrati Once you have stored the API token in the subscriber entity, you can send notifications to Mattermost using the following code: ```jsx - import { Novu, ChatProviderIdEnum } from '@novu/node'; const novu = new Novu(""); diff --git a/channels-and-providers/email/overview.mdx b/channels-and-providers/email/overview.mdx index 0cd3742f..f1750b22 100644 --- a/channels-and-providers/email/overview.mdx +++ b/channels-and-providers/email/overview.mdx @@ -22,7 +22,7 @@ The overrides field supports an email property. The email overrides field have p -```js +```javascript import { Novu } from '@novu/node'; const novu = new Novu(''); @@ -56,7 +56,7 @@ You can easily send attachments with the Novu API by passing the attachments arr -```js +```javascript import { Novu } from '@novu/node'; const novu = new Novu(''); @@ -93,7 +93,7 @@ Here, if `sendgrid-abcdef` is primary integration and you want to use `brevo-abc -```js +```javascript import { Novu } from '@novu/node'; const novu = new Novu(''); diff --git a/channels-and-providers/push/fcm.mdx b/channels-and-providers/push/fcm.mdx index aff2db57..a81b1fc7 100644 --- a/channels-and-providers/push/fcm.mdx +++ b/channels-and-providers/push/fcm.mdx @@ -8,7 +8,7 @@ description: "Learn how to use the Firebase Cloud Messaging (FCM) provider to se To enable the FCM integration, you need to get your service account key from the [Firebase Console](https://console.firebase.google.com/). -# Generating a Service Account Key JSON +## Generating a Service Account Key JSON To acquire the account key JSON file for your service account @@ -37,7 +37,7 @@ Make sure your service account json content contains these fields } ``` -# FCM Overrides +## FCM Overrides The overrides field supports apns, android, webpush and fcmOptions overrides @@ -48,7 +48,7 @@ The overrides field supports apns, android, webpush and fcmOptions overrides | webPush | WebpushConfig | https://firebase.google.com/docs/reference/admin/node/firebase-admin.messaging.webpushconfig | | fcmOptions | FcmOptions | https://firebase.google.com/docs/reference/admin/node/firebase-admin.messaging.fcmoptions | -# Setting Device Token +## Setting Device Token Before triggering the notification to a subscriber(user) with push as a step in the workflow, make sure you have added the subscriber's device token as follows: @@ -62,12 +62,15 @@ import { const novu = new Novu(""); -await novu.subscribers.setCredentials('subscriberId', PushProviderIdEnum.FCM, { - deviceTokens: ['token1', 'token2'], -}); - -```` +await novu.subscribers.setCredentials( + 'subscriberId', + PushProviderIdEnum.FCM, + { deviceTokens: ['token1', 'token2'] }, + 'fcm-MnGLxp8uy' +); +``` + ```bash curl -L -X PUT 'https://api.novu.co/v1/subscribers//credentials' \ @@ -84,14 +87,13 @@ curl -L -X PUT 'https://api.novu.co/v1/subscribers//credentials' }, "integrationIdentifier": "fcm-MnGLxp8uy" }' -```` - +``` Checkout the [API reference](/api-reference/subscribers/update-subscriber-credentials) for more details. -# SDK Trigger Example +## SDK Trigger Example ```jsx import { Novu } from "@novu/node"; @@ -190,6 +192,9 @@ novu.trigger("", { +## FCM Cost +As per Firebase [pricing](https://firebase.google.com/pricing), **Cloud Messaging** product is free of cost to use. If other Firebase products are used, the cost will be charged as per the product. + ## FAQs diff --git a/channels-and-providers/sms/overview.mdx b/channels-and-providers/sms/overview.mdx index d0b181b7..d031dfad 100644 --- a/channels-and-providers/sms/overview.mdx +++ b/channels-and-providers/sms/overview.mdx @@ -25,7 +25,7 @@ Additional credentials can be API key, username, password or other provider spec The overrides field supports a `sms` property and `from`, `to`, `content` field overrides. This allows you to send a message to a different recipient, from a different sender, or with a different content. -```js +```javascript import { Novu } from '@novu/node'; const novu = new Novu(''); @@ -59,7 +59,7 @@ Here, if `twilio-abcdef` is primary integration and you want to use `infobip-abc -```js +```javascript import { Novu } from '@novu/node'; const novu = new Novu(''); diff --git a/help/account-management.mdx b/help/account-management.mdx index 140b7e14..6ae24f67 100644 --- a/help/account-management.mdx +++ b/help/account-management.mdx @@ -30,4 +30,8 @@ A new organization can be created by writing something in the dropdown in the le ### How to change organization name? We are working on account management feature currently so this option is not available in UI as of now. If you want to change your current organization name, [rename organization api](/api-reference/organizations/rename-organization) can be used. if you face any issue in using api or need any help any changing the organization name, please reach out to us at support@novu.co. + +### How to upload multiple image assets similar to logo? +Currently, Novu supports uploading only one logo image per organization. If you want to use other images in workflow step content then a valid absolute url of image can be used with `` tag. + \ No newline at end of file diff --git a/help/channels/email.mdx b/help/channels/email.mdx index 8b1d4f95..a85c6b78 100644 --- a/help/channels/email.mdx +++ b/help/channels/email.mdx @@ -25,4 +25,7 @@ Currently, we support external Provider template support for [sendgrid](/channel ### Can I retrieve only Email content? Novu does not have a separate API to retrieve email content. However, email content can be retrieved from the email step of the workflow. The email step contains the email content in the `content` field of [get worklfow api](/api-reference/workflows/get-workflow) response. +### How to send inline images in email? +Inline images can be sent using `` tag in the email content. PNG, JPEG, GIF are supported. SVGs are not supported as inline images by most of email clients like gmail, outlook. + \ No newline at end of file diff --git a/faqs/questions.mdx b/help/faq.mdx similarity index 89% rename from faqs/questions.mdx rename to help/faq.mdx index dca4da3d..460af36e 100644 --- a/faqs/questions.mdx +++ b/help/faq.mdx @@ -1,6 +1,6 @@ --- title: "Frequently Asked Questions" -icon: "question" +icon: "comment" --- ## Platform @@ -78,20 +78,12 @@ We are now building an automatic tool to help with this migration process, for n ### Can I use Novu free of charge? -Yes, you can. If you send less than 10K events per month, then Novu Cloud is entirely free. Another option is to deploy the Open-Source version of Novu onto your own infrastructure, but that does not give you the unique SLA and global redundancy we have in the Cloud version of Novu. +Yes, you can. If you send less than 30K events per month, then Novu Cloud is entirely free. Another option is to deploy the Open-Source version of Novu onto your own infrastructure, but that does not give you the unique SLA and global redundancy we have in the Cloud version of Novu. ### What is the pricing? Pricing page is available [here](https://novu.co/pricing/?utm_campaign=docs-faq). -### How long is the open-beta for? When do you plan to start charging? - -We plan to convert to the paid version of Novu sometime between Q2 and Q4 of 2023. We will ensure that we contact all of our customers at least 1 month before the switch so that you have plenty of time to ensure your systems are not impacted. - ### If I am sending millions of events, but thousands of notifications, will this affect the price? That’s a great way to do it, sending many events and only handful of notifications means you are able to convey a lot of value while keeping your subscribers happy. We are not only supporting it, it’s also affecting price. On high-volume events to notification, where digest is heavily used each event is calculated as 1/10 of the normal usage. - -### Can two subscribers with different `subscriberId`s have the same email address? - -Yes, it is possible for two subscribers to have the same email address in our system. This is because the `subscriberId` is the unique identifier that distinguishes one subscriber from another. Even if two subscribers share the same email address, they will have different `subscriberId`s, which allows our system to identify and manage them separately. diff --git a/help/orchestration.mdx b/help/orchestration.mdx index 305cdf69..e1e7f2ce 100644 --- a/help/orchestration.mdx +++ b/help/orchestration.mdx @@ -1,7 +1,7 @@ --- icon: "screwdriver-wrench" --- - +## Digest ### New event triggers are merging an active Digest with an old duration.. When a Digest is created with a set duration and an event is triggered, the Digest stays active ( and will batch the events) until the configured duration is over. @@ -15,5 +15,8 @@ Yes, Digest supports conditions and can be applied to your Digest step. If the T ### Can a Subscriber control the Digest duration and time? Not currently. The Digest duration can be changed at the Workflow level only and is applied to all subscribers that Workflow is triggered to. If you have an identified use case for this, please let us know at support@novu.co. +## Delay +### What happens if the delay scheduled date and time is in the past? +If the delay scheduled date and time is in the past, the delay step will fail. Based on the step configuration, workflow will either continue to the next step or workflow will be failed \ No newline at end of file diff --git a/help/others.mdx b/help/others.mdx new file mode 100644 index 00000000..f209bbea --- /dev/null +++ b/help/others.mdx @@ -0,0 +1,9 @@ +--- +icon: "crystal-ball" +--- + +### Workkflows changes are not showing on the changes +If some changes are pending to promote for the same workflow, then Novu merges subsequent changes into the existing change item. + +### Getting CORS error with the API +Novu APIs are developed to be used on the server side. If you are using the API from the browser, you will get a CORS error. You can use the API from the server side or checkout our [client-side libraries](/notification-center/introduction) to fetch in-app notifications. \ No newline at end of file diff --git a/help/overview.mdx b/help/overview.mdx index 79841fd6..6b07179f 100644 --- a/help/overview.mdx +++ b/help/overview.mdx @@ -46,6 +46,17 @@ At our Help Center, we're dedicated to provide comprehensive support to ensure y > Observability, metrics, analytics, and more. + + Others help topics. + + + Read frequently asked questions + diff --git a/help/user-management.mdx b/help/user-management.mdx index 6257b798..a1544392 100644 --- a/help/user-management.mdx +++ b/help/user-management.mdx @@ -4,12 +4,17 @@ sidebarTitle: "User Management" icon: "users" --- +## Subscribers + ### What is a Subscriber? A subscriber is an entity to which notifications are sent. It is a Novu term similar to a user in your system. As in your system, a user is identified by a unique id, similarly in Novu, a subscriber is identified by a unique id called `subscriberId`. We recommend that the existing value you use in your system as a `userId` to be used as `subscriberId` in Novu. Read more about subscribers on [subscribers documentation page](/subscribers/subscribers). ### Is it necessary to use subscriberId as same as userId? No, it is not necessary to use subscriberId as same as userId. You can use any unique id as subscriberId. We recommend using userId as subscriberId to avoid any confusion. Some of our customers use a pattern like `auth0|userId` as a value for `subscriberId`. +### Can notification be sent without adding a Subscriber? +No, a notification cannot be sent without adding a subscriber. A subscriber is an entity to which notifications are sent. You need to add a subscriber to Novu before triggering the workflow or inline of trigger. Read more about subscribers on [subscribers documentation page](/subscribers/subscribers). + ### What is the right approach to add Subscribers? Subscribers can be added either [ahead of trigger](/subscribers/subscribers#1-ahead-of-trigger) or [inline of trigger](/subscribers/subscribers#2-inline-of-trigger). One way to add a subscriber using inline of trigger is to create a new subscriber in Novu as soon as they sign up or register in your system. @@ -21,4 +26,12 @@ Subscriber credentials for Push and Chat channel providers cannot be added while SMS and Email channels are a bit different because all providers can work with the same value, so `email` and `phone` [attributes](/subscribers/subscribers#subscriber-attributes) can be added while creating a new Subscriber. ### Can Subscriber preferences be updated while adding a new Subscriber? -Subscriber preference cannot be updated while adding a new subscriber. Novu sets all channels as true by default for new subscribers. You can modify preferences at any time. Read more about [subscriber preferences](/subscribers/preferences). \ No newline at end of file +Subscriber preference cannot be updated while adding a new subscriber. Novu sets all channels as true by default for new subscribers. You can modify preferences at any time. Read more about [subscriber preferences](/subscribers/preferences). + +### Can two subscribers with different `subscriberId`s have the same email address? +Yes, it is possible for two subscribers to have the same email address in our system. This is because the `subscriberId` is the unique identifier that distinguishes one subscriber from another. Even if two subscribers share the same email address, they will have different `subscriberId`s, which allows our system to identify and manage them separately. + +## Topics + +### Can a Subscriber be added to multiple topics at once? +Currently, Novu supports adding a subscriber to only one topic at a time. You can add a subscriber to multiple topics by calling the [add subscriber to topic api](/api-reference/topics/subscribers-addition) multiple times with a particular topic key \ No newline at end of file diff --git a/images/workflows/notification-workflows/search-workflow_00.png b/images/workflows/notification-workflows/search-workflow_00.png new file mode 100644 index 00000000..d9e401c8 Binary files /dev/null and b/images/workflows/notification-workflows/search-workflow_00.png differ diff --git a/images/workflows/notification-workflows/search-workflow_01.png b/images/workflows/notification-workflows/search-workflow_01.png new file mode 100644 index 00000000..eaf429b5 Binary files /dev/null and b/images/workflows/notification-workflows/search-workflow_01.png differ diff --git a/mint.json b/mint.json index 3fe959d4..82ff0e04 100644 --- a/mint.json +++ b/mint.json @@ -43,14 +43,14 @@ "url": "https://www.youtube.com/@novuhq" }, { - "name": "Get instant help", + "name": "Get Instant Help", "icon": "discord", "url": "https://discord.gg/novu?ref=docs-instant-help" }, { - "name": "FAQs", + "name": "Help Center", "icon": "bullseye-pointer", - "url": "faqs" + "url": "help" } ], "tabs": [ @@ -431,12 +431,7 @@ "use-cases/centralized-multiple-legacy-implementations" ] }, - { - "group": "FAQs", - "pages": [ - "faqs/questions" - ] - }, + { "group": "Additional Resources", "pages": [ @@ -660,7 +655,9 @@ }, "help/orchestration", "help/content-management", - "help/observability" + "help/observability", + "help/others", + "help/faq" ] }, { diff --git a/notification-center/client/react/customization.mdx b/notification-center/client/react/customization.mdx index 6a658c6c..8a43a1fb 100644 --- a/notification-center/client/react/customization.mdx +++ b/notification-center/client/react/customization.mdx @@ -232,7 +232,7 @@ i18n={{ `styles` prop can be used to cutomise styling of each component of notification center. Read more about [styles prop](/notification-center/client/react/api-reference#styles) -```js +```javascript export const styles = { bellButton: { root: { @@ -260,7 +260,7 @@ export const styles = { -```js +```javascript const primaryColor = "white"; const secondaryColor = "#AFE1AF"; const primaryTextColor = "#0C0404"; diff --git a/notification-center/client/react/get-started.mdx b/notification-center/client/react/get-started.mdx index 9ac9d7c2..2e3b6c5c 100644 --- a/notification-center/client/react/get-started.mdx +++ b/notification-center/client/react/get-started.mdx @@ -281,7 +281,7 @@ There are three sockets events available: Novu does not have a native taost component. However, if your project is using any UI library like chakra, material-ui, mantine then toast component (snackbar in case of material-ui) of these libraries can be used with `useSocket` hook. Add the toast opening code in `socket.on` callback. -```js toast.tsx +```javascript toast.tsx socket.on("notification_received", (data) => { console.log(data); // set received notification content as toast content diff --git a/quickstarts/iFrame.mdx b/quickstarts/iFrame.mdx index 711f6072..81fee2e6 100644 --- a/quickstarts/iFrame.mdx +++ b/quickstarts/iFrame.mdx @@ -89,7 +89,7 @@ If you click “Subscriber” on the left sidebar of the **[Novu dashboard](ht src="/images/Quickstarts/iFrame-quickstart/5.png" /> - One subscriber is automatically created when you sign up. + One subscriber is automatically created when you sign up. If you don't see the default subscriber, follow [how to create subscriber](/subscribers/subscribers#create-a-subscriber) documentation to learn on how to create one Now, let’s create a subscriber on Novu. After creating a subscriber, we’ll trigger a notification to this subscriber. Subscribers are identified by a unique **`subscriberId`**. diff --git a/quickstarts/nodejs.mdx b/quickstarts/nodejs.mdx index 8031aedf..8b9465a5 100644 --- a/quickstarts/nodejs.mdx +++ b/quickstarts/nodejs.mdx @@ -199,7 +199,7 @@ To trigger a notification to all subscribers of a topic, use Novu's API as follo ```jsx const topicKey = ''; -const notificationTemplateId = ''; +const notificationTemplateId = ''; await novu.trigger(notificationTemplateId, { to: [{ type: 'Topic', topicKey: topicKey }], diff --git a/quickstarts/react.mdx b/quickstarts/react.mdx index 2553bebd..e51d29b4 100644 --- a/quickstarts/react.mdx +++ b/quickstarts/react.mdx @@ -89,6 +89,8 @@ If you click “Subscriber” on the left sidebar of the [Novu dashboard](https {" "} +If you don't see the default subscriber, follow [how to create subscriber](/subscribers/subscribers#create-a-subscriber) documentation to learn on how to create one + Now, let’s create a subscriber on Novu. After creating a subscriber, we’ll trigger a notification to this subscriber. Subscribers are identified by a unique `subscriberId`. With Novu, you can create a subscriber using any of its SDKs (Node.js, PHP, .NET, Go, Ruby, Python and Kotlin). The NodeJS code to create a subscriber in Novu is: diff --git a/quickstarts/redwoodjs.mdx b/quickstarts/redwoodjs.mdx index eed049bb..b542e915 100644 --- a/quickstarts/redwoodjs.mdx +++ b/quickstarts/redwoodjs.mdx @@ -53,7 +53,7 @@ Head over to `web/src/layouts/BlogLayout/BlogLayout.js` file of the recently clo The file should look like this: -```js +```javascript import { NovuProvider, PopoverNotificationCenter, @@ -200,7 +200,7 @@ I’ll briefly explain the function of each label in the image above. In the In-App channel `Editor`, add the following content and rename the step to `Onboarding In App` : -```js +```javascript Hi {{ name }},

Thanks for indicating interest in attending RedwoodJS conference. Here is your message:

@@ -225,7 +225,7 @@ Add `Sender name` and `Subject`. Ensure the `Default Layout` is selected for the Switch to the `Custom Code` section and add the following: -```js +```javascript Hi {{ name }},
@@ -245,7 +245,7 @@ Next, we’ll learn how to trigger notifications to subscribers. Open up `api/src/services/contacts/contacts.js`, and add the following code into your app to trigger a notification: -```js +```javascript import { Novu } from '@novu/node' const novu = new Novu(process.env.NOVU_API_KEY) diff --git a/quickstarts/vanillajs.mdx b/quickstarts/vanillajs.mdx index 798cac42..e977e14f 100644 --- a/quickstarts/vanillajs.mdx +++ b/quickstarts/vanillajs.mdx @@ -57,11 +57,13 @@ And subscribers are users to which notifications will be sent. They are identifi If you click “Subscriber” on the left sidebar of the [Novu dashboard](https://web.novu.co/subscribers?utm_campaign=docs-quick-vanilla), you’ll see the subscriber list. By default, there will only be one subscriber as you’re automatically added as a subscriber when you sign up for Novu: +If you don't see the default subscriber, follow [how to create subscriber](/subscribers/subscribers#create-a-subscriber) documentation to learn on how to create one + Now, let’s create a subscriber on Novu. After creating a subscriber, we’ll trigger a notification to this subscriber. Subscribers are identified by a unique `subscriberId`. With Novu, you can create a subscriber using any of its SDKs (Node.js, PHP, .NET, Go, Ruby, Python and Kotlin). The code to create a subscriber in Novu is: -```typesctipt +```typescript import { Novu } from '@novu/node'; const novu = new Novu(''); diff --git a/sdks/angular.mdx b/sdks/angular.mdx index 946289c3..88700fdc 100644 --- a/sdks/angular.mdx +++ b/sdks/angular.mdx @@ -10,7 +10,7 @@ icon: 'angular' ## Installation -```js +```javascript npm install @novu/notification-center-angular ``` diff --git a/sdks/laravel.mdx b/sdks/laravel.mdx index 4e55bc82..3164e5a4 100644 --- a/sdks/laravel.mdx +++ b/sdks/laravel.mdx @@ -11,7 +11,7 @@ Novu's Laravel SDK provides simple, yet comprehensive notification management, a ## Installation -```js +```php composer require novu/novu-laravel ``` diff --git a/sdks/nodejs.mdx b/sdks/nodejs.mdx index 728eb9b5..600850a3 100644 --- a/sdks/nodejs.mdx +++ b/sdks/nodejs.mdx @@ -10,7 +10,7 @@ Novu's Node.js SDK provides simple, yet comprehensive notification management, a ## Installation -```js +```javascript npm install @novu/node ``` @@ -18,7 +18,7 @@ npm install @novu/node ## Usage -```js +```javascript import { Novu } from '@novu/node'; const novu = new Novu(""); diff --git a/sdks/php.mdx b/sdks/php.mdx index be0c6c5b..e056d694 100644 --- a/sdks/php.mdx +++ b/sdks/php.mdx @@ -10,7 +10,7 @@ Novu's PHP SDK provides simple, yet comprehensive notification management, and d ## Installation -```js +```php composer require unicodeveloper/novu ``` diff --git a/sdks/react.mdx b/sdks/react.mdx index ece683e6..50d03c11 100644 --- a/sdks/react.mdx +++ b/sdks/react.mdx @@ -9,7 +9,7 @@ icon: 'react' ## Installation -```js +```javascript npm install @novu/notification-center ``` diff --git a/sdks/ruby.mdx b/sdks/ruby.mdx index 9f068dcf..5b23888b 100644 --- a/sdks/ruby.mdx +++ b/sdks/ruby.mdx @@ -10,7 +10,7 @@ Novu's Ruby SDK provides simple, yet comprehensive notification management, and ## Installation -```js +```javascript gem install novu ``` diff --git a/sdks/vue.mdx b/sdks/vue.mdx index 990bccc6..f67eda8b 100644 --- a/sdks/vue.mdx +++ b/sdks/vue.mdx @@ -10,7 +10,7 @@ icon: 'vuejs' ## Installation -```js +```javascript npm install @novu/notification-center-vue ``` diff --git a/subscribers/subscribers.mdx b/subscribers/subscribers.mdx index 56d743b3..4d030ad2 100644 --- a/subscribers/subscribers.mdx +++ b/subscribers/subscribers.mdx @@ -178,7 +178,7 @@ import { Novu } from '@novu/node'; const novu = new Novu(''); -await novu.trigger('', { +await novu.trigger('', { to: { subscriberId: '111', email: 'john.doe@domain.com', @@ -189,7 +189,7 @@ await novu.trigger('', { payload: { customVariable: 'variableValue', organization: { - logo: 'https://organisation.com/logo.png', + logo: 'https://organization.com/logo.png', }, }, }); @@ -202,7 +202,7 @@ use Novu\SDK\Novu; $novu = new Novu(''); $novu->triggerEvent([ - 'name' => '', + 'name' => '', 'to' => [ 'subscriberId' => '111', 'email' => 'john.doe@domain.com', @@ -213,7 +213,7 @@ $novu->triggerEvent([ 'payload' => [ 'customVariable' => 'variableValue', 'organization' => [ - 'logo' => 'https://organisation.com/logo.png', + 'logo' => 'https://organization.com/logo.png', ] ], ]); @@ -229,7 +229,7 @@ You can create subscribers in bulk *(up to 500 at once)* via the SDKs or [API](/ -```js +```javascript await novu.subscribers.bulkCreate([ { subscriberId: 'test-subscriber-1', diff --git a/tenants/introduction.mdx b/tenants/introduction.mdx index 9c66fa40..307f58dc 100644 --- a/tenants/introduction.mdx +++ b/tenants/introduction.mdx @@ -34,7 +34,7 @@ When triggering a workflow, it is possible to pass the tenant information (id or - ```js + ```javascript import { Novu } from '@novu/node'; const novu = new Novu(""); @@ -123,7 +123,7 @@ An example of the trigger code: - ```js + ```javascript import { Novu } from '@novu/node'; const novu = new Novu(""); diff --git a/workflows/notification-workflows.mdx b/workflows/notification-workflows.mdx index 8a48627c..f9f795e3 100644 --- a/workflows/notification-workflows.mdx +++ b/workflows/notification-workflows.mdx @@ -19,7 +19,7 @@ A workflow acts as the blueprint for the notifications that will be sent. The wo src="/images/workflow-mental-model.png" /> -### Each workflow comprises the following components: +## Workflow Components @@ -42,7 +42,7 @@ A workflow acts as the blueprint for the notifications that will be sent. The wo -### Execution of Workflow Steps +## Execution of Workflow Steps Once a workflow is initiated by its trigger, the steps (and channels) within the workflow are executed in a specific sequence. This sequential execution ensures that each step is completed before the next one begins, maintaining a controlled and orderly flow of the notification process. Here's what you need to know about this process: @@ -59,13 +59,13 @@ Sequential execution provides a predictable and reliable workflow process, ensur Subscriber is not allowed to manage subscriber preference for [critical workflow](/subscribers/preferences#exclude-workflows-from-preferences-critical-workflow) -### Workflow Groups +## Workflow Groups Workflow groups are used to categorize workflows based on their purpose or function. This grouping allows you to organize your workflows in a way that makes sense to you and your team. For example, you may want to group all your onboarding workflows or group all your transactional workflows together. You can create as many groups as you need and assign workflows to them as you see fit. Currently workflow group is just for reference purposes and cannot be used for bulk action related to all workflows belonging to a workflow group. -#### Working with workflow groups +### Working with workflow groups **To create a workflow group, follow these steps:** @@ -92,6 +92,15 @@ To edit a workflow group name, follow these steps: To delete the workflow group use [delete workflow group api](https://docs.novu.co/api-reference/workflow-groups/delete-workflow-group) with the same steps as updating the workflow group name. However, it is not recommended to delete the workflow group if at least one workflow is attached to this workflow group or there exists a change promotion item on the changes page + +## Searching Workflows + +Workflows can be searched by their name or trigger identifier. This feature makes it easy to find the desired workflow and quickly access its details. + + + + + ## FAQs @@ -100,10 +109,10 @@ To edit a workflow group name, follow these steps: To address the error "Notification Group Id not found" when promoting the workflow from dev to prod, it's essential to check the allocation of a notification group to the workflow. Here is an outlined process to validate: - - - - + + + + New notification group can also be created in the drop-down @@ -143,7 +152,18 @@ Hence, while `workflowId` refers to the umbrella structure that holds the enti
- + +The `transactionId` within Novu is a unique identifier that is used to ensure the idempotent nature of notification delivery. + +When you trigger an event to send a notification, you have the option to provide a `transactionId`. If you do not provide one, Novu will generate a UUID for you. + +**This identifier is particularly useful for preventing the same notification from being sent multiple times in case the trigger event is inadvertently called more than once.** + +By leveraging the `transactionId`, you can make idempotent requests, which means if the same `transactionId` is used in another request, Novu's API will recognize it and will not send the same notification again. + + +This upholds the principle of idempotency, ensuring that the effect of the operation is the same, no matter how many times the request is repeated with the same `transactionId`. +
diff --git a/workflows/variants.mdx b/workflows/variants.mdx index 42d7f0e2..68162430 100644 --- a/workflows/variants.mdx +++ b/workflows/variants.mdx @@ -56,7 +56,7 @@ On the other hand, if the tenant identifier has a different value or was not pas - ```js + ```javascript import { Novu } from '@novu/node'; const novu = new Novu("");