Planes have a black box, WordPress has Stream. When something goes wrong, you need to know how it happened.
Contributors: fjarrett, lukecarbis, stream, xwp
Tags: actions, activity, [activity log](https://wordpress.org/plugins/tags/activity log), [activity logs](https://wordpress.org/plugins/tags/activity logs), [admin actions](https://wordpress.org/plugins/tags/admin actions), analytics, audit, [audit log](https://wordpress.org/plugins/tags/audit log), [audit logs](https://wordpress.org/plugins/tags/audit logs), blackbox, [black box](https://wordpress.org/plugins/tags/black box), change, changes, dashboard, log, logs, stream, tracking, troubleshooting, [wp stream](https://wordpress.org/plugins/tags/wp stream)
Requires at least: 3.9
Tested up to: 4.6
Stable tag: 3.1.1
License: GPLv2 or later
With Stream, you're never left in the dark about WordPress Admin activity.
Every logged-in user action is displayed in an activity stream and organised for easy filtering by User, Role, Context, Action or IP address.
For advanced users, Stream also supports a Multisite view of all activity records on your network, the ability to set exclude rules to ignore certain kinds of user activity, and a WP‑CLI command for querying records.
Stream is perfect for keeping tabs on your clients. When something breaks, Stream is there to help. See what changed and who changed it.
Built-In Tracking Integrations For Popular Plugins:
- Advanced Custom Fields
- bbPress
- BuddyPress
- Easy Digital Downloads
- Gravity Forms
- Jetpack
- User Switching
- WooCommerce
- WordPress SEO by Yoast
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
See room for improvement?
Great! 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.
- 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!
Every logged-in user action is displayed in an activity stream and organized for easy filtering and searching.
- Fix: Hotfix for Error Updating Stream DB.
- New: Stream Alerts is here! Get notified when something happens in your WP-Admin, so that you don't miss a thing. (#844)
- Tweak: Better support for the latest version of Yoast SEO (#838)
- Tweak: Better support for the latest version of WooCommerce (#851#864)
- Tweak: Better taxonomy labelling (#859)
- Fix: Fatal error caused by conflict with Yoast SEO (#879)
- Fix: Activating Stream through WP CLI now works (#880)
- Fix: Custom roles track properly (#836)
Props @chacha, @lukecarbis, @johnbillion, @rheinardkorf, @frozzare, @johnregan3, @jacobschweitzer, @wrongware
- Tweak: Use get_sites instead of wp_get_sites when available (#856)
- Tweak: More stable record actions (like exporting) (71e6ac1)
- Tweak: Better multisite support (cfab041)
- Fix: Exclude rule settings have been restored and enhanced (#855)
- Fix: Loading users via ajax (#854)
- Fix: Use the correct label for events relating to taxonomies which are registered late (#859)
Props @chacha, @lukecarbis, Eugene Kireev, @johnbillion
- New: Better support for default themes (#831)
- New: Upgrade filter menus to Select2 4 (c3f6c65)
- Fix: Security Fixes
- Fix: Cron for purging old records has been fixed (#843)
- Fix: Better at storing records for Super Admins (#835)
- Fix: Allow Super Admins to be ignored and filtered (#835)
Props @chacha, @lukecarbis, @marcin-lawrowski
- New: Export your Stream records as CSV or JSON. (#823)
- Tweak: More mobile responsive list table (#810)
- Tweak: Better Javascript conflict prevention (#812)
- Tweak: Minor styling updates. It's about attention to detail. (#826)
- Fix: Gravity Forms error when adding a note (#811)
- Fix: In some instances, custom roles weren't being logged by Stream (#824)
- Fix: The Customiser fix you've been waiting for! Stream now properly records changes made from the Customiser. (#827)
Props @chacha, @lukecarbis, @Stayallive, @barryceelen, Jonathan Desrosiers, @marcin-lawrowski
- Tweak: Better descriptions when a post changes status (0eada10)
- Fix: Stream no longer crashes every time it tries to use a Jetpack (#798)
- Fix: You may now actually choose an item from the filter dropdown menus, instead of having everything greyed out (#800)
- Fix: Logging in / out of a Multisite install is now possible (#801)
- Fix: The Settings connector now works with WP CLI (78a56b2)
Props @lukecarbis
- Tweak: Better compatibility with upcoming WordPress 4.4 (2b2493c)
- Tweak: Minor security improvements
- Fix: New and improved Gravity Forms connector, works much better (#780) (thanks Rob!)
- Fix: Stream no longer explodes on < PHP 5.3, when trying to tell you that it explodes on < PHP 5.3 (#781)
- Fix: Fixed a smal typo (62455c5)
- Fix: Multiple Multisite Mistakes Mended (#788)
- Fix: Internet Explorer 8 fix!! IE8!? Come on, people, it's 2015. (#789)
- Fix: EDD connector bug (#790)
Props @lukecarbis, @rob, greguly
- Tweak: Helper function for running Stream queries added (#774)
- Tweak: Migration dialog removed (76e809f)
- Tweak: Better handling of draft saving and auto-saving (#775)
- Tweak: Records page title size now matches other admin pages (afcced8)
- Fix: Database update dialog is now displayed correctly (#773)
- Fix: The record's connector was being incorrectly stored as the connector name (#773)
- Fix: Record action links are back (#773)
- Fix: Jetpack is now able to connect without error while Stream is active (#768)
- Fix: Reset Filters text no longer wraps to a second line (#765)
Props @lukecarbis, Props @sirjonathan
- New: Stream and User Switching are now besties (#744)
- New: You can now choose to keep your records indefinitely (probably not a good idea) (#748)
- Tweak: We're now using local styles for our datepicker, instead of loading them externally (#751)
- Fix: Updating from version 1.4.9 no longer breaks your records (#749)
- Fix: Stream now works with custom wp-content folder locations (#745)
- Fix: Live updates work again (#739)
Props @lukecarbis, @johnbillion, @rob
- New: Activity logs are now stored locally in WordPress. No data is sent externally and no registration required.
- New: Migration process for Stream 2 users to move records out of the cloud, and into your local database.
- New: Various measures and database schema changes to improve Stream's performance.
- Removed: Notifications and Reports have been removed to be reworked for an upcoming release.
Props @fjarrett, @lukecarbis
- Tweak: Compatibility with split terms introduced in WordPress 4.2 (#702)
- Tweak: Add support for future and pending post transitions (#716)
- Tweak: Match new default admin colors introduced in WordPress 4.2 (#718)
- Fix: Compatibility issues with WP-Cron Control plugin and system crons (#715)
- Fix: Broken date range filter on Reports screen (#717)
Props @fjarrett
- New: Add reset button to reset search filters (#144)
- Tweak: WP-CLI command output improvements via
--format
option for table view, JSON and CSV (#705) - Tweak: Add link to https://wp-stream.com in README (#709)
- Tweak: Better highlighting on multiple live update rows
- Tweak: Limit custom range datepickers based on the Stream plan type
- Tweak: Limit legacy record migrations based on the Stream plan type
- Fix: Allow properties with values of zero to be included in queries (#698)
- Fix: Properly return record success/failure in log and store methods (#711)
Props @fjarrett, @szepeviktor
- New: WP-CLI command now available for querying records via the command line (#499)
- Tweak: Silently disable Stream during content import (#672)
- Tweak: Search results now ordered by date instead of relevance (#689)
- Fix: Handle boolean values appropriately during wp_stream_log_data filter (#680)
- Fix: Hook into external class load methods on init rather than plugins_loaded (#686)
- Fix: N/A user not working in exclude rules (#688)
- Fix: Prevent Notification Rule meta from being saved to all post types (#693)
- Fix: PHP warning shown for some users when deleting plugins (#695)
Props @fjarrett
- New: Full record backtrace now available to developers for debugging (#467)
- New: Unread count badge added to Stream menu, opt-out available in User Profile (#588)
- New: Stream connector to track Stream-specific contexts and actions (#622)
- Tweak: Inherit role access from Stream Settings for Notifications and Reports (#641)
- Tweak: Opt-in required for Akismet tracking (#649)
- Tweak: Ignore comments deleted when deleting parent post (#652)
- Tweak: Opt-in required for comment flood tracking (#656)
- Tweak: Opt-in required for WP Cron tracking (#673)
- Fix: Post revision action link pointing to wrong revision ID (#585)
- Fix: PHP warnings caused by Menu connector (#663)
- Fix: Non-static method called statically in WPSEO connector (#668)
- Fix: Prevent live updates from tampering with filtered results (#675)
Props @fjarrett, @lukecarbis, @shadyvb, @jonathanbardo, @westonruter
- Tweak: Improved localisation strings throughout the plugin (#644)
- Tweak: Improved tooltip text explaining WP.com sign in
- Fix: ACF Pro doesn't save custom field values when Stream enabled (#642)
Props @lukecarbis, @fjarrett
- All activity is now stored only in the cloud over SSL, local MySQL storage dependence is over!
- Connector and Context have merged in the UI, now just called Contexts
- The Exclude Rules UI has been completely revamped
- Notifications and Reports are now conveniently built into Stream for Pro subscribers
- Connectors for tracking other popular plugins are now built into Stream, like BuddyPress, Jetpack, Gravity Forms, and more...
- You create an account for Stream simply by signing in with your WordPress.com ID
NOTE: Multisite view of all activity records in the Network Admin has been removed in this release. If you require this feature, please do not update Stream until version 2.1.0 is released.
Props @fjarrett, @lukecarbis, @shadyvb, @chacha, @jonathanbardo, @bordoni, @dero, @jeffmatson, @stipsan, @c3mdigital, @adamsilverstein, @westonruter, @japh, @solace, @johnbillion
- Fix: Revert delayed log mechanism for post transition (#585)
- Fix: Revert usage of get_taxonomy() (#586)
- Fix: Notices not firing on correct action (#589)
- New: Greatly improved widget tracking, including changes performed in Customizer (#391)
- New: Now tracking when Akismet automatically marks comments as spam (#587)
- Tweak: Log WP-CLI details to Stream author meta (#470)
- Tweak: Track changes to options more deeply (#573)
- Fix: Labels not seen for CPT registered on init with default priority (#565)
- Fix: Stream menu appearing in Network menu when not network activated (#582)
- Fix: Post Revision ID associated to record is not the most recent one (#585)
- Fix: Incorrect action label for comment throttling (#591)
Props @westonruter, @fjarrett, @shadyvb, @lukecarbis, @chacha
- New: Comment Type support added to the Comments connector (#558)
- Fix: Datepicker opens again with each paged view (#568)
- Fix: PHP warning when deleting network users (#579)
- Fix: Track user count setting changes (#583)
- Fix: .po and .pot files out-of-date for translators (#584)
Props @lukecarbis, @fjarrett, @bordoni, @shadyvb
- Tweak: Actions provided for trashed posts are irrelevant (#523)
- Tweak: Use core language pack translations where possible (#534)
- Tweak: Consolidate show filter and show column screen options (#542)
- Tweak: Stop tracking failed login attempts (#547)
- Tweak: Remove all uses of extract() from Stream (#556)
- Fix: Excluding roles is not handled properly (#527)
- Fix: Stream runs install routine twice (#528)
- Fix: Widget records show sidebar slug instead of label (#531)
- Fix: Fatal error when PHP version is less than 5.3 (#538)
- Fix: Cannot exclude Custom Background context (#543)
- Fix: Conflict with Jetpack body class in WP Admin (#545)
- Fix: Stream settings exclude error for big wp_users table (#551)
Props @fjarrett, @lukecarbis, @shadyvb, @barryceelen, @japh
- New: Lightweight frontend indicator for sites using Stream (#507)
- Tweak: Add filterable method for excluded comment types (#487)
- Tweak: Rename "ID" column label to "Record ID" (#490)
- Tweak: One admin notice for any missing DB tables (#506)
- Fix: Custom authentication schemes not tracking user logins correctly (#434)
- Fix: Taxonomy connector conflicts with Edit Flow plugin (#498)
- Fix: Switching user is incorrectly tracked (#501)
- Fix: Extension activation links broken when plugin folders are renamed (#502)
- Fix: Author info showing up incorrectly (#505)
- Fix: Incompatibility with multi-server environments (#517)
- Fix: Warnings seen when Show Avatars is disabled (#518)
- Fix: Notices for non-existent extension data after timeout (#529)
Props @fjarrett, @shadyvb, @lukecarbis, @japh
- New: Admin pointers to highlight when new admin screens are introduced (#466)
- Tweak: Filter introduced to allow the Stream admin menu position to be changed (#99)
- Tweak: Provide option label for records that show when the Stream database has updated (#444)
- Tweak: Better handling of authors in the list table (#448)
- Tweak: Way for developers to set their Stream Extensions affiliate ID on links from the Extensions screen (#482)
- Fix: Extensions screen CSS bug in Firefox (#464)
- Fix: Error when installing extensions from the Network Admin (#491)
- Fix: Undefined notice in admin.php (#468)
Props @westonruter, @fjarrett, @japh, @lukecarbis, @jonathanbardo, @bordoni
- New: Introducing the Stream Extensions screen! (#396)
Props @jonathanbardo, @lukecarbis, @shadyvb, @c3mdigital, @fjarrett
- Fix: Update Database button redirecting to previous screen (#443)
- Fix: Update routine hotfix that was causing records to disappear (#447)
Props @jonathanbardo, @lukecarbis, @westonruter, @fjarrett
- Fix: Scripts and styles not using Stream version number (#440)
- Fix: WP-CLI incorrectly referenced in records (#441)
Props @westonruter, @fjarrett
- New: Multisite is now fully supported, activate Stream network-wide (#65)
- New: Separate API for handling DB update routines (#379)
- New: WP-CLI compatibility, Stream now tracks changes made via WP-CLI (#423)
- Tweak: Deprecate functions and hooks in favor of consistent naming conventions (#267)
- Tweak: Use icon link instead of clicking the summary to filter by object ID (#380)
- Tweak: Save additional author meta for better records (#389)
- Tweak: More compact search filters for smaller screens (#403)
- Fix: Fix AJAX loading of authors in dropdown filters (#49)
- Fix: Custom capability conflict with W3 Total Cache plugin (#296)
- Fix: Live updates remove last item in activity table (#386)
- Fix: Live updates screen option checkbox not persisting (#392)
- Fix: IP validator not respecting zero (#394)
- Fix: Non-Administrator users seeing errors in Settings records (#406)
- Fix: Uninstall confirmation message doesn't display (#411)
- Fix: TTL purge schedule is never setup (#412)
- Fix: NextGen compability issue (#416)
- Fix: Stream Feeds Key not being automatically generated (#420)
Props @fjarrett, @lukecarbis, @c3mdigital, @westonruter, @shadyvb, @powelski, @johnregan3, @jonathanbardo, @desaiuditd
- New: Theme Editor connector for tracking changes made to theme files (#313)
- New: Additional screen options to show/hide only the filters you care about (#329)
- New: Visibility option in Exclude settings to hide past records from view (#355)
- New: Stream Activity dashboard widget now supports live updates (#356)
- New: Hover authors to reveal a tooltip with helpful user meta (#338)
- New: Hover roles to reveal a tooltip with the number of authors assigned to that role (#377)
- Tweak: Future dates now disabled in Start date field datepicker (#334)
- Tweak: Now showing user Gravatars in Exclude Authors & Roles settings field (#333)
- Tweak: ID column is now hidden by default in Screen Options (#348)
- Tweak: Widget updated summary message improvement (8818976)
- Fix: Autocomplete not working correctly in Exclude IP Addressees settings field (#335)
- Fix: Reset Stream Database link not clearing everything in all cases (#347)
- Fix: PHP 5.3.3 compatibility issue with filter constant (#351)
- Fix: Predefined date range intervals not honoring the site timezone setting (#353)
- Fix: wpdb::prepare() notice appearing in WordPress 3.9 (#354)
- Fix: Invalid argument warning thrown on fresh installations of WordPress (#358)
- Fix: Record TTL purge not functioning correctly (#371)
- Fix: Small CSS bug in jQuery UI datepicker skins (04c80af)
Props @powelski, @fjarrett, @jonathanbardo, @faishal, @desaiuditd, @lukecarbis, @johnregan3, @Powdered-Toast-Man
- New: Exclude tab in Settings to prevent specific types of activity from being tracked (#251)
- New: Now logging Custom Background and Custom Header changes (#309)
- New: Predefined date intervals now available when filtering records (#320)
- Tweak: Action links are now available for Stream Settings records (#305)
- Tweak: User avatars now displayed in Authors dropdown filter (#311)
- Tweak: Live updates are enabled by default for new installs (#312)
- Fix: Fallback to the term slug if a label does not exist in list-table (#214)
- Fix: Widget sorting is now being tracked properly as well as Inactive widgets (#283)
- Fix: Superfluous auto-draft posts are now prevented from being logged (#293)
Props @powelski, @faishal, @fjarrett, @desaiuditd, @lukecarbis, @shadyvb
Fixes bug that caused media uploads to fail on new posts. Props @fjarrett
Use attachment type as context in Media connector. Bug fixes. Props @lukecarbis, @powelski, @fjarrett
Pagination added to Stream Activity dashboard widget. Bug fixes. Props @chacha, @fjarrett
Improved context names in Users connector. Props @powelski
Use sidebar area names as context in Widgets connector. Bug fixes. Props @desaiuditd, @shadyvb, @fjarrett, @bordoni
Use post type names as context in Comments connector. German translation update. Bug fixes. Props @powelski, @kucrut, @pascalklaeres, @shadyvb, @fjarrett
Replacement function for filter_input family to avoid PHP bug. Filter added to main Stream query. Bug fixes. Props @shadyvb, @powelski, @fjarrett
Prevent records of disabled connectors from appearing in the Stream. Bug fixes. Props @kucrut, @johnregan3
Translation updates. Langage packs for pt_BR and id_ID. Bug fixes. Props @kucrut, @shadyvb, @bordoni, @powelski, omniwired, @fjarrett
Awesome datepicker styles. Performance optimizations. Bug fixes. Props @johnregan3, @shadyvb, @fjarrett, @jonathanbardo
Load authors filter using AJAX if there are more than 50. Props @powelski
Bug fixes. Props @shadyvb
Upgrade routine for IPv6 support. Persist tab selection after saving Stream Settings. Props @shadyvb, dero
Sortable columns bug fix on the records screen. Props @powelski, @fjarrett
Fixed a class scope bug reported in the support forum that was causing a fatal error on some installs. Props @shadyvb
Highlight changed settings field feature. DB upgrade routine for proper utf-8 charset. Various bug fixes. Props @powelski, @johnregan3, @shadyvb, @fjarrett
Upgrade routine for IP column in DB. Serialized option parsing for Stream Settings records. Purge records immediately when TTL is set backwards in Stream Settings. Various bug fixes. Props @shadyvb, @powelski, @fjarrett
Bug fix for list table notice on new installations. Props @shadyvb
Disable terms in dropdown filters for which records do not exist. Props @johnregan3
Several important bug fixes. Props @shadyvb
Bug fix for sites using BuddyPress. Props @johnregan3
Code efficiency improvements when fetching admin area URLs. Props @fjarrett
Query improvements, default connector interface, hook added for general settings fields. Bug fixes. Props dero, @jonathanbardo, @shadyvb, @fjarrett
Bug fix for live updates breaking columns when some are hidden via Screen Options. Props @johnregan3
Language pack for Polish. Bug fixes. Props @powelski, @fjarrett, @johnregan3, @kucrut
Language pack for Spanish. Bug fixes. Props omniwired, @shadyvb
Ensure the dashboard widget repects the Role Access setting. Props @fjarrett
Require nonce for generating a new user feed key. Props @johnregan3
Allow list table to be exensible. Hook added to prevent tables from being created, if desired. Props @johnregan3, @fjarrett, @jonathanbardo
Updated screenshot assets and descriptions. Props @fjarrett
Support for live updates in the Stream. Bug fixes. Props @jonathanbardo, @johnregan3, @fjarrett
Plugin version available as a constant. Bug fixes. Props @jonathanbardo, @fjarrett
Use menu name as context in Menus connector. Warning if required DB tables are missing. Bug fixes. Props @jonathanbardo, @fjarrett, @topher1kenobe
WordPress context added to Installer connector for core updates. Props @shadyvb
Replacing Chosen library with Select2. Bug fixes. Props @kucrut, @shadyvb, @fjarrett
Added support for private feeds in JSON format. Flush rewrite rules automatically for feeds when enabled/disabled. Bug fixes. Props @jonathanbardo, @fjarrett
Specify which roles should have their activity logged. Delete all options on uninstall. Bug fixes. Props @jonathanbardo, @fjarrett
Added connector for Comments. Stream activity dashboard widget. UI enhancements. Bug fixes. Props @jonathanbardo, @fjarrett, @shadyvb, @topher1kenobe
Language packs for French and German. Option to uninstall database tables. Bug fixes. Props @jonathanbardo, @fjarrett, @topher1kenobe, @pascalklaeres
Setting to enable/disable private feeds functionality. Additional record logged when a user's role is changed. Bug fixes. Props @fjarrett, @kucrut, @topher1kenobe, @justinsainton
Ability to query Stream records in a private RSS feed. Bug fixes. Props @fjarrett, @shadyvb
Bug fix for Role Access option. Props @fjarrett
Bug fixes for the Installer connector. Props @shadyvb
Hotfix to remove PHP 5.4-only syntax. Role Access option added to Settings. Props @kucrut
Added connectors for Taxonomies and Settings. Bug fixes. Props @shadyvb, @fjarrett
UX improvements to manual DB purge. Cron event for user-defined TTL of records. Bug fixes. Props @shadyvb, @fjarrett
Require PHP 5.3 to activate plugin. Provide action links for records when applicable. Bug fixes. Props @shadyvb, @fjarrett
Improved support for pages and custom post types. Chosen for filter dropdowns. Pagination support in screen options. Bug fixes. Props @shadyvb, @fjarrett
Improved actions for Users context. Action for edited images in Media context. Bug fixes in Menus context. Props @shadyvb, @fjarrett, @akeda
Second iteration build using custom tables data model. First public release. Props @shadyvb, @fjarrett
Initial concept built using custom post type/taxonomies as the data model. Props @shadyvb