Description
Visual feedback and bug reporting, pinned right on the page
Send a client or teammate a review link. They click around your site and pin comments directly on the thing they mean — a headline, a button, a broken layout — with a screenshot attached if it helps. No account for them to create, no browser extension to install, no separate feedback tool to learn. „The button on the homepage looks off“ becomes a pin your team can act on, whether it’s a design note or a bug report.
Why teams pick Vifee for website feedback
Pins that actually stay put
Most website feedback tools lose track of where a comment belongs the moment the page changes. Vifee anchors every pin with four fallback strategies — a CSS selector, an XPath, an element offset, and a document-percentage position — so pins survive a theme switch, a viewport resize, lazy-loaded content, and a full DOM rebuild. If the exact element is gone, the pin degrades gracefully instead of vanishing or jumping to the wrong spot.
Nothing leaves your server
Feedback, screenshots, and reviewer details are stored in your own WordPress database and a private, non-public uploads directory. Vifee makes no outbound requests, calls no third-party API, and sends no telemetry. For agencies working with public-sector, healthcare, or legal clients, „the data never leaves our server“ is often a procurement requirement, not a nice-to-have.
A feedback widget, not a per-seat subscription
There’s no per-user or per-project pricing here. You install the feedback widget once and use it on as many review links, client sites, and reviewers as you need.
How the visual feedback workflow works
- A manager creates a review link from the Vifee admin screen.
- A reviewer who opens that link can leave pinned comments, screenshots and replies directly on the live site — no login required.
- Managers triage client feedback from a kanban-style admin screen: status, priority, filters and a detail view with the full reply thread and activity history.
A paid add-on is planned
A separate PRO add-on is planned for agencies managing feedback across multiple client sites. It will be entirely optional — nothing described above is disabled, watermarked, or held back in this free version to encourage an upgrade, and every feature here stays free, forever.
Multisite
Vifee keeps separate feedback for every site of a network. When the plugin is active on a site — individually or network-wide — that site gets its tables, keys, the manage_vifee_feedback capability for administrators and its daily maintenance on its first request, including sites added to the network later. Uninstalling honours each site’s own „delete all data“ setting.
Privacy
Feedback may contain a display name, an optional private email address, technical browser data, replies and screenshots. Optional email addresses are encrypted at rest, using a dedicated encryption key generated on activation, and are never exposed to other reviewers.
Feedback is retained indefinitely by default; there is no automatic expiry, and older feedback must be removed manually from the Vifee admin screen. Review sessions expire automatically after 30 days.
Go to Vifee Settings to opt in to deleting all Vifee feedback, attachments and reviewer data when the plugin is uninstalled. This is disabled by default, so uninstalling the plugin normally leaves your feedback data in place.
This plugin supports the WordPress Tools Export/Erase Personal Data screens. They find guest reviewers by the email they left and signed-in authors by their WordPress account, and cover the profile, submitted feedback, replies and attachments. Erasure replaces the person’s text with a removal notice, clears browser details, deletes their screenshots and ends their review sessions.
Screenshots are stored under random file names in a private uploads subdirectory protected by .htaccess / web.config. On servers that ignore those files (nginx) the random names keep them unguessable; to keep them out of the web root entirely, define VIFEE_PRIVATE_DIR in wp-config.php with a directory outside it.
Credits
Bundled library
The review widget bundles html2canvas (MIT licence, GPL-compatible: https://github.com/niklasvh/html2canvas) to render the on-page screenshot capture entirely in the reviewer’s browser. No image processing happens server-side and no third-party service is involved.
Screenshots




Installation
- Upload the plugin directory to
/wp-content/plugins/. - Activate Vifee Visual Feedback.
- Configure review access and data-retention preferences from the Vifee admin screens.
FAQ
-
Do reviewers need an account or a browser extension to leave feedback?
-
No. A reviewer opens the review link you send them and pins comments, screenshots and replies straight on the live page — no WordPress account, no browser extension, no separate app to install.
-
Can I use Vifee to collect bug reports from clients, not just design feedback?
-
Yes. Every pin has an issue type — Task or Bug — plus a priority and a workflow status, so a client reporting „this form is broken“ and a client suggesting „make this button bigger“ both land on the same triaged board instead of two different inboxes.
-
Can reviewers annotate a screenshot of the page instead of just leaving a comment?
-
Yes. A reviewer can attach a full-page or region screenshot to any pin and mark it up with shapes, arrows and a pixelation blur before sending — so a visual bug report carries the exact picture the manager needs, not just a text description.
-
Does the visual feedback widget work with Elementor, Divi, or any page builder?
-
Yes. The widget loads as a standard front-end script, independent of the theme or page builder that rendered the page, so it works the same way on Elementor, Divi, block-theme, or classic-theme sites.
-
Can I use Vifee for client feedback across multiple websites?
-
Yes — install it on as many WordPress sites as you like at no extra cost; there’s no per-site, per-user or per-project fee. Each installation keeps its own feedback separate from every other one (see „Who can see feedback?“ below for how that works within a single site).
-
Does Vifee send any data outside my WordPress installation?
-
No. Feedback, screenshots and reviewer data are stored in your own database and a private, non-public uploads subdirectory. The plugin does not call any third-party service and does not send telemetry.
-
Who can see feedback?
-
Only WordPress users with the
manage_vifee_feedbackcapability (administrators, by default) and guests who used a valid, unexpired review link can see and submit feedback. The review widget is never shown to ordinary site visitors. Archived feedback is visible only in the admin panel, never in the widget.Note for agencies serving multiple clients on one installation: reviewers authenticated through any valid review link share ONE feedback space per site — a reviewer for Client A can read threads opened for Client B. Scope installations (or use WordPress multisite) accordingly.
-
What happens to feedback when I uninstall the plugin?
-
By default, nothing — your database tables and any stored attachments are left in place so you can reinstall later without losing data. If you want uninstalling to permanently delete everything, enable that under Vifee Settings before you uninstall.
-
Does Vifee require any particular PHP extensions?
-
Yes: the GD extension (for screenshot processing) and the Fileinfo extension (for upload validation) are required in addition to PHP 8.1+. Most hosts enable both by default.
-
Does Vifee work on WordPress multisite networks?
-
Vifee is activated and configured per site, not network-wide. Activating it on one site in a network does not affect any other site, and network-activating it does not automatically set up a new site added to the network afterward — activate it individually on each site where you want it.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“Vifee Visual Feedback – Client Website Review & Bug Reporting” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “Vifee Visual Feedback – Client Website Review & Bug Reporting” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.0.4
- [Fixed] Archived feedback is visible only in the admin panel: the widget shows neither its pins nor its threads, and reviewers can no longer read, reply to, edit or download attachments from archived items.
- [Feature] Reply to feedback from the details panel on the manager board (Markdown supported; Ctrl/Cmd+Enter sends). The thread author is notified as for replies from the widget.
1.0.3
- [Fixed] The widget shows every pin on a page instead of the newest 50.
- [Fixed] The review-link screen lists every link instead of the newest 100, 50 at a time with a „Show more“ button.
- [Fixed] Pages whose query parameters differ only in letter case no longer lose their pins.
- [Fixed] Confirming an unsubscribe shows a page instead of raw JSON.
- [Fixed] Reply notifications to guests no longer link to the admin board they cannot open.
- [Fixed] Impossible due dates such as 31 February are rejected instead of rolling into March.
- [Fixed] A view-only review link no longer offers replying or editing that the server then refuses.
- [Fixed] On multisite every site gets the capability, scheduled tasks and keys it needs; uninstalling cleans every site.
- [Feature] Revoked review links can be deleted permanently.
- [Changed] Review links expired for more than 90 days are deleted with their sessions by the daily maintenance.
1.0.2
- [Security] Attachment files are stored under a random name instead of their public identifier, so a server that ignores
.htaccess(nginx) no longer serves a screenshot to anyone who has seen its id. Existing files are renamed in the background after the upgrade. The newVIFEE_PRIVATE_DIRconstant moves storage outside the web root. - [Security] A reviewer can keep at most 10 unsent attachments at a time.
- [Security] Failed review-link activations are limited per visitor, valid ones to 10 per 15 minutes per link, so reviewers behind one proxy or CDN address no longer lock each other out.
- [Security] Personal-data export and erasure also cover feedback written by signed-in WordPress users; erasure clears browser details and ends the reviewer’s sessions.
- [Performance] Notification e-mails are sent after the response, so posting feedback no longer waits for the mail server.
- [Performance] One fewer database query on every page load, and cheaper reply counts.
1.0.1
- [Security] REST endpoints no longer treat every signed-in WordPress account as a reviewer. Reading feedback, posting it, replying and uploading attachments now require either the
manage_vifee_feedbackcapability (administrators, by default) or an active review-link session. Before this release, on a site that lets visitors register, any signed-in account could read every feedback item and screenshot and add its own — without a review link and without being a feedback manager. The widget never offered those actions to such an account, but the REST API accepted them. - [Fixed] A reviewer who happens to also be signed in to WordPress under an unrelated account is now served the widget and works as the guest their review link makes them, instead of being shut out.
- [Fixed] Opening a review link with a name made only of spaces returned a server error instead of telling the reviewer the name is required.
- [Fixed] Comment or reply text containing control characters could break the notification e-mail and turn a comment that had in fact been saved into an error response.
- [Fixed] A notification or add-on listener that fails no longer turns a saved comment into an error response.
- [Fixed] Fresh installations no longer replay historical database migrations. One of them re-created a column wide enough to exceed the database row limit, which could leave the schema incomplete on some hosts.
- [Fixed] The request rate limiter no longer stops counting on object-cache backends without an atomic increment, and no longer writes a log line on every request there.
- [Fixed] Two simultaneous first requests could each generate a different encryption key and the loser’s key was kept, permanently invalidating every review link and stored reviewer address derived from it.
- [Fixed] The daily retention sweep now clears its whole backlog instead of at most 100 rows a day, so expired sessions and abandoned uploads can no longer pile up faster than they are removed.
- [Fixed] REST clients that authenticate with Application Passwords (rather than a browser session) can now write.
- [Performance] The feedback list no longer runs three unindexed text comparisons per row when no search term is given, and the table gained an index for the default sort order.
- [Performance] Editing or deleting a feedback item costs one database read instead of four, and the review-link screen no longer queries once per row.
- [Performance] Private attachment storage is prepared only when a request actually reads or writes a file, instead of on every REST request the site serves.
- [Feature] New
vifee_admin_feedback_filtersfilter: an add-on can narrow the manager board by handing it auuidSourcedescriptor, resolved as a SQL subquery against the add-on’s own table. - [Changed] Notification e-mails are now sent as HTML with a plain-text alternative: the comment sits in a quoted block, the page, priority and status are listed as details, and a button opens the feedback board. Nothing in the message is loaded from the network — no images, no web fonts, no tracking pixel — so reading one tells the sender nothing.
- [Changed] The
uuidIn/uuidNotInrequest parameters on the manager feedback endpoint are gone, replaced by the filter above — they required shipping a list of identifiers over HTTP. - [Changed] Two tables created but never used by any release are dropped on upgrade.
1.0.0
- First public release.
