Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
8170b10
Create content for the overview page (#1041)
Aviatorscode2 Feb 12, 2026
b0051a5
Content for the Trigger workflow (#1046)
Aviatorscode2 Feb 13, 2026
81e9e49
Create content for create a workflow page. Also deleted some unused i…
Aviatorscode2 Feb 13, 2026
34eaa2e
Content for configure worklow page (#1043)
Aviatorscode2 Feb 13, 2026
6df15d7
fix: images for create a worklfow
jainpawan21 Feb 13, 2026
0d54d35
Content for the Add and configure steps section. (#1044)
Aviatorscode2 Feb 13, 2026
e7fda99
Content for the add notification content page (#1045)
Aviatorscode2 Feb 13, 2026
ee7cbee
fix: add images
jainpawan21 Feb 13, 2026
10172dc
Content for the monitor and debug workflow (#1048)
Aviatorscode2 Feb 13, 2026
479b03e
Clean up the build a workflow section (#1049)
Aviatorscode2 Feb 13, 2026
ac4422c
Fix errors prompted by coderabbit for the workflow (#1050)
Aviatorscode2 Feb 16, 2026
3d94cb8
Update content/docs/platform/workflow/monitor-and-debug-workflow.mdx
Aviatorscode2 Feb 16, 2026
7723a35
Update content/docs/platform/workflow/add-and-configure-steps/configu…
Aviatorscode2 Feb 16, 2026
a89fd53
Update content/docs/platform/workflow/configure-workflow.mdx
Aviatorscode2 Feb 16, 2026
f73ef6d
Update content/docs/platform/inbox/advanced-concepts/multi-tenancy.mdx
Aviatorscode2 Feb 16, 2026
7f82873
Update content/docs/platform/workflow/add-and-configure-steps/configu…
Aviatorscode2 Feb 16, 2026
37cb0dd
Update content/docs/platform/workflow/add-and-configure-steps/configu…
Aviatorscode2 Feb 16, 2026
45b2442
Update content/docs/platform/workflow/add-notification-content/person…
Aviatorscode2 Feb 16, 2026
a7585e0
Update content/docs/platform/workflow/create-a-workflow.mdx
Aviatorscode2 Feb 16, 2026
1ba9ae8
Update content/docs/platform/workflow/add-notification-content/channe…
Aviatorscode2 Feb 16, 2026
c705862
Update content/docs/platform/workflow/add-notification-content/channe…
Aviatorscode2 Feb 16, 2026
25798bc
Fix error
Aviatorscode2 Feb 16, 2026
c4e8628
fix date
Aviatorscode2 Feb 16, 2026
e2a792a
Update content/docs/platform/workflow/add-notification-content/channe…
Aviatorscode2 Feb 16, 2026
625a554
Update content/docs/platform/workflow/add-notification-content/person…
Aviatorscode2 Feb 16, 2026
aa08386
Update content/docs/platform/workflow/monitor-and-debug-workflow.mdx
Aviatorscode2 Feb 16, 2026
3ab0055
Update content/docs/platform/workflow/add-notification-content/person…
Aviatorscode2 Feb 16, 2026
5055273
Update content/docs/platform/workflow/add-notification-content/channe…
Aviatorscode2 Feb 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion content/docs/api-reference/contexts/context-schema.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ title: Context schema
This makes them particularly useful for multi-tenant applications, dynamic branding, and scenarios where notifications need to reference common, reusable data.


Read more about how to use contexts in workflows in the [contexts](/platform/workflow/contexts) section.
Read more about how to use contexts in workflows in the [contexts](/platform/workflow/advanced-features/contexts) section.

Original file line number Diff line number Diff line change
Expand Up @@ -8,5 +8,5 @@ title: Context schema
This makes them particularly useful for multi-tenant applications, dynamic branding, and scenarios where notifications need to reference common, reusable data.


Read more about how to use contexts in workflows in the [contexts](/platform/workflow/contexts) section.
Read more about how to use contexts in workflows in the [contexts](/platform/workflow/advanced-features/contexts) section.

Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ description: 'Learn how to use context to implement multi-tenant notifications t
icon: 'Building2'
---

Multi-tenancy in Novu lets you isolate notifications for different organizations, environments, or workspaces within the same Novu project. Instead of creating separate subscribers or workflows for each tenant, you can use [Contexts](/platform/workflow/contexts) to define and manage tenant boundaries.
Multi-tenancy in Novu lets you isolate notifications for different organizations, environments, or workspaces within the same Novu project. Instead of creating separate subscribers or workflows for each tenant, you can use [Contexts](/platform/workflow/advanced-features/contexts) to define and manage tenant boundaries.

<Callout>This guide assumes you already understand what Contexts are. If not, start with the [Contexts](/platform/workflow/contexts) documentation.</Callout>
<Callout>This guide assumes you already understand what Contexts are. If not, start with the [Contexts](/platform/workflow/advanced-features/contexts) documentation.</Callout>

## How multi-tenancy works in Novu

Expand Down Expand Up @@ -48,7 +48,7 @@ context: {

You can also manage all tenant contexts centrally from the Novu dashboard or API.

<Callout>To learn more about creating, updating, and deleting contexts, see the [Manage Contexts](/platform/workflow/contexts) guide.</Callout>
<Callout>To learn more about creating, updating, and deleting contexts, see the [Manage Contexts](/platform/workflow/advanced-features/contexts) guide.</Callout>

### Applying tenant context in workflows

Expand Down Expand Up @@ -84,7 +84,7 @@ In this example:
- Notifications triggered with this tenant context will be isolated to that tenant’s workspace.
- The same tenant ID must be passed to the Inbox to display these notifications.

<Callout>Learn more about applying Context in workflows in [Contexts in Workflows](/platform/workflow/contexts/contexts-in-workflows) documentation.</Callout>
<Callout>Learn more about applying Context in workflows in [Contexts in Workflows](/platform/workflow/advanced-features/contexts/contexts-in-workflows) documentation.</Callout>

### Filter the Inbox by tenant

Expand Down Expand Up @@ -133,4 +133,4 @@ Once a tenant context is created, its data becomes accessible in all template ed

You can also use tenant context data to control conditional logic inside your workflows. For example, you may want to send certain updates only to enterprise tenants.

<Callout>To learn more about customizing notification content with context, refer to the [Contexts in Workflows](/platform/workflow/contexts/contexts-in-workflows) documentation.</Callout>
<Callout>To learn more about customizing notification content with context, refer to the [Contexts in Workflows](/platform/workflow/advanced-features/contexts/contexts-in-workflows) documentation.</Callout>
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ function BellComponent() {
export default BellComponent;
```

<Callout>See the [Custom Popover documentation](#) for how to use the Bell component with third party library like Radix UI to trigger a custom popover that contains the notification list.</Callout>
<Callout>See the [Custom Popover documentation](/platform/inbox/advanced-customization/customize-popover) for how to use the Bell component with third party library like Radix UI to trigger a custom popover that contains the notification list.</Callout>

## Replace the default Bell Icon

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ icon: 'Package'

_Contexts_ let you scope each `<Inbox />` instance to a specific environment, tenant, or app within your product. When combined with workflow-level contexts, they ensure that each `<Inbox />` displays only the notifications relevant to that specific context.

<Callout type='info'>If you’re new to contexts, start from the [Contexts](/platform/workflow/contexts) section to understand how contexts are created, managed in Novu and how they used in workflows.</Callout>
<Callout type='info'>If you’re new to contexts, start from the [Contexts](/platform/workflow/advanced-features/contexts) section to understand how contexts are created, managed in Novu and how they used in workflows.</Callout>

## How context works in `<Inbox/>`

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ The name given to a workflow in the Novu dashboard is the name your subscribers

For each workflow, the Inbox UI only displays the channels step used in a given workflow.

<Callout type ="info">Learn how to configure channel steps in a workflow in the [Building Workflows guide](/platform/workflow/build-a-workflow).</Callout>
<Callout type="info">Learn how to configure channel steps in a workflow in the [Create a Workflow guide](/platform/workflow/create-a-workflow).</Callout>

### Filter preferences

Expand Down
2 changes: 1 addition & 1 deletion content/docs/platform/inbox/headless-mode.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ npm i @novu/react

## Add the `NovuProvider`

Wrap your application or the components that need access to notifications with the `NovuProvider`. This component initializes the Novu client and provides it to all child hooks via [context](/platform/workflow/contexts).
Wrap your application or the components that need access to notifications with the `NovuProvider`. This component initializes the Novu client and provides it to all child hooks via [context](/platform/workflow/advanced-features/contexts).

```jsx
import { NovuProvider } from '@novu/react';
Expand Down
2 changes: 1 addition & 1 deletion content/docs/platform/integrations/demo-integration.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ The demo integrations are set as primary by default in new Novu environments.

1. Log in to the Novu dashboard.
2. Click **Workflows**.
3. Click **Create workflow** and [create a new workflow](/platform/workflow/build-a-workflow).
3. Click **Create workflow** and [create a new workflow](/platform/workflow/create-a-workflow).
4. Add two steps in the workflow: one for Email and one for SMS.
![Add step](/images/channels-and-providers/add-step.png)
5. Click **Test Workflow**.
Expand Down
2 changes: 1 addition & 1 deletion content/docs/platform/integrations/email/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ Novu automatically sends the notification to the email address stored on the sub
</Step>
</Steps>

<Callout type="info">Learn how to [build email template](/platform/workflow/template-editor) using the block editor, custom HTML, and dynamic variables.</Callout>
<Callout type="info">Learn how to [build email template](/platform/workflow/add-notification-content/channels-template-editors#email-template-editor) using the block editor, custom HTML, and dynamic variables.</Callout>

## Configuring email providers

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ curl -L -X PUT 'https://api.novu.co/v1/subscribers/<SUBSCRIBER_ID>/credentials'

### Triggering workflows

Once subscribers’ devices are registered, push notifications are delivered through [workflows that include a Push step](/platform/workflow/build-a-workflow). A workflow can be triggered using the Novu [SDK](/platform/sdks/overview) or [API](/api-reference/events/trigger-event).
Once subscribers’ devices are registered, push notifications are delivered through [workflows that include a Push step](/platform/workflow/create-a-workflow). A workflow can be triggered using the Novu [SDK](/platform/sdks/overview) or [API](/api-reference/events/trigger-event).

```typescript
import { Novu } from '@novu/node';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ curl -L -X PUT 'https://api.novu.co/v1/subscribers/<SUBSCRIBER_ID>/credentials'

### Step 2: Send a notification

Now you're ready to send a push notification. [Create a workflow with a Push step](/platform/workflow/build-a-workflow) and trigger it. Novu sends the notification to all devices associated with the subscriber.
Now you're ready to send a push notification. [Create a workflow with a Push step](/platform/workflow/create-a-workflow) and trigger it. Novu sends the notification to all devices associated with the subscriber.

The example below demonstrates a simple trigger using Novu’s SDK.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ curl -L -X PUT 'https://api.novu.co/v1/subscribers/<SUBSCRIBER_ID>/credentials'

### Step 2: Send a notification

Now you're ready to send a push notification. [Create a workflow with a Push step](/platform/workflow/build-a-workflow) and trigger it. Novu sends the notification to all devices (player IDs) associated with the subscriber.
Now you're ready to send a push notification. [Create a workflow with a Push step](/platform/workflow/create-a-workflow) and trigger it. Novu sends the notification to all devices (player IDs) associated with the subscriber.

The example below demonstrates, how to [trigger a workflow](/platform/sdks/server/typescript) using Novu’s SDK.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ curl -L -X PUT 'https://api.novu.co/v1/subscribers/<SUBSCRIBER_ID>/credentials'

### Step 2: Send a notification

Now you're ready to send a push notification. [Create a workflow with a Push step](/platform/workflow/build-a-workflow) and trigger it. Novu sends the notification payload to the webhook URL that you configured.
Now you're ready to send a push notification. [Create a workflow with a Push step](/platform/workflow/create-a-workflow) and trigger it. Novu sends the notification payload to the webhook URL that you configured.

The example below demonstrates a simple trigger using Novu’s SDK.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ curl -L -X PUT 'https://api.novu.co/v1/subscribers/<SUBSCRIBER_ID>/credentials'

### Step 2: Send a notification

Now you're ready to send a push notification. [Create a workflow with a Push step](/platform/workflow/build-a-workflow) and trigger it. Novu sends the notification to the `userId`'s associated with the subscriber.
Now you're ready to send a push notification. [Create a workflow with a Push step](/platform/workflow/create-a-workflow) and trigger it. Novu sends the notification to the `userId`'s associated with the subscriber.

The example below demonstrates a simple trigger using Novu’s SDK.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ curl -L -X PUT 'https://api.novu.co/v1/subscribers/<SUBSCRIBER_ID>/credentials'

### Step 2: Send a notification

Now you're ready to send a push notification. [Create a workflow with a Push step](/platform/workflow/build-a-workflow) and then trigger it. Novu sends the notification to the `uid`s associated with the subscriber.
Now you're ready to send a push notification. [Create a workflow with a Push step](/platform/workflow/create-a-workflow) and then trigger it. Novu sends the notification to the `uid`s associated with the subscriber.

The example below demonstrates a simple trigger using Novu’s SDK.

Expand Down
2 changes: 1 addition & 1 deletion content/docs/platform/integrations/sms/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ To learn [how to add an SMS provider](/platform/integrations/sms#supported-provi
<Step>
### Add the email channel to your workflow

Next, include an [SMS step in your workflow](/platform/workflow/build-a-workflow). This step defines when and how an SMS should be sent as part of your notification workflow.
Next, include an [SMS step in your workflow](/platform/workflow/create-a-workflow). This step defines when and how an SMS should be sent as part of your notification workflow.
</Step>
<Step>
### Define the SMS content
Expand Down
20 changes: 8 additions & 12 deletions content/docs/platform/meta.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,19 +12,15 @@
"...inbox",
"---Integrate <Subscription /> ---",
"...subscription",
"---Building Workflows---",
"---Build a Workflow---",
"workflow/overview",
"workflow/build-a-workflow",
"workflow/template-editor",
"workflow/layouts",
"workflow/channel-steps",
"workflow/delay",
"workflow/digest",
"workflow/throttle-step",
"workflow/step-conditions",
"workflow/tags",
"workflow/translations",
"workflow/contexts",
"workflow/create-a-workflow",
"workflow/configure-workflow",
"workflow/add-and-configure-steps",
"workflow/add-notification-content",
"workflow/trigger-workflow",
"workflow/monitor-and-debug-workflow",
"workflow/advanced-features",
"---Integrate Channels Providers---",
"...integrations",
"---SDKs---",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
---
pageTitle: 'Configure Delay Step'
title: 'Configure Delay Step'
description: 'Learn how to use delay step to pause workflow execution.'
icon: 'Timer'
---

import { Accordion, Accordions } from 'fumadocs-ui/components/accordion';

After adding a Delay step to a workflow, it pauses workflow execution for a specified duration or until a scheduled time, then resumes execution with the next step. You can add a Delay step anywhere in a workflow, before or after any other step to control when subsequent steps run.

This page focuses on how to configure the Delay step for your use case.

<Callout>To learn when to use Delay step in a workflow, refer to the [Delay step overview](/platform/workflow/add-and-configure-steps#delay).</Callout>

## Delivery behavior and scheduling

Delay supports delivery-aware execution:
- Notifications sent after a delay can respect a subscriber’s delivery schedule.
- Notifications are delivered using the subscriber’s time zone if a `timezone` attribute is set.
- If no time zone is available, UTC is used.

<Callout type="info">
Changing the step content after triggering the workflow with delay step will affect the existing pending delayed notification content.
</Callout>

## Adding a delay step

You can add a delay step anywhere in a workflow, before or after any other step. When the workflow reaches the delay step, execution pauses for the configured duration and then resumes with the next step.

## Delay types

Delay types are used to define how long the workflow execution should be delayed before proceeding. These delay types are:

### Fixed delay

A fixed delay pauses workflow execution for a static duration. Use this when the delay length is known in advance and does not change.

You can specify fixed delays in seconds, minutes, hours, days, weeks, or months.

![Fixed delay example](/images/workflows/add-and-configure-steps/action-steps/delay/fixed-delay.gif)

### Scheduled delay

A scheduled delay pauses workflow execution until a specific date and time, based on the subscriber’s time zone.

You can configure scheduled delays to resume execution:

- **Minute**: Resume at a specific minute.
- **Hour**: Resume at a specific hour and minute.
- **Day**: Resume at a specific time of day.
- **Week**: Resume on specific days of the week at a given time.
- **Month**: Resume on specific days of the month at a given time.

<iframe
width="100%"
height="400"
src="https://www.youtube.com/embed/S5vdsvJDNxA"
title="Learn how to use Scheduled delay in Novu workflow"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; fullscreen"
allowFullScreen></iframe>

In the example above, the scheduled delay pauses workflow execution until the current day at either 10:00 AM or 11:00 AM, at 23, 24, or 25 minutes past the hour, based on the subscriber’s time zone.

### Dynamic delay

A dynamic delay, also called a variable-based delay, determines the delay duration using a variable from the event payload. This allows the delay to change per workflow execution.

The variable can be defined in one of the following formats:

- **ISO-8601 timestamp**: Example: `2027-01-01T12:00:00Z`. This value should be for future date and time.
- **Duration object**: Example: `{ "amount": 30, "unit": "minutes" }`. This value should be for future date and time. Here *amount* is the number of units to delay and *unit* is the time unit. *unit* can be **seconds**, **minutes**, **hours**, **days**, **weeks**, or **months**.

![Dynamic delay example](/images/workflows/add-and-configure-steps/action-steps/delay/dynamic-delay.png)

In this example, the `delayTill` variable is used to pause the workflow until the future date and time specified in the `delayTill` variable.

<Tabs items={['ISO Date', "Duration object"]}>
<Tab value="ISO Date">

```json
{
"delayTill": "2027-01-01T12:00:00Z"
}
```
</Tab>
<Tab value="Duration object">

```json
{
"delayTill": {
"amount": 30,
"unit": "minutes"
}
}
```
</Tab>
</Tabs>

If a dynamic delay using an ISO date is added as the first step in a workflow, it effectively schedules the workflow execution to start at the specified time.

## Extend to subscriber’s schedule

When enabled, delayed execution respects the [subscriber’s delivery schedule](/platform/inbox/features/schedule).

If the delay completes outside the subscriber’s available delivery window, execution resumes during the next available time slot. This option is disabled by default.

## FAQs

### If delay step fails, will the workflow continue to the next step?
No, workflow execution will stop immediately if the delay step fails due to an error. Common errors are:
- Invalid ISO date format.
- Invalid duration object format.
- Past datetime is specified.
Loading