Visitor Feedback
An on-site feedback widget for review environments. Visitors pin any element, leave a comment, and see live replies — while you and your agents read, answer, and close items through the list_feedback / respond_to_feedback MCP tools.
Enabling the Widget
Feedback lives on dev/staging environments only — it can never be enabled on the default (live) environment, where every visitor would see it. Toggle it per environment:
update_environmentwithfeedback_enabled: true, orcreate_environmentwithfeedback_enabled: truefrom the start.
The widget renders on every page of a feedback-enabled environment (and its attached hostnames). It is served with the site's own theme (daisyUI variables) and follows the site's light/dark mode, localized to the site language, and isolated in a shadow root so site CSS cannot break it.
The Launcher
A floating Feedback button sits in the bottom-left corner — clear of the PageWeave watermark, which owns the bottom-right. It is:
- Draggable — visitors can move it anywhere; the position is remembered per browser.
- Minimizable — collapses to the button when not in use.
- Stacked above the preview badge on dev/staging pages that render one.
The button shows the PageWeave logo before the "Feedback" label, and the widget footer links to PageWeave ("Powered by PageWeave").
Leaving Feedback
- Click the floating Feedback button.
- Optionally click Point at an element and then click any element on the page — this pins the feedback to that element (a colored marker with a short id appears on it). Pin mode highlights the element on hover.
- Write the message and send. The first time, the widget asks for name and email — once answered, they are remembered for later visits (stored in the browser's local storage, never in cookies).
Email addresses are shown only to the site owner (via the MCP tools and notifications) — never to other visitors.
Pins and Threads
Pins are live: they show the reply count, and clicking one opens its thread. Everyone with access to the environment sees all feedback and pins. The original reporter can reply in their own thread; site agents reply from their side. Statuses: open, in_progress, completed (fixed), closed (won't fix/archive). Reopening an item clears its resolution timestamp.
Feedback is website-scoped: an item left on one feedback-enabled environment of the site appears on all of them.
Element Context
Pinned feedback captures structured context about the element so agents can locate and edit the exact spot without re-rendering the page:
- Element tag, text, and HTML, plus its bounding rect
- DOM ancestry (the element's path through the document)
- The surrounding section's HTML (shrink-to-fit, target marked)
- The nearest heading, plus scroll position, device pixel ratio, and screen size
list_feedback list rows carry the element text and heading; the full capture rides on the single-item fetch. A screenshot of the pinned element is attached automatically — it renders the viewport with the element outlined and the short-id pill, so vision-capable agents can see what the visitor saw.
The Open-Inbox Cap
A website keeps at most 100 open/in-progress feedback items. When the inbox is full, visitors see a friendly "inbox full" message and the owner is notified — close or complete items to free space. Closed and completed items don't count.
Reading and Answering via MCP
list_feedback— list feedback (filter bystatusorpath), or fetch one item by short id / UUID. List rows includeelement_textandheading; single-item results add the fullcaptureandscreenshot_url, a signed link (1 hour) to the pinned-element capture — vision-capable models can fetch it.respond_to_feedback— post a reply and/or set the status. Replies are plain text and appear in the visitor's thread immediately.
Ids are the 8-character short_id shown on the page pin; a unique 4+ character prefix also resolves.
Notifications
New feedback lands in the dashboard inbox of everyone who can act on the website. The notification card links to the page the feedback was left on ("Visit page", same tab) — the link resolves through the environment the widget ran on, so draft-only pages open correctly.
Abuse Protection
Feedback endpoints are rate-limited per IP, size-capped, and protected by an invisible honeypot field. Screenshots are capped at 2 MB and verified as real images by content sniffing, regardless of the declared file type.