Stream – Activity Log & Audit Trail icon

Stream – Activity Log & Audit Trail

Monitor all modifications made to a WordPress installation through detailed activity logs. With over 80,000 active installations and a Platinum PF Score of 85.8, this tool ranks in the top 1% of all WordPress plugins.

  • #486 Global Rank
  • 80K+ active installs
  • 4.3/5 76 ratings
  • Since 2013 13 years active

PF Score (About PF Scores)

PF Score is not a quality guarantee. It is a ranking based on available public signals.

Platinum85.2
Platinum
Gold
Silver
Bronze
Low

Score Breakdown

81.7
Popularity 40% 80K+ active installs
80.6
Reputation 35% 4.3★ from 76 ratings
97.4
Freshness 25% Updated 24 days ago

No active penalty — 8 historical CVEs, resolved — details

Download Trends

Loading download data…

Vulnerabilities

8 Total
8 Patched
0 Active
100% Resolved rate
CWE-862 · Missing Authorization

The Stream plugin for WordPress is vulnerable to authorization bypass in all versions up to, and including, 4.2.0. This is due to the plugin not properly verifying that a user is authorized to perform an action. This makes it possible for authenticated attackers, with subscriber-level access and above, to access all Stream activity records via the Heartbeat API.

6.5 Medium Affected All – 4.2.0 Patched in ✓ 4.2.1 Published 6 Aug 2026 CVE CVE-2026-11907
CWE-918 · Server-Side Request Forgery (SSRF)

The Stream plugin for WordPress is vulnerable to Server-Side Request Forgery in all versions up to, and including, 4.0.2 due to insufficient validation on the webhook feature. This makes it possible for authenticated attackers, with administrator-level access and above, to make web requests to arbitrary locations originating from the web application which can be used to query and modify information from internal services.

5.5 Medium Affected All – 4.0.2 Patched in ✓ 4.1.0 Published 14 Feb 2025 CVE CVE-2024-13879
CWE-352 · Cross-Site Request Forgery (CSRF)

The Stream plugin for WordPress is vulnerable to Cross-Site Request Forgery in all versions up to, and including, 4.0.1. This is due to missing or incorrect nonce validation on the network_options_action() function. This makes it possible for unauthenticated attackers to update arbitrary options that can lead to DoS or privilege escalation via a forged request granted they can trick a site administrator into performing an action such as clicking on a link.

8.8 High Affected All – 4.0.1 Patched in ✓ 4.0.2 Published 12 Sep 2024 CVE CVE-2024-7423
CWE-862 · Missing Authorization

The Stream plugin for WordPress is vulnerable to unauthorized access of data due to a missing capability check on the load_alerts_settings function in versions up to, and including, 3.9.2. This makes it possible for authenticated attackers with subscriber-level permissions or above to view arbitrary alerts.

4.3 Medium Affected All – 3.9.3 Patched in ✓ 3.9.3 Published 25 Apr 2023 CVE CVE-2022-43450
CWE-352 · Cross-Site Request Forgery (CSRF)

The Stream plugin for WordPress is vulnerable to Cross-Site Request Forgery in versions up to, and including, 3.9.2. This is due to missing or incorrect nonce validation on one of its functions. This makes it possible for unauthenticated attackers to invoke this function via a forged request granted they can trick a site administrator into performing an action such as clicking on a link.

4.3 Medium Affected All – 3.9.2 Patched in ✓ 3.9.3 Published 18 Apr 2023 CVE CVE-2022-43490

Vulnerability data provided by Wordfence Intelligence (opens in a new tab). CVE data: Copyright 1999–2026 The MITRE Corporation. CVE Terms of Use (opens in a new tab).

Support Statistics

1 Support threads
0 Resolved
0% Resolution rate

About Stream – Activity Log & Audit Trail

Real-time activity log and audit log for WordPress. Track every user action — logins, edits, plugin & settings changes — and get alerts.

Stream is a complete activity log and audit trail for your WordPress site: see what changed, who changed it, and when. From plugin activations to post edits, login attempts to new user creation, every user and system action is recorded in an audit log built for debugging, security monitoring, and compliance.

Every logged action is displayed in an activity stream and organized for easy filtering by User, Role, Context, Action or IP address. Admins can highlight entries in the activity log—such as suspicious user activity—to investigate what’s happening in real time. Stream also lets you configure email alerts and webhooks for integrations like Slack and IFTTT, so your team knows the moment something goes wrong.

Stream keeps its own logs healthy too: records are automatically purged on the retention schedule you choose, with batched deletion and orphaned-data cleanup that stay reliable even on very large sites.

Stream is also AI-ready: its abilities are exposed through the WordPress Abilities API and MCP Adapter, so AI assistants and other tools can securely query your site’s activity records.

For advanced users, Stream supports a network view of all activity records on your Multisite, exclude rules to ignore certain kinds of user activity, and a WP-CLI command for querying records.

Stream is free and fully open source — development happens in the open on GitHub, maintained by XWP.

With Stream’s powerful activity logging, you’ll have the information you need to responsibly manage your WordPress sites.

Built-In Tracking Integrations For Popular Plugins:

  • Advanced Custom Fields
  • bbPress
  • BuddyPress
  • Easy Digital Downloads
  • Gravity Forms
  • Jetpack
  • Two Factor
  • User Switching
  • WooCommerce
  • Yoast SEO

Built-In Tracking For Core Actions:

  • Posts
  • Pages
  • Custom Post Types
  • Users
  • Themes
  • Plugins
  • Tag
  • Categories
  • Custom Taxonomies
  • Settings
  • Custom Backgrounds
  • Custom Headers
  • Menus
  • Media Library
  • Widgets
  • Comments
  • Theme Editor
  • WordPress Core Updates

Other Noteworthy Features:

  • Multisite view of all activity records on a network
  • Limit who can view user activity records by user role
  • Set exclude rules to ignore certain kinds of user activity
  • Live updates of user activity records in the Stream
  • Export your Activity Stream as a CSV or JSON file
  • WP-CLI command for querying records

Configuration

Most of the plugin configuration is available under the “Stream” “Settings” page in the WordPress dashboard.

Request IP Address

The plugin expects the $_SERVER['REMOTE_ADDR'] variable to contain the verified IP address of the current request. On hosting environments with PHP processing behind reverse proxies or CDNs the actual client IP is passed to PHP through request HTTP headers such as X-Forwarded-For and True-Client-IP which can’t be trusted without an additional layer of validation. Update your server configuration to set the $_SERVER['REMOTE_ADDR'] variable to the verified client IP address.

As a workaround, you can use the wp_stream_client_ip_address filter to adapt the IP address:

add_filter(
    'wp_stream_client_ip_address',
    function( $client_ip ) {
        // Trust the first IP in the X-Forwarded-For header.
        // ⚠️ Note: This is inherently insecure and can easily be spoofed!
        if ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
            $forwarded_ips = explode( ',' $_SERVER['HTTP_X_FORWARDED_FOR'] );

            if ( filter_var( $forwarded_ips[0], FILTER_VALIDATE_IP ) ) {
                return $forwarded_ips[0];
            }
        }

        return $client_ip;
    }
);

⚠️ WARNING: The above is an insecure workaround that you should only use when you fully understand what this implies. Relying on any variable with the HTTP_* prefix is prone to spoofing and cannot be trusted!

Known Issues

  • We have temporarily disabled the data removal feature through plugin uninstallation, starting with version 3.9.3. We identified a few edge cases that did not behave as expected and we decided that a temporary removal is preferable at this time for such an impactful and irreversible operation. Our team is actively working on refining this feature to ensure it performs optimally and securely. We plan to reintroduce it in a future update with enhanced safeguards.

Contribute

There are several ways you can get involved to help make Stream better:

  1. Report Bugs: If you find a bug, error or other problem, please report it! You can do this by creating a new topic in the plugin forum. Once a developer can verify the bug by reproducing it, they will create an official bug report in GitHub where the bug will be worked on.

  2. Translate into Your Language: Use the official plugin translation tool to translate Stream into your language.

  3. Suggest New Features: Have an awesome idea? Please share it! Simply create a new topic in the plugin forum to express your thoughts on why the feature should be included and get a discussion going around your idea.

  4. Issue Pull Requests: If you’re a developer, the easiest way to get involved is to help out on issues already reported in GitHub. Be sure to check out the contributing guide for developers.

Thank you for wanting to make Stream better for everyone!

View contributors here.

Screenshots

Every logged-in user action is displayed in an activity stream and organized for easy filtering and searching.

Every logged-in user action is displayed in an activity stream and organized for easy filtering and searching.

Enable live updates in Screen Options to watch your site activity appear in near real-time.

Enable live updates in Screen Options to watch your site activity appear in near real-time.

Create rules for excluding certain kinds of records from appearing in Stream.

Create rules for excluding certain kinds of records from appearing in Stream.

Ratings & Reviews

Recent Reviews

Loading reviews…

View all reviews on WordPress.org (opens in a new tab)

Changelog

4.3.0 – July 18, 2026

Enhancements:

  • Make Action Scheduler usage optional at runtime: deferred purge / reset work now runs through a scheduler abstraction that defaults to Action Scheduler but can fall back to WP-Cron via the wp_stream_use_action_scheduler filter.
  • Add the wp_stream_enable_auto_purge filter (default true) to disable all TTL record auto-purge scheduling regardless of backend.
  • Surface a warning on the WP-Cron fallback when a large-table purge or reset is queued.

Bug Fixes:

  • Log the WooCommerce order ID instead of the order object in order event records.
  • Fix PHP 8.4 deprecation warnings.

View the full release notes on GitHub.

4.2.2 – July 6, 2026

Security:

  • Harden authorization for the live update preference: enforce the Stream view capability and always target the current user in the stream_enable_live_update AJAX handler so a user can only change their own live update preference.

View the full release notes on GitHub.

4.2.1 – July 2, 2026

Bug Fixes:

  • Fix authorization checks for Stream activity access and harden related AJAX, export, and query paths.
  • Fix inverted isset() check silently ignoring user search input in get_users().
  • Create missing database tables when resetting the database.
  • Avoid generating rewrite rules for the alerts post type.

View the full release notes on GitHub.

4.2.0 – May 28, 2026

New Features:

  • Expose Stream abilities via the WordPress MCP Adapter when present, enabling AI tools to query Stream records through the Abilities API.

Bug Fixes:

  • Fix unbounded growth of stream / stream_meta tables: the TTL-based auto-purge now runs via Action Scheduler with batched deletion, resolving database bloat on large sites.
  • Fix orphan stream_meta rows accumulating across repeated purge cycles with a terminal orphan reaper at the end of every auto-purge chain.
  • Skip Action Scheduler queries on front-end pageloads, eliminating unnecessary queries per pageview.

Enhancements:

  • Add a Clean Orphaned Meta link under Settings Advanced for one-shot cleanup on already-bloated installs.
  • Replace the legacy wp_stream_auto_purge WP-Cron event with a recurring Action Scheduler action, with run history visible under Tools Scheduled Actions.

View the full release notes on GitHub.

4.1.2 – February 19, 2026

View the release notes.

4.1.1 – February 3, 2025

View the release notes.

See the full changelog for all releases.

Alternatives to Stream – Activity Log & Audit Trail

Other WordPress plugins serving a similar purpose, ranked by relevance and PF Score.

Platinum95.1
Simple History – Track, Log, and Audit WordPress Changes icon

Simple History

Review all site changes and user activities through a detailed activity log tracking who modified content and when.

★ 4.9/5·300K+ installs·Updated 5 Aug 2026
Platinum93.3
WP Activity Log icon

WP Activity Log

Logs user activity and site changes for monitoring and change tracking across WordPress installations.

★ 4.7/5·300K+ installs·Updated 21 Jul 2026
Platinum86.4
Shield Security – Smart Bot Blocking, Brute-Force Login Protection & File Scanning icon

Shield Security

Blocks bots automatically and repairs security issues while filtering out non-critical alerts.

★ 4.8/5·30K+ installs·Updated 9 Jun 2026
Platinum98.7
Really Simple Security – Simple and Performant Security (formerly Really Simple SSL) icon

Really Simple Security

Hardens WordPress security with two-factor authentication, login protection, and vulnerability detection across 3 million active sites.

★ 4.9/5·3.0M+ installs·Updated 27 Jul 2026
Platinum98.3
Limit Login Attempts Security – Login Security, 2FA, Firewall, Brute Force Prevention icon

Limit Login Attempts Security

Defends WordPress logins with brute force protection, two-factor authentication, and IP blocking.

★ 4.8/5·1.0M+ installs·Updated 8 Jul 2026
Platinum98.1
Loginizer icon

Loginizer

Protects WordPress login pages from brute force attacks through automated threat detection and blocking.

★ 4.8/5·1.0M+ installs·Updated 3 Aug 2026
Platinum97.8
Wordfence Security – Firewall, Malware Scan, and Login Security icon

Wordfence Security

Firewall, malware scanner, and two-factor authentication for WordPress site security.

★ 4.7/5·5.0M+ installs·Updated 10 Aug 2026
Platinum96.1
ManageWP Worker icon

ManageWP Worker

Centralized dashboard for managing, backing up, and securing multiple WordPress sites simultaneously.

★ 4.6/5·1.0M+ installs·Updated 16 Jul 2026
Platinum95.6
MainWP Child – Securely Connects to the MainWP Dashboard to Manage Multiple Sites icon

MainWP Child

Connects multiple WordPress sites to a centralized self-hosted dashboard for management and monitoring.

★ 5/5·700K+ installs·Updated 5 Aug 2026
Platinum95.6
Kadence Security – Password, Two Factor Authentication, and Brute Force Protection icon

Kadence Security

Adds login security, two-factor authentication, vulnerability scanning, and firewall protection to WordPress sites.

★ 4.6/5·700K+ installs·Updated 27 Jul 2026