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.
Solid choice
Stream is a solid plugin choice in 2026, with a few things worth checking first. It runs on 70K+ sites, is rated 4.3/5 and was last updated 4 weeks ago, and scores 72/100 on our health check.
- Proven at scale on 70K+ active sites
- Actively developed — last update 4 weeks ago
- Momentum — downloads up 80.7% vs the previous 30 days
How does it stack up?
Side-by-side on installs, updates, ratings & supportDaily downloads
Download spikes usually follow a new release — each site that auto-updates counts as a download.
Rankings
Where Stream stands todayWordPress.org search rankings
Live position in the plugin search, top 100| Keyword | Position |
|---|---|
| Activity Log | #6 |
| audit log | #6 |
| event log | #10 |
| security | >100 |
| user tracking | #35 |
Version adoption
Share of active sites per release.
Rating breakdown
★★★★★★★★★★ 4.3 from 76 reviews
About Stream – Activity Log & Audit Trail
From the official readme · v4.4.0Description
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
- Tags
- 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:
-
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.
-
Translate into Your Language: Use the official plugin translation tool to translate Stream into your language.
-
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.
-
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!
Changelog
On multisite, access to the records of another site and changes to network-wide settings now need the manage_network_options capability. Stream no longer writes integration credentials, such as API keys and tokens, into option-change records. See the changelog for details.
4.4.0 – August 31, 2026
Security:
- Keep multisite record reads inside the current site, and make a network capability necessary for changes to network-wide settings.
- Remove integration credentials from option-change records. Secret values now show as
[redacted]. - Withhold alert destination credentials, such as Slack webhook URLs, from the
stream/get-alertsability.
Bug Fixes:
- Correct a false “SITE IS DISCONNECTED” error from
wp stream queryon a site with no records. - Correct a fatal error when a Stream capability check runs before
init. - Correct a PHP warning for a password reset request that gives an unknown user.
View the full release notes on GitHub.
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_schedulerfilter. - Add the
wp_stream_enable_auto_purgefilter (defaulttrue) 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_updateAJAX 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 inget_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
For developers
Is this your plugin? Show off the numbers.
Add a live badge to your site, docs or GitHub README. It updates on its own — no account needed.
Best Stream alternatives
All Activity Log plugins →FAQ
Stream – Activity Log & Audit Trail: quick answers
Straight answers, pulled from live WordPress.org data.
Live data from WordPress.org · checked Sep 26, 2026
Is Stream free?
Yes. Stream is free to download and use from the official WordPress.org plugin directory.
Is Stream safe to use in 2026?
Stream is a solid plugin choice in 2026, with a few things worth checking first. It runs on 70K+ sites, is rated 4.3/5 and was last updated 4 weeks ago, and scores 72/100 on our health check.
How many websites use Stream?
Stream is active on 70K+ WordPress websites and has been downloaded 2,538,508 times since it launched in December 2013. It was downloaded 80,202 times in the last 30 days.
Does Stream work with WordPress 7.1?
Stream is officially tested up to WordPress 7.0.6, while the latest release is 7.1.2. It may still work, but try it on a staging site first.
When was Stream last updated?
The latest version, 4.4.0, was released on August 31, 2026 (4 weeks ago).
Who makes Stream?
Stream is developed and maintained by XWP.
What are the best alternatives to Stream?
The most popular alternatives to Stream are WP Activity Log (300K+ installs), Activity Log (200K+ installs) and Shield Security (30K+ installs).
Powered by PageForge
Want thousands of pages that rank like these? Build them in an afternoon.
This directory runs on the same engine as PageForge. Turn any spreadsheet, CSV or API into thousands of fast, SEO-ready WordPress pages — with schema, internal links and AI-written copy baked in.
- CSV, Google Sheets & API data sources
- AI content, schema & internal links per page
- Works with Elementor, Gutenberg, Yoast & Rank Math
- Free on WordPress.org — no credit card


