Self-hosted feedback platform: in-app announcements, bug reports, feature requests with voting, and a public roadmap — all driven by a single embeddable widget.
No SaaS lock-in · Your data stays on your servers · Two lines of HTML to embed
See the widget and admin UI in action
Embedded feedback surfaces for end users, plus a lightweight admin backend for announcements, contacts, segments, tickets, and roadmap work.
Click any screenshot to enlarge it
Everything you need to collect actionable feedback
Add the widget to any page
<div id="feedback"></div>
<script src="https://ideabug.yourdomain.com/script.js"
data-ideabug-host="https://ideabug.yourdomain.com"
data-ideabug-target="#feedback"
defer></script>
No auth required: on first load the widget calls
POST /api/v1/identity, stores the returned
anonymous_id in browser localStorage, and
re-sends it as X-Ideabug-Anon-Id on later requests.
Optionally pass a JWT to merge that anonymous history into an
identified contact without losing read state or votes.
Built from an internal product need
We needed an elegant way to surface recent announcements, feature requests, and bug reports inside a product without shipping customer identifiers to a third-party widget vendor.
Most off-the-shelf options assumed hosted infrastructure and outbound data collection. For teams that care about privacy, control, and self-hosting, that tradeoff was wrong by default.
So we built IdeaBug. Anonymous by design, self-hosted, and with the full data lifecycle under our control — from the moment an announcement is written to the moment a user marks it read. Then we open-sourced it so other teams do not have to rebuild the same stack from scratch.
The widget starts with an opaque browser-scoped contact key, not a first-party user identifier. Only if you intentionally provide a JWT does IdeaBug upgrade that history into an identified contact and merge anonymous reads, votes, and tickets forward.
Your data, your branding, your roadmap
Contact identifiers never leave your infrastructure. Deploy behind your VPN or expose only the embed endpoint — your call.
Rails 8 + Postgres + Redis. Hotwire on the front. Docker or plain
bin/dev —
familiar stack, boring tech.
Ship announcements to specific user segments via JWT claims. Plan-gated updates, beta cohorts, per-tenant messaging — all without a separate CRM sync.
Open source under MIT. Customize the widget, the admin UI, the ticket workflow. No vendor lock-in, no seat-based pricing.
Self-host in an afternoon. Your data, your branding, your roadmap.