Self-hosted feedback widget

Feedback and bug reports, without leaving your app.

Echo embeds a real feedback panel directly into your web app — no redirect to a separate site, no login required for your users. Runs multiple apps and projects from a single self-hosted, EU-hosted instance instead of a third-party service reading through your users' reports.

This page runs on Echo itself — the icon in the header is the real widget.

Why Echo exists

Most in-app feedback tools force a trade-off: either a real embedded widget with no clean way to run it across several apps, or a solid multi-project setup that only works with an external redirect instead of an actual panel on your own page. Echo gets both at once.

📥

Embedded, not redirected

The panel lives right on your page. Users never leave your app or create an account.

🗂️

Multi-app from one instance

Separate apps and categories, cleanly filtered, all served from a single shared Echo deployment.

🇪🇺

Self-hosted & EU-hosted

Your own infrastructure, your own data. No analytics SDK bundled into the widget itself.

🛡️

Spam protection without friction

A quiet honeypot field and basic rate limiting — no CAPTCHAs in front of your users.

✉️

Reply by email, in-thread

Admin replies go out by email, threaded against the same conversation the reporter already has open.

🔗

One-click GitHub sync

Turn a report into a GitHub issue. Status changes and comments on GitHub flow back automatically.

See it in action

Submissions list with filters, status pills, and inline actions

Submissions list — click any value to filter by it

Submission detail view with full history timeline

Full report detail, timeline included

Submissions list, full size Submission detail, full size

How a report gets handled

Reply form, sends an email threaded to the reporter

Reply straight from the admin view — it goes out by email, threaded against the reporter's own inbox.

Timeline showing a note, a sent reply, and a GitHub status change

Every reply, internal note, and GitHub status change lands in one timeline — nothing gets lost between tools.

GitHub issue link and create-issue button

Turn a report into a GitHub issue with one click. Close it on GitHub, and the status syncs back automatically.

Filter toolbar for app, category, status, and search

Filter the list by app, category, status, sender, or page — or just click any value in a row to filter by exactly that.

Reply panel, full size Timeline, full size GitHub sync, full size Filters, full size

Anonymous by default

Submitters stay anonymous; an email address is optional, only for follow-up. Nothing is collected in the background — only what's actively submitted through the form.