{"id":338543,"date":"2026-07-23T13:47:52","date_gmt":"2026-07-23T13:47:52","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/phildesigns-client-review\/"},"modified":"2026-07-23T13:47:27","modified_gmt":"2026-07-23T13:47:27","slug":"phildesigns-client-review","status":"publish","type":"plugin","link":"https:\/\/oci.wordpress.org\/plugins\/phildesigns-client-review\/","author":6264553,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.0","stable_tag":"1.1.0","tested":"7.0.2","requires":"6.7","requires_php":"8.0","requires_plugins":null,"header_name":"PhilDesigns Client Review","header_author":"PhilDesigns","header_description":"Send clients a private preview link to annotate your site before launch. Includes responsive device switcher, visual pin annotations, and an admin review dashboard.","assets_banners_color":"252625","last_updated":"2026-07-23 13:47:27","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/github.com\/phil-designs\/client-review","header_author_uri":"https:\/\/phildesigns.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":49,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.0":{"tag":"1.1.0","author":"PDidee","date":"2026-07-23 13:47:27"}},"upgrade_notice":{"1.1.0":"<p>Internal renaming and a security fix to the annotation status endpoint \u2014 safe to update, no admin action required.<\/p>","1.0.0":"<p>Initial release.<\/p>"},"ratings":[],"assets_icons":{"icon-256x256.png":{"filename":"icon-256x256.png","revision":3620089,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.jpg":{"filename":"banner-1544x500.jpg","revision":3621473,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3620089,"resolution":"1","location":"assets","locale":"","width":1104,"height":1520},"screenshot-2.jpg":{"filename":"screenshot-2.jpg","revision":3620089,"resolution":"2","location":"assets","locale":"","width":980,"height":1081},"screenshot-3.jpg":{"filename":"screenshot-3.jpg","revision":3620089,"resolution":"3","location":"assets","locale":"","width":2756,"height":1578},"screenshot-4.jpg":{"filename":"screenshot-4.jpg","revision":3620089,"resolution":"4","location":"assets","locale":"","width":2755,"height":1563},"screenshot-5.jpg":{"filename":"screenshot-5.jpg","revision":3620089,"resolution":"5","location":"assets","locale":"","width":1826,"height":536},"screenshot-6.jpg":{"filename":"screenshot-6.jpg","revision":3620089,"resolution":"6","location":"assets","locale":"","width":1840,"height":373},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3620089,"resolution":"7","location":"assets","locale":"","width":2150,"height":2278},"screenshot-8.jpg":{"filename":"screenshot-8.jpg","revision":3620089,"resolution":"8","location":"assets","locale":"","width":1649,"height":2615}},"screenshots":{"1":"Preview shell with pin annotations and the comment sidebar open","2":"Generating a new invite link in the admin dashboard","3":"Invite links table showing status (Active \/ Used \/ Expired)","4":"Reviews dashboard \u2014 reviewer list on the left, annotations on the right","5":"Annotation card with status dropdown and admin note field","6":"Registration form clients see when opening their invite link","7":"Login page for returning clients","8":"Settings page \u2014 typography, accent colour, and button customisation"}},"plugin_section":[],"plugin_tags":[15354,156887,108,2475,15653],"plugin_category":[42],"plugin_contributors":[272989],"plugin_business_model":[],"class_list":["post-338543","plugin","type-plugin","status-publish","hentry","plugin_tags-annotations","plugin_tags-client-review","plugin_tags-feedback","plugin_tags-preview","plugin_tags-site-review","plugin_category-contact-forms","plugin_contributors-pdidee","plugin_committers-pdidee"],"banners":[],"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/phildesigns-client-review\/assets\/icon-256x256.png?rev=3620089","icon_2x":"https:\/\/ps.w.org\/phildesigns-client-review\/assets\/icon-256x256.png?rev=3620089","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/phildesigns-client-review\/assets\/screenshot-1.png?rev=3620089","caption":"Preview shell with pin annotations and the comment sidebar open"},{"src":"https:\/\/ps.w.org\/phildesigns-client-review\/assets\/screenshot-2.jpg?rev=3620089","caption":"Generating a new invite link in the admin dashboard"},{"src":"https:\/\/ps.w.org\/phildesigns-client-review\/assets\/screenshot-3.jpg?rev=3620089","caption":"Invite links table showing status (Active \/ Used \/ Expired)"},{"src":"https:\/\/ps.w.org\/phildesigns-client-review\/assets\/screenshot-4.jpg?rev=3620089","caption":"Reviews dashboard \u2014 reviewer list on the left, annotations on the right"},{"src":"https:\/\/ps.w.org\/phildesigns-client-review\/assets\/screenshot-5.jpg?rev=3620089","caption":"Annotation card with status dropdown and admin note field"},{"src":"https:\/\/ps.w.org\/phildesigns-client-review\/assets\/screenshot-6.jpg?rev=3620089","caption":"Registration form clients see when opening their invite link"},{"src":"https:\/\/ps.w.org\/phildesigns-client-review\/assets\/screenshot-7.png?rev=3620089","caption":"Login page for returning clients"},{"src":"https:\/\/ps.w.org\/phildesigns-client-review\/assets\/screenshot-8.jpg?rev=3620089","caption":"Settings page \u2014 typography, accent colour, and button customisation"}],"raw_content":"<!--section=description-->\n<p>Send clients a private, single-use invite link to preview your WordPress site before launch. Clients register and land in a full-screen preview shell where they can switch between Desktop, Tablet, and Mobile viewports and drop numbered pin annotations anywhere on the page \u2014 similar to commenting in a PDF.<\/p>\n\n<p>All comments are stored per page and per device size. When the client finishes, they submit their review, which emails a formatted HTML summary to the site admin. The admin can then view all feedback in a dedicated dashboard, mark items as Done or Needs Clarification, and leave response notes.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li>Single-use, expiring invite links \u2014 clients register once and are assigned the Client Reviewer role automatically<\/li>\n<li>Full-screen preview shell with Desktop (1440px), Tablet (768px), and Mobile (390px) viewport switching<\/li>\n<li>Click-to-pin annotations \u2014 clients click anywhere on the page to drop a numbered pin and write a comment<\/li>\n<li>Comments stored per page URL and per device size<\/li>\n<li>Multiple reviewers supported \u2014 each user can only edit or delete their own comments<\/li>\n<li>Admin response notes visible to the client on their next login<\/li>\n<li>\"Finish Review\" button sends a formatted HTML email summary to the site admin<\/li>\n<li>Admin dashboard with per-reviewer comment lists, status controls (Open \/ Done \/ Needs Clarification), and admin note fields<\/li>\n<li>Client Reviewer role is blocked from wp-admin and has the admin bar hidden<\/li>\n<li>Customisable typography, accent colour, and button styles via the Settings page<\/li>\n<li>No external dependencies \u2014 no third-party services or APIs required<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>client-review<\/code> folder to <code>\/wp-content\/plugins\/<\/code><\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> menu in WordPress<\/li>\n<li>Navigate to <strong>Client Review \u2192 Invite Links<\/strong> to generate your first invite link<\/li>\n<\/ol>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.7 or higher<\/li>\n<li>PHP 8.0 or higher<\/li>\n<li>A working <code>wp_mail()<\/code> setup on your server for email delivery<\/li>\n<\/ul>\n\n<h4>After Activation<\/h4>\n\n<p>The plugin automatically creates two database tables (<code>wp_cr_invites<\/code> and <code>wp_cr_annotations<\/code>), registers the <strong>Client Reviewer<\/strong> user role, and registers the <code>\/client-review\/<\/code> URL for the preview shell.<\/p>\n\n<p>If the <code>\/client-review\/<\/code> URL returns a 404, go to <strong>Settings \u2192 Permalinks<\/strong> and click Save to flush rewrite rules.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20clients%20need%20an%20existing%20wordpress%20account%3F\"><h3>Do clients need an existing WordPress account?<\/h3><\/dt>\n<dd><p>No. Clients register via their invite link using their name, email, and a password. The plugin creates their account and logs them in automatically.<\/p><\/dd>\n<dt id=\"can%20i%20invite%20multiple%20clients%3F\"><h3>Can I invite multiple clients?<\/h3><\/dt>\n<dd><p>Yes. Each invite link is single-use and creates a separate account. You can generate as many links as you need from <strong>Client Review \u2192 Invite Links<\/strong>.<\/p><\/dd>\n<dt id=\"why%20are%20review%20summary%20emails%20not%20arriving%3F\"><h3>Why are review summary emails not arriving?<\/h3><\/dt>\n<dd><p>The plugin uses WordPress's built-in <code>wp_mail()<\/code>. If emails are not being delivered, check that your hosting environment has a working mail setup or install an SMTP plugin such as WP Mail SMTP.<\/p><\/dd>\n<dt id=\"does%20deactivating%20the%20plugin%20remove%20client%20data%3F\"><h3>Does deactivating the plugin remove client data?<\/h3><\/dt>\n<dd><p>No. Deactivating preserves the Client Reviewer role and all annotation data. To fully remove all data, delete the plugin.<\/p><\/dd>\n<dt id=\"can%20clients%20browse%20the%20whole%20site%20from%20the%20preview%20shell%3F\"><h3>Can clients browse the whole site from the preview shell?<\/h3><\/dt>\n<dd><p>Yes. The site is rendered in an iframe and clients can navigate normally. Clicking any link updates the URL in the toolbar and reloads comments for the new page.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Renamed all classes, hooks, option names, nonces, and asset handles to the <code>PDCR<\/code>\/<code>pdcr_<\/code> prefix<\/li>\n<li>Fixed a security issue where the annotation status REST endpoint had no permission check<\/li>\n<li>Fonts are now self-hosted by default \u2014 no request to Google's servers unless explicitly enabled in Settings<\/li>\n<li>All CSS and JS are now registered with <code>wp_enqueue_style()<\/code>\/<code>wp_enqueue_script()<\/code> instead of being hand-printed in templates<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>Single-use invite link system with 30-day expiry<\/li>\n<li>Client Reviewer user role with wp-admin access blocked and admin bar hidden<\/li>\n<li>Full-screen preview shell with Desktop \/ Tablet \/ Mobile switcher<\/li>\n<li>Click-to-pin visual annotation system with per-page and per-device storage<\/li>\n<li>REST API for annotation CRUD with ownership enforcement<\/li>\n<li>Collapsible sidebar with comment list, status badges, and admin response display<\/li>\n<li>\"Finish Review\" modal with HTML email summary to admin<\/li>\n<li>Admin dashboard: Invite Links page and Reviews page with status and note controls<\/li>\n<li>Settings page for typography, accent colour, and button styling customisation<\/li>\n<\/ul>","raw_excerpt":"Invite clients to preview your site privately, drop visual pin annotations, and submit a formatted review summary by email.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/338543","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=338543"}],"author":[{"embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/pdidee"}],"wp:attachment":[{"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=338543"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=338543"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=338543"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=338543"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=338543"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/oci.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=338543"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}