Skip to content

Your users point at the screen. Your team fixes it.

Paste one line into your product and a feedback button appears. Reporters click the element and describe what happened. You get the marked screenshot, the selector, console errors and failed requests.

What you get today

“It broke when I tried to check out”

What Clixy deliversBug
Element
[data-clixy-id="finalizar-compra"]
Page
/carrinho
Console
TypeError: cannot read property total of undefined
Network
POST /api/checkout 500 · 412 ms
Browser
Safari 18 on macOS, 1440×900

Every team knows these lines.

“it doesn’t work”“it broke at checkout”“a filter here would be nice”“this number is wrong”

Each one costs a full round trip just to find out where to look. With Clixy, the report already says where the problem is.

Three steps

From snippet to commit, without leaving the tools you use.

1

Paste one line

Works with React, Vue, Angular, Rails or WordPress. The widget’s styles are isolated: nothing leaks in or out.

<script src="https://app.clixy.app/w.js" data-key="pk_live_..." async></script>
2

Your user points and describes

The widget opens in the reporter’s language. They pick a category, tap the element and type. Everything else is collected automatically.

BugInterfaceWrong dataSuggestion
3

The report lands where your team works

The dashboard is on every plan. Tracker and agent come with Developer.

Dashboard · status, priority and assigneeGitLab · GitHub · issues by category and pageMCP · your agent reads and acts

What comes with every report

None of it is typed by the reporter.

Screenshot with the spot marked

Cropped around the element. Passwords and anything you tag with data-clixy-mask are blurred.

Element selector

Prefers data-clixy-id, data-testid and id, so you find the right component in your code.

Console errors

Captured from page load. The error behind a bug usually happens minutes before anyone complains.

Failed requests

Method, URL, status and duration of anything that returned 4xx, 5xx or never answered. Tokens in URLs are stripped before sending.

Feedback#128

“It broke when I tried to check out”

BugHigh4 reports
ConsoleTypeError: cannot read property total of undefined
NetworkPOST /api/checkout 500 · 412 ms
TriageOpen issue
Customers · 24Team · 9
It broke when I tried to check outproduction
The shipping cost is wrongproduction
Coupon applied twicelocalhost
In reviewDeveloper plan

Your team’s testing never looks like customer complaints

Development and staging. PMs, QA and reviewers report from there. Localhost is classified automatically; you mark staging on the origin.

Outside your quota. Team reports don’t count against live reports.

Honest metrics. A bug QA tested ten times doesn’t show up as ten unhappy customers.

GitLab · GitHubDeveloper plan

Feedback becomes an issue where your team already works

Full context in readable markdown, in the right repository by category and page path. Close the issue and the feedback closes here; reopen it and it reopens. Labels added by hand stay put.

Routing rules
Bug/carrinho/*aurora/checkout
Suggestionaurora/ideias
Everything elseaurora/loja
For teams working with agentsDeveloper plan

Your agent reads the feedback

One MCP key per person. Claude Code, Claude Desktop or Cursor can read, comment on and change the status of reports, no copy and paste.

claude mcp add --transport http clixy https://app.clixy.app/mcp/ --header "Authorization: Bearer sk_live_..."

list_projectslist_feedbackget_feedbackupdate_feedbackcomment_feedbackfeedback_stats

List the open interface bugs from this week.

There are three. The most reported is the checkout button: four reports, all with a TypeError for undefined total on /carrinho.

Fix the first one.

Total was read before the cart loaded, in Checkout.tsx. I fixed it and marked the feedback as resolved.

Details that matter

The widget runs inside your product. It’s built with that in mind.

13.9 kBon load

The screenshot library is only downloaded when someone asks for a screenshot.

Shadow DOMfull isolation

Your site’s CSS can’t reach the widget, and the widget’s CSS never leaks into your page.

No IPthe address is never stored

Only a hash of it, used to limit abuse.

Fixed originthe key alone isn’t enough

What authorizes a report is the list of origins you register.

Plans

Every report is the same on every plan: screenshot, selector, console and network. What changes is the channel and who acts on it.

Questions

Will the widget slow down my site?

It loads asynchronously and weighs 13.9 kB compressed. The heavy part, the screenshot library, only downloads when someone asks for a screenshot.

What happens when I go over my quota?

On Free, the button goes offline until the next month. On Customer and Developer, the button stays on and extra reports are billed as overage. During the beta, the quota is not billed yet.

What if someone copies my public key?

The key identifies the project, it doesn’t authorize sending. Only registered origins can send feedback, with rate limits per address and per project.

Does the screenshot capture sensitive data?

Password fields are blurred. Any other element is blurred if you tag it with data-clixy-mask. Screenshots can also be turned off per project.

Is it only for bugs?

Projects start with bug, interface, wrong data and suggestion, and you can change them. All arrive with the same technical context.

Do I need an AI agent?

The dashboard works on its own on every plan. Agent and tracker are on Developer, for teams that want to skip copy and paste.

Does it work with my framework?

It’s a plain script tag. If your page runs in a browser, the widget runs on it.

What language does the widget show?

The reporter’s browser language, or a fixed language you choose per project.

Start with your first project

Creating an account, grabbing the key and pasting the snippet takes less time than reading this page.

Create a free account