Page Notes

What is Page Notes?

Page Notes is a WordPress plugin that lets team members attach collaborative notes directly to specific elements on any page or post. Instead of describing where feedback applies, you simply click the element and leave your note right there.

Why Page Notes exists

Vague, fragmented feedback that wastes everyone’s time.

You’ve been there: a client emails saying “the thing at the top needs changing” or “can you fix that button?” You reply asking which button. They send a screenshot. You’re still not sure. Three emails later, you finally understand what they meant.

Or you’re working with a team and feedback arrives across emails, Slack messages, project management tools, and sticky notes. None of it is attached to the actual content being discussed. You spend more time interpreting requests than actually doing the work.

This communication gap leads to:

  • Misunderstood feedback and wasted revisions
  • Long email threads trying to clarify “which section?”
  • Feedback lost across multiple tools
  • Frustration on both sides

How Page Notes Solves It

Page Notes brings feedback directly onto the page where it belongs.

Click. Comment. Done.

When someone has feedback, they click the exact element they’re talking about — a heading, image, button, paragraph, anything — and attach their note right there. The element highlights, the context is clear, and there’s no ambiguity about what needs attention.

Notes stay attached to their elements even when page content changes. Team members can reply to keep discussions threaded. Tasks can be marked complete when addressed. Optional email notifications keep everyone informed without constant check-ins.

No more “which button?” No more screenshots with arrows. No more lost feedback.

Feature Overview

Core Functionality

  • Element-Specific Notes — Click any element on the page to attach a note directly to it
  • Visual Highlighting — Selected elements are highlighted so everyone sees exactly what’s being discussed
  • Threaded Conversations — Reply to notes to keep discussions organised and in context
  • Task Status Tracking — Mark notes as complete or reopen them to track progress
  • Persistent Attachment — Notes stay linked to elements even when page structure changes

Team Collaboration

  • @Mentions — Mention users with @username to assign responsibility
  • Role-Based Access — Control which WordPress roles can view and create notes
  • Custom Reviewer Role — Give clients access to leave notes without edit permissions
  • Notes Manager — Designate someone for oversight and activity digests

Notifications (Optional)

  • Email Notifications — Instant or batched alerts when mentioned or assigned
  • Task Reminders — Optional reminder emails for incomplete assigned tasks
  • Activity Digests — Daily summary of note activity for the Notes Manager
  • Completion Alerts — Get notified when someone completes your note

Workflow Tools

  • Hide Completed Toggle — Filter out completed tasks to focus on what’s open
  • Completion Enforcement — Parent notes require all replies to be completed first
  • Pages Overview — See all pages with notes from the slide-out panel
  • Export — Download all notes as CSV or JSON for reporting or backup

Privacy & Data

  • No external API calls or third-party services
  • No tracking, analytics, or telemetry
  • All data stored in your WordPress database
  • Optional clean uninstall to remove all data

Who It’s For

  • Developers & Designers working with clients who need a simple way to leave feedback
  • Agencies managing multiple stakeholders on website projects
  • Content Teams reviewing and approving page updates
  • QA Teams flagging issues with specific page elements
  • Anyone tired of playing “which element did you mean?”

Change log

Version: 1.0.0Release date: 2026-01-09Change type: {acf_plugin_changelog_changelog_release_type}

### Added
– Element-specific notes — attach notes to any HTML element on any page or post
– Visual element highlighting — selected elements are highlighted for easy identification
– Notes panel UI — slide-out panel for viewing and managing notes
– Threaded conversations — reply to notes to keep discussions in context
– Task status tracking — mark notes as complete or reopen them
– Role-based access control — configure which WordPress roles can use Page Notes
– Individual user overrides — enable or disable Page Notes for specific users
– Admin bar integration — quick toggle to enable/disable note mode
– Element selector generation — automatic CSS selector creation for note attachment
– Notes Manager role — designated user for oversight and management
– Character limit setting — admin-configurable maximum note length
– Settings page — centralised configuration under Settings > Page Notes
– Activity logging — track note creation, edits, and deletions
– AJAX-powered interface — smooth, no-reload interactions
– Secure capability checks — proper WordPress permission validation
– Database schema — custom table for efficient note storage
– Clean uninstall — option to remove all data when plugin is deleted

Version: 1.1.0Release date: 2026-01-09Change type: {acf_plugin_changelog_changelog_release_type}

### Added
– @mention system and user autocomplete

### Improved
– Searching by display name or username in autocomplete
– @mentions hidden from display and shown via badges

Version: 1.2.0Release date: 2026-01-09Change type: {acf_plugin_changelog_changelog_release_type}

### Added
– Email notification system with instant and batched sending (admin-controlled)
– Activity digest emails for Notes Manager (optional)
– Pending notification management with manual send control
– Auto-send interval configuration

Version: 1.2.1Release date: 2026-01-11Change type: {acf_plugin_changelog_changelog_release_type}

### Added
– Unified email template system
– Data Management settings section
– Opt-in data deletion on uninstall (default: preserve data)

### Improved
– Capability checks on AJAX handlers
– Email templates reduced in size for maintainability
– Documentation for privacy/data handling and uninstall behaviour

Version: 1.3.0Release date: 2026-01-14Change type: {acf_plugin_changelog_changelog_release_type}

### Added
– Custom “Page Notes Reviewer” role for client access
– use_page_notes capability for granular permission control
– Reviewers can add notes without edit_posts capability

### Changed
– Plugin only loads on frontend (not in admin dashboard)

### Improved
– Permission system supports both reviewers and editors

Version: 1.4.0Release date: 2026-01-14Change type: {acf_plugin_changelog_changelog_release_type}

### Added
– WordPress Block Editor (Gutenberg) support — notes survive block reordering
– Page builder support (Elementor, Bricks, Breakdance, Oxygen, Beaver Builder, Divi, WPBakery)
– Permanent data attribute fallback for dynamic content

### Rewritten
– Complete element selector generation system for maximum stability

### Improved
– Intelligent selector fallback system with 7 strategies
– Parent ID + relative path strategy avoids fragile nth-child selectors

### Changed
– Notes now remain attached to elements even when page structure changes

Version: 1.4.1Release date: 2026-01-15Change type: {acf_plugin_changelog_changelog_release_type}

### Added
– Send Notifications button now shows pending count, e.g. “Send Notifications (3)”
– Setting to allow any user to complete unassigned notes

### Fixed
– Page Notes now hidden in page builder editors (Bricks, Elementor, Oxygen, Breakdance, Beaver Builder, Divi, WPBakery, Brizy, Thrive)
– Notification recipient count was incorrectly inflated when sending multiple notifications to the same person
– Hover highlight and scroll-to-element now works for all notes on the same element
– Complete button not working on notes and replies
– Assignees can now mark notes assigned to them as complete

Version: 1.4.2Release date: 2026-01-16Change type: {acf_plugin_changelog_changelog_release_type}

### Changed
– Internal development build

Version: 1.4.3Release date: 2026-01-23Change type: {acf_plugin_changelog_changelog_release_type}

### Added
– Element fingerprinting system for robust note-to-element recovery
– Multiple backup selector strategies stored with each note
– Content-based element search when selectors fail
– Broken link indicator shows when a note’s target element cannot be found
– Notes Manager can now delete any note (not just their own)
– Loading indicator when fetching notes
– Pages list section now scrolls independently with max height limit
– Local image assets stored in assets/images folder

### Fixed
– Critical bug where notes created with fallback selector strategy would not link to elements for other users
– Archive pages no longer confuse note associations with posts/pages sharing the same ID
– Complete button now responds instantly (optimistic UI update)

### Improved
– Note timestamps now display date and time instead of date only

Version: 1.5.0Release date: 2026-01-26Change type: {acf_plugin_changelog_changelog_release_type}

### Fixed
– Prevent duplicate note submissions when save button is clicked multiple times
– Notes now appear instantly after saving (optimistic UI) instead of reloading all notes

### Improved
– Email templates now use inline CSS styles for better mobile email client compatibility
– Emails render consistently across Gmail, Outlook, Apple Mail, and other mobile clients
– Activity digest stats section now uses table layout for reliable cross-client rendering
– Added mobile-responsive media queries for email clients that support them

Version: 1.6.0Release date: 2026-02-28Change type: {acf_plugin_changelog_changelog_release_type}

### Added
– “Hide completed” toggle in the notes panel to filter out completed tasks

### Fixed
– Complete/Reopen button now disabled during submission to prevent duplicate requests

### Improved
– All email notifications now display the website name prominently in the header
– “Task Completed” email subject now includes the site name for clarity

Version: 1.6.1Release date: 2026-02-28Change type: {acf_plugin_changelog_changelog_release_type}

### Added
– Parent notes now require all replies to be completed first before they can be marked as complete

Version: 1.6.2Release date: 2026-02-28Change type: {acf_plugin_changelog_changelog_release_type}

### Improved
– Email titles now include the website name as a clickable link

Version: 1.6.3Release date: 2026-02-28Change type: {acf_plugin_changelog_changelog_release_type}

### Added
– “Clear Stuck Notifications” button in Settings > Data Management for manual cleanup

### Fixed
– Stuck notifications for deleted users now automatically clear when Send Notifications is clicked
– Send Notifications button no longer shows a count for notifications that cannot be delivered

Version: 1.6.4Release date: 2026-03-01Change type: {acf_plugin_changelog_changelog_release_type}

### Fixed
– Editing a note with a new or changed @mention now re-queues the notification for the newly mentioned user
– Instant email is sent immediately on edit when a new @mention is added

Version: 1.6.5Release date: 2026-03-16Change type: {acf_plugin_changelog_changelog_release_type}

### Fixed
– Element highlighting now works for notes attached to images, icons, SVGs, and elements with no text content — fingerprint search was skipping these due to an empty-string falsy check
– Element fingerprint confidence threshold lowered from >30 to >=20 so elements identifiable only by class or structural signals are now correctly recovered

Version: 1.6.6Release date: 2026-03-17Change type: {acf_plugin_changelog_changelog_release_type}

### Fixed
– Stuck notification count when a reply’s parent note has been deleted — reply is now correctly marked as undeliverable and cleared from the queue
– “Clear Stuck Notifications” now also catches reply notifications where the parent note itself was deleted, not just the parent author

### Added
– “Hide completed” checkbox in the Pages with Notes section to hide fully-completed pages from the list
– Update checker — plugin now checks muzkore.com for new versions and shows standard WordPress update notifications
– Changelog tab in Settings > Page Notes — view version history with colour-coded badges

### Improved
– Settings page cards widened from 520px to 720px to reduce vertical scrolling on wider screens

Version: 1.6.7Release date: 2026-03-18Change type: {acf_plugin_changelog_changelog_release_type}

### Confirmed
– Tested and confirmed compatible with WordPress 6.9.4

### Fixed
– Fatal error on sites running LiteSpeed cache — transient validation now checks for a valid object rather than a loose not-false check

Version: 1.6.8Release date: 2026-03-19Change type: {acf_plugin_changelog_changelog_release_type}

### Fixed
– Escape output linting error in changelog renderer — added phpcs:ignore with explanation since render_changelog() generates its own escaped HTML
– `readme.txt` tested-up-to value corrected to major version only (6.9 not 6.9.4) per WordPress guidelines

Version: 1.7.0Release date: 2026-04-03Change type: {acf_plugin_changelog_changelog_release_type}

### Added
– File attachments — users can attach files to notes (images, PDFs, Word, Excel, text, zip)
– Private uploads folder (`wp-content/uploads/page-notes/`) with `.htaccess` protection — files are not publicly accessible via direct URL
– Nonce-protected file serve handler (`pn_serve_attachment`) — streams private files securely to authorised users; images render as inline thumbnails in the notes panel
– Attachment delete button — uploaders and the Notes Manager can delete individual files
– `wp_page_notes_attachments` database table — stores attachment metadata (note ID, filename, file type, file size, uploader, timestamp)
– File Attachments card in **Settings > Page Notes** with:
– **Max files per note** — configurable, default 3
– **Max total attachment size** — configurable in MB, default 10MB
– **Delete attachments when note is completed** — optional, default off
– **Storage usage display** — shows total file count and disk space used
– **Clean Up Attachments from Completed Notes** button — removes attachment files from completed notes on demand
– Client-side file validation — enforces count and size limits before upload with clear error messages
– File preview list below the file input shows selected filenames and sizes before saving
– Attachments automatically deleted when a note is deleted or when a post/page is trashed
– Full cleanup on uninstall (when data deletion is enabled) — drops table and removes uploads folder

Version: 1.7.1Release date: 2026-04-03Change type: {acf_plugin_changelog_changelog_release_type}

### Improved
– File attachments now accumulate across multiple picks — selecting files from a second folder no longer clears the first selection
– Files upload immediately on selection via XHR with a per-file progress bar and live percentage
– Save button disabled and shows “Uploading…” until all uploads complete, preventing submission with unfinished files
– Each queued file has an × button — aborts upload if still in progress, deletes from server if already complete
– Cancelling the note form automatically deletes any already-uploaded pending files from the server, leaving no orphaned files
– Orphaned pending attachments (note_id = 0, older than 2 hours) cleaned up automatically on each upload request

Version: 1.7.2Release date: 2026-04-03Change type: {acf_plugin_changelog_changelog_release_type}

### Fixed
– Attachments not displaying in the notes panel after upload — the database table was only created on first activation and was missing for sites that updated via zip upload rather than deactivate/reactivate. A migration now runs automatically when the stored DB version doesn’t match the current version.

### Improved
– File upload “Choose Files” button is smaller with rounded corners, matching the panel’s compact UI

Version: 1.7.3Release date: 2026-04-03Change type: {acf_plugin_changelog_changelog_release_type}

### Fixed
– Attachment upload silently returning id=0 when the database table didn’t exist — the pre-upload handler now detects a failed DB insert, runs the migration as a fallback, and retries. If it still fails, it returns a proper error so the file shows as failed rather than appearing to succeed without being saved.

Version: 1.7.4Release date: 2026-04-03Change type: {acf_plugin_changelog_changelog_release_type}

### Fixed
– Upload handler now explicitly checks whether the DB table exists before inserting, then runs migrations as a fallback if it doesn’t — closes the remaining gap where the table was not yet created at upload time
– Pre-upload no longer returns a false success with id=0 when the DB insert fails; it now returns a proper error so the file shows as failed in the upload list rather than appearing to succeed silently

### Improved
– Uploaded files are now stored in per-note subfolders (`note-{id}/`) inside the private uploads directory, preventing filename collisions between notes
– Pending files (before a note is saved) are held in a per-user temp folder (`temp/user-{id}/`) and moved to the note folder automatically when the note is saved

Version: 1.7.5Release date: 2026-04-03Change type: {acf_plugin_changelog_changelog_release_type}

### Improved
– Attachments are now visible and manageable in the edit note dialogue — existing files display with an inline delete button, and new files can be added during editing
– Cancelling or saving an edit correctly resets the attachment area and label

Version: 1.7.6Release date: 2026-04-03Change type: {acf_plugin_changelog_changelog_release_type}

### Added
– Dashboard widget — appears on the WordPress admin dashboard for all Page Notes users
– Regular users see their open notes (created or assigned to them), grouped with a direct link to each page with the notes panel pre-opened
– Notes Manager and admins also see a per-user summary table showing open and completed note counts across all users

Version: 1.7.7Release date: 2026-04-03Change type: {acf_plugin_changelog_changelog_release_type}

### Improved
– Dashboard widget title bar is now styled in Page Notes yellow (`#ffc107`) to match the plugin’s accent colour

Version: 1.7.8Release date: 2026-04-03Change type: {acf_plugin_changelog_changelog_release_type}

### Fixed
– Dashboard widget “Page Notes settings” link no longer shown to non-admin users (caused a permissions error for reviewers)
– Dashboard widget manager table header background had a double `##` typo in the CSS colour value
– Image thumbnails in the notes panel now open the full image in a new tab when clicked — previously the `&download=1` flag caused the browser to download instead of display

Version: 1.7.9Release date: 2026-04-03Change type: {acf_plugin_changelog_changelog_release_type}

### Improved
– Element highlighting replaced with a fixed-position overlay ring (`#pn-highlight-ring`) that uses `getBoundingClientRect()` to position itself precisely over the target element — fixes the highlight not appearing on `` elements and elements inside `overflow: hidden` containers where CSS `outline` and `box-shadow` were being clipped
– Highlight ring sits above page content but below the Page Notes panel (`z-index: 99998`) so it never obscures the notes list
– Ring has a gentle pulse animation (outline expands and contracts) to draw the eye to the highlighted element
– Ring is suppressed during smooth scroll and only appears once the page has settled at the target element, preventing the jarring “chasing” effect seen previously
– Fixed: Deleting a note with a pending @mention notification now correctly hides the Send Notifications button if no other pending notifications remain