Planish
Great products are refined, not just built.

Turn user feedback into better products.

Collect feedback from your users, right where it happens: inside your website or Flutter app. Planish captures the context and gives your team everything it needs to improve.

Reports stay on the device until they’re submitted.

Software is never really finished.

A report is only as useful as its context.

The best products aren’t built once. They’re refined continuously, one report at a time. Yet by the time a report reaches a developer, it has been forwarded, rewritten and stripped of everything that would help act on it.

Today
Fwd: Fwd: Re: problem on the site3 days
CL
Client · MondayHi, the button doesn’t work. See screenshot.IMG_2291.png
PO
Product owner · WednesdayCan you look at this? Not sure which page it is.
DV
Developer · ThursdayWhich page? Which version? What happened just before?
With Planish
Save button does nothingJust now
CL“Nothing happens when I click Save.”
Page
/invoices/1042
Version
2.4.1 · build 318
Pointed at
button “Save invoice”
Browser
Chrome 130 · macOS
Error
TypeError in computeTotal
Just before
GET /api/tax-rates → 404
Screenshot, logs and network attached. Straight to the developer.

Every thought deserves a place.

Whether someone spots a bug, has an idea or a question, or wants to share an observation, they do it inside your website or app.

  1. 1Choose what to share: a bug, an idea, a question.
  2. 2Point at what matters: select an element, add a note, annotate the screenshot.
  3. 3Send it. Planish captures the relevant context automatically.
Website<script src="/widget/v1.0.0.js?s=be7c9cd1" data-key="pl_…">One script tag, any site. Your colours and logo, or a headless mode with your own form.
Flutterbuilder: Planish.builder()iOS and Android, opened by a button or a shake. Open source (MIT).
Same report, same inbox, on the web and in your Flutter app.

Not just what’s broken.

One place to make your product better.

ProblemsSomething doesn’t work as expected.
IdeasSomething could work even better.
QuestionsSomething isn’t clear.
Anything elseSomething deserves your attention.

Point to what matters.

No more vague descriptions or screenshots without context. Point directly at an element to describe a problem, suggest an improvement or explain what you’d like to see.

Each pin a tester drops arrives as an element, not a guess: its CSS selector, its visible text and the tester’s note.

That gives developers and AI agents a precise starting point for finding the relevant code.

In the reportWhat they pointed at
/invoices/1042
1
“Nothing happens when I click.”
Selector
form#invoice button[type=submit]Copy
Text
“Save invoice”
Element
button
2
“Total shows NaN.”
Selector
div.invoice-total > spanCopy
Text
“€ NaN”
Element
span

The full technical picture.

No more “which version?” What the page or the app was doing comes with every report.

14:02:11.204nav→ /invoices/1042
14:02:12.881fetchGET /api/invoices/1042 · 200 · 84 ms
14:02:13.019fetchGET /api/tax-rates · 404 · 212 ms
14:02:13.020errorTypeError: Cannot read properties of undefined (reading 'rate')
14:02:19.442clickbutton “Save invoice”
14:02:21.107consolewarn Form submit ignored: total is NaN
On the webConsole messages, uncaught errors, failed resources, fetch and XHR calls with status and timing, clicks, navigation, browser, OS, screen size, page URL and title.
In FlutterThe log timeline, screen changes, HTTP calls, uncaught errors with the widget that caused them, lifecycle, device, app version, build commit, and the previous launch’s logs after a crash.

It lands with the right person.

No forwarding. Screenshot first, then the pins, the error and stack trace, and a log timeline that jumps to “around the error”. Status, priority, assignee and comments, autosaved.

A Planish report: screenshot, error, stack trace, log timeline and triage fields. A Planish report: screenshot, error, stack trace, log timeline and triage fields.
TriageNew, triaged, in progress, fixed, won’t fix, duplicate. Priority, assignee, issue link.
Filters & searchPlatform, version, environment, error, previous crash, assignee. Search messages, errors, screens and emails.
Comments & historyComments for the team, in Markdown, alongside the full history of every report.
My queueWhat’s assigned to you, and an overview of every app with trends.
Built for coding agents

Give your coding agent the full picture.

No more rewriting reports or hunting for missing context. Planish gives Claude Code, Cursor or Codex a structured brief: what the user said, what they pointed at, the error and what the app was doing, so your agent, or your developer, gets straight to the problem.

Copy a ready-to-use brief, or connect through MCP.

MCP endpointConnect an agent with a personal token. It lists apps and reports, reads briefs and logs, changes status and adds comments, only within the apps you can see.
Agent-ready integrationThe Flutter package ships instructions an AI agent follows to integrate it.
brief-4e2c0d3a.mdCopy brief for AI
# Harbor 2.4.1 (staging, 9f3c1e2) — bug — /invoices/1042 — 2026-10-21 14:02

**Message**: Nothing happens when I click Save.

## Summary
- 1 error(s), 1 warning(s) in the log timeline
- Error: TypeError: Cannot read properties of undefined (reading 'rate')

## Pointed at on the page
1. `form#invoice button[type=submit]` (button "Save invoice")
2. `div.invoice-total > span` (span "€ NaN"): Total shows NaN

## Timeline (6 of 6 entries)
14:02:13.019 INFO [http] GET /api/tax-rates 404 (212 ms)
14:02:13.020 ERROR [uncaught] TypeError: … reading 'rate'
14:02:19.442 INFO [click] button "Save invoice"

Secrets stay on the device.

Passwords, tokens and masked areas are removed on the device before a report is sent. What’s left reaches Planish Cloud only when the report is submitted.

Redacted before sendingPassword fields, tokens and auth headers are removed on the device, and [data-planish-mask] areas are blanked in the screenshot. The rest of the report travels over HTTPS to Planish.
Send-only keysIngest keys can only send, never read. The widget only accepts the sites you allow.
Retention you chooseSet how long reports are kept for each app. Older ones are deleted automatically.
Your data, your callDelete your account and all its data yourself, any time.

Free to start.

Move to Team when your testers and apps grow.

Free€0
  • 1 app
  • 3 members
  • 500 reports a month
  • Reports kept 60 days
  • 250 MB of screenshots and logs
Start free
TeamOn request
  • Unlimited apps
  • 5 members
  • 10,000 reports a month
  • Reports kept 365 days
  • 10 GB of screenshots and logs
Contact us

Both plans: the web widget, the Flutter package, the AI brief and the MCP endpoint.

Questions

Is the key on my website a secret?

No. It can only send reports, never read them, and Planish only accepts reports from the sites you list. Load the widget in test and staging builds, not in production.

Does it replace Sentry or Crashlytics?

No. They watch crashes in production; Planish is for what people see and report. The Flutter package chains error handlers, so both keep working.

Can I use Planish without an account, or with my own backend?

In Flutter, yes: the package is free and open source (MIT) and can send reports by email, to your own API or to Planish Cloud. The web widget always sends to Planish Cloud, so it needs an account.

What happens to my data?

Submitted reports are stored on servers in Paris, France (Hostinger). Each app keeps them as long as you set, up to 60 days on Free and 365 days on Team; older ones are erased every night. You can delete your account and all its data yourself.

Does Planish send reports automatically?

No. Reports stay on the device until they’re submitted: by the tester from the form, or by your own code calling Planish.send() (the web widget’s headless mode, or the Flutter API). Drafts, including automatic ones, never leave the device.

Can I self-host Planish?

Not yet. Planish Cloud is hosted only; meanwhile the Flutter package can send to your own API.

Which platforms?

Any website; Flutter on iOS and Android. Web and desktop builds of a Flutter app compile but are not tested yet.

What about the screenshot on mobile?

It covers Flutter content; platform views (maps, web views, native video) appear blank.

Give testers a button. Give developers the full story.

Free to start. One script tag or one Flutter package.