Skip to content

Conversation

jainpawan21
Copy link
Member

@jainpawan21 jainpawan21 commented Jun 12, 2025

This PR is a continuation of #874

  • add all missing info in topics, preferences, environments and tenants concepts pages

Summary by CodeRabbit

  • Documentation
    • Removed the documentation for the "Framework Endpoint" concept.
    • Expanded and clarified instructions for managing environments, including updated eligibility details and step-by-step guides.
    • Significantly enhanced subscriber preferences documentation with detailed procedures, new sections on critical workflows, preference priority, and API references.
    • Improved tenant documentation with updated examples, clearer FAQ formatting, and additional usage notes.
    • Expanded topics documentation with new usage examples, code samples, API references, and a more detailed FAQ.
    • Updated trigger endpoint documentation with improved formatting and direct API reference links.

Copy link

netlify bot commented Jun 12, 2025

Deploy Preview for docs-novu ready!

Name Link
🔨 Latest commit f5d8305
🔍 Latest deploy log https://app.netlify.com/projects/docs-novu/deploys/6851b5f5d618d90008e329b8
😎 Deploy Preview https://deploy-preview-878--docs-novu.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Copy link
Contributor

coderabbitai bot commented Jun 12, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

This update revises and expands several Novu platform documentation files, notably enhancing guides for environments, preferences, tenants, and topics. It removes the "Framework Endpoint" concept documentation and its meta entry. The changes focus on clarifying concepts, adding detailed instructions, updating examples, and improving formatting and structure.

Changes

Files/Paths Change Summary
content/docs/platform/concepts/endpoint.mdx, content/docs/platform/meta.json Removed the "Framework Endpoint" documentation and its reference from the meta file.
content/docs/platform/concepts/environments.mdx Expanded and clarified environment documentation, updated plan details, and revised instructions for workflow promotion.
content/docs/platform/concepts/preferences.mdx Significantly expanded and restructured subscriber preferences documentation, added API references, and clarified logic.
content/docs/platform/concepts/tenants.mdx Updated example payload, improved FAQ formatting and clarity, and added a note on Inbox filtering by tenant.
content/docs/platform/concepts/topics.mdx Expanded topics documentation with new sections, examples, API references, and an improved FAQ.
content/docs/platform/concepts/trigger.mdx Updated formatting of the /event/trigger endpoint reference to use an inline link.

Suggested reviewers

  • Aviatorscode2
  • DianaHackmamba

Poem

In docs we hop, with paws so neat,
New guides and FAQs, a treat!
Topics, tenants, prefs galore,
Endpoints gone—don’t look for more.
With every change, the docs grow bright,
Rabbits cheer in morning light!
🐇✨


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e112a46 and f5d8305.

📒 Files selected for processing (2)
  • content/docs/platform/concepts/environments.mdx (3 hunks)
  • content/docs/platform/concepts/preferences.mdx (1 hunks)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (14)
content/docs/platform/concepts/tenants.mdx (3)

77-77: Rephrase bullet for clarity
Consider:

- Inbox [data object](/platform/inbox/react/components/inbox#data-object) can be used to filter the notifications by tenant
+ Use the Inbox [data object](/platform/inbox/react/components/inbox#data-object) to filter notifications by tenant.

79-79: Consistent FAQ header capitalization
Align with other concept pages by changing to title case:

- ## Frequently asked questions
+ ## Frequently Asked Questions

84-84: Add comma after introductory adverb
Punctuate properly in the answer:

- Currently we do not support using a different delivery provider for each tenant.
+ Currently, we do not support using a different delivery provider for each tenant.
content/docs/platform/concepts/environments.mdx (6)

15-15: Clarify and punctuate production recommendation
Add the missing article and hyphenate “non-production”:

- We recommend using production environment for production use cases and other environments for non production use cases.
+ We recommend using the production environment for production use cases, and other environments for non-production use cases.

23-29: Fix terminology and hyphenation in creation steps
Hyphenate “pop-up” and ensure consistent UI verb casing:

- 3. A pop up will appear. Enter names like `Staging` or `QA`
+ 3. A pop-up will appear. Enter names like `Staging` or `QA`
🧰 Tools
🪛 LanguageTool

[uncategorized] ~25-~25: When ‘pop-up’ is used as a noun or modifier, it needs to be hyphenated.
Context: ...ironmentbutton on the top right. 3. A pop up will appear. Enter names likeStaging`...

(VERB_NOUN_CONFUSION)


34-39: Standardize “API” casing
Correct the list item to uppercase API:

- - Api Keys (Application Identifier and Secret Key)
+ - API Keys (Application Identifier and Secret Key)

60-62: Improve grammar in sync description
Insert missing articles and tighten phrasing:

- One workflow can be synced to another environment using `Sync Workflow` option in workflow actions.
+ One workflow can be synced to another environment using the `Sync Workflow` option in workflow actions.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~62-~62: You might be missing the article “the” here.
Context: ... be synced to another environment using Sync Workflow option in workflow action...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~62-~62: You might be missing the article “a” here.
Context: ...environment to sync the workflow to. If workflow with same identifier is already present...

(AI_EN_LECTOR_MISSING_DETERMINER_A)


[uncategorized] ~62-~62: You might be missing the article “the” here.
Context: ... sync the workflow to. If workflow with same identifier is already present in the de...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


66-71: Refine sync workflow steps for clarity
Add determiners and rephrase for consistency:

- 3. If you have more than two environments, hover over `Sync workflow` option to see the destination environment. Click on the destination environment.
+ 3. If you have more than two environments, hover over the `Sync Workflow` option to see the destination environment, then click it.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~68-~68: You might be missing the article “the” here.
Context: ... more than two environments, hover over Sync workflow option to see the destina...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~69-~69: Possible missing comma found.
Context: ...he Sync to <Environment Name> option. Here Environment Name is the name of anoth...

(AI_HYDRA_LEO_MISSING_COMMA)


73-74: Fix article in callout
Include “a” before “single”:

- Currently, single workflow can be synced to another environment.
+ Currently, a single workflow can be synced to another environment.
content/docs/platform/concepts/preferences.mdx (1)

17-17: Punctuate and clarify default preferences
Add comma after “By default,” and include “the” before subscriber:

- By default all channel preferences are enabled. If disabled, subscriber will not receive notifications for that step channel.
+ By default, all channel preferences are enabled. If disabled, the subscriber will not receive notifications for that channel step.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~17-~17: Did you mean: “By default,”?
Context: ...rkflow has its own channel preferences. By default all channel preferences are enabled. If...

(BY_DEFAULT_COMMA)


[uncategorized] ~17-~17: Possible missing article found.
Context: ...l preferences are enabled. If disabled, subscriber will not receive notifications for that...

(AI_HYDRA_LEO_MISSING_THE)

content/docs/platform/concepts/topics.mdx (4)

14-14: Add missing space and separate example
Break example onto its own sentence and insert space after period:

- behind the scenes.example: `task:taskId` or `post:postId`
+ behind the scenes. Example: `task:taskId` or `post:postId`

61-61: Fix awkward phrasing

- As mentioned above, a workflow can be triggered to a topic as same as it is triggered to subscribers.
+ As mentioned above, a workflow can be triggered to a topic in the same way as it is triggered to subscribers.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~61-~61: Possible missing article found.
Context: ...workflow can be triggered to a topic as same as it is triggered to subscribers. ###...

(AI_HYDRA_LEO_MISSING_THE)


67-68: Standardize framework naming
Update all “Nodejs” labels to “Node.js” in Tabs and Tab values:

- <Tabs items={["Nodejs", "cURL"]}>
+ <Tabs items={["Node.js", "cURL"]}>
- <Tab value="Nodejs">
+ <Tab value="Node.js">

Also applies to: 101-102, 145-146

🧰 Tools
🪛 LanguageTool

[uncategorized] ~67-~67: The official spelling of this programming framework is “Node.js”.
Context: ...e Topic and topicKey. <Tabs items={["Nodejs", "cURL"]}> ```t...

(NODE_JS)


236-236: Correct verb agreement

- The workflow are processed, but no notifications are delivered and hence this trigger is not counted for billing.
+ The workflow is processed, but no notifications are delivered and, hence, this trigger is not counted for billing.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 63d62d8 and c242eea.

⛔ Files ignored due to path filters (2)
  • public/images/concepts/preferences/subscriber-workflow-preferences.png is excluded by !**/*.png
  • public/images/concepts/preferences/workflow-channel-preferences.png is excluded by !**/*.png
📒 Files selected for processing (7)
  • content/docs/platform/concepts/endpoint.mdx (0 hunks)
  • content/docs/platform/concepts/environments.mdx (3 hunks)
  • content/docs/platform/concepts/preferences.mdx (1 hunks)
  • content/docs/platform/concepts/tenants.mdx (2 hunks)
  • content/docs/platform/concepts/topics.mdx (3 hunks)
  • content/docs/platform/concepts/trigger.mdx (1 hunks)
  • content/docs/platform/meta.json (0 hunks)
💤 Files with no reviewable changes (2)
  • content/docs/platform/meta.json
  • content/docs/platform/concepts/endpoint.mdx
🧰 Additional context used
🪛 LanguageTool
content/docs/platform/concepts/tenants.mdx

[uncategorized] ~83-~83: A comma may be missing after the conjunctive/linking adverb ‘Currently’.
Context: ...rent delivery provider for each tenant? Currently we do not support using a different del...

(SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)

content/docs/platform/concepts/environments.mdx

[uncategorized] ~25-~25: When ‘pop-up’ is used as a noun or modifier, it needs to be hyphenated.
Context: ...ironmentbutton on the top right. 3. A pop up will appear. Enter names likeStaging`...

(VERB_NOUN_CONFUSION)


[uncategorized] ~62-~62: You might be missing the article “the” here.
Context: ... be synced to another environment using Sync Workflow option in workflow action...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~62-~62: You might be missing the article “a” here.
Context: ...environment to sync the workflow to. If workflow with same identifier is already present...

(AI_EN_LECTOR_MISSING_DETERMINER_A)


[uncategorized] ~62-~62: You might be missing the article “the” here.
Context: ... sync the workflow to. If workflow with same identifier is already present in the de...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~68-~68: You might be missing the article “the” here.
Context: ... more than two environments, hover over Sync workflow option to see the destina...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~69-~69: Possible missing comma found.
Context: ...he Sync to <Environment Name> option. Here Environment Name is the name of anoth...

(AI_HYDRA_LEO_MISSING_COMMA)

content/docs/platform/concepts/topics.mdx

[uncategorized] ~61-~61: Possible missing article found.
Context: ...workflow can be triggered to a topic as same as it is triggered to subscribers. ###...

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~65-~65: You might be missing the article “the” here.
Context: ... To trigger a workflow to a topic, use to field with type Topic and topicKey...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~67-~67: The official spelling of this programming framework is “Node.js”.
Context: ...e Topic and topicKey. <Tabs items={["Nodejs", "cURL"]}> ```t...

(NODE_JS)


[uncategorized] ~99-~99: Possible missing article found.
Context: ...ultiple topics to field also accepts array of topics. This is useful when you want...

(AI_HYDRA_LEO_MISSING_AN)


[uncategorized] ~101-~101: The official spelling of this programming framework is “Node.js”.
Context: ...ultiple topics at once. <Tabs items={["Nodejs", "cURL"]}> ```t...

(NODE_JS)


[uncategorized] ~142-~142: Possible missing comma found.
Context: ...otification by using the actor field. Here actor is the subscriberId of the subscr...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~144-~144: The official spelling of this programming framework is “Node.js”.
Context: ...er you want to exclude. <Tabs items={["Nodejs", "cURL"]}> ```t...

(NODE_JS)


[uncategorized] ~238-~238: The verb “are” doesn’t seem to fit in this context, “is” is probably more formally correct.
Context: ...opic with no subscribers? The workflow are processed, but no notifications are del...

(AI_HYDRA_LEO_CPT_ARE_IS)

content/docs/platform/concepts/preferences.mdx

[uncategorized] ~17-~17: Did you mean: “By default,”?
Context: ...rkflow has its own channel preferences. By default all channel preferences are enabled. If...

(BY_DEFAULT_COMMA)


[uncategorized] ~17-~17: Possible missing article found.
Context: ...l preferences are enabled. If disabled, subscriber will not receive notifications for that...

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~23-~23: This expression is usually spelled with a hyphen.
Context: ... to manage channel preferences for 3. A node based editor will appear. On the right side o...

(BASED_HYPHEN)


[grammar] ~25-~25: This expression is usually spelled with a hyphen.
Context: ...teps which are present in the workflow. Non existing channel steps will be disabled. 6. `Mar...

(NON_ANTI_JJ)


[formatting] ~37-~37: Consider inserting a comma after an introductory phrase for better readability.
Context: ...t Verification, Password Reset, etc... In those cases you can mark a workflow as critical i...

(IN_THAT_CASE_COMMA)


[grammar] ~49-~49: The singular determiner ‘this’ may not agree with the plural noun ‘preferences’. Did you mean “these”?
Context: ...nnel preferences. Subscriber can manage this preferences from the <Method href="/pla...

(THIS_NNS)


[grammar] ~57-~57: In this context, ‘type’ should agree in number with the noun after ‘of’.
Context: ... of preferences Since, there are three type of preferences, there is a priority of preferences. Th...

(TYPE_OF_PLURAL)


[uncategorized] ~63-~63: Possible missing comma found.
Context: ...channel is disabled in workflow channel preferences then it global and subscriber channel p...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~63-~63: Did you mean “is” or “it is”?
Context: ...ed in workflow channel preferences then it global and subscriber channel preferenc...

(PRP_JJ)


[uncategorized] ~64-~64: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...bled in the workflow channel preferences but workflow is marked as critical, then su...

(COMMA_COMPOUND_SENTENCE_2)


[style] ~65-~65: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...pp notifications from this workflow. 3. If chat is enabled and email is enable...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~69-~69: Possible missing article found.
Context: ...nces can be retrieved and updated using following APIs: <Card title="Retri...

(AI_HYDRA_LEO_MISSING_THE)

🪛 GitHub Check: Build and Lint
content/docs/platform/concepts/preferences.mdx

[failure] 49-49:
Expected an assignment or function call and instead saw an expression

🪛 GitHub Actions: PR Checks
content/docs/platform/concepts/preferences.mdx

[error] 49-49: ESLint: Expected an assignment or function call and instead saw an expression (@typescript-eslint/no-unused-expressions)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Redirect rules - docs-novu
  • GitHub Check: Header rules - docs-novu
  • GitHub Check: Pages changed - docs-novu
🔇 Additional comments (11)
content/docs/platform/concepts/tenants.mdx (1)

65-66: Tenant example updated correctly
The payload example now reflects the new tenant name and logo, improving consistency.

content/docs/platform/concepts/environments.mdx (2)

19-19: Approve plan availability correction
Custom environments are now correctly flagged as available in Team and Enterprise plans.


49-49: Approve Inbox integration note
Clarifies that the Application Identifier is used with the <Inbox /> component.

content/docs/platform/concepts/topics.mdx (8)

16-16: Clarification added
“Common use cases for topics:” improves specificity.


26-26: Improve trigger detail
Explains the role of the to field clearly.


28-28: Make event creation explicit
Highlights per-subscriber event instantiation.


30-30: Emphasize fan-out advantage
Clarifies why looping is no longer needed.


52-52: Autogenerated topics feature detailed
The on-the-fly creation example is now clear and concise.


55-57: Management callout added
Good highlight of both dashboard and API topic management.


59-59: Section title added
“Trigger workflow” breaks out the workflow trigger content logically.


65-65: New subsection added
“To a single topic” clearly distinguishes single-topic examples.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~65-~65: You might be missing the article “the” here.
Context: ... To trigger a workflow to a topic, use to field with type Topic and topicKey...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
content/docs/platform/concepts/preferences.mdx (1)

49-49: ⚠️ Potential issue

Remove extraneous JSX and fix plurality
The stray {" "} triggers a lint error and “Subscriber” should be plural:

-Subscriber can manage these preferences from the <Method href="/platform/inbox/react/components/preferences">{`<Inbox />`}</Method>{" "}Preferences view.
+Subscribers can manage these preferences from the <Method href="/platform/inbox/react/components/preferences">{`<Inbox />`}</Method> Preferences view.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~49-~49: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...criber has its own channel preferences. Subscriber can manage these preferences from the <...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)

🪛 GitHub Check: Build and Lint

[failure] 49-49:
Expected an assignment or function call and instead saw an expression

🪛 GitHub Actions: PR Checks

[error] 49-49: ESLint: Expected an assignment or function call and instead saw an expression (@typescript-eslint/no-unused-expressions)

🧹 Nitpick comments (17)
content/docs/platform/concepts/environments.mdx (6)

15-15: Suggest refining production environment recommendation
“Use the production environment for production use cases” is tautological. Consider clarifying for readers, e.g.:

-The production environment is your live environment where notifications are sent to real users. Use the production environment for production use cases, and other environments for non-production use cases.
+The production environment is your live environment where notifications are sent to real users. Reserve this environment for real-world traffic, and use other environments (e.g., Development, Staging) for testing or experimentation.

23-28: Standardize step formatting and grammar
Ensure each list item ends with consistent punctuation and tighten phrasing. For example:

-1. Go to the [Environments page](https://dashboard.novu.co/environments) in Novu dashboard
-2. Click on the `Create Environment` button on the top right.
-3. A popup will appear. Enter names like `Staging` or `QA`.
-4. Assign unique colors to easily distinguish between environments.
-5. Click on `Create environment` button on the bottom right.
-6. New environment will be created and will be available in the environments list.
+1. Go to the [Environments page](https://dashboard.novu.co/environments) in the Novu dashboard.
+2. Click **Create Environment** in the top-right corner.
+3. In the popup, enter a name (e.g., `Staging`, `QA`).
+4. Assign a unique color to distinguish this environment.
+5. Click **Create environment**.
+6. The new environment appears in your environments list.

49-49: Add article and clarify component reference
Change “Used with <Inbox />” to include an article and specify the component:

-  - Used with <Method href="/platform/inbox/overview">{`<Inbox />`}</Method>
+  - Used with the <Method href="/platform/inbox/overview">{`<Inbox />`}</Method> component

60-62: Improve sync description grammar
The sentence is wordy and missing an article. Consider:

-One workflow can be synced to another environment using the `Sync Workflow` option in workflow actions. While syncing, Novu will give option to which environment to sync the workflow to.
+One workflow can be synced to another environment using the **Sync Workflow** action. While syncing, Novu prompts you to select the target environment.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~62-~62: Possible missing article found.
Context: ...environment to sync the workflow to. If workflow with same identifier is already present...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~62-~62: Possible missing article found.
Context: ... sync the workflow to. If workflow with same identifier is already present in the de...

(AI_HYDRA_LEO_MISSING_THE)


64-67: Tighten step phrasing and capitalization
Standardize imperative tone and article usage:

-1. Go to the [Workflows page](https://dashboard.novu.co/workflows) in Novu dashboard
-2. Click on the three dot menu in the workflow row
-3. If you have more than two environments, hover over the `Sync Workflow` option to see the destination environment, then click it.
-4. If you have only two environments, Click on the `Sync to <Environment Name>` option. Here `Environment Name` is the name of another environment.
+1. Go to the [Workflows page](https://dashboard.novu.co/workflows) in the Novu dashboard.
+2. Click the **⋮** menu in the desired workflow row.
+3. (Multiple environments) Hover over **Sync Workflow**, then select the destination environment.
+4. (Two environments) Click **Sync to &lt;Other Environment&gt;**.

73-75: Clarify callout message
Make the scope and exclusivity explicit:

-<Callout type="info">
-Currently, a single workflow can be synced to another environment.
-</Callout>
+<Callout type="info">
+Currently, you can sync only one workflow at a time between environments.
+</Callout>
content/docs/platform/concepts/preferences.mdx (6)

17-17: Clarify default state phrasing
“The subscriber” is overly specific. Consider plural or generic form and replace “If” with “When”:

-By default, all channel preferences are enabled. If disabled, the subscriber will not receive notifications for that channel step.
+By default, all channel preferences are enabled. When disabled, subscribers will not receive notifications for that channel step.

21-26: Refine step list grammar and hyphenation
Improve readability and apply hyphenation:

-5. You will be able to change the preferences for only those steps which are present in the workflow. Non existing channel steps will be disabled.
+5. You can change preferences only for steps present in the workflow. Non-existing channel steps are disabled.
🧰 Tools
🪛 LanguageTool

[grammar] ~25-~25: This expression is usually spelled with a hyphen.
Context: ...teps which are present in the workflow. Non existing channel steps will be disabled. 6. The ...

(NON_ANTI_JJ)


53-53: Add missing article in callout
Insert “the” for clarity:

-<Callout type="info">Inbox displays only channels present in the current workflow.</Callout>
+<Callout type="info">Inbox displays only the channels present in the current workflow.</Callout>
🧰 Tools
🪛 LanguageTool

[uncategorized] ~53-~53: You might be missing the article “the” here.
Context: ...-preferences.png) Inbox displays only channels present in the c...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


57-57: Fix grammar in priority introduction
Pluralize and remove misplaced comma:

-Since, there are three type of preferences, there is a priority of preferences. The priority is as follows:
+Since there are three types of preferences, the priority is as follows:
🧰 Tools
🪛 LanguageTool

[grammar] ~57-~57: In this context, ‘type’ should agree in number with the noun after ‘of’.
Context: ... of preferences Since, there are three type of preferences, there is a priority of preferences. Th...

(TYPE_OF_PLURAL)


61-65: Improve examples section formatting
Transform free-form text into a proper list with clearer syntax and punctuation:

-Examples:
-1. If `email` channel is disabled in workflow channel preferences then it global and subscriber channel preferences will be ignored and subscriber will not receive email notifications from this workflow.
-2. If `in-app` channel is enabled in the workflow channel preferences but workflow is marked as critical, then subscriber not be able to change the preferences for this workflow and will always receive in-app notifications from this workflow.
-3. If `chat` is enabled and `email` is enabled in the workflow, `chat` is enabled and `email` is disabled in the subscriber global preferences, then subscriber will receive only chat notifications from this workflow
+### Examples
+1. If `email` is disabled in the workflow channel preferences, all global and workflow-level preferences for email are ignored, and the subscriber does not receive email notifications.
+2. If `in-app` is enabled but the workflow is marked critical, subscribers cannot change any preferences and will always receive in-app notifications.
+3. If a workflow enables both `chat` and `email`, and a subscriber disables `email` in their global preferences, they will receive only `chat` notifications.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~63-~63: Possible missing comma found.
Context: ...channel is disabled in workflow channel preferences then it global and subscriber channel p...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~63-~63: Did you mean “is” or “it is”?
Context: ...ed in workflow channel preferences then it global and subscriber channel preferenc...

(PRP_JJ)


[uncategorized] ~63-~63: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...channel preferences will be ignored and subscriber will not receive email notifications fr...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


[uncategorized] ~64-~64: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...bled in the workflow channel preferences but workflow is marked as critical, then su...

(COMMA_COMPOUND_SENTENCE_2)


[uncategorized] ~64-~64: You might be missing the article “the” here.
Context: ...in the workflow channel preferences but workflow is marked as critical, then subscriber ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~65-~65: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...pp notifications from this workflow. 3. If chat is enabled and email is enable...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~65-~65: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ... enabled and email is disabled in the subscriber global preferences, then subscriber wil...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


69-69: Add article before “following APIs”
Insert “the” for grammatical correctness:

-Subscriber preferences can be retrieved and updated using following APIs:
+Subscriber preferences can be retrieved and updated using the following APIs:
🧰 Tools
🪛 LanguageTool

[uncategorized] ~69-~69: Possible missing article found.
Context: ...nces can be retrieved and updated using following APIs: <Card title="Retri...

(AI_HYDRA_LEO_MISSING_THE)

content/docs/platform/concepts/topics.mdx (5)

56-57: Specify callout type for consistency
Other callouts specify a type. Add type="info" for consistency:

-<Callout>
+<Callout type="info">
   Topics can be managed from [Novu dashboard](https://dashboard.novu.co/topics) or using [Topics APIs](/api-reference/topics/topic-schema)
 </Callout>

61-61: Use “for subscribers” instead of “to subscribers”
Adjust preposition for clarity:

-As mentioned above, a workflow can be triggered to a topic in the same way as it is triggered to subscribers.
+As mentioned above, a workflow can be triggered to a topic in the same way as it is triggered for subscribers.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~61-~61: The preposition “for” seems more likely in this position than the preposition “to”.
Context: ...oned above, a workflow can be triggered to a topic in the same way as it is trigge...

(AI_EN_LECTOR_REPLACEMENT_PREPOSITION_TO_FOR)


[uncategorized] ~61-~61: The preposition “for” seems more likely in this position than the preposition “to”.
Context: ...opic in the same way as it is triggered to subscribers. ### To a single topic To...

(AI_EN_LECTOR_REPLACEMENT_PREPOSITION_TO_FOR)


65-65: Add definite article before to field
Include “the” to specify the field:

-To trigger a workflow to a topic, use `to` field with type `Topic` and topicKey.
+To trigger a workflow to a topic, use the `to` field with type `Topic` and the `topicKey`.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~65-~65: You might be missing the article “the” here.
Context: ... To trigger a workflow to a topic, use to field with type Topic and topicKey...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


99-99: Insert missing article before “array”
Add “an” for grammatical correctness:

-`to` field also accepts array of topics.
+The `to` field also accepts an array of topics.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~99-~99: Possible missing article found.
Context: ...ultiple topics to field also accepts array of topics. This is useful when you want...

(AI_HYDRA_LEO_MISSING_AN)


142-142: Add comma after introductory phrase and article
Improve readability in the actor exclusion description:

-When a workflow is triggered to a topic, notification is sent to all subscribers present in the topic. However, you can exclude a specific subscriber from receiving the notification by using the `actor` field. Here actor is the subscriberId of the subscriber you want to exclude.
+When a workflow is triggered to a topic, a notification is sent to all subscribers in that topic. However, you can exclude a specific subscriber from receiving the notification by using the `actor` field. Here, `actor` is the subscriber’s ID you want to exclude.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~142-~142: Possible missing comma found.
Context: ...otification by using the actor field. Here actor is the subscriberId of the subscr...

(AI_HYDRA_LEO_MISSING_COMMA)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c242eea and 4d315a2.

📒 Files selected for processing (5)
  • content/docs/platform/concepts/environments.mdx (3 hunks)
  • content/docs/platform/concepts/preferences.mdx (1 hunks)
  • content/docs/platform/concepts/tenants.mdx (2 hunks)
  • content/docs/platform/concepts/topics.mdx (3 hunks)
  • content/docs/platform/concepts/trigger.mdx (2 hunks)
✅ Files skipped from review due to trivial changes (1)
  • content/docs/platform/concepts/trigger.mdx
🚧 Files skipped from review as they are similar to previous changes (1)
  • content/docs/platform/concepts/tenants.mdx
🧰 Additional context used
🪛 LanguageTool
content/docs/platform/concepts/environments.mdx

[uncategorized] ~62-~62: Possible missing article found.
Context: ...environment to sync the workflow to. If workflow with same identifier is already present...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~62-~62: Possible missing article found.
Context: ... sync the workflow to. If workflow with same identifier is already present in the de...

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~69-~69: Possible missing comma found.
Context: ...he Sync to <Environment Name> option. Here Environment Name is the name of anoth...

(AI_HYDRA_LEO_MISSING_COMMA)

content/docs/platform/concepts/preferences.mdx

[grammar] ~25-~25: This expression is usually spelled with a hyphen.
Context: ...teps which are present in the workflow. Non existing channel steps will be disabled. 6. The ...

(NON_ANTI_JJ)


[formatting] ~37-~37: Consider inserting a comma after an introductory phrase for better readability.
Context: ...t Verification, Password Reset, etc... In those cases you can mark a workflow as critical i...

(IN_THAT_CASE_COMMA)


[uncategorized] ~38-~38: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...in the subscriber preferences and hence subscriber will not be able to change the preferen...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


[uncategorized] ~49-~49: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...criber has its own channel preferences. Subscriber can manage these preferences from the <...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


[uncategorized] ~53-~53: You might be missing the article “the” here.
Context: ...-preferences.png) Inbox displays only channels present in the c...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[grammar] ~57-~57: In this context, ‘type’ should agree in number with the noun after ‘of’.
Context: ... of preferences Since, there are three type of preferences, there is a priority of preferences. Th...

(TYPE_OF_PLURAL)


[uncategorized] ~63-~63: Possible missing comma found.
Context: ...channel is disabled in workflow channel preferences then it global and subscriber channel p...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~63-~63: Did you mean “is” or “it is”?
Context: ...ed in workflow channel preferences then it global and subscriber channel preferenc...

(PRP_JJ)


[uncategorized] ~63-~63: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...channel preferences will be ignored and subscriber will not receive email notifications fr...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


[uncategorized] ~64-~64: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...bled in the workflow channel preferences but workflow is marked as critical, then su...

(COMMA_COMPOUND_SENTENCE_2)


[uncategorized] ~64-~64: You might be missing the article “the” here.
Context: ...in the workflow channel preferences but workflow is marked as critical, then subscriber ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~65-~65: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...pp notifications from this workflow. 3. If chat is enabled and email is enable...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~65-~65: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ... enabled and email is disabled in the subscriber global preferences, then subscriber wil...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


[uncategorized] ~69-~69: Possible missing article found.
Context: ...nces can be retrieved and updated using following APIs: <Card title="Retri...

(AI_HYDRA_LEO_MISSING_THE)

content/docs/platform/concepts/topics.mdx

[uncategorized] ~61-~61: The preposition “for” seems more likely in this position than the preposition “to”.
Context: ...oned above, a workflow can be triggered to a topic in the same way as it is trigge...

(AI_EN_LECTOR_REPLACEMENT_PREPOSITION_TO_FOR)


[uncategorized] ~61-~61: The preposition “for” seems more likely in this position than the preposition “to”.
Context: ...opic in the same way as it is triggered to subscribers. ### To a single topic To...

(AI_EN_LECTOR_REPLACEMENT_PREPOSITION_TO_FOR)


[uncategorized] ~65-~65: You might be missing the article “the” here.
Context: ... To trigger a workflow to a topic, use to field with type Topic and topicKey...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~99-~99: Possible missing article found.
Context: ...ultiple topics to field also accepts array of topics. This is useful when you want...

(AI_HYDRA_LEO_MISSING_AN)


[uncategorized] ~142-~142: Possible missing comma found.
Context: ...otification by using the actor field. Here actor is the subscriberId of the subscr...

(AI_HYDRA_LEO_MISSING_COMMA)

🪛 GitHub Check: Build and Lint
content/docs/platform/concepts/preferences.mdx

[failure] 49-49:
Expected an assignment or function call and instead saw an expression

🪛 GitHub Actions: PR Checks
content/docs/platform/concepts/preferences.mdx

[error] 49-49: ESLint: Expected an assignment or function call and instead saw an expression (@typescript-eslint/no-unused-expressions)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Redirect rules - docs-novu
  • GitHub Check: Header rules - docs-novu
  • GitHub Check: Pages changed - docs-novu
🔇 Additional comments (2)
content/docs/platform/concepts/environments.mdx (1)

19-19: Verify plan availability statement
The callout now reads that custom environments are available in Team and Enterprise plans. Please confirm this aligns with the official pricing page, as this was changed from Business & Enterprise in the previous version.

content/docs/platform/concepts/preferences.mdx (1)

45-45: Image update looks correct
The new global preferences screenshot seems appropriate and adds clarity.

Copy link
Contributor

@DianaHackmamba DianaHackmamba left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is good content, but how-to content does not belong in a concept topic. Let's discuss where it makes sense to move it to. I know @Aviatorscode2 has some thoughts.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
content/docs/platform/concepts/environments.mdx (1)

19-19: Custom environments plan availability callout added.
Previous suggestion to highlight Team and Enterprise plan availability has been implemented.

🧹 Nitpick comments (4)
content/docs/platform/concepts/environments.mdx (4)

23-28: Refine step 6 wording.
The sentence "New environment will be created and will be available in the environments list" lacks an article and is slightly verbose. Consider changing to:

6. The new environment will be added to the list of environments.

48-51: Standardize nested list indentation.
Adjust sub-bullets under "Application Identifier" to align with two-space indentation for proper markdown nesting:

-   - Public ID for client-side apps
-   - Used with <Method href="/platform/inbox/overview">{`<Inbox />`}</Method>
-   - Unique per environment
-   - Safe to expose in frontend code
+  - Public ID for client-side apps
+  - Used with <Method href="/platform/inbox/overview">{`<Inbox />`}</Method>
+  - Unique per environment
+  - Safe to expose in frontend code

60-60: Unify heading casing.
Rename the heading to Title Case for consistency:

- ## Promoting workflows between environments
+ ## Promoting Workflows Between Environments

62-62: Grammar improvements for sync description.
Update for clarity and correctness:

- One workflow can be synced to another environment using the `Sync Workflow` option in workflow actions. While syncing, Novu will give option to which environment to sync the workflow to.
+ A workflow can be synced to another environment using the `Sync Workflow` option in workflow actions. While syncing, Novu will give you the option of which environment to sync to. If a workflow with the same identifier is already present in the destination environment, it will be overwritten.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~62-~62: Possible missing article found.
Context: ...environment to sync the workflow to. If workflow with same identifier is already present...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~62-~62: Possible missing article found.
Context: ... sync the workflow to. If workflow with same identifier is already present in the de...

(AI_HYDRA_LEO_MISSING_THE)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4d315a2 and 0172fa0.

📒 Files selected for processing (1)
  • content/docs/platform/concepts/environments.mdx (3 hunks)
🧰 Additional context used
🪛 LanguageTool
content/docs/platform/concepts/environments.mdx

[uncategorized] ~62-~62: Possible missing article found.
Context: ...environment to sync the workflow to. If workflow with same identifier is already present...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~62-~62: Possible missing article found.
Context: ... sync the workflow to. If workflow with same identifier is already present in the de...

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~69-~69: Possible missing comma found.
Context: ...he Sync to <Environment Name> option. Here Environment Name is the name of anoth...

(AI_HYDRA_LEO_MISSING_COMMA)

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: Redirect rules - docs-novu
  • GitHub Check: Header rules - docs-novu
  • GitHub Check: Pages changed - docs-novu
🔇 Additional comments (3)
content/docs/platform/concepts/environments.mdx (3)

15-16: Production environment guidance is clear.
The expanded description succinctly distinguishes production traffic from non-production use.


32-39: List of unique environment resources is comprehensive.
Good expansion to cover subscribers, topics, workflows, webhooks, integrations, and API keys.


64-74: Workflow synchronization instructions are clear and comprehensive.
The step-by-step guide covers all UI-driven sync scenarios and the info callout properly notes the single-workflow limitation.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~69-~69: Possible missing comma found.
Context: ...he Sync to <Environment Name> option. Here Environment Name is the name of anoth...

(AI_HYDRA_LEO_MISSING_COMMA)

@jainpawan21
Copy link
Member Author

This is good content, but how-to content does not belong in a concept topic. Let's discuss where it makes sense to move it to. I know @Aviatorscode2 has some thoughts.

@Aviatorscode2

Please share your thoughts 🙂

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (2)
content/docs/platform/concepts/environments.mdx (2)

19-19: Callout for custom environments availability aligns with prior feedback

This matches the previous suggestion about plan availability.


60-60: Heading case inconsistent with others

The heading “Promoting workflows between environments” uses sentence case, but other headings use title case. Please reconcile.

🧹 Nitpick comments (3)
content/docs/platform/concepts/environments.mdx (3)

23-28: Ensure consistent punctuation and UI copy in custom environment creation steps

  • Add a period at the end of step 1 for consistency.
  • Verify that the button label casing (e.g., “Create Environment” vs. “Create environment”) matches the actual UI.

62-62: Refine grammar in workflow syncing description

Consider rephrasing for clarity and adding articles:

One workflow can be synced to another environment using the `Sync Workflow` option. While syncing, you’ll be prompted to select the destination environment. If a workflow with the same identifier already exists in the destination, it will be overwritten.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~62-~62: Possible missing article found.
Context: ...environment to sync the workflow to. If workflow with same identifier is already present...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~62-~62: Possible missing article found.
Context: ... sync the workflow to. If workflow with same identifier is already present in the de...

(AI_HYDRA_LEO_MISSING_THE)


66-71: Standardize capitalization and punctuation in step instructions

  • Lowercase “click” after the comma in step 5.
  • Ensure each step ends with a period.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~69-~69: Possible missing comma found.
Context: ...he Sync to <Environment Name> option. Here Environment Name is the name of anoth...

(AI_HYDRA_LEO_MISSING_COMMA)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0172fa0 and 4f4bab0.

📒 Files selected for processing (1)
  • content/docs/platform/concepts/environments.mdx (3 hunks)
🧰 Additional context used
🪛 LanguageTool
content/docs/platform/concepts/environments.mdx

[uncategorized] ~62-~62: Possible missing article found.
Context: ...environment to sync the workflow to. If workflow with same identifier is already present...

(AI_HYDRA_LEO_MISSING_A)


[uncategorized] ~62-~62: Possible missing article found.
Context: ... sync the workflow to. If workflow with same identifier is already present in the de...

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~69-~69: Possible missing comma found.
Context: ...he Sync to <Environment Name> option. Here Environment Name is the name of anoth...

(AI_HYDRA_LEO_MISSING_COMMA)

🔇 Additional comments (5)
content/docs/platform/concepts/environments.mdx (5)

15-15: Production environment description is clear and informative

This addition effectively clarifies the intended use of the production environment.


34-39: Environment-specific elements list is comprehensive and clear

The expanded list of subscribers, topics, workflows, webhooks, integrations, and API keys accurately reflects environment isolation.


49-49: Application Identifier note usage is clear

The callout about using the <Inbox /> component clarifies integration points for client-side implementations.


64-64: Steps header is clear

Adding the “Steps:” label improves the readability of the procedure section.


72-74: Single workflow sync callout is appropriate

The info callout correctly highlights current limitations of the sync feature.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (3)
content/docs/platform/concepts/preferences.mdx (3)

19-26: Separate how-to steps from concept docs & fix hyphenation.
The numbered steps read like a procedural guide and may be better placed in a dedicated How-To or Guides section rather than the Concepts page. Also, hyphenate “Non-existing”:

-5. You will be able to change the preferences for only those steps which are present in the workflow. Non existing channel steps will be disabled.
+5. You can change preferences only for steps present in the workflow. Non-existing channel steps will be disabled.

47-53: Remove extraneous JSX and fix subject-verb agreement.
Update singular/plural usage and eliminate the stray {" "}:

-For each workflow, subscriber has its own channel preferences. Subscriber can manage these preferences from the <Method href="/platform/inbox/react/components/preferences">{`<Inbox />`}{" "}</Method> Preferences view.
+For each workflow, subscribers have their own channel preferences, which they can manage from the <Method href="/platform/inbox/react/components/preferences">{`<Inbox />`}</Method> Preferences view.

67-69: Add missing article in API introduction.
Insert “the” before “following APIs”:

-Subscriber preferences can be retrieved and updated using following APIs:
+Subscriber preferences can be retrieved and updated using the following APIs:
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4f4bab0 and e112a46.

📒 Files selected for processing (1)
  • content/docs/platform/concepts/preferences.mdx (1 hunks)
🧰 Additional context used
🪛 LanguageTool
content/docs/platform/concepts/preferences.mdx

[grammar] ~25-~25: This expression is usually spelled with a hyphen.
Context: ...teps which are present in the workflow. Non existing channel steps will be disabled. 6. The ...

(NON_ANTI_JJ)


[formatting] ~37-~37: Consider inserting a comma after an introductory phrase for better readability.
Context: ...t Verification, Password Reset, etc... In those cases you can mark a workflow as critical i...

(IN_THAT_CASE_COMMA)


[uncategorized] ~38-~38: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...in the subscriber preferences and hence subscriber will not be able to change the preferen...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


[uncategorized] ~49-~49: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...criber has its own channel preferences. Subscriber can manage these preferences from the <...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


[uncategorized] ~53-~53: You might be missing the article “the” here.
Context: ...-preferences.png) Inbox displays only channels present in the c...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[grammar] ~57-~57: In this context, ‘type’ should agree in number with the noun after ‘of’.
Context: ... of preferences Since, there are three type of preferences, there is a priority of preferences. Th...

(TYPE_OF_PLURAL)


[uncategorized] ~63-~63: Possible missing comma found.
Context: ...channel is disabled in workflow channel preferences then it global and subscriber channel p...

(AI_HYDRA_LEO_MISSING_COMMA)


[grammar] ~63-~63: Did you mean “is” or “it is”?
Context: ...ed in workflow channel preferences then it global and subscriber channel preferenc...

(PRP_JJ)


[uncategorized] ~63-~63: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...channel preferences will be ignored and subscriber will not receive email notifications fr...

(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)


[uncategorized] ~64-~64: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short).
Context: ...bled in the workflow channel preferences but workflow is marked as critical, then su...

(COMMA_COMPOUND_SENTENCE_2)


[uncategorized] ~64-~64: You might be missing the article “the” here.
Context: ...in the workflow channel preferences but workflow is marked as critical, then subscriber ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~65-~65: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...pp notifications from this workflow. 3. If chat is enabled and email is enable...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~65-~65: It looks like there might be a possessive apostrophe missing. Consider inserting it.
Context: ... enabled and email is disabled in the subscriber global preferences, then subscriber wil...

(AI_EN_LECTOR_MISSING_NOUN_POSSESSIVE)


[uncategorized] ~69-~69: Possible missing article found.
Context: ...nces can be retrieved and updated using following APIs: <Card title="Retri...

(AI_HYDRA_LEO_MISSING_THE)

⏰ Context from checks skipped due to timeout of 90000ms (4)
  • GitHub Check: Redirect rules - docs-novu
  • GitHub Check: Header rules - docs-novu
  • GitHub Check: Pages changed - docs-novu
  • GitHub Check: Build and Lint
🔇 Additional comments (5)
content/docs/platform/concepts/preferences.mdx (5)

17-17: Approve conceptual overview.
The introductory note on workflow channel preferences is clear and concise.


28-30: Approve informational callout.
The callout appropriately illustrates channel availability based on workflow steps.


32-32: Approve workflow image inclusion.
Alt text and path look good.


45-45: Approve Subscriber global preferences image.
The screenshot and alt text are appropriate.


71-82: Approve API reference cards.
The list of endpoints is well-structured and consistent with platform styling.

@jainpawan21 jainpawan21 merged commit 499c433 into main Jun 17, 2025
5 of 7 checks passed
@jainpawan21 jainpawan21 deleted the fix/concepts_pages_part_02 branch June 17, 2025 18:37
@jainpawan21 jainpawan21 self-assigned this Jun 17, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants