Real User Monitoring for WordPress - track actual visitor performance, not synthetic benchmarks.
Synthetic tools like Lighthouse and PageSpeed Insights test from a single location under ideal conditions. Mudrava RUM captures what your real visitors actually experience - across devices, networks, and geographies.
| Synthetic Testing | Mudrava RUM |
|---|---|
| Lab environment | Real user data |
| Single location | Global visitors |
| One device profile | Mobile, tablet, desktop |
| Scheduled snapshots | Every pageview (sampled) |
| Theoretical scores | Actual TTFB, LCP, load times |
- Real-user metrics - TTFB, LCP, server generation time, total page load
- Zero-config collector - lightweight async JS, no impact on page speed
- Live Monitor dashboard - real-time log with sortable columns and filters
- Performance reports - on-demand modal with averages, P75 LCP, slowest pages
- Email summaries - scheduled daily/weekly via WP-Cron
- Critical TTFB alerts - configurable threshold, consecutive trigger, cooldown
- Smart sampling - 100%, 50%, or 10% traffic sampling rate
- Privacy-first - no account identifiers, no cookies, no external services, all data stays in your DB
- Cache-aware - detects and handles cached page artifacts automatically
- Extensible - action/filter hooks for developers
Screenshots are available on the WordPress.org plugin page.
Live Monitor - filterable real-time performance log with color-coded metrics.
Settings - sampling rate, retention, excluded roles, email reports, TTFB alerts.
Report Modal - aggregated stats, P75 LCP, top slowest pages by LCP.
- WordPress 6.2+
- Tested up to WordPress 7.1.3
- PHP 7.4+
- WP REST API enabled
- WP-Cron for scheduled emails (or external cron)
- Upload the
mudrava-rumfolder to/wp-content/plugins/. - Activate via Plugins → Installed Plugins.
- Go to Mudrava RUM → Settings to configure sampling, retention, and alerts.
- Visit Mudrava RUM → Live Monitor to see incoming data.
No theme edits required. The frontend collector loads automatically.
| Endpoint | Method | Auth | Description |
|---|---|---|---|
/wp-json/mudrava-rum/v1/collect |
POST | Nonce | Ingestion endpoint for collector JS |
/wp-json/mudrava-rum/v1/logs |
GET | manage_options |
Paginated log query with filters |
/wp-json/mudrava-rum/v1/stats |
GET | manage_options |
Aggregated statistics |
/wp-json/mudrava-rum/v1/send-report |
POST | manage_options |
Trigger email report |
// Filter whether to track a request
add_filter( 'mdvrm_should_track_request', function ( $track, $settings ) {
return $track;
}, 10, 2 );
// Modify log data before insertion
add_filter( 'mdvrm_before_insert', function ( $row ) {
return $row;
} );
// React after an event has been stored
add_action( 'mdvrm_log_inserted', function ( $insert_id, $row ) {
// ...
}, 10, 2 );
// Filter collector settings for frontend JS
add_filter( 'mdvrm_collector_settings', function ( $localize ) {
return $localize;
} );
// Customize email report subject/content
add_filter( 'mdvrm_report_email_subject', function ( $subject, $recipient, $site_name, $stats ) {
return $subject;
}, 10, 4 );
add_filter( 'mdvrm_report_email_body', function ( $body, $recipient, $avg ) {
return $body;
}, 10, 3 );
add_filter( 'mdvrm_alert_email_subject', function ( $subject ) {
return $subject;
} );
// Action after plugin is fully loaded
do_action( 'mdvrm_loaded', $plugin );| Field | Description |
|---|---|
event_time |
UTC timestamp |
url |
Page URL |
server_time |
PHP generation time (seconds) |
ttfb |
Time to First Byte (seconds) |
lcp |
Largest Contentful Paint (seconds) |
total_load |
Full page load time (seconds) |
memory_peak |
PHP peak memory (bytes) |
device |
mobile / tablet / desktop |
net |
4g / 3g / 2g / slow-2g |
country |
ISO code via CF-IPCountry header |
user_role |
Non-unique role label for tracked logged-in visitors |
session_id |
Random ID (sessionStorage, not a cookie) |
No account identifiers are collected. Emails, usernames, and identity profile data are not stored. No cookies are set. No data leaves your server.
# Install dev dependencies
composer install
# Run PHPCS linting
composer lint
# Auto-fix coding standard issues
composer lint:fixContributions are welcome. Please open an issue first to discuss proposed changes.
- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Open a Pull Request
Before you start, read the contributing checklist, the security policy, the Code of Conduct, the accessibility statement and support options.
GPL-2.0-or-later - see LICENSE for details.
Built by MUDRAVA - a digital product studio specializing in WordPress, web performance, and design systems.