Cross-channel notifications for the review layer, out of the box: in-app feeds, email, Slack, and Microsoft Teams. By default the inbox is connected to Comments — mentions, replies, and thread activity generate notifications automatically, and only for documents the user has access to. Your backend adds custom events through the REST API, an optional pipeline batches bursts into digests, and each user sets their own preferences per channel.
Margin Review Agent flagged 3 pricing claims on the Q3 deckagent
opens to findings
2m
Maya assigned you the contract sign-off, due Fridayhuman
8m
12 updates on the Acme renewal, batcheddigest
1h
one feed, both actor types, consent where the agent’s work lands
How it works
Three steps to the first notification.
Enable Notifications in the Velt Console, drop in the tool, and comment activity flows into the inbox automatically. Email, batching, and custom events layer on from there.
// enable Notifications in the Velt Console first<VeltNotificationsTool/>// or embed VeltNotificationsPanel
With Velt
The mechanics
By default the inbox is connected to Comments: mentions, replies, and thread activity generate notifications automatically, and only for documents the user has access to. Custom events from your backend land in the same inbox through the REST API with full CRUD. Email goes out through your SendGrid account or any email service via webhooks. An optional delay-and-batch pipeline holds notifications, suppresses delivery when the recipient already saw the activity, and groups the rest into digests. Preferences are per-user: set all, mine, or none per channel, per document or org-wide.
// comment activity flows in automatically · scoped to documents the user can access
Build it yourself
What an in-house version requires
event capture across every feature
an inbox UI with tabs and read states
permission filtering so users never see activity they lack access to
email delivery and templates
channel fan-out
batching and digest logic
suppression of already-seen activity
per-user preference storage at document and org level
retention rules and an API for custom events
Teams that build it budget weeks for the inbox and a quarter for the pipeline, then keep paying for the long tail. The 3 steps above replace the inbox; the capability wall below replaces the pipeline.
MCP: the faster path.
Skip the steps. Have your agent set it up.
npx -y @velt-js/mcp-installer
claude mcp add velt-installer -- npx -y @velt-js/mcp-installer
Prebuilt tool and panel components with For You, Document, and All tabs. The reviewer opens one feed and finds every mention, reply, and sign-off request waiting.
02email
EmailSendGrid
notifications@velt.devto ethan@acme.com
Sign-off requested: Q3 forecast@Ethanmentioned on Q3 forecast: “approve before Friday close?”
delivered · hasn’t opened the app
// email
// SendGrid integration: API key,// template ID, from address in console
Email notifications
Mentions and replies fire emails through your SendGrid account or any service via webhooks. The reviewer who hasn’t opened your product today still sees the sign-off request.
03batching
Digest1 / day
40 events · 13 already seen
Q3 forecast · daily digest27 new updates, batched into one
deduplicatedAlready-seen suppressed
// batching
// delay-and-batch + already-seen// suppression, configured in console
Batching and digests
A delay-and-batch pipeline holds bursts, drops what the recipient already saw, and delivers one digest. Deadline-day activity arrives as a summary, not forty separate pings.
04preferences
Preferencesper channel
In-appevery eventALLMINENONE
Emailmentions & assignmentsALLMINENONE
SlacksilencedALLMINENONE
settings UI · RESTPer document or org-wide
// preferences
<VeltNotificationsTool enableSettings />
Per-user preferences
Each user sets all, mine, or none per channel, per document or org-wide, through the settings UI or REST API. The reviewer decides what reaches them.
05custom
REST APIPOST
POST/v2/notifications{ type, to: userId, body }
deadlinecounterpartyworkflow step
Deadline · sign-off due 5pmin the same inbox
// custom
POST /v2/notifications
{ "type": "deadline", "to": userId }
Custom notifications via REST API
POST your app’s own events into the same inbox: deadline alerts, counterparty updates, workflow steps. One feed carries everything your reviewers need to act on.
Comment and review events fire to your endpoint with full payloads; route them to Slack or any channel you run. Your pipeline, your rules, Velt supplies the events.
07agents
Agent activityovernight
Review Agent9:00 AM
Finished overnight: 3 findings ready as an approve-or-reject queue.
3 Replies
notifiedRan 02:14 · surfaced at sign-in
// agents
// agent comments + inbox auto-// connection to Comments
Agent activity notifications
An agent is a user: its findings notify the assigned reviewer like anyone’s. The agent works overnight; the reviewer finds the approve-or-reject queue at nine.
08permissions
Scoped feedsby access
Counterparty
CPTheir shared thread moved: reply added
Reaches their inbox
Internal
TMTeam deliberation on the counter-offer
Never reaches them
// permissions
// notifications fetched only for// documents the user can access
Permission-scoped feeds
Notifications generate only for documents the user can access. The counterparty sees their thread move; your team’s internal deliberation never reaches their inbox.
09self-host
Self-hostdata provider
Your servers
Mayamentioned you: “approve the revised Q3 projections?”
full content
Velt stores
userId: usr_8f21docId: doc_q3type: mention
minimal ids
// self-host
// notifications data provider →// content on your infrastructure
Notification data on your infrastructure
The self-host data provider keeps notification content on your servers; Velt stores minimal identifiers. The deal blocked on data residency clears without a feature trade.
Approval requests used to sit unread until the deadline passed. With the inbox and email out of the box, the approver sees their turn the same day — our campaigns stopped slipping.
Marketing ops lead · content platform
Little big details
The long tail, already built.
Shipped functionality leads; draft items render after engineering sign-off. This is the part of an in-house build that never ends.
VeltNotificationsTool and VeltNotificationsPanel componentsPanel tabs: For You, Document, and AllDefault fetch limits (50 in For You, 15 per document), all configurableNotifications generated and fetched only for documents the user can accessCustom notifications via REST API with full CRUD (v1 and v2)Notification config REST API (get and set), per-user preference keysPreference values ALL, MINE, or NONE, per document or org defaultUser-facing settings on the tool or panel (enableSettings)setSettings, getSettings, and a settingsUpdated eventDelay-and-batch delivery with already-seen suppression and digestsEmail via SendGrid integration or any service via webhooksDocumented email template payload plus a sample HTML templateWireframes and primitives for the Panel and ToolSelf-host notification content via the data providerMark-as-read and read states in the panel UIComing soonFirst-party Slack, Teams, Discord, Resend, and Customer.io deliveryComing soonRouting rules and broadcastsComing soonDeadline remindersComing soonSettings scope beyond the root documentComing soon
Make it yours
Your inbox, your pipeline.
Prebuilt Tool and Panel for the fast path, wireframes and primitives for fully custom inbox UIs, and a REST surface for custom events and preferences.
Look
Prebuilt Notifications Tool and Panel for the fast path; wireframes and primitives for both for fully custom inbox UIs; template variables, global styles, dark mode. Your SendGrid email template is yours end to end.
Acme · Inboxyour theme
Maya mentioned you on Q3 forecast
“@you review before Friday?”
2m
Sarah requested your sign-off
contract.pdf · due today
9m
In-appEmailSlack
<VeltNotificationsPanelWireframe>// your markup</VeltNotificationsPanelWireframe>
Behavior
Custom notifications via REST API; notification config API at document or org level; settings APIs with an extendable channel list; batching and delay configuration in the console; webhooks into your own channel pipeline.
Delivery configyour rules
in-appemailSlackwebhook
digestbatched · 1 / day
per-user prefsALLMINENONE
customEventsPOST/notifications
POST /v2/notifications/config
{ "channel": "email", "value": "MINE" }
We POST our own deadline and counterparty events into the same inbox as comment activity. Reviewers have one place to look instead of five.
Staff engineer · deal management platform
In production
Reached in time, in products like yours.
Tabbed by vertical, with verified customer screenshots.
SummaryNext StepsDemoCustomer Stories
Hey Conductor!
This Digital Sales Room gives you everything you need to move forward — from proposal to plan.
Our Mutual Action Plan
Training2 / 5
Creating a new Room1
Build a working demo room
Contract sign-off
M
Maya2m
@Fin We need to make a working demo for Rene and his team
Brand and legal get the review request where they work: inbox, email, or their channel. The campaign deadline survives because the approver saw their turn today, not Thursday.For sales enablement
finance / receivables
Active invoices$42,125
Awaiting approval$8,400
Paid this week$31,900
Invoice IdClientCost
#20251Apex Manufacturers$4,2501
#20248Northwind Logistics$2,980
#20245Helios Energy$7,1201
#20242Cedar & Stone LLP$3,5402
#20239Bluefin Capital$5,860
M
Maya2m
Can we confirm the PO before approving this one? @Sarah
1 Reply
A sign-off request on the Q3 forecast reaches the controller as one digest, not a ping per cell. The close calendar holds because no approval waits unseen.For fintech and FP&A
Cotton Supplier Ltd.
Mid Weight Indigo Denim
Farm
AgriCotton Farms
Village Kheda, Gujarat, India
Cotton Yarn1
SpinCo Yarns
18 Narol Rd, Gujarat, India
Manufacturer
DyeWorks International
Calle de Mayo, Mexico
M
Maya2m
Can you attach the GOTS cert for this lot before we approve? @Sean
1 Reply
Sean
The shipment exception notifies your team in-app and the counterparty by email, each seeing only their side. Deskless reviewers get the request without living in your product.For operations
Privacy Risk Review
New feature processing health data
Wren discovered a feature request in Jira involving users' health data and triggered a review after analyzing the PRD in Confluence against company policy and US regulation.
JStarted by Juan Mendez
JMShare
Wren analyzed the PRD against policy and HIPAASee analysis1
Wren recommends a PIA based on the findingsStart
Route the PIA to the Privacy Office for approvalWaiting on PIA1
Discussion
Add a comment
Policy Agent2m
This feature processes PHI, so HIPAA applies. I recommend a PIA and a vendor BAA review before any data flows. @Juan
The attestation request reaches the compliance officer where they work: inbox, email, or their channel. The filing deadline holds because the sign-off was seen today, not the morning it was due.For compliance
Superflow
SaaS Monthly Subscription
JMShare
1 · Subscription & Fees
Customer subscribes to the Service on a monthly basis and shall pay the then-current fees in advance of each billing period. Fees are non-refundable except as expressly set out in this Agreement.
2 · Term & Auto-Renewal
The subscription renews automatically for successive one-month terms unless either party gives at least thirty (30) days' written notice of non-renewal before the end of the then-current term.
3 · Limitation of Liability
Except for breaches of confidentiality, each party's total aggregate liability under this Agreement shall not exceed the fees paid by Customer in the one (1) month preceding the event giving rise to the claim.
4 · Governing Law
This Agreement is governed by the laws of the State of Delaware, without regard to its conflict-of-laws provisions, and the parties consent to the exclusive jurisdiction of its courts.
M
Maya5m
@Jordan Auto-renewal needs 60 days' notice to match our policy, not 30.
J
Jordan2m
@Maya Liability cap is one month of fees — Legal wants 12 months before we sign.
P
Priya8m
@Maya Governing law should be New York to match the MSA.
The redline review reaches outside counsel by email and your team in-app, each seeing only their side. The matter moves because no request waits unread in someone’s queue.For legal
CommentShare
Make the hero headline punchier and add a primary CTA.
Done — rewrote the headline, tightened the subtext, and added a primary CTA in hero.tsx.
Add a logo strip with social proof under the CTA.
Added a five-logo trust strip below the CTA and wired it into hero.tsx.
Edit hero.tsx
Type your prompt
Ship your app in a weekend
Get started
M
Maya2m
Use our brand orange on the CTA and cut the headline to one line. @Sean
Agent findings land in the reviewer’s feed the moment the run completes, batched into one digest. Generated work moves to a human decision instead of waiting to be discovered.For AI-native SaaS
SOC 2 Type IIHIPAAEU data residencyPermission-scoped
Notification content can live on your infrastructure via the self-host data provider, with only minimal identifiers on Velt. Notifications generate only for documents a user can access, so internal deliberation never reaches the wrong inbox. See self-hosting and governance.
Approval requests used to die in unread inboxes. Now the approver gets it in-app and by email the same day, and our campaign deadlines stopped slipping.
Marketing ops lead, content platform
1 digest
Close week used to mean a ping per cell. Batching turned it into one digest a day, and the controller actually reads it.
Controller, FP&A platform
1 day
We had a working inbox the day we dropped in the tool. The pipeline — batching, preferences, email — was already there.
Staff Engineer, ops platform
FAQ
Questions about Notifications.
Install @veltdev/react, wrap your app in VeltProvider with your API key, enable Notifications in the Velt Console, and add the VeltNotificationsTool component where the bell belongs. The panel opens automatically; comment activity flows in with nothing else to wire.
In-app inbox components out of the box. Email through your SendGrid account or any email service via webhooks. Other channels like Slack via webhooks, with a Slack key in the per-user preference API.
Yes. POST custom notifications from your backend through the REST API and they land in the same inbox as comment activity, with full CRUD to update or remove them later.
Yes. Turn on settings on the tool or panel and each user picks all, mine, or none per channel. The same config is settable via REST API, per document or as the org-wide default, and the settings UI channel list is extendable.
Yes. An opt-in delivery pipeline holds notifications, suppresses delivery when the recipient has already seen the activity, and groups the rest into digests before sending. Configured in the Velt Console.
Yes. An agent is a user with type agent, so its comments and findings generate the same notifications as anyone’s: the assigned reviewer gets the agent’s output in their feed with the approve-or-reject step attached.
Knock is general-purpose notification infrastructure: you send it events and it orchestrates delivery across channels at scale. Velt notifications come pre-wired to the review layer: comments, mentions, and review activity generate notifications automatically, the inbox components are included, and your backend adds custom events via REST API. If you need a standalone notification platform for your whole product, that is infrastructure like Knock; if you need your review loop noticed without building the pipeline, that is Velt.
Yes. The notifications data provider keeps notification content on your infrastructure while Velt stores only minimal identifiers. See the self-hosting page.
Velt is priced on usage, not seats: you pay for documents with review activity in a month, and there is a free tier for development and early production. Notifications is part of the SDK, not a separately priced add-on.
@Jordan Auto-renewal needs 60 days' notice to match our policy, not 30.
@Maya Liability cap is one month of fees — Legal wants 12 months before we sign.
@Maya Governing law should be New York to match the MSA.