Ideabug Source
Open source · MIT

Turn user feedback into product excellence

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

Product tour

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

Expanded widget
Expanded widget
Announcement details in the widget
Announcement details
Announcements list in the admin panel
Announcements list
Roadmap view
Roadmap
Tickets list
Tickets
Contacts list
Contacts list
Segments list
Segments
Announcement segment targeting editor
Announcement segment targeting

Deploy in minutes

Everything you need to collect actionable feedback

Announcements
Push product updates straight into the host app's bell. Group by week so a few-per-week cadence never feels noisy. Mark all read or mute future updates with one click.
Bug reports
One-click bug submission with auto-attached page URL, viewport, and user agent. Routed straight to your admin queue, never published.
Feature voting
Users suggest features and vote on existing ideas. Prioritize what to build next based on real demand, not loudest voices.
Public roadmap
Now / Next / Shipped lanes — a shareable roadmap page plus a tab inside the widget. Keep customers aligned with where you're heading.

Two lines of HTML

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.

Why we built it

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.

Why self-host

Your data, your branding, your roadmap

Privacy by design

Contact identifiers never leave your infrastructure. Deploy behind your VPN or expose only the embed endpoint — your call.

Built on Rails

Rails 8 + Postgres + Redis. Hotwire on the front. Docker or plain bin/dev — familiar stack, boring tech.

Segment targeting

Ship announcements to specific user segments via JWT claims. Plan-gated updates, beta cohorts, per-tenant messaging — all without a separate CRM sync.

Yours to fork

Open source under MIT. Customize the widget, the admin UI, the ticket workflow. No vendor lock-in, no seat-based pricing.

Ready to listen better?

Self-host in an afternoon. Your data, your branding, your roadmap.