{"id":346997,"date":"2026-08-04T03:56:48","date_gmt":"2026-08-04T03:56:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/whochanged\/"},"modified":"2026-08-04T10:21:52","modified_gmt":"2026-08-04T10:21:52","slug":"whochanged","status":"publish","type":"plugin","link":"https:\/\/is.wordpress.org\/plugins\/whochanged\/","author":23291429,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.3","stable_tag":"1.1.3","tested":"7.0.3","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"WhoChanged","header_author":"Douple","header_description":"Track critical admin changes including options, Customizer updates, and plugin lifecycle events.","assets_banners_color":"183981","last_updated":"2026-08-04 10:21:52","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/douple.net\/whochanged\/","header_author_uri":"https:\/\/douple.net\/","rating":0,"author_block_rating":0,"active_installs":0,"downloads":61,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.3":{"tag":"1.1.3","author":"douple","date":"2026-08-04 10:21:52"}},"upgrade_notice":{"1.1.0":"<p>Adds Freemius-based licensing, a cleaner uninstall\/deactivation flow, and full WordPress coding-standards + i18n compliance. Recommended update for all users.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.gif":{"filename":"icon-128x128.gif","revision":3634045,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.gif":{"filename":"icon-256x256.gif","revision":3634045,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3634045,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3634045,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3633678,"resolution":"1","location":"assets","locale":"","width":1280,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3633678,"resolution":"2","location":"assets","locale":"","width":1280,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3633678,"resolution":"3","location":"assets","locale":"","width":1280,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3633678,"resolution":"4","location":"assets","locale":"","width":1280,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3633678,"resolution":"5","location":"assets","locale":"","width":716,"height":1033}},"screenshots":{"1":"Activity log listing with filters and before\/after diffs.","2":"Settings screen with retention, email alerts and role-based access controls (PRO).","3":"Statistics dashboard with charts for actions, users and activity trends.","4":"System logs tab for background and non-user events.","5":"Admin bar quick activity menu."}},"plugin_section":[],"plugin_tags":[8531,232179,8534,260703,600],"plugin_category":[54],"plugin_contributors":[274393],"plugin_business_model":[],"class_list":["post-346997","plugin","type-plugin","status-publish","hentry","plugin_tags-activity-log","plugin_tags-admin-log","plugin_tags-audit-log","plugin_tags-change-tracking","plugin_tags-security","plugin_category-security-and-spam-protection","plugin_contributors-douple","plugin_committers-douple"],"banners":{"banner":"https:\/\/ps.w.org\/whochanged\/assets\/banner-772x250.png?rev=3634045","banner_2x":"https:\/\/ps.w.org\/whochanged\/assets\/banner-1544x500.png?rev=3634045","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/whochanged\/assets\/icon-128x128.gif?rev=3634045","icon_2x":"https:\/\/ps.w.org\/whochanged\/assets\/icon-256x256.gif?rev=3634045","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/whochanged\/assets\/screenshot-1.png?rev=3633678","caption":"Activity log listing with filters and before\/after diffs."},{"src":"https:\/\/ps.w.org\/whochanged\/assets\/screenshot-2.png?rev=3633678","caption":"Settings screen with retention, email alerts and role-based access controls (PRO)."},{"src":"https:\/\/ps.w.org\/whochanged\/assets\/screenshot-3.png?rev=3633678","caption":"Statistics dashboard with charts for actions, users and activity trends."},{"src":"https:\/\/ps.w.org\/whochanged\/assets\/screenshot-4.png?rev=3633678","caption":"System logs tab for background and non-user events."},{"src":"https:\/\/ps.w.org\/whochanged\/assets\/screenshot-5.png?rev=3633678","caption":"Admin bar quick activity menu."}],"raw_content":"<!--section=description-->\n<p>[youtube https:\/\/www.youtube.com\/watch?v=EyKqCGt5vJQ]<\/p>\n\n<p><strong>Plugin URL:<\/strong> <a href=\"https:\/\/douple.net\/whochanged\/\">https:\/\/douple.net\/whochanged\/<\/a>\n<strong>Docs:<\/strong> <a href=\"https:\/\/douple.net\/whochanged\/docs.html\">https:\/\/douple.net\/whochanged\/docs.html<\/a>\n<strong>GitHub:<\/strong> <a href=\"https:\/\/github.com\/thiendo\/Wordpress-WhoChanged-Plugin\">https:\/\/github.com\/thiendo\/Wordpress-WhoChanged-Plugin<\/a>\n<strong>Support:<\/strong> support@douple.net\n<strong>Get WhoChanged PRO:<\/strong> <a href=\"https:\/\/checkout.freemius.com\/plugin\/35452\/plan\/58744\/\">https:\/\/checkout.freemius.com\/plugin\/35452\/plan\/58744\/<\/a><\/p>\n\n<p><strong>WhoChanged<\/strong> is a lightweight activity log for WordPress that quietly watches the admin area and records every meaningful change: who did it, what changed, and when. When something breaks after an update or a client swears \"I didn't touch anything,\" WhoChanged gives you the answer in seconds instead of hours.<\/p>\n\n<h4>What gets tracked<\/h4>\n\n<ul>\n<li><strong>Settings &amp; options<\/strong> \u2014 before\/after values for any option updated through <code>wp-admin<\/code>.<\/li>\n<li><strong>Customizer<\/strong> \u2014 every time a user saves changes in the Customizer.<\/li>\n<li><strong>Plugins<\/strong> \u2014 activation, deactivation, deletion and bulk updates.<\/li>\n<li><strong>Users<\/strong> \u2014 logins, failed login attempts, logouts and role changes.<\/li>\n<li><strong>Content<\/strong> \u2014 posts and comments moved to trash, restored, or permanently deleted.<\/li>\n<li><strong>Navigation menus<\/strong> \u2014 menu creation, updates and deletions.<\/li>\n<li><strong>WooCommerce<\/strong> \u2014 order deletions (when WooCommerce is active).<\/li>\n<\/ul>\n\n<h4>Why WhoChanged<\/h4>\n\n<ul>\n<li><strong>Clear before\/after diffs.<\/strong> Don't just see <em>that<\/em> something changed \u2014 see exactly what the old and new values were.<\/li>\n<li><strong>Built for teams.<\/strong> Multiple admins and editors? Know exactly who is responsible for each change.<\/li>\n<li><strong>Fast, filterable log.<\/strong> Search and filter by user, event type and date range directly from the WordPress admin.<\/li>\n<li><strong>CSV export.<\/strong> Download your activity log as CSV whenever you need it.<\/li>\n<li><strong>Privacy-friendly by default.<\/strong> Data stays in your own database \u2014 nothing is sent to third parties.<\/li>\n<li><strong>30-day activity history<\/strong>, included on every install, no setup required.<\/li>\n<\/ul>\n\n<h4>PRO features<\/h4>\n\n<p>The Free plan tells you <em>what changed<\/em>. PRO helps you act on it, prove it, and get notified the moment it happens:<\/p>\n\n<ul>\n<li><strong>Unlimited retention<\/strong> \u2014 the Free plan keeps 30 days of history; PRO lets you keep logs for 60\/90 days or forever, so nothing ages out before an audit.<\/li>\n<li><strong>Excel (XLS) &amp; PDF reports<\/strong> \u2014 polished, client- and auditor-ready exports beyond the Free plan's CSV, including a one-click PDF export of the Statistics dashboard.<\/li>\n<li><strong>Instant email alerts<\/strong> \u2014 get notified the moment specific event types happen (theme switches, plugin installs, admin role changes).<\/li>\n<li><strong>Role-based access control<\/strong> \u2014 choose exactly which roles can view the activity log, and which roles are tracked in the first place. On Free, only Administrators can view logs and every user is tracked.<\/li>\n<li><strong>One-click purge<\/strong> \u2014 wipe the entire activity log whenever you need a clean slate.<\/li>\n<\/ul>\n\n<p>Free is genuinely useful on its own \u2014 full event coverage, filtering, diffs and CSV export, forever. PRO is for teams and agencies that need longer history, professional reports, real-time alerts and fine-grained access control.<\/p>\n\n<h4>Support<\/h4>\n\n<p>Found a bug or have a feature request? Please reach out through the plugin's support page. We read every report.<\/p>\n\n<h3>Development<\/h3>\n\n<p>Human-readable source for plugin-owned JavaScript and CSS is included in this package under <code>assets\/js\/<\/code> and <code>assets\/css\/<\/code> (<code>admin.js<\/code>, <code>admin-bar.js<\/code>, <code>stats-charts.js<\/code>, and matching stylesheets). Third-party libraries under <code>assets\/js\/vendor\/<\/code> and <code>assets\/css\/vendor\/<\/code> ship as upstream distribution builds (Chart.js, Flatpickr).<\/p>\n\n<p>Public source repository: <a href=\"https:\/\/github.com\/thiendo\/Wordpress-WhoChanged-Plugin\">https:\/\/github.com\/thiendo\/Wordpress-WhoChanged-Plugin<\/a><\/p>\n\n<p>No build tools are required to review or modify the plugin-owned admin scripts and styles.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>whochanged<\/code> folder to the <code>\/wp-content\/plugins\/<\/code> directory, or install the plugin through the WordPress plugins screen directly.<\/li>\n<li>Activate the plugin through the \"Plugins\" screen in WordPress.<\/li>\n<li>Go to the <strong>WhoChanged<\/strong> menu in your admin sidebar to view the activity log.<\/li>\n<li>(Optional) Visit <strong>WhoChanged \u2192 Settings<\/strong> to review your 30-day Free retention window, or upgrade to PRO to configure longer retention, email alerts and role-based access.<\/li>\n<li>Full documentation: https:\/\/douple.net\/whochanged\/docs.html<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20whochanged%20slow%20down%20my%20site%3F\"><h3>Does WhoChanged slow down my site?<\/h3><\/dt>\n<dd><p>No. WhoChanged only runs in the WordPress admin area (<code>wp-admin<\/code>) and hooks into existing WordPress actions\/filters, so it has no impact on your public-facing site's performance.<\/p><\/dd>\n<dt id=\"where%20is%20the%20activity%20log%20stored%3F\"><h3>Where is the activity log stored?<\/h3><\/dt>\n<dd><p>In a dedicated table in your own WordPress database. No data is sent to any external service unless you explicitly configure email alerts (PRO), which use your site's own mail delivery.<\/p><\/dd>\n<dt id=\"what%20happens%20to%20my%20data%20if%20i%20deactivate%20or%20uninstall%20the%20plugin%3F\"><h3>What happens to my data if I deactivate or uninstall the plugin?<\/h3><\/dt>\n<dd><p>Deactivating the plugin keeps all logged data intact so nothing is lost if you reactivate later. Deleting the plugin from the Plugins screen keeps your data by default too \u2014 you can opt in to a full data wipe on uninstall from <strong>WhoChanged \u2192 Settings \u2192 Danger Zone<\/strong>.<\/p><\/dd>\n<dt id=\"is%20whochanged%20compatible%20with%20multisite%3F\"><h3>Is WhoChanged compatible with multisite?<\/h3><\/dt>\n<dd><p>WhoChanged is designed for single-site installs. Multisite support is on the roadmap.<\/p><\/dd>\n<dt id=\"how%20do%20i%20upgrade%20to%20pro%3F\"><h3>How do I upgrade to PRO?<\/h3><\/dt>\n<dd><ol>\n<li>Purchase WhoChanged PRO at https:\/\/douple.net\/whochanged\/#pricing (or from <strong>WhoChanged \u2192 Pricing \/ Upgrade<\/strong> in wp-admin).<\/li>\n<li>Complete Freemius checkout. Your license key is emailed to the address you used at payment.<\/li>\n<li>In wp-admin go to <strong>WhoChanged \u2192 Account<\/strong>, click <strong>Activate License<\/strong>, and paste the key.<\/li>\n<li>Confirm <strong>WhoChanged \u2192 Settings<\/strong> shows <strong>PRO Active<\/strong>.<\/li>\n<\/ol>\n\n<p>If you checkout from inside the same site's wp-admin, Freemius often activates the license automatically. Full guide: https:\/\/douple.net\/whochanged\/docs.html<\/p><\/dd>\n<dt id=\"i%20bought%20pro%20but%20the%20plugin%20still%20shows%20free\"><h3>I bought PRO but the plugin still shows Free<\/h3><\/dt>\n<dd><p>Open <strong>WhoChanged \u2192 Account<\/strong> and activate the license key from your Freemius purchase email. If the plan's site limit is full, deactivate the license on an unused site first, then activate on this one.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.3<\/h4>\n\n<ul>\n<li>Compliance: Restored human-readable plugin-owned JavaScript\/CSS sources and documented the public repository in the readme.<\/li>\n<li>Security: Hardened dynamic log\/analytics SQL queries to always use wpdb::prepare() with placeholders.<\/li>\n<\/ul>\n\n<h4>1.1.2<\/h4>\n\n<ul>\n<li>Compliance: Moved configurable retention, email alerts, and role-based logging\/viewer access implementations into the PRO-only module (excluded from this Free package). Free keeps fixed 30-day retention and administrator-only log viewing.<\/li>\n<li>Updated: Bundled Chart.js library to 4.5.1.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Housekeeping: PRO-only export (XLS\/PDF) and bulk-purge implementations now live in a separate module that is excluded from this Free package entirely, instead of being shipped-but-locked. No behavior change for Free users.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: Freemius-based licensing for PRO plan management, upgrades and renewals.<\/li>\n<li>New: Clean uninstall routine with an opt-in \"delete all data\" setting.<\/li>\n<li>New: Deactivation routine that clears scheduled cron events.<\/li>\n<li>Removed: The legacy self-hosted update checker. Updates are now delivered through WordPress.org (free plan) and the Freemius SDK (PRO plan), as required for plugins listed on WordPress.org.<\/li>\n<li>Improved: Full WordPress Coding Standards (WPCS) compliance across the codebase.<\/li>\n<li>Improved: Internationalization \u2014 all strings are translation-ready with proper escaping and translator comments.<\/li>\n<li>Improved: Clearer visual distinction between Free and PRO features in the Settings screen \u2014 PRO-only fields are now disabled (not just labeled) on the Free plan.<\/li>\n<li>Changed: Free plan activity logs now auto-expire after 30 days (fixed); PRO unlocks configurable\/unlimited retention.<\/li>\n<li>Changed: Excel (XLS) and PDF export moved to PRO; CSV export remains available on every plan.<\/li>\n<li>Security: Fixed a CSV export formula-injection issue and updated the bundled dompdf library to patch known vulnerabilities.<\/li>\n<li>Fixed: Activity timestamps could be displayed several hours off on sites not running in UTC; corrected across the log list, admin bar and all export formats.<\/li>\n<li>Fixed: Settings saved with an unchanged value (e.g. re-saving the Reading Settings screen) could log a misleading \"changed\" entry showing the same before\/after value; before\/after comparisons are now type-tolerant like WordPress core's own <code>update_option()<\/code> check.<\/li>\n<li>Fixed: Customizer saves logged every submitted setting as changed, even ones the admin didn't touch; the log now only shows settings whose value actually changed.<\/li>\n<li>Improved: Plugin activated\/deactivated\/installed\/deleted log entries now use consistent wording with the rest of the activity log.<\/li>\n<li>Improved: Login\/logout log entries no longer repeat the username shown in the User column; the IP address is shown instead.<\/li>\n<li>Improved: \"Page on front\" \/ \"Page for posts\" changes now show the page title instead of a raw page ID.<\/li>\n<li>Changed: \"Export Statistics PDF\" on the Statistics page moved to PRO, matching the XLS\/PDF export gating on the main activity log.<\/li>\n<li>Improved: Freemius Account\/Pricing screens now use the site's WP Admin color scheme for the Upgrade button instead of a fixed blue.<\/li>\n<li>Improved: Statistics dashboard redesigned \u2014 doughnut charts now show exact counts and percentages (not just a bare legend), plus a new \"Activity by hour of day\" chart, a period-over-period trend indicator on Total items, and a plain-language insight line (busiest day, top action share, peak hour).<\/li>\n<\/ul>\n\n<h4>1.0.1<\/h4>\n\n<ul>\n<li>Maintenance release with minor fixes.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Know exactly who changed what in your WordPress admin \u2014 options, Customizer, plugins, users, menus, content and more.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/346997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=346997"}],"author":[{"embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/douple"}],"wp:attachment":[{"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=346997"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=346997"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=346997"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=346997"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=346997"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/is.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=346997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}