Feedback that doesn’t get lost.
Ozvi collects bug reports and ideas inside your app, delivers them to your team where it already works, and tells the reporter how it turned out. In your brand’s language and colours.
The Free plan needs no card. Self-hosted, it’s free with every feature.
One report, from click to reply
- 1
A user reports a bug
Right inside your app, with no extra account. The widget attaches a screenshot, version, browser and console errors, and blurs passwords and marked fields before anything leaves the browser.
POST /api/widget/items → 201 - 2
Your team gets it where it works
By e-mail, in Slack or Discord, and as a GitHub issue in one click. Status stays in sync between Ozvi and GitHub.
item.linked → acme/app#482 - 3
Fix it from your editor
The MCP server gives Claude Code, Cursor or VS Code access to reports: find related ones, merge duplicates and set the status with the fix version.
set_status #128 fixed --version 2.15 - 4
The reporter hears back
An e-mail at every change, with the version number on release. One click confirms it works, and the report closes.
mail bug_status → delivered
- 10.5 kB
- Widget, gzipped. Runs in shadow DOM and never touches your styles or scripts.
- HS256 / OIDC
- Sign-in from your app. Users never create another account.
- 11 tools
- MCP server for AI assistants: search, duplicates, statuses, release notes.
- RLS
- Each project is isolated in Postgres at row level, not just in app code.
Two flows. One overview.
Bugs stay private between the reporter and your team. Ideas are public so others can back them. Both follow a route the reporter can see.
Bug
Private. Screenshot, page, version, browser and console errors arrive on their own.
- ReceivedOnly the reporter and team see it.
- ConfirmedYou reproduced and triaged it.
- In progressThe team is working on it.
- FixedThe fix is in a release; the reporter gets the version.
- VerifiedThe reporter confirmed it works.
Idea
Public on the board. Voting, comments, roadmap and release notes.
- ProposedOthers vote and add context.
- PlannedScheduled for an upcoming release.
- In progressThe team is working on it.
- ShippedVoters got an e-mail.
Wire it up over lunch. Not over a sprint.
A widget script and one endpoint that signs the user in. Everything else is API: webhooks, GitHub and MCP for AI assistants.
- A bug on the board becomes a GitHub issue in one click, and its status syncs back.
- E-mails go through an outbox in the database. Nothing is lost when SMTP is down.
- Every e-mail and webhook delivery is visible in the console, errors included.
<script src="https://ozvi.io/widget.js" defer></script>
<ozvi-widget
project="acme"
token-url="/api/ozvi-token"
app-version="2.15.0"
lang="en"
></ozvi-widget>A button, a bug form with screenshot, and ideas. The language follows the lang attribute or the page.
Looks like your app. Not like us.
Try it. This board is real: vote, open an idea, leave a comment or suggest your own. Then style it in the editor exactly as you would in your project settings.
Text contrast passes (WCAG AA).
- Maria K.2Planned
- Jane T.1In progress
- Luke B.Suggested
What you can set
- Colour
- Five colours: accent, text, surface, canvas and borders. Plus a separate palette for dark mode.
- Type
- Any Google Font or the system font, separately for text and headings. We serve fonts from our own server, so visitors never connect to Google.
- Shape
- Corner radius from 0 to 24 px, and list density.
- Logo and domain
- Your logo and your own domain, like feedback.yourcompany.com. From Pro, without the Ozvi badge.
- Voting
- Upvotes or importance ratings, with an optional monthly vote budget.
- Everywhere
- One theme styles the board, the widget inside your app and the e-mails.
No custom CSS or templates. A theme is only a set of tokens, so the board never breaks on an update and stays accessible.
Pay per year. Not per seat.
No limits on users or records. You pay only for what costs us money: e-mail, storage and domains. Prices exclude VAT.
Free
€0forever, no card
- Projects
- 1
- E-mails per month
- 1,000
- Attachments
- 1 GB
- Custom domain
- No Ozvi badge
- AI: duplicates and summaries
- Users and records
- unlimited
- MCP, GitHub, webhooks, SSO
Pro
€19per year, or €6 per quarter
- Projects
- 3
- E-mails per month
- 10,000
- Attachments
- 10 GB
- Custom domain
- No Ozvi badge
- AI: duplicates and summaries
- Users and records
- unlimited
- MCP, GitHub, webhooks, SSO
Studio
€49per year, or €15 per quarter
- Projects
- unlimited
- E-mails per month
- 50,000
- Attachments
- 50 GB
- Custom domain
- No Ozvi badge
- AI: duplicates and summaries
- Users and records
- unlimited
- MCP, GitHub, webhooks, SSO
| Plan | Free€0forever, no card | Pro€19per year, or €6 per quarter | Studio€49per year, or €15 per quarter |
|---|---|---|---|
| Projects | 1 | 3 | unlimited |
| E-mails per month | 1,000 | 10,000 | 50,000 |
| Attachments | 1 GB | 10 GB | 50 GB |
| Custom domain | |||
| No Ozvi badge | |||
| AI: duplicates and summaries | |||
| Users and records | unlimited | unlimited | unlimited |
| MCP, GitHub, webhooks, SSO | |||
| Start for free | Choose Pro | Choose Studio |
Self-hosted: €0, every feature.
One Docker image and Postgres. Nothing locked behind a plan. Source-available under the FSL, which converts to Apache 2.0 after two years.
# Ozvi + Postgres
docker compose up -d
# first project
docker compose exec ozvi node ozvi.mjs \
project:create acme "My App"Give your users a voice. And answer them.
The Free plan needs no card and never expires.