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
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-alerts ability.
Bug Fixes:
- Correct a false "SITE IS DISCONNECTED" error from
wp stream query on 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_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
View the release notes.
See the full changelog for all releases.