From 26f2dabcbd8c44450fa1ded05f7f8d267a717e00 Mon Sep 17 00:00:00 2001 From: Pawan Jain Date: Tue, 23 Jun 2026 20:16:52 +0530 Subject: [PATCH 1/3] docs(agents): add "Pricing" page to agents docs --- content/docs/agents/meta.json | 5 +- content/docs/agents/pricing.mdx | 112 +++++++++ src/components/agents/pricing-calculator.tsx | 243 +++++++++++++++++++ 3 files changed, 359 insertions(+), 1 deletion(-) create mode 100644 content/docs/agents/pricing.mdx create mode 100644 src/components/agents/pricing-calculator.tsx diff --git a/content/docs/agents/meta.json b/content/docs/agents/meta.json index 7548ba856..b046fffa5 100644 --- a/content/docs/agents/meta.json +++ b/content/docs/agents/meta.json @@ -16,6 +16,9 @@ "...custom-code-agent", "---Observability---", - "conversations" + "conversations", + + "---Pricing---", + "pricing" ] } diff --git a/content/docs/agents/pricing.mdx b/content/docs/agents/pricing.mdx new file mode 100644 index 000000000..63bcf2deb --- /dev/null +++ b/content/docs/agents/pricing.mdx @@ -0,0 +1,112 @@ +--- +title: "Pricing" +pageTitle: 'Pricing' +description: 'Plans, limits, and billing for Novu Connect (Agent Communication Infrastructure).' +icon: CreditCard +--- + +import { ConnectPricingCalculator } from '@/components/agents/pricing-calculator'; + +Novu Connect bills on your plan, the number of **active conversations** per billing cycle, and how many agents and channel connections you keep running. Agents are included in your current Novu subscription. You do not need a separate Connect subscription. Workflow run overage and agent conversation overage are billed separately. + +Every plan includes the same channels, agent providers, and core features. Plans differ in volume, retention, and team controls. + +## Plans + +| | Free | Pro | Team | Enterprise | +| --- | --- | --- | --- | --- | +| Price | $0 | $30 / mo | $250 / mo | Custom | +| Active conversations | 100 | 1,000 | 5,000 | Custom | +| Extra conversation | Not available | $0.02 | $0.015 | Custom | +| Agents | 2 | 5 | 10 | Unlimited | +| Channels | 2 | 5 | All available | All available | +| Branding | Novu branding shown | Removable | Removable | Removable | +| Custom email domain | No | No | Yes | Yes | +| History | 24 hours | 7 days | 90 days | Custom | + +Free stops counting new conversations when you hit 100 until your billing cycle resets or you upgrade. Pro and Team bill overage at the rates above. Enterprise includes HIPAA BAA, SSO and SCIM, audit logs, and dedicated support. Contact [sales@novu.co](mailto:sales@novu.co) for Enterprise pricing. + +## Estimate your cost + + + +## Active conversations + +An **active conversation** is a Connect thread where an agent is involved. You are billed once per billing cycle for that thread, no matter how many messages are exchanged while it stays active. + +In Connect, every conversation is **active**, **resolved**, or **reopened**. Resolving a conversation ends its active period for billing. If the user messages again and Connect reopens it, that counts as a new active conversation. For lifecycle details, refer to [Agent Conversations](/agents/conversations). + +### What counts + +1. A user starts a thread, or a resolved conversation is reopened. +2. That counts as one active conversation for the current billing cycle. +3. More messages in the same active thread do not add to the count. +4. When the conversation is resolved, it stops being active. +5. A later reopen starts a new active conversation. + +### Billing cycle comes first + +Your billing cycle is the main window for counting conversations. Retention limits and platform session rules only matter when they end sooner than your billing cycle. + +If a conversation starts at 11:00 AM today and your plan renews tomorrow at 7:00 AM, it counts only until 7:00 AM. It does not carry into the next cycle just because the thread is still open on the channel. + +Connect applies whichever limit ends first: billing cycle reset, plan history retention, or the platform's own session rules. + +### By platform + +Platforms handle threads differently. Connect maps each one to the same active, resolved, and reopened model. + +| Platform | One active conversation | New conversation starts when | +| --- | --- | --- | +| Slack | One DM or channel thread with the agent, even with many messages or participants | The conversation is resolved and reopened, or a new thread starts | +| Microsoft Teams | One chat or channel thread with the agent | Same as Slack | +| Email | One thread with the same subject and participants | The conversation is resolved and a later reply reopens it | +| WhatsApp | One user chat within the 24-hour messaging window | The session expires and the user sends a new message | +| Telegram | One chat with the bot | A new session starts after the previous one was resolved | +| SMS | One back-and-forth with the same user on the same number | A new thread starts after the previous one was resolved | + +| Scenario | Billed as | +| --- | --- | +| 80 messages in one Slack DM all month | 1 active conversation | +| Agent and six teammates in one Slack channel all week | 1 active conversation | +| Email resolved on the 10th, reopened on the 20th (same cycle) | 2 active conversations | +| WhatsApp 24-hour window expires, user replies the next day | 2 active conversations | +| Activity in January, none in February | 1 in January, 0 in February | +| One-way outbound email with no reply path | 1 active conversation | +| Thread starts at 11:00 AM today, plan renews at 7:00 AM tomorrow | 1 in the current cycle, counted until 7:00 AM | + +## Agents and channels + +**Agents** are distinct personas or bots in your workspace. One agent on four channels is still one agent. Paused agents do not count. + +**Channels** are external connections: one Slack workspace, one WhatsApp number, one Telegram bot, or one email domain. Multiple Slack channels in the same workspace count as one connection. + +Agent and channel limits are capacity caps, not metered add-ons. At your limit, upgrade or pause an existing agent or channel. + +## Included on every plan + +- **Channels:** Email, Slack, Microsoft Teams, WhatsApp, Telegram, SMS +- **Agent providers:** Managed Claude Code, AWS Bedrock, Google Vertex AI, Azure AI Foundry, Claude Platform on AWS, Mistral, LangChain and LangGraph, custom code +- **Capabilities:** Identity resolution, tools and skills, MCP OAuth, credentials vault, shared context across channels, streaming, reactions, replies, actions, forms, cards + +## FAQ + +### What happens when I exceed my conversation limit? + +Pro and Team bill overage at $0.02 and $0.015 per extra conversation. Free is capped until your cycle resets or you upgrade. Enterprise uses committed volume. + +### What happens when I hit my agent or channel limit? + +You upgrade or disable an existing agent or channel. Connect does not meter agents or channels separately. + +### Are channels or agent providers limited to higher plans? + +No. Every channel and provider is on every plan. Plans differ in how many agents and connections you can run, plus team and security features. + +### Can I change plans without losing data? + +Yes. Agents, conversations, and connections stay in place. On downgrade, items above the new limit are paused, not deleted. + +### Is Connect HIPAA compliant? + +HIPAA BAAs are on Enterprise. Contact [sales@novu.co](mailto:sales@novu.co) if you need to route protected health information through Connect. diff --git a/src/components/agents/pricing-calculator.tsx b/src/components/agents/pricing-calculator.tsx new file mode 100644 index 000000000..b72e95c44 --- /dev/null +++ b/src/components/agents/pricing-calculator.tsx @@ -0,0 +1,243 @@ +'use client'; + +import { useMemo, useState } from 'react'; +import { cn } from '@/lib/cn'; + +type PlanId = 'free' | 'pro' | 'team'; + +type Plan = { + id: PlanId; + name: string; + monthlyPrice: number; + includedConversations: number; + overageRate: number | null; + agents: number | 'Unlimited'; + channels: string; +}; + +const PLANS: Plan[] = [ + { + id: 'free', + name: 'Free', + monthlyPrice: 0, + includedConversations: 100, + overageRate: null, + agents: 2, + channels: '2', + }, + { + id: 'pro', + name: 'Pro', + monthlyPrice: 30, + includedConversations: 1000, + overageRate: 0.02, + agents: 5, + channels: '5', + }, + { + id: 'team', + name: 'Team', + monthlyPrice: 250, + includedConversations: 5000, + overageRate: 0.015, + agents: 10, + channels: 'All available', + }, +]; + +const MAX_CONVERSATIONS = 20000; +const FREE_TO_PRO_THRESHOLD = 300; +const PRO_TEAM_TO_FREE_THRESHOLD = 100; + +function formatCurrency(value: number): string { + return new Intl.NumberFormat('en-US', { + style: 'currency', + currency: 'USD', + minimumFractionDigits: value % 1 === 0 ? 0 : 2, + maximumFractionDigits: 2, + }).format(value); +} + +function formatNumber(value: number): string { + return new Intl.NumberFormat('en-US').format(value); +} + +export function ConnectPricingCalculator(): React.ReactElement { + const [selectedPlanId, setSelectedPlanId] = useState('pro'); + const [conversations, setConversations] = useState(1500); + + const selectedPlan = PLANS.find((plan) => plan.id === selectedPlanId) ?? PLANS[1]; + + const estimate = useMemo(() => { + const extraConversations = Math.max(0, conversations - selectedPlan.includedConversations); + const overageCost = + selectedPlan.overageRate === null ? 0 : extraConversations * selectedPlan.overageRate; + const total = selectedPlan.monthlyPrice + overageCost; + const isOverFreeLimit = + selectedPlan.id === 'free' && conversations > selectedPlan.includedConversations; + + return { + extraConversations, + overageCost, + total, + isOverFreeLimit, + }; + }, [conversations, selectedPlan]); + + function handleConversationsChange(value: number): void { + const nextValue = Math.min(Math.max(0, value), MAX_CONVERSATIONS); + + setConversations(nextValue); + setSelectedPlanId((currentPlanId) => { + if (currentPlanId === 'free' && nextValue > FREE_TO_PRO_THRESHOLD) { + return 'pro'; + } + + if ( + (currentPlanId === 'pro' || currentPlanId === 'team') && + nextValue < PRO_TEAM_TO_FREE_THRESHOLD + ) { + return 'free'; + } + + return currentPlanId; + }); + } + + return ( +
+
+

Estimate your monthly cost

+

+ Pick a plan and set how many active conversations you expect each billing cycle. +

+
+ +
+

Plan

+
+ {PLANS.map((plan) => { + const isSelected = plan.id === selectedPlanId; + + return ( + + ); + })} +
+
+ +
+
+ + handleConversationsChange(Number(event.target.value))} + className="w-28 rounded-md border border-fd-border bg-fd-background px-2 py-1 text-right text-sm text-fd-foreground" + /> +
+ handleConversationsChange(Number(event.target.value))} + className="w-full accent-[#4b73ec] dark:accent-[#00d5ff]" + /> +
+ 0 + {formatNumber(MAX_CONVERSATIONS)} +
+
+ +
+
+
+
Plan price
+
+ {formatCurrency(selectedPlan.monthlyPrice)} +
+
+
+
Included conversations
+
+ {formatNumber(selectedPlan.includedConversations)} +
+
+
+
Extra conversations
+
+ {formatNumber(estimate.extraConversations)} +
+
+
+
Overage charges
+
+ {selectedPlan.overageRate === null + ? 'Not available on Free' + : formatCurrency(estimate.overageCost)} +
+
+
+
+
Estimated total
+
+ {formatCurrency(estimate.total)} +
+
+
+
+ + {estimate.isOverFreeLimit ? ( +

+ Free is capped at {formatNumber(selectedPlan.includedConversations)} active + conversations per billing cycle. Upgrade to Pro or Team to keep running, or wait for + your next cycle to reset. +

+ ) : null} + + {selectedPlan.overageRate !== null && estimate.extraConversations > 0 ? ( +

+ Overage is billed at {formatCurrency(selectedPlan.overageRate)} per extra conversation + on the {selectedPlan.name} plan. +

+ ) : null} +
+ +

+ Enterprise pricing is custom. For committed volume, HIPAA BAA, SSO, or SCIM, contact{' '} + + sales@novu.co + + . +

+
+ ); +} From e431528b40d9597969aa5a6779ab3307c2bab535 Mon Sep 17 00:00:00 2001 From: Pawan Jain Date: Tue, 23 Jun 2026 20:22:15 +0530 Subject: [PATCH 2/3] docs(agents): update pricing documentation to clarify plan limits, billing details, and features across tiers --- content/docs/agents/pricing.mdx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/content/docs/agents/pricing.mdx b/content/docs/agents/pricing.mdx index 63bcf2deb..24b0ad0d0 100644 --- a/content/docs/agents/pricing.mdx +++ b/content/docs/agents/pricing.mdx @@ -9,10 +9,10 @@ import { ConnectPricingCalculator } from '@/components/agents/pricing-calculator Novu Connect bills on your plan, the number of **active conversations** per billing cycle, and how many agents and channel connections you keep running. Agents are included in your current Novu subscription. You do not need a separate Connect subscription. Workflow run overage and agent conversation overage are billed separately. -Every plan includes the same channels, agent providers, and core features. Plans differ in volume, retention, and team controls. - ## Plans +Connect limits follow your Novu plan tier. The table below compares price, conversation volume, and the features that change between tiers. + | | Free | Pro | Team | Enterprise | | --- | --- | --- | --- | --- | | Price | $0 | $30 / mo | $250 / mo | Custom | @@ -28,11 +28,13 @@ Free stops counting new conversations when you hit 100 until your billing cycle ## Estimate your cost +Pick a plan and set your expected conversation volume to see how base price and overage add up for one billing cycle. + ## Active conversations -An **active conversation** is a Connect thread where an agent is involved. You are billed once per billing cycle for that thread, no matter how many messages are exchanged while it stays active. +This is the main unit Connect uses for billing. An **active conversation** is a thread where an agent is involved. You are billed once per billing cycle for that thread, no matter how many messages are exchanged while it stays active. In Connect, every conversation is **active**, **resolved**, or **reopened**. Resolving a conversation ends its active period for billing. If the user messages again and Connect reopens it, that counts as a new active conversation. For lifecycle details, refer to [Agent Conversations](/agents/conversations). @@ -77,20 +79,26 @@ Platforms handle threads differently. Connect maps each one to the same active, ## Agents and channels +These limits control how much Connect infrastructure you can run in parallel. They are capacity caps, not metered add-ons. + **Agents** are distinct personas or bots in your workspace. One agent on four channels is still one agent. Paused agents do not count. **Channels** are external connections: one Slack workspace, one WhatsApp number, one Telegram bot, or one email domain. Multiple Slack channels in the same workspace count as one connection. -Agent and channel limits are capacity caps, not metered add-ons. At your limit, upgrade or pause an existing agent or channel. +At your limit, upgrade or pause an existing agent or channel. Connect does not bill per extra agent or channel. ## Included on every plan +Every tier ships with the same channels, agent providers, and core Connect capabilities. Plans differ in volume and team features, not in what you can build. + - **Channels:** Email, Slack, Microsoft Teams, WhatsApp, Telegram, SMS - **Agent providers:** Managed Claude Code, AWS Bedrock, Google Vertex AI, Azure AI Foundry, Claude Platform on AWS, Mistral, LangChain and LangGraph, custom code - **Capabilities:** Identity resolution, tools and skills, MCP OAuth, credentials vault, shared context across channels, streaming, reactions, replies, actions, forms, cards ## FAQ +Answers to common questions about conversation limits, plan changes, and compliance. + ### What happens when I exceed my conversation limit? Pro and Team bill overage at $0.02 and $0.015 per extra conversation. Free is capped until your cycle resets or you upgrade. Enterprise uses committed volume. From b871a65b3334d8e18645421ab8e774889c4fe7ff Mon Sep 17 00:00:00 2001 From: Pawan Jain Date: Tue, 23 Jun 2026 20:27:21 +0530 Subject: [PATCH 3/3] docs(agents): enhance pricing documentation with improved formatting and clarity on plan features --- content/docs/agents/pricing.mdx | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/content/docs/agents/pricing.mdx b/content/docs/agents/pricing.mdx index 24b0ad0d0..996ea3d63 100644 --- a/content/docs/agents/pricing.mdx +++ b/content/docs/agents/pricing.mdx @@ -15,14 +15,14 @@ Connect limits follow your Novu plan tier. The table below compares price, conve | | Free | Pro | Team | Enterprise | | --- | --- | --- | --- | --- | -| Price | $0 | $30 / mo | $250 / mo | Custom | -| Active conversations | 100 | 1,000 | 5,000 | Custom | -| Extra conversation | Not available | $0.02 | $0.015 | Custom | -| Agents | 2 | 5 | 10 | Unlimited | -| Channels | 2 | 5 | All available | All available | -| Branding | Novu branding shown | Removable | Removable | Removable | -| Custom email domain | No | No | Yes | Yes | -| History | 24 hours | 7 days | 90 days | Custom | +| **Price** | $0 | $30 / mo | $250 / mo | Custom | +| **Active conversations** | 100 | 1,000 | 5,000 | Custom | +| **Extra conversation** | Not available | $0.02 | $0.015 | Custom | +| **Agents** | 2 | 5 | 10 | Unlimited | +| **Channels** | 2 | 5 | All available | All available | +| **Branding** | Novu branding shown | Removable | Removable | Removable | +| **Custom email domain** | No | No | Yes | Yes | +| **History** | 24 hours | 7 days | 90 days | Custom | Free stops counting new conversations when you hit 100 until your billing cycle resets or you upgrade. Pro and Team bill overage at the rates above. Enterprise includes HIPAA BAA, SSO and SCIM, audit logs, and dedicated support. Contact [sales@novu.co](mailto:sales@novu.co) for Enterprise pricing. @@ -60,12 +60,11 @@ Platforms handle threads differently. Connect maps each one to the same active, | Platform | One active conversation | New conversation starts when | | --- | --- | --- | -| Slack | One DM or channel thread with the agent, even with many messages or participants | The conversation is resolved and reopened, or a new thread starts | -| Microsoft Teams | One chat or channel thread with the agent | Same as Slack | -| Email | One thread with the same subject and participants | The conversation is resolved and a later reply reopens it | -| WhatsApp | One user chat within the 24-hour messaging window | The session expires and the user sends a new message | -| Telegram | One chat with the bot | A new session starts after the previous one was resolved | -| SMS | One back-and-forth with the same user on the same number | A new thread starts after the previous one was resolved | +| **Slack** | One DM or channel thread with the agent, even with many messages or participants | The conversation is resolved and reopened, or a new thread starts | +| **Microsoft Teams** | One chat or channel thread with the agent | Same as Slack | +| **Email** | One thread with the same subject and participants | The conversation is resolved and a later reply reopens it | +| **WhatsApp** | One user chat within the 24-hour messaging window | The session expires and the user sends a new message | +| **Telegram** | One chat with the bot | A new session starts after the previous one was resolved | | Scenario | Billed as | | --- | --- | @@ -91,7 +90,7 @@ At your limit, upgrade or pause an existing agent or channel. Connect does not b Every tier ships with the same channels, agent providers, and core Connect capabilities. Plans differ in volume and team features, not in what you can build. -- **Channels:** Email, Slack, Microsoft Teams, WhatsApp, Telegram, SMS +- **Channels:** Email, Slack, Microsoft Teams, WhatsApp, Telegram - **Agent providers:** Managed Claude Code, AWS Bedrock, Google Vertex AI, Azure AI Foundry, Claude Platform on AWS, Mistral, LangChain and LangGraph, custom code - **Capabilities:** Identity resolution, tools and skills, MCP OAuth, credentials vault, shared context across channels, streaming, reactions, replies, actions, forms, cards