{"id":317906,"date":"2026-05-29T23:52:48","date_gmt":"2026-05-29T23:52:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/bat-activity-log\/"},"modified":"2026-05-29T23:52:27","modified_gmt":"2026-05-29T23:52:27","slug":"bat-activity-log","status":"publish","type":"plugin","link":"https:\/\/hsb.wordpress.org\/plugins\/bat-activity-log\/","author":5455787,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.3.2","stable_tag":"0.3.2","tested":"7.0","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Bat Activity Log","header_author":"Bat Activity Log","header_description":"Enterprise-grade activity logging for WordPress.","assets_banners_color":"f1f3fc","last_updated":"2026-05-29 23:52:27","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/batwp.com\/plugins\/bat-activity-log\/","header_author_uri":"https:\/\/batwp.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":26,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.3.2":{"tag":"0.3.2","author":"jerryscg","date":"2026-05-29 23:52:27"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3554266,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3554266,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3554266,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3554266,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.3.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3554266,"resolution":"1","location":"assets","locale":"","width":1600,"height":1240},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3554266,"resolution":"2","location":"assets","locale":"","width":1600,"height":1240},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3554266,"resolution":"3","location":"assets","locale":"","width":1600,"height":1240},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3554266,"resolution":"4","location":"assets","locale":"","width":1600,"height":1240},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3554266,"resolution":"5","location":"assets","locale":"","width":1600,"height":1240}},"screenshots":{"1":"Dashboard with activity summaries and health insights.","2":"Activity logs screen with filters, saved views, and bulk actions.","3":"Log detail drawer with structured context and integrity data.","4":"Settings screen for modules, privacy, retention, and advanced controls.","5":"Tools screen for export, cleanup, reports, and integrity checks."}},"plugin_section":[262246],"plugin_tags":[8531,83,8534,5603,600],"plugin_category":[54],"plugin_contributors":[86952],"plugin_business_model":[],"class_list":["post-317906","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-activity-log","plugin_tags-admin","plugin_tags-audit-log","plugin_tags-monitoring","plugin_tags-security","plugin_category-security-and-spam-protection","plugin_contributors-jerryscg","plugin_committers-jerryscg"],"banners":{"banner":"https:\/\/ps.w.org\/bat-activity-log\/assets\/banner-772x250.png?rev=3554266","banner_2x":"https:\/\/ps.w.org\/bat-activity-log\/assets\/banner-1544x500.png?rev=3554266","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/bat-activity-log\/assets\/icon-128x128.png?rev=3554266","icon_2x":"https:\/\/ps.w.org\/bat-activity-log\/assets\/icon-256x256.png?rev=3554266","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/bat-activity-log\/assets\/screenshot-1.png?rev=3554266","caption":"Dashboard with activity summaries and health insights."},{"src":"https:\/\/ps.w.org\/bat-activity-log\/assets\/screenshot-2.png?rev=3554266","caption":"Activity logs screen with filters, saved views, and bulk actions."},{"src":"https:\/\/ps.w.org\/bat-activity-log\/assets\/screenshot-3.png?rev=3554266","caption":"Log detail drawer with structured context and integrity data."},{"src":"https:\/\/ps.w.org\/bat-activity-log\/assets\/screenshot-4.png?rev=3554266","caption":"Settings screen for modules, privacy, retention, and advanced controls."},{"src":"https:\/\/ps.w.org\/bat-activity-log\/assets\/screenshot-5.png?rev=3554266","caption":"Tools screen for export, cleanup, reports, and integrity checks."}],"raw_content":"<!--section=description-->\n<p>Bat Activity Log helps site owners and administrators understand what changed, who changed it, and when it happened.<\/p>\n\n<p>The plugin records activity across users, content, media, comments, plugins, themes, settings, updates, privacy workflows, and other core WordPress operations. Logs are stored in a custom indexed table for fast filtering and large datasets.<\/p>\n\n<h4>Key features<\/h4>\n\n<ul>\n<li>Track logins, logouts, failed logins, profile changes, registrations, role changes, and password updates.<\/li>\n<li>Record post, page, media, comment, taxonomy, menu, widget, and settings activity.<\/li>\n<li>Monitor plugin, theme, and WordPress update activity.<\/li>\n<li>Filter logs by event type, action, severity, user, object, IP address, and date range.<\/li>\n<li>Use saved views, quick filters, bulk actions, CSV export, and a structured log detail drawer.<\/li>\n<li>Configure retention cleanup, privacy controls, alert rules, and scheduled reports.<\/li>\n<li>Verify log integrity with a tamper-evident hash chain.<\/li>\n<li>Use WP-CLI commands for stats, cleanup, export, repair, reporting, benchmarking, and integrity verification.<\/li>\n<\/ul>\n\n<h4>Event coverage<\/h4>\n\n<p>Bat Activity Log currently covers:<\/p>\n\n<ul>\n<li>User authentication and account events<\/li>\n<li>Content and revision events<\/li>\n<li>Media library activity<\/li>\n<li>Comment activity<\/li>\n<li>Plugin and theme lifecycle events<\/li>\n<li>Core, update, and database upgrade events<\/li>\n<li>Settings, widget, permalink, and menu changes<\/li>\n<li>Privacy request and erasure workflow events<\/li>\n<li>File editor changes<\/li>\n<li>WooCommerce events when WooCommerce is active<\/li>\n<li>Supported form submission events for Contact Form 7, Gravity Forms, WPForms, and Elementor Pro Forms<\/li>\n<\/ul>\n\n<h4>Integrity and privacy<\/h4>\n\n<p>Each log row includes integrity metadata that can be verified from the Tools screen or WP-CLI. Privacy controls include IP logging toggles, optional IP anonymization, user-agent logging controls, and WordPress personal data exporter and eraser integration.<\/p>\n\n<h4>WP-CLI examples<\/h4>\n\n<ul>\n<li><code>wp bat-activity-log stats<\/code><\/li>\n<li><code>wp bat-activity-log cleanup --days=90 --batch-size=2000<\/code><\/li>\n<li><code>wp bat-activity-log export --file=\/tmp\/activity-log.csv<\/code><\/li>\n<li><code>wp bat-activity-log repair<\/code><\/li>\n<li><code>wp bat-activity-log verify-integrity<\/code><\/li>\n<li><code>wp bat-activity-log report --days=7 --format=text<\/code><\/li>\n<li><code>wp bat-activity-log benchmark --iterations=10 --per-page=100<\/code><\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>bat-activity-log<\/code> folder to <code>\/wp-content\/plugins\/<\/code>.<\/li>\n<li>Activate the plugin through the \"Plugins\" screen in WordPress.<\/li>\n<li>Open \"Bat Activity Log\" from the WordPress admin menu.<\/li>\n<li>Review the Settings and Tools screens to configure retention, privacy, alerts, and reports.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20the%20plugin%20create%20its%20own%20database%20table%3F\"><h3>Does the plugin create its own database table?<\/h3><\/dt>\n<dd><p>Yes. Bat Activity Log stores log rows in a custom <code>{prefix}bat_activity_log<\/code> table with indexes for efficient filtering, pagination, cleanup, and integrity verification.<\/p><\/dd>\n<dt id=\"can%20i%20control%20how%20long%20logs%20are%20stored%3F\"><h3>Can I control how long logs are stored?<\/h3><\/dt>\n<dd><p>Yes. You can define retention days in Settings and run cleanup manually from the Tools screen or WP-CLI.<\/p><\/dd>\n<dt id=\"does%20uninstall%20remove%20all%20data%3F\"><h3>Does uninstall remove all data?<\/h3><\/dt>\n<dd><p>Only if you explicitly enable \"Delete plugin data on uninstall\" in Settings.<\/p><\/dd>\n<dt id=\"can%20i%20disable%20some%20log%20types%3F\"><h3>Can I disable some log types?<\/h3><\/dt>\n<dd><p>Yes. You can disable modules and exclude selected roles or event groups to reduce noise.<\/p><\/dd>\n<dt id=\"does%20this%20plugin%20use%20composer%3F\"><h3>Does this plugin use Composer?<\/h3><\/dt>\n<dd><p>No. It ships with a custom PSR-4-style autoloader and does not require Composer in production.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.3.2<\/h4>\n\n<ul>\n<li>Replaced auth salt based integrity signing with a plugin-owned secret and added a migration to rebuild the integrity chain safely.<\/li>\n<\/ul>\n\n<h4>0.3.1<\/h4>\n\n<ul>\n<li>Fixed reviewer-reported request sanitization boundaries in admin settings handling and file editor event capture.<\/li>\n<li>Updated the Contributors list to include the plugin owner WordPress.org username.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Added a refined admin experience with product navigation, dashboard insights, and log detail drawer improvements.<\/li>\n<li>Added saved views, alert rules, scheduled reports, privacy tools, and integrity tooling.<\/li>\n<li>Added broader event coverage for privacy, updates, taxonomies, integrations, security, and files.<\/li>\n<li>Improved build and review readiness for WordPress.org submission.<\/li>\n<\/ul>","raw_excerpt":"Track important WordPress activity with detailed audit logs, filters, alerts, reports, and integrity checks.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/317906","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=317906"}],"author":[{"embeddable":true,"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/jerryscg"}],"wp:attachment":[{"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=317906"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=317906"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=317906"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=317906"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=317906"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/hsb.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=317906"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}