Records security-relevant site events into the site’s own database: logins, logouts and failed logins, post and page changes, plugin and theme installs, updates and activation, WordPress core updates, file editor saves, user and role changes, changes to the General, Writing, Reading, Discussion and Permalinks settings, menus, widgets, media, and content and personal-data exports and erasures. With WooCommerce active it also records order status and product price and stock changes. With Gravity Forms, WPForms, Contact Form 7, Yoast SEO, Rank Math, ACF, LearnDash, LifterLMS, MemberPress, Paid Memberships Pro or Elementor active, it records their form, submission, SEO, custom field, course, membership and page-builder changes (never what was typed into a form, a custom field’s value or a payment).
Each event stores its time, the acting user (or guest), the IP address (truncated by default), device and browser, event type, the object affected and a summary. An admin screen lists events newest first, with filters, search, pagination and CSV export. Retention is 90 days by default; choose a finite period or keep events indefinitely. The daily purge follows that setting. A daily summary email digest is included.
Features:
404ops Activity Log Pro is a separate, paid add-on plugin. It is not required, it is not bundled here, and none of it is present in this download: the free plugin above is complete on its own and behaves identically whether the add-on is installed or not. Buy it at https://404ops.com/plugins/404ops-activity-log and activate the licence on the plugin’s own Licence tab.
Three things it adds:
The free plugin contacts an external service only when you start or switch on one of these optional features:
WordPress.org checksums (file integrity scan). When you run a file integrity scan, or the daily scan is switched on, this site asks api.wordpress.org for the checksums of its WordPress version and downloads.wordpress.org for the checksums of each plugin version it compares. Each request carries only a version number, a locale or a plugin’s public slug. Nothing about your visitors or your content is sent. WordPress.org handles these requests under its privacy policy (https://wordpress.org/about/privacy/).
MaxMind (optional, off by default). If you turn on “Download and install weekly” under Settings Location and device and enter your own MaxMind account ID and licence key, this site downloads the GeoLite2 Country or City database from download.maxmind.com once a week (and when you press “Save and download now”). The request carries your account ID and licence key in an HTTP Authorization header and nothing about your site’s visitors or events; MaxMind then redirects the download to its storage provider, which receives no credentials. The database is installed on your own server and every lookup happens there. Data sent this way is handled under MaxMind’s terms of use (https://www.maxmind.com/en/terms-of-use), GeoLite2 end user licence (https://www.maxmind.com/en/geolite2/eula) and privacy policy (https://www.maxmind.com/en/privacy-policy). Uploading a database file yourself, or pointing at one already on the server, contacts nothing.
AI provider (optional, off by default). When you enable AI in Activity Log settings and configure a compatible provider in WordPress Settings Connectors, the daily digest gets a short AI-written summary. WordPress chooses a compatible provider from those configured, and that choice can change as providers change. The WordPress AI Client sends that provider the day’s event counts by type and anomaly descriptions. The provider’s terms apply. The separate Pro weekly summary, if enabled for AI, sends redacted figures, flags and change summaries. Without Activity Log’s opt-in or a compatible provider, the digest uses a local overview and sends no data to AI. Existing 404ops AI Connection credentials are not migrated: configure WordPress Connectors and enable AI for Activity Log again.
Policy references for commonly available WordPress AI providers (check the provider you configure):
The Pro add-on contacts only the services you configure yourself, and only the ones you switch on:
Syslog forwarding is local to your own server and contacts nothing over the network.