Pendo Feedback → Mushi Mushi
Hours Low riskPendo retired classic Feedback on August 1, 2026. Its replacement is Pendo Listen. Pendo’s notice says classic Feedback data could be retrieved until November 1, 2026 and is permanently deleted after that; export it from Pendo settings if you still can. See Pendo’s retirement notice .
Pendo also covers product analytics, in-app guides and NPS surveys. This guide moves in-app feedback and bug reports to Mushi Mushi while you keep Pendo for the rest. The two tools share user identity through one identify function.
Why switch (the feedback piece)
- AI triage built in. Mushi Mushi’s two-stage classifier categorises and prioritises each report.
- Reproduction context. Mushi Mushi captures console, network, a screenshot and a DOM summary with each report, so you aren’t relying on the user’s description alone.
- Self-host and open source. Mushi Mushi SDKs are MIT and the server is AGPLv3.
- Built for developers. Mushi Mushi’s console is for triaging and fixing bugs; it also has a feature board where reporters vote on ideas.
API mapping
const mushi = Mushi.init({...}) returns the instance used below.
| Pendo | Mushi Mushi |
|---|---|
pendo.initialize({ visitor: { id, email } }) | const mushi = Mushi.init({ projectId, apiKey }) + mushi.setUser({ id, email }) |
pendo.identify(visitor, account) | mushi.setUser({ id, email, name }) + mushi.setMetadata('accountId', account.id) |
pendo.track('event', props) | For repro context on the next report: mushi.addBreadcrumb({ category: 'custom', level: 'info', message: 'event' }). For product analytics: mushi.track('event_name', props) (names must be snake_case; not attached to reports) |
| A button that opened classic Feedback | mushi.open(), or the Mushi Mushi launcher (a floating button on desktop, an edge tab on phones) |
| Feedback ideas board | Mushi Mushi feature board (reporters vote), or Reports filtered to feature requests |
Recipe: keep Pendo for analytics + guides; use Mushi Mushi for feedback
import { Mushi } from '@mushi-mushi/web'
// 1. Initialise both
window.pendo.initialize({
visitor: { id: 'user-42', email: 'jane@example.com' },
account: { id: 'acme-corp' },
})
const mushi = Mushi.init({
projectId: 'YOUR_PROJECT_ID',
apiKey: 'YOUR_PUBLIC_KEY',
})
// 2. Mirror identity
mushi.setUser({ id: 'user-42', email: 'jane@example.com' })
mushi.setMetadata('accountId', 'acme-corp')Now Pendo handles analytics and product guides; Mushi Mushi handles feedback intake and triage.
Migration checklist
- Step 01Create a Mushi Mushi project
- Step 02Install Mushi Mushi alongside Pendo
- Step 03Initialise Mushi Mushi in your app entry
- Step 04Mirror pendo.identify into mushi.setUser
- Step 05Mirror critical pendo.track calls as Mushi Mushi breadcrumbs
- Step 06Remove links and buttons that opened classic Feedback
- Step 07Export historical classic Feedback data (if it is still available)
- Step 08Update internal runbooks
- Step 09Submit a test report and verify pipeline
Feature parity
| Capability | Pendo | Mushi Mushi |
|---|---|---|
| In-app feedback | Classic Feedback retired 2026-08-01; Pendo Listen replaces it | ✅ (widget) |
| Console + network capture | not checked | ✅ |
| Screenshot capture | not checked | ✅ |
| Idea voting | ✅ | ✅ (feature board) |
| Product analytics | ✅ | ✅ (basic, from mushi.track()) |
| In-app guides / tooltips | ✅ | ❌ |
| NPS surveys | ✅ | ❌ |
| Self-host | not checked | ✅ |
The takeaway: keep Pendo for analytics, guides and NPS; send feedback and bug reports to Mushi Mushi.