{"id":346997,"date":"2026-08-04T03:56:48","date_gmt":"2026-08-04T03:56:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/whochanged\/"},"modified":"2026-09-08T07:02:55","modified_gmt":"2026-09-08T07:02:55","slug":"whochanged","status":"publish","type":"plugin","link":"https:\/\/es.wordpress.org\/plugins\/whochanged\/","author":23291429,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.1.4","stable_tag":"1.1.4","tested":"7.1","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"WhoChanged \u2013 Admin Activity & Audit Log","header_author":"Douple","header_description":"Track critical admin changes including options, Customizer updates, and plugin lifecycle events.","assets_banners_color":"183981","last_updated":"2026-09-08 07:02:55","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":149,"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","revision":3634045},"1.1.4":{"tag":"1.1.4","author":"douple","date":"2026-09-08 07:02:55","revision":3686089}},"upgrade_notice":{"1.1.4":"<p>Display name and WordPress 7.1 compatibility update. Recommended for all users.<\/p>","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","1.1.4"],"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 expandable before\/after diffs for each change.","2":"Settings screen \u2014 Free retention overview and PRO controls for retention, email alerts and role-based access.","3":"Statistics dashboard with charts for actions, users, trends and activity by hour of day.","4":"System logs tab for background and non-user events.","5":"Admin bar quick activity menu \u2014 recent changes without leaving the current screen."}},"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 expandable before\/after diffs for each change."},{"src":"https:\/\/ps.w.org\/whochanged\/assets\/screenshot-2.png?rev=3633678","caption":"Settings screen \u2014 Free retention overview and PRO controls for retention, email alerts and role-based access."},{"src":"https:\/\/ps.w.org\/whochanged\/assets\/screenshot-3.png?rev=3633678","caption":"Statistics dashboard with charts for actions, users, trends and activity by hour of day."},{"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 \u2014 recent changes without leaving the current screen."}],"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>Demo:<\/strong> <a href=\"https:\/\/douple.net\/whochanged\/demo.html\">https:\/\/douple.net\/whochanged\/demo.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 admin activity &amp; audit log for WordPress. It quietly watches the admin area and records every meaningful change: who did it, what changed, and when \u2014 with clear before\/after diffs.<\/p>\n\n<p>When something breaks after an update, a setting disappears, or a client swears \u201cI didn\u2019t touch anything,\u201d WhoChanged gives you the answer in seconds instead of hours of guesswork.<\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Before\/after diffs<\/strong> \u2014 see exactly what the old and new values were, not just that something changed<\/li>\n<li><strong>Settings &amp; options<\/strong> \u2014 track option updates made through <code>wp-admin<\/code><\/li>\n<li><strong>Customizer<\/strong> \u2014 log Customizer saves with only the settings that actually changed<\/li>\n<li><strong>Plugins<\/strong> \u2014 activation, deactivation, deletion, installs and upgrades<\/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<li><strong>Filterable activity log<\/strong> \u2014 search and filter by user, event type and date range<\/li>\n<li><strong>Statistics dashboard<\/strong> \u2014 charts for actions, users, trends and activity by hour of day<\/li>\n<li><strong>Admin bar quick menu<\/strong> \u2014 recent activity without leaving the page you are on<\/li>\n<li><strong>CSV export<\/strong> \u2014 download your activity log whenever you need it<\/li>\n<li><strong>30-day activity history<\/strong> on every Free install \u2014 no setup required<\/li>\n<li><strong>Privacy-friendly by default<\/strong> \u2014 log data stays in your own WordPress database<\/li>\n<li><strong>Fully translatable<\/strong> \u2014 ready for WordPress.org language packs<\/li>\n<\/ul>\n\n<h4>Perfect for<\/h4>\n\n<ul>\n<li>Agencies and freelancers managing client sites with multiple admins<\/li>\n<li>Site owners who need a clear audit trail after unexplained changes<\/li>\n<li>Teams that want accountability without a heavy security suite<\/li>\n<li>Developers debugging \u201cwho changed this option?\u201d moments<\/li>\n<\/ul>\n\n<h4>PRO features<\/h4>\n\n<p>More info at <a href=\"https:\/\/douple.net\/whochanged\/\">https:\/\/douple.net\/whochanged\/<\/a> \u2014 or <a href=\"https:\/\/checkout.freemius.com\/plugin\/35452\/plan\/58744\/\">buy WhoChanged PRO<\/a>.<\/p>\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>Configurable \/ unlimited retention<\/strong> \u2014 Free keeps 30 days; PRO unlocks 60\/90 days or forever so nothing ages out before an audit<\/li>\n<li><strong>Excel (XLS) &amp; PDF reports<\/strong> \u2014 client- and auditor-ready exports beyond CSV, including a one-click PDF of the Statistics dashboard<\/li>\n<li><strong>Instant email alerts<\/strong> \u2014 get notified when specific event types happen (theme switches, plugin installs, admin role changes, and more)<\/li>\n<li><strong>Role-based access control<\/strong> \u2014 choose which roles can view the log, and which roles are tracked. 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 when you need a clean slate<\/li>\n<\/ul>\n\n<p>Free is genuinely useful on its own \u2014 full event coverage, filtering, diffs, statistics and CSV export. PRO is for teams and agencies that need longer history, professional reports, real-time alerts and fine-grained access control.<\/p>\n\n<h4>Requirements<\/h4>\n\n<ul>\n<li>WordPress 6.0 or higher<\/li>\n<li>PHP 7.4 or higher<\/li>\n<li>WooCommerce is optional (only needed for WooCommerce-specific events such as order deletions)<\/li>\n<\/ul>\n\n<h3>External services<\/h3>\n\n<p>This plugin optionally connects to <strong>Freemius<\/strong> (https:\/\/freemius.com\/) for:<\/p>\n\n<ul>\n<li>Optional opt-in usage tracking (skipped unless you explicitly agree on the Freemius connect screen)<\/li>\n<li>PRO checkout, license activation \/ deactivation, and PRO plugin updates<\/li>\n<\/ul>\n\n<p>When those flows run, Freemius may receive data such as site URL, admin email \/ name (when provided), license key, plugin version, and basic WordPress \/ PHP environment info needed for licensing and support.<\/p>\n\n<ul>\n<li>Freemius Terms of Service: https:\/\/freemius.com\/terms\/<\/li>\n<li>Freemius Privacy Policy: https:\/\/freemius.com\/privacy\/<\/li>\n<li>Freemius data practices: https:\/\/freemius.com\/privacy\/data-practices\/<\/li>\n<\/ul>\n\n<p>No Freemius connection is required to use the free activity log features.<\/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 <code>\/wp-content\/plugins\/<\/code>, or install from <strong>Plugins \u2192 Add New<\/strong>.<\/li>\n<li>Activate the plugin through the Plugins screen in WordPress.<\/li>\n<li>Go to <strong>WhoChanged<\/strong> in the admin sidebar to view the activity log.<\/li>\n<li>(Optional) Visit <strong>WhoChanged \u2192 Settings<\/strong> to review the 30-day Free retention window, or upgrade to PRO for longer retention, email alerts and role-based access.<\/li>\n<li>Full documentation: <a href=\"https:\/\/douple.net\/whochanged\/docs.html\">https:\/\/douple.net\/whochanged\/docs.html<\/a><\/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\u2019s 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. Activity log data is not sent to any external analytics service. Email alerts (PRO) use your site\u2019s 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 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=\"do%20i%20need%20woocommerce%3F\"><h3>Do I need WooCommerce?<\/h3><\/dt>\n<dd><p>No. WooCommerce is optional. Without it, WhoChanged still tracks core WordPress admin changes (options, Customizer, plugins, users, menus, content). With WooCommerce active, it also logs order deletions.<\/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\u2019s 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\u2019s site limit is full, deactivate the license on an unused site first, then activate on this one.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20send%20data%20to%20third%20parties%3F\"><h3>Does this plugin send data to third parties?<\/h3><\/dt>\n<dd><p>Activity log content stays in your WordPress database. The bundled Freemius SDK may contact Freemius servers only after you opt in to usage tracking, or when you purchase \/ activate a PRO license. See <strong>External services<\/strong> below.<\/p><\/dd>\n<dt id=\"where%20is%20the%20source%20code%3F\"><h3>Where is the source code?<\/h3><\/dt>\n<dd><p>https:\/\/github.com\/thiendo\/Wordpress-WhoChanged-Plugin<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.1.4<\/h4>\n\n<ul>\n<li>Updated: Plugin display name to WhoChanged \u2013 Admin Activity &amp; Audit Log.<\/li>\n<li>Updated: Compatibility tested up to WordPress 7.1.<\/li>\n<\/ul>\n\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:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/346997","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=346997"}],"author":[{"embeddable":true,"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/douple"}],"wp:attachment":[{"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=346997"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=346997"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=346997"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=346997"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=346997"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/es.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=346997"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}