Novu Cloud | Multiple Slack destinations together with Email and In-APP
We're building a B2B application that provides services to our customers. For user management, we're using Clerk, where each customer is associated with a Clerk organization.
Each organization can have multiple users, and we’re designing a system to support three main notification workflows:
Notification Workflows:
1. Anomaly Detection Alerts
1.1 Channels: In-app, email, Slack
1.2. Scope: Organization-wide (all users in a tenant)
2. Release Notes Updates
2.1.Channels: In-app, email, Slack
2.2. Scope: Organization-wide
3. Report Generation Completion
3.1 Channels: In-app, email, Slack
3.2 Scope: User-specific (tied to the user who triggered the report)
Requirements:
We need to support configurable and flexible notification routing while preventing redundant alerts.
Specifically:
Tenant Structure
All users should be grouped under a Tenant, where the tenant ID is the Clerk organization ID.
User-to-Workflow Mapping
Each user may be subscribed to multiple workflows.
To support per-user and per-workflow Slack channel destinations, we'll assign a unique subscriberId using a combination of: subscriberId = user_id + org_id + workflow_id
Slack Destination Configuration
Each organization should be able to configure one or more Slack channels:
1. Org-level channels for workflows like Anomaly Detection or Release Notes
2. User-level channels (or fallback options) for workflows like Report Generation
====
Open Questions:
We’re currently unsure how to:
Design workflow triggers in a way that avoids sending duplicate alerts (especially in cases where multiple users in the same org might see the same event).
Efficiently deduplicate organization-wide alerts while maintaining user-level alerting for individual workflows.
Is there any ideas on how to solve it using Novu?
5 Replies
@AlexLobanov
Thanks for sharing the requirements in detail.
I have question:
In organization wide scope workflows, you want to send in-app and email notification to all users in that tenant and slack notification to one channel configured for whole organization (tenant)?
Each user may be subscribed to multiple workflows.Could you please share more details on this?
@Pawan Jain
>In organization wide scope workflows, you want to send in-app and email notification to all users in that tenant and slack notification to one channel configured for whole organization (tenant)?
Yep, you're 100% right.
>Each user may be subscribed to multiple workflows.
Apologies for the confusion. In general, we want to enable Slack notifications for the organization, along with in-app and email configuration options for users in each workflow.
For instance, as a user of Org 1, I should be able to set the Slack destination for Alert A to one channel and Alert B to a different channel. Additionally, for both workflows, I want the ability to opt in or out of email and in-app notifications as an org user.
@AlexLobanov
There are two notes:
1. Currently, we don't support multitenancy out of the box, but it can be implemented using prefix and suffix in subscriberid and topic
2. Currently, only one webhook url is supported for each subscriber
Multitenancy:
- Create a tenant subscriber with orgid as subscriberId, for example org1
- Create all users of this tenant as subscribers using subscriberId in this format
org1:user1
or org1_user1
- Create a topic with the name Org1
add tenant subscriber and triggger the worklfow to this topic for org level notifications
- trigger workflow to subscriber for user level notifications
- you can create different workflows for org level and user level notifications
Sending slack notifications to multiple channels
- Create multiple subscribers to store multiple webhook url for each oneThat's great to hear that we're aligning our approach! Thank you @Pawan Jain
I have a question regarding Slack integration. We want to simplify the process of integrating Slack, and we noticed that v0 supported this feature: https://v0.x-docs.novu.co/channels-and-providers/chat/slack#1-novu-managed-recommended.
However, when I tried to use it with version 2, it didn't work (I manually constructed the URL), so I assume this feature isn’t supported yet. Do we know if it will be included in future versions?
@AlexLobanov
I will update you on this if it will be supported in v2