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 default dev environment created with every new website ships with the widget already enabled. Existing websites can turn it on per environment with update_environment.
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 — before your first feedback or your first reply — 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 reach the site owner through the MCP tools (and notifications for new feedback) — never 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 — and anyone with access can reply in any thread. Site agents reply from their side; visitors reply under the name they provide. Statuses: open, in_progress, completed (fixed), closed (won't fix/archive). Reopening an item clears its resolution timestamp. Closed items take no visitor replies — leave new feedback to raise something new. Completed items stay open for "still broken" follow-ups, and agents can always reply, including on closed items.
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. Replies carry the replier'sauthor_emailwhen given — contact data, never exposed to other visitors.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. Visitor replies are capped at 100 per item and closed items reject them — agents are never blocked, so the site owner can always answer. Screenshots are capped at 2 MB and verified as real images by content sniffing, regardless of the declared file type.