Skip to content

Conversation

@Aviatorscode2
Copy link
Contributor

@Aviatorscode2 Aviatorscode2 commented Nov 7, 2025

Summary by CodeRabbit

  • Documentation
    • Revamped SMS integration docs into a guided, step-by-step workflow.
    • Added a “Target a specific provider” approach with prescriptive guidance for triggering by integration identifier.
    • Introduced a “Supported providers” gallery with provider cards.
    • Reworked integrations overview to clarify Provider vs Integration, scoping, overrides, and primary vs active behaviors.
    • Updated examples and annotations; removed deprecated sections and adjusted navigation to the provider-focused structure.

@netlify
Copy link

netlify bot commented Nov 7, 2025

Deploy Preview for docs-novu ready!

Name Link
🔨 Latest commit cdd6172
🔍 Latest deploy log https://app.netlify.com/projects/docs-novu/deploys/691445281982c800088dff9e
😎 Deploy Preview https://deploy-preview-1004--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.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Nov 7, 2025

Walkthrough

Restructures SMS integration docs into a guided, provider-centric workflow: replaces high-level capability bullets with step-by-step instructions, adds a "Target a specific provider" approach and a supported-provider gallery, updates trigger example annotations, and removes deprecated sections. Updated SMS metadata to reference a providers index. No public API changes.

Changes

Cohort / File(s) Summary of Changes
Docs: SMS workflow and provider catalog
content/docs/platform/integrations/sms/index.mdx
Rewrote intro into a step-by-step workflow; added “Target a specific provider” guidance; introduced a “Supported providers” gallery with provider cards; updated code example annotations (integrationId overrides); removed deprecated/less relevant sections (e.g., alternate integration usage, common errors).
Docs metadata: SMS section
content/docs/platform/integrations/sms/meta.json
Replaced pages listing with ["(providers)"] to point metadata at the new providers index; no other metadata changes.
Docs: Integrations overview
content/docs/platform/integrations/overview.mdx
Expanded and clarified Provider vs Integration concepts, added definitions and behavioral details (primary vs active integrations, environment scoping, overrides), and updated integration card content for Email, SMS, Push, Chat, and In‑App.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Dev as App / Trigger
  participant Platform as Notification Platform
  participant Provider as SMS Provider
  participant Carrier as Telecom Carrier
  participant User as Recipient

  rect rgb(241,247,255)
  note over Dev,Platform: Trigger flow with optional provider targeting
  Dev->>Platform: trigger(event, payload, { integrationId? })
  alt integrationId provided
    Platform->>Provider: Route via specified integration (integrationId)
  else no integrationId
    Platform->>Provider: Auto-select active/default provider
  end
  end

  Provider->>Carrier: Submit SMS
  Carrier-->>User: Deliver SMS
  Carrier-->>Provider: Delivery status callback
  Provider-->>Platform: Forward delivery status
  Platform-->>Dev: Expose status/logs
  note right of Platform: Docs list supported providers and targeting steps
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

  • Areas to focus:
    • content/docs/platform/integrations/sms/index.mdx — verify new workflow, integrationId examples, and removed sections are consistent.
    • content/docs/platform/integrations/sms/meta.json — ensure nav/collection tooling expects the new "(providers)" value.
    • content/docs/platform/integrations/overview.mdx — check conceptual edits for consistency with other integration docs and any cross-links.

Possibly related PRs

Suggested reviewers

  • DianaHackmamba
  • jainpawan21
  • djabarovgeorge

Poem

A rabbit hops through docs so bright,
New paths to send your texts just right.
Providers lined, each card in view—
Pick one, trigger, watch it through.
Thump-thump! SMS goes off anew. 🐇📨

Pre-merge checks and finishing touches

❌ Failed checks (1 inconclusive)
Check name Status Explanation Resolution
Title check ❓ Inconclusive The title 'Channels providers integration' is vague and generic. It doesn't clearly convey what the main change is—whether it's about adding, restructuring, or updating provider integrations. Consider a more descriptive title such as 'Restructure SMS integration docs with provider-centric workflow' or 'Refactor channels documentation to organize by providers' to better communicate the primary change.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch channels-providers-integration

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

Comment @coderabbitai help to get the list of available commands and usage tips.

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

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 11e499b and 6e4c009.

📒 Files selected for processing (2)
  • content/docs/platform/integrations/sms/index.mdx (5 hunks)
  • content/docs/platform/integrations/sms/meta.json (1 hunks)
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-08-09T13:28:47.834Z
Learnt from: jackall3n
Repo: novuhq/docs PR: 929
File: content/docs/platform/sdks/react-native/hooks/novu-provider.mdx:48-53
Timestamp: 2025-08-09T13:28:47.834Z
Learning: In the novu/react-native and novu/react packages, the NovuProvider component uses the prop name `subscriber` (not `subscriberId`) to pass the subscriber identifier. This is consistent across all documentation examples and the actual implementation.

Applied to files:

  • content/docs/platform/integrations/sms/index.mdx
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (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 (3)
content/docs/platform/integrations/sms/meta.json (1)

1-4: Metadata update aligns with the new documentation structure.

The change to reference (providers) reflects the shift toward a provider-centric navigation structure, consistent with the restructured index.mdx documentation.

content/docs/platform/integrations/sms/index.mdx (2)

75-101: Override SMS settings section is well-structured.

The code example clearly demonstrates SMS overrides for to, from, and content fields, with proper annotations for documentation highlighting. The example is correct and helpful.


103-133: "Target a specific provider" section is well-designed.

This new section effectively explains the integrationIdentifier use case with a practical example (transactional vs. security SMS), and the code example correctly demonstrates the feature. The feature is clearly documented.

Comment on lines +8 to +50
The SMS channel delivers messages to your subscribers’ mobile devices through your configured SMS provider integrations.

With the SMS channel, you can:
## How SMS delivery works in Novu

- **Switch Providers Effortlessly:** Integrate popular services like Twilio, Nexmo, or a custom provider
- **Deliver at Scale:** Handle high-volume messaging with confidence
- **Customize and Track:** Tailor SMS content dynamically and monitor delivery status in real time
Here’s the typical flow for sending an email notification through Novu:

## Key Features
<Steps>
<Step>

- **Dynamic Messaging:** Inject user-specific data into messages for personalization
- **Multi-Provider Support:** Switch or combine providers to maximize reliability
- **Delivery Insights:** Track message delivery, failures, and user engagement
- **Fallback Mechanisms:** Ensure reliable messaging with backup providers
- **Template Management:** Simplify content creation with reusable SMS templates
- **Streamlined API Integration:** Easily connect your backend for automated messaging workflows
### Add an email provider

## Common Use Cases
Start by adding an SMS provider in the **Integration Store** on your Novu dashboard. You can connect one or more integrations for the different or the same providers.

- **Transactional Notifications:** Send OTPs, receipts, or order updates instantly
- **Marketing Campaigns:** Deliver promotional offers and updates to your audience
- **Critical Alerts:** Notify users of urgent events, like security breaches or system outages
- **Reminders and Scheduling:** Automate reminders for appointments, events, or deadlines
To learn [how to add an SMS provider](/platform/integrations/sms#supported-providers), refer to the guide for that provider.

</Step>
<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.
</Step>
<Step>
### Define the SMS content

## Sending SMS overrides
Within the Email step editor, write the message body. The editor supports dynamic data for personalized content.

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.
</Step>
<Step>
### Store subscriber phone number

Novu automatically sends the notification to the phone number stored on the subscriber's profile . You must ensure that this field is set for any subscriber who needs to receive emails. You can store subscribers phone number using the Novu API, or SDK.
</Step>
<Step>
### Trigger the workflow

[Trigger the workflow](/api-reference/events/trigger-event) from your application code by sending an event to Novu.
Novu automatically:
- Resolves the subscriber.
- Selects the correct provider.
- Renders the email template.
- Delivers the message through the configured email integration.
</Step>
</Steps>
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Fix systematic copy-paste errors: "email" should be "SMS" throughout the workflow steps.

The step-by-step workflow structure is excellent, but multiple instances incorrectly reference "email" instead of "SMS." These appear to be copy-paste errors from email integration documentation:

  • Line 12: "sending an email notification" → should be "SMS notification"
  • Line 17: "Add an email provider" → should be "SMS provider"
  • Line 25: "Add the email channel" → should be "SMS channel"
  • Line 32: "Within the Email step editor" → should be "SMS step editor"
  • Line 38: "receive emails" → should be "receive SMS"
  • Line 47: "Renders the email template" → should be "SMS template"
  • Line 48: "through the configured email integration" → should be "SMS integration"

Apply this diff to correct all references:

-Here's the typical flow for sending an email notification through Novu:
+Here's the typical flow for sending an SMS notification through Novu:

-### Add an email provider
+### Add an SMS provider

-### Add the email channel to your workflow
+### Add the SMS channel to your workflow

-Within the Email step editor, write the message body.
+Within the SMS step editor, write the message body.

-Novu automatically sends the notification to the phone number stored on the subscriber's profile . You must ensure that this field is set for any subscriber who needs to receive emails.
+Novu automatically sends the notification to the phone number stored on the subscriber's profile. You must ensure that this field is set for any subscriber who needs to receive SMS.

-Renders the email template.
-Delivers the message through the configured email integration.
+Renders the SMS template.
+Delivers the message through the configured SMS integration.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
The SMS channel delivers messages to your subscribers’ mobile devices through your configured SMS provider integrations.
With the SMS channel, you can:
## How SMS delivery works in Novu
- **Switch Providers Effortlessly:** Integrate popular services like Twilio, Nexmo, or a custom provider
- **Deliver at Scale:** Handle high-volume messaging with confidence
- **Customize and Track:** Tailor SMS content dynamically and monitor delivery status in real time
Here’s the typical flow for sending an email notification through Novu:
## Key Features
<Steps>
<Step>
- **Dynamic Messaging:** Inject user-specific data into messages for personalization
- **Multi-Provider Support:** Switch or combine providers to maximize reliability
- **Delivery Insights:** Track message delivery, failures, and user engagement
- **Fallback Mechanisms:** Ensure reliable messaging with backup providers
- **Template Management:** Simplify content creation with reusable SMS templates
- **Streamlined API Integration:** Easily connect your backend for automated messaging workflows
### Add an email provider
## Common Use Cases
Start by adding an SMS provider in the **Integration Store** on your Novu dashboard. You can connect one or more integrations for the different or the same providers.
- **Transactional Notifications:** Send OTPs, receipts, or order updates instantly
- **Marketing Campaigns:** Deliver promotional offers and updates to your audience
- **Critical Alerts:** Notify users of urgent events, like security breaches or system outages
- **Reminders and Scheduling:** Automate reminders for appointments, events, or deadlines
To learn [how to add an SMS provider](/platform/integrations/sms#supported-providers), refer to the guide for that provider.
</Step>
<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.
</Step>
<Step>
### Define the SMS content
## Sending SMS overrides
Within the Email step editor, write the message body. The editor supports dynamic data for personalized content.
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.
</Step>
<Step>
### Store subscriber phone number
Novu automatically sends the notification to the phone number stored on the subscriber's profile . You must ensure that this field is set for any subscriber who needs to receive emails. You can store subscribers phone number using the Novu API, or SDK.
</Step>
<Step>
### Trigger the workflow
[Trigger the workflow](/api-reference/events/trigger-event) from your application code by sending an event to Novu.
Novu automatically:
- Resolves the subscriber.
- Selects the correct provider.
- Renders the email template.
- Delivers the message through the configured email integration.
</Step>
</Steps>
The SMS channel delivers messages to your subscribers’ mobile devices through your configured SMS provider integrations.
## How SMS delivery works in Novu
Here’s the typical flow for sending an SMS notification through Novu:
<Steps>
<Step>
### Add an SMS provider
Start by adding an SMS provider in the **Integration Store** on your Novu dashboard. You can connect one or more integrations for the different or the same providers.
To learn [how to add an SMS provider](/platform/integrations/sms#supported-providers), refer to the guide for that provider.
</Step>
<Step>
### Add the SMS 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.
</Step>
<Step>
### Define the SMS content
Within the SMS step editor, write the message body. The editor supports dynamic data for personalized content.
</Step>
<Step>
### Store subscriber phone number
Novu automatically sends the notification to the phone number stored on the subscriber's profile. You must ensure that this field is set for any subscriber who needs to receive SMS. You can store subscribers phone number using the Novu API, or SDK.
</Step>
<Step>
### Trigger the workflow
[Trigger the workflow](/api-reference/events/trigger-event) from your application code by sending an event to Novu.
Novu automatically:
- Resolves the subscriber.
- Selects the correct provider.
- Renders the SMS template.
- Delivers the message through the configured SMS integration.
</Step>
</Steps>
🤖 Prompt for AI Agents
In content/docs/platform/integrations/sms/index.mdx around lines 8 to 50,
multiple copy-paste references to "email" should be replaced with "SMS": change
"sending an email notification" to "sending an SMS notification", "Add an email
provider" to "Add an SMS provider", "Add the email channel" to "Add the SMS
channel", "Within the Email step editor" to "Within the SMS step editor",
"receive emails" to "receive SMS", "Renders the email template" to "Renders the
SMS template", and "through the configured email integration" to "through the
configured SMS integration" so all step text consistently refers to SMS rather
than email.

Comment on lines +54 to +73
## Configuring SMS providers

To add an SMS provider from the **Integration Store**, you must configure settings and credentials that are specific to that email providers.

### Default sender settings

The **From** field, which is displayed as the sender of the SMS, is a required default setting for any email provider that you connect. You can override this field during trigger if necessary.

### Provider authentication

You must provide credentials specific to your email provider, such as:
- API key
- Auth token
- Account SID
- Username
- Password.

Each provider has different requirements.

<Callout type="info"> Refer to the [supported SMS providers](/platform/integrations/sms#supported-providers) list for detailed setup guides for each provider integration.</Callout>
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

Fix copy-paste errors in configuration section: "email" should be "SMS".

Additional instances of "email" incorrectly used in the configuration section:

  • Line 56: "specific to that email providers" → should be "SMS providers"
  • Line 60: "any email provider that you connect" → should be "SMS provider"
  • Line 64: "your email provider" → should be "SMS provider"

Apply this diff:

-To add an SMS provider from the **Integration Store**, you must configure settings and credentials that are specific to that email providers.
+To add an SMS provider from the **Integration Store**, you must configure settings and credentials that are specific to that SMS provider.

-The **From** field, which is displayed as the sender of the SMS, is a required default setting for any email provider that you connect.
+The **From** field, which is displayed as the sender of the SMS, is a required default setting for any SMS provider that you connect.

-You must provide credentials specific to your email provider, such as:
+You must provide credentials specific to your SMS provider, such as:
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
## Configuring SMS providers
To add an SMS provider from the **Integration Store**, you must configure settings and credentials that are specific to that email providers.
### Default sender settings
The **From** field, which is displayed as the sender of the SMS, is a required default setting for any email provider that you connect. You can override this field during trigger if necessary.
### Provider authentication
You must provide credentials specific to your email provider, such as:
- API key
- Auth token
- Account SID
- Username
- Password.
Each provider has different requirements.
<Callout type="info"> Refer to the [supported SMS providers](/platform/integrations/sms#supported-providers) list for detailed setup guides for each provider integration.</Callout>
## Configuring SMS providers
To add an SMS provider from the **Integration Store**, you must configure settings and credentials that are specific to that SMS provider.
### Default sender settings
The **From** field, which is displayed as the sender of the SMS, is a required default setting for any SMS provider that you connect. You can override this field during trigger if necessary.
### Provider authentication
You must provide credentials specific to your SMS provider, such as:
- API key
- Auth token
- Account SID
- Username
- Password.
Each provider has different requirements.
<Callout type="info"> Refer to the [supported SMS providers](/platform/integrations/sms#supported-providers) list for detailed setup guides for each provider integration.</Callout>
🤖 Prompt for AI Agents
In content/docs/platform/integrations/sms/index.mdx around lines 54 to 73, there
are copy-paste errors using "email" instead of "SMS"; update the text to read:
"specific to that SMS provider" (line ~56), "any SMS provider that you connect"
(line ~60), and "your SMS provider" (line ~64), and adjust surrounding wording
for correct singular/plural agreement if needed.

Comment on lines +135 to +163
## Supported providers

Here are the SMS providers that are currently supported by Novu. Select any provider to see its detailed setup guide.

<Cards>
<Card title="46elks" href="/platform/integrations/sms/46elks"> Learn how to use the 46elks provider to send SMS notifications using Novu.</Card>
<Card title="Africa's Talking" href="/platform/integrations/sms/africas-talking"> Learn how to use the Africa's Talking provider to send SMS notifications using Novu.</Card>
<Card title="AWS SNS" href="/platform/integrations/sms/aws-sns"> Learn how to use the AWS SNS provider to send SMS notifications using Novu.</Card>
<Card title="Azure SMS" href="/platform/integrations/sms/azure-sms"> Learn how to use the Azure SMS provider to send SMS notifications using Novu.</Card>
<Card title="BulkSMS" href="/platform/integrations/sms/bulksms"> Learn how to use the BulkSMS provider to send SMS notifications using Novu.</Card>
<Card title="Clickatell" href="/platform/integrations/sms/clickatell"> Learn how to use the Clickatell provider to send SMS notifications using Novu.</Card>
<Card title="Clicksend" href="/platform/integrations/sms/clicksend"> Learn how to use the Clicksend provider to send SMS notifications using Novu.</Card>
<Card title="Firetext" href="/platform/integrations/sms/firetext"> Learn how to use the Firetext provider to send SMS notifications using Novu.</Card>
<Card title="Gupshup" href="/platform/integrations/sms/gupshup"> Learn how to use the Gupshup provider to send SMS notifications using Novu.</Card>
<Card title="Infobip - SMS" href="/platform/integrations/sms/infobip"> Learn how to use the Infobip - SMS provider to send SMS notifications using Novu.</Card>
<Card title="Kannel" href="/platform/integrations/sms/kannel"> Learn how to use the Kannel provider to send SMS notifications using Novu.</Card>
<Card title="Kudosity" href="/platform/integrations/sms/kudosity"> Learn how to use the Kudosity provider to send SMS notifications using Novu.</Card>
<Card title="MessageBird" href="/platform/integrations/sms/messagebird"> Learn how to use the MessageBird provider to send SMS notifications using Novu.</Card>
<Card title="Nexmo" href="/platform/integrations/sms/nexmo"> Learn how to use the Nexmo provider to send SMS notifications using Novu.</Card>
<Card title="Plivo" href="/platform/integrations/sms/plivo"> Learn how to use the Plivo provider to send SMS notifications using Novu.</Card>
<Card title="Sendchamp" href="/platform/integrations/sms/sendchamp"> Learn how to use the Sendchamp provider to send SMS notifications using Novu.</Card>
<Card title="SimpleTexting" href="/platform/integrations/sms/simpletexting"> Learn how to use the SimpleTexting provider to send SMS notifications using Novu.</Card>
<Card title="SMS Central" href="/platform/integrations/sms/sms-central"> Learn how to use the SMS Central provider to send SMS notifications using Novu.</Card>
<Card title="SMS77" href="/platform/integrations/sms/sms77"> Learn how to use the SMS77 provider to send SMS notifications using Novu.</Card>
<Card title="SNS" href="/platform/integrations/sms/sns"> Learn how to use the SNS provider to send SMS notifications using Novu.</Card>
<Card title="Telnyx" href="/platform/integrations/sms/telnyx"> Learn how to use the Telnyx provider to send SMS notifications using Novu.</Card>
<Card title="Termii" href="/platform/integrations/sms/termii"> Learn how to use the Termii provider to send SMS notifications using Novu.</Card>
<Card title="Twilio" href="/platform/integrations/sms/twilio"> Learn how to use the Twilio provider to send SMS notifications using Novu.</Card>
</Cards>
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

Supported providers gallery is comprehensive and well-organized.

The Cards component provides an excellent visual showcase of 25+ SMS providers with clear navigation. The consistent description format and href links create a usable provider directory.

Verify that all provider documentation pages linked in the href attributes (e.g., /platform/integrations/sms/46elks, /platform/integrations/sms/twilio) exist and are correctly named.


🏁 Script executed:

#!/bin/bash
# Description: Verify that all SMS provider documentation pages exist

# Extract all hrefs from the Supported providers section
provider_paths=$(grep -oP '(?<=href="/platform/integrations/sms/)[^"]+' content/docs/platform/integrations/sms/index.mdx)

# Check which provider pages exist
echo "Checking provider documentation pages..."
for provider in $provider_paths; do
  provider_file="content/docs/platform/integrations/sms/${provider}.mdx"
  if [ -f "$provider_file" ]; then
    echo "✓ Found: $provider"
  else
    echo "✗ Missing: $provider"
  fi
done

Length of output: 495


Looking at the verification results, I need to check if the provider documentation pages exist under a different directory structure or naming convention before finalizing the assessment.

Critical issue: All 23 SMS provider documentation pages are missing from the repository.

The Novu documentation includes all listed providers (46elks, Africa's Talking, AWS SNS, Azure SMS, BulkSMS, Clickatell, Clicksend, Firetext, Gupshup, Kannel, MessageBird, Nexmo, Plivo, Sendchamp, SimpleTexting, SMS Central, SMS77, SNS, Telnyx, Termii, Twilio, and others), however the corresponding .mdx source files do not exist in the content/docs/platform/integrations/sms/ directory. The index page contains href links to these provider pages, but the pages themselves need to be created or sourced from the main documentation repository.

Either:

  1. Create all missing provider documentation files, OR
  2. Remove the provider cards from index.mdx until the documentation pages are ready, OR
  3. Confirm these files are built/generated separately in the CI/CD pipeline

🏁 Script executed:

#!/bin/bash
# Search for any SMS provider documentation files in the codebase
# Check different possible locations and naming patterns

echo "Searching for provider documentation files..."
echo ""

# Check if provider pages exist in content/docs/platform/integrations/sms/ directory
echo "Files in content/docs/platform/integrations/sms/:"
if [ -d "content/docs/platform/integrations/sms/" ]; then
  find content/docs/platform/integrations/sms/ -type f -name "*.mdx" | sort
else
  echo "Directory not found"
fi

echo ""
echo "Searching for any files with provider names (case-insensitive):"
# Search for files containing provider names
for provider in "twilio" "nexmo" "aws-sns" "plivo"; do
  echo "Searching for '$provider'..."
  find content/docs -type f -name "*${provider}*" 2>/dev/null || echo "  (no matches)"
done

Length of output: 2078


Looking at the new results, the provider files exist in a (providers) subdirectory. I need to verify if the href links in index.mdx correctly match the actual provider filenames.


🏁 Script executed:

#!/bin/bash
# Extract all hrefs from index.mdx and compare with actual provider filenames

echo "Comparing index.mdx href links with actual provider files..."
echo ""

# Get hrefs from index.mdx
echo "href links from index.mdx:"
grep -oP '(?<=href="/platform/integrations/sms/)[^"]+' content/docs/platform/integrations/sms/index.mdx > /tmp/hrefs.txt
cat /tmp/hrefs.txt

echo ""
echo "Actual provider filenames (without .mdx extension):"
find content/docs/platform/integrations/sms/\(providers\)/ -type f -name "*.mdx" -exec basename {} .mdx \; | sort > /tmp/files.txt
cat /tmp/files.txt

echo ""
echo "Mismatches between href links and filenames:"
# Compare the two lists
comm -23 <(sort /tmp/hrefs.txt) <(sort /tmp/files.txt) | sed 's/^/  href link not found: /'
comm -13 <(sort /tmp/hrefs.txt) <(sort /tmp/files.txt) | sed 's/^/  file exists but not linked: /'

Length of output: 676


Fix 2 broken provider links in the Cards component.

Two href links in the index.mdx file do not match the actual provider documentation filenames:

  1. Line ~145 – Change href="/platform/integrations/sms/azure-sms" to href="/platform/integrations/sms/azure" (file is azure.mdx, not azure-sms.mdx)
  2. Line ~148 – Change href="/platform/integrations/sms/bulksms" to href="/platform/integrations/sms/bulk-sms" (file is bulk-sms.mdx, not bulksms.mdx)

All other 21 provider links match their corresponding .mdx files correctly.

🤖 Prompt for AI Agents
In content/docs/platform/integrations/sms/index.mdx around lines 135–163, two
Card hrefs point to incorrect filenames: update the Card with title "Azure SMS"
to use href="/platform/integrations/sms/azure" (file is azure.mdx) and update
the Card with title "BulkSMS" to use href="/platform/integrations/sms/bulk-sms"
(file is bulk-sms.mdx); change those two href attributes accordingly and leave
the other Card links unchanged.

* Content for the overview page

* Update content/docs/platform/integrations/overview.mdx

Co-authored-by: DianaHackmamba <[email protected]>

* Update content/docs/platform/integrations/overview.mdx

Co-authored-by: DianaHackmamba <[email protected]>

* Update content/docs/platform/integrations/overview.mdx

Co-authored-by: DianaHackmamba <[email protected]>

* Update content/docs/platform/integrations/overview.mdx

Co-authored-by: DianaHackmamba <[email protected]>

* Update content/docs/platform/integrations/overview.mdx

Co-authored-by: DianaHackmamba <[email protected]>

* Update content/docs/platform/integrations/overview.mdx

Co-authored-by: DianaHackmamba <[email protected]>

---------

Co-authored-by: DianaHackmamba <[email protected]>
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

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6e4c009 and cdd6172.

⛔ Files ignored due to path filters (2)
  • public/images/channels-and-providers/integrationidentifier.png is excluded by !**/*.png
  • public/images/channels-and-providers/primary-active-integrations.png is excluded by !**/*.png
📒 Files selected for processing (1)
  • content/docs/platform/integrations/overview.mdx (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (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/integrations/overview.mdx (5)

8-12: Well-written introductory narrative.

The opening section clearly establishes the value proposition and explains the provider abstraction layer. This sets a good foundation for the detailed sections that follow.


30-45: Clear and well-structured primary vs. active integrations explanation.

The section effectively differentiates between active and primary integrations, clearly outlines channel-specific behavior, and explains the auto-promotion fallback logic. The visual diagram reference adds helpful context.


47-51: Environment scoping explanation is clear and well-justified.

The section effectively explains why integrations are environment-scoped and the practical benefits (test isolation, per-environment configuration). Good cross-reference to the environments concept page.


53-60: Override settings section is concise and well-exemplified.

The examples provide concrete use cases (SendGrid headers, Slack blocks, FCM sounds) that help readers understand when and why overrides are needed. Good callout to detailed documentation.


62-82: Integration guides cards are well-organized and consistent.

The channel-specific cards provide a clear, scannable entry point for users. Descriptions are appropriately concise and action-oriented. The structure aligns well with the provider-centric restructuring.

Please verify that all linked resources exist and have been updated to reflect the provider-centric approach:

  • /platform/integrations/email
  • /platform/integrations/sms (mentioned as restructured in the PR cross-file context)
  • /platform/integrations/push
  • /platform/integrations/chat
  • /platform/inbox/overview

pageTitle: 'Novu Integration Hub'
title: 'Overview'
description: 'Discover how to integrate Novu with your tech stack including delivery providers, content frameworks, and validation libraries.'
description: 'Learn about the providers that Novu supports for Email, Push, SMS and Chant channels, and how to integrate them to send notifications and receive events.'
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix typo in meta description.

"Chant" should be "Chat".

-description: 'Learn about the providers that Novu supports for Email, Push, SMS and Chant channels, and how to integrate them to send notifications and receive events.'
+description: 'Learn about the providers that Novu supports for Email, Push, SMS and Chat channels, and how to integrate them to send notifications and receive events.'
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
description: 'Learn about the providers that Novu supports for Email, Push, SMS and Chant channels, and how to integrate them to send notifications and receive events.'
description: 'Learn about the providers that Novu supports for Email, Push, SMS and Chat channels, and how to integrate them to send notifications and receive events.'
🤖 Prompt for AI Agents
In content/docs/platform/integrations/overview.mdx around line 4, the meta
description contains a typo: the word "Chant" should be "Chat"; update the
description string to replace "Chant" with "Chat" so it reads "...for Email,
Push, SMS and Chat channels..." and save the file.


- **Integration**: An integration is your specific, configured instance of that provider. It's the provider plus your unique credentials and settings. When creating an integration, you are required to assign it a name and identifier.

While the name can be changged, the identifier cannot be changed after creation. This identifier is called the `integrationIdentifier`.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Fix typo: "changged" → "changed".

-  While the name can be changged, the identifier cannot be changed after creation. This identifier is called the `integrationIdentifier`.
+  While the name can be changed, the identifier cannot be changed after creation. This identifier is called the `integrationIdentifier`.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
While the name can be changged, the identifier cannot be changed after creation. This identifier is called the `integrationIdentifier`.
While the name can be changed, the identifier cannot be changed after creation. This identifier is called the `integrationIdentifier`.
🤖 Prompt for AI Agents
In content/docs/platform/integrations/overview.mdx around line 22, fix the typo
"changged" to "changed" in the sentence so it reads: "While the name can be
changed, the identifier cannot be changed after creation. This identifier is
called the `integrationIdentifier`." Replace the misspelled word only,
preserving the rest of the sentence and formatting.


![integrationIdentifier](/images/channels-and-providers/integrationidentifier.png)

This means that you can have provider but two separate integrations for that particular provider. Each of these is a unique integration that you can manage and trigger independently.
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟡 Minor

Clarify sentence grammar.

The sentence is incomplete. Consider: "you can have one provider but multiple separate integrations for that particular provider" or "you can have the same provider but two separate integrations."

-This means that you can have provider but two separate integrations for that particular provider. Each of these is a unique integration that you can manage and trigger independently.
+This means that you can have one provider but multiple separate integrations for that particular provider. Each of these is a unique integration that you can manage and trigger independently.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
This means that you can have provider but two separate integrations for that particular provider. Each of these is a unique integration that you can manage and trigger independently.
This means that you can have one provider but multiple separate integrations for that particular provider. Each of these is a unique integration that you can manage and trigger independently.
🤖 Prompt for AI Agents
In content/docs/platform/integrations/overview.mdx around line 26, the sentence
"This means that you can have provider but two separate integrations for that
particular provider." is grammatically incorrect and incomplete; update it to a
clear form such as "This means that you can have one provider but multiple
separate integrations for that particular provider." or "This means that you can
have the same provider but two separate integrations for that provider." Replace
the existing sentence with one of these corrected alternatives to fix grammar
and clarity.

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