BugMonitor Documentation
Current Version: 0.3.1
Text Domain: bugmonitor
BugMonitor is a comprehensive error monitoring and debugging solution for WordPress that detects and reports issues before they impact your users.
Unlike cloud‑based services, all monitoring happens on your server. No data sharing with third parties, and full GDPR compliance out of the box.
Track JavaScript errors, PHP warnings, broken links, form issues, SEO problems, UI bugs, performance issues, and more—all with session replay and screenshots to help you reproduce and fix problems faster.
Getting Started
Choose the right plan
BugMonitor is the only WordPress plugin that can continuously monitor errors on your site. There are 4 available plans:
Single plan
You can use BugMonitor with Single plan for 1 WordPress site. It can be the right choice if you have only 1 site, or if you would like to test what can BugMonitor do (you can upgrade your subscription later).
Multi plan
You can use BugMonitor with Multi plan for up to 5 WordPress sites. Regarding that the Multi plan price is very reasonable, if you have at least 3 sites you should choose Multi plan.
Infinite plan
We created Infinite plan for freelancers and agencies. Infinite plan can be used on unlimited sites. We offer Infinite plan for a reasonable one-time fee.
Instant access
You can purchase a 14-day instant access plan. This plan provides unlimited site access for 14 days with a one-time fee.
Install BugMonitor
- Login to My account on bug-monitor.com
- On the next screen you will see your subscriptions. Choose any active subscription and click to Manage Subscription
- On the next screen click to Download plugin installer
- Login to WordPress admin where you would like to install BugMonitor
- Go to Plugins > Add new and click to upload plugin
- Select the previously downloaded ZIP file (bug-monitor.zip) and click to install
Dashboard & Interface
The BugMonitor dashboard provides a comprehensive overview of all detected issues on your site. Understanding how to navigate and use the dashboard effectively is key to maintaining a healthy website.
Event List
Overview
The main dashboard displays all detected events in a chronological list. Each event shows the type of issue, affected URL, timestamp, and severity level. Events are color-coded by category for easy identification.
Filtering Events
You can filter events by category (Functional, SEO, UI, UX, WebVitals, Network, JavaScript, WordPress), severity level, date range, or affected URL. This helps you focus on specific types of issues or problematic pages.
Search Functionality
Use the search bar to quickly find events by URL, error message, or specific keywords. This is particularly useful when investigating a known issue or tracking down problems on specific pages.
Event Details
Detailed Information
Clicking on any event opens a detailed view showing the complete error information, including the exact error message, stack trace (for JavaScript errors), affected element, browser information, and user context. This detailed information helps you understand and reproduce the issue.
Occurrence History
Each event detail page shows how many times the issue has occurred, when it was first detected, and the last occurrence. This helps you understand the frequency and impact of the problem.
Session Replay
BugMonitor records user sessions when errors occur, allowing you to replay exactly what the user did leading up to the issue. This feature is invaluable for understanding the context of errors and reproducing bugs. The session replay shows mouse movements, clicks, scrolling, and form interactions.
Screenshots
For visual issues (UI problems, layout issues, etc.), BugMonitor automatically captures screenshots showing exactly what the user saw when the error occurred. This helps you quickly identify visual problems without needing to reproduce them manually.
Actions
For every event, there are four available actions: 'Solved', 'Ignore', 'Ignore Category', and 'Ignore Type
Solve Event
Clicking 'Solved' for an event indicates that you have resolved the issue, and it likely won't happen again. However, if it does recur, the event will be reported again.
Ignore Event
Clicking 'Ignore' for an event signifies that you consider it a false positive or choose not to address it. In this case, even if the event recurs, it won't be reported again. Ignored events can be found in the 'Ignored Events' list, and they can be 'unignored' at a later time.
Ignore Category
If you find a category of issues (e.g., SEO or UI issues) unhelpful, you can choose to ignore the entire category. This action removes all previously reported events in that specific category from the report. If you decide to re-enable the category later, new issues within it will start being reported again.
Ignore Type
If you find a specific type of issue (e.g., Image alt tag issues or Hard to read text issues) to be unhelpful, you can opt to ignore these errors. Doing so will remove all previously reported events of that particular type from the report. Should you decide to re-enable reporting for this type of issue later, new occurrences will begin to be reported again.
Monitoring
BugMonitor monitors various types of issues across eight categories.
Functional issues
Functional issues primarily consist of critical errors that break the functionality of your site.
Unresponsive buttons/links
Activating this option allows BugMonitor to report any buttons or links that are unresponsive when clicked by a user.
Form submission issues
BugMonitor will identify and report issues related to form submissions on your site, such as JavaScript errors or incorrect captcha settings, preventing successful submission.
Broken links
Beyond just logging 404 errors, this feature helps pinpoint the location of broken links on your site, enabling you to fix them more efficiently.
Form abandonment
BugMonitor tracks when users start filling out a form but leave without completing it. This data helps you identify problematic forms and understand where users are dropping off, allowing you to optimize your forms for better conversion rates.
JS errors
JavaScript errors often occur silently. When this option is enabled, BugMonitor will report any JavaScript errors that occur during a site visit.
Network errors
Network errors can lead to issues like missing images or even break site functionality. Reporting and fixing these issues is crucial for maintaining a seamless website experience.
HTTP errors
BugMonitor can report various HTTP errors such as 404, 403, and 500, which occur on your site, including those involving third-party resources.
Mixed content
If your site uses HTTPS but contains resources loaded over HTTP, browsers may block them. Enabling this option allows BugMonitor to report these mixed content issues.
CSP errors
This feature enables BugMonitor to report instances where resources have been blocked due to the Content Security Policy (CSP) violations.
Unsecure connection
If you enable this feature, BugMonitor will notify if the site was loaded through an unsecure connection without SSL encryption. Beyond security issues, this can cause slowdowns and harm SEO.
SEO issues
Title
Having a proper title is crucial for both SEO and user experience. In WordPress, titles are often dynamically generated, which can result in titles being too short, too long, or even missing.
Meta description
A proper meta description is vital for SEO. In WordPress, these descriptions are usually dynamically generated, which may lead to them being too short, too long, or entirely absent.
Image issues
For optimal SEO and site usability, proper alt attributes are essential for every image. However, alt tags are often missing or inappropriate, especially for dynamically added images.
UI Problems
Hard to read text
BugMonitor identifies instances of hard-to-read text, such as poor font size or color contrast. This feature is crucial for recognizing and addressing text clarity issues, thereby improving site accessibility.
Too close clickable elements
This feature reports clickable elements that are too close to each other, which can potentially cause user navigation errors. Highlighting these issues helps in enhancing the user experience, particularly on touch devices.
Layout issues
BugMonitor detects and reports layout problems like misalignments or overlapping elements. Identifying these issues is key to maintaining a professional and user-friendly website appearance.
Content obstruction
This feature identifies when page content is obscured or blocked by overlaying elements such as popups, sticky headers, or other UI components. Content obstruction can frustrate users and prevent them from accessing important information on your site.
Font issues
BugMonitor detects font-related problems such as missing fonts, failed font loading, or fonts that render incorrectly. These issues can significantly impact the visual appearance and readability of your site.
UX Problems
Unresponsive elements
BugMonitor flags elements that appear clickable but do not respond when interacted with. This feature helps in identifying and addressing UI elements that might confuse or frustrate users, ensuring a more intuitive and responsive website experience.
Slow response
This feature monitors and reports on slow Time to First Byte (TTFB) or sluggish AJAX responses. Timely reporting of these issues is essential for optimizing site speed and enhancing the overall user experience, especially for dynamic content.
Bounce rate
BugMonitor tracks and reports the bounce rate, which indicates the percentage of visitors who leave the site after viewing only one page. This metric is crucial for understanding user engagement and identifying potential issues with site content or usability.
WebVitals
LCP
BugMonitor tracks the Largest Contentful Paint, a key WebVital that measures loading performance. It helps in identifying the time taken for the largest content element to load, which is crucial for assessing user experience during site visits.
FCP
This feature monitors the First Contentful Paint, which measures the time from navigation to when any part of the page's content is rendered on the screen. It's an important metric for understanding perceived load speed from the user's perspective.
CLS
BugMonitor evaluates the Cumulative Layout Shift, a vital metric that quantifies the amount of unexpected layout shift of visual page content. Monitoring CLS is essential for ensuring a stable and visually consistent browsing experience for users.
WordPress and server related errors
Uptime monitoring
BugMonitor tracks your website's availability, alerting you to downtime instances, ensuring prompt awareness and response.
PHP errors
Sometimes WordPress plugins or themes can cause PHP errors. Ideally, we would notice them immediately after updating the theme or plugins, but BugMonitor can report them even if they occur silently, such as during form submissions or AJAX requests.
PHP warnings
This option allows you to monitor PHP warnings. These are non-fatal errors that don't prevent page loading but can cause issues in functionality. Since they're not as noticeable as fatal errors, detecting them can be more challenging.
Deactivate Broken Plugins
Broken plugins can prevent access to the admin area. If you enable this option, BugMonitor will automatically disable any plugins that cause a fatal error in the admin area.
Redirect loop
This feature automatically identifies and records instances of redirect loops, helping maintain website stability and enhancing user experience by promptly flagging potential navigation issues.
Malicious redirect
This feature automatically identifies and records malicious redirects, which is crucial when your site has been hacked and traffic is being redirected to third-party URLs.
Email sending errors
BugMonitor detects when WordPress fails to send emails. This is critical for monitoring contact forms, password reset emails, order confirmations, and other email-dependent functionality. Failed emails can significantly impact user experience and business operations.
Notifications
Instant alerts
Critical PHP errors, redirect issues, and other site-breaking problems trigger instant notifications. BugMonitor delivers these alerts immediately via e-mail (and other configured endpoints), including key technical details so you can react before users are impacted.
Five-minute summaries
Background tasks run every five minutes to collect newly detected critical events. When enabled, BugMonitor aggregates these incidents into a short summary email so you receive condensed updates without losing situational awareness.
Daily summary
Less urgent warnings and errors are bundled into a daily digest. The summary highlights affected pages, event counts, and trending issues, making it easy to review everything that happened in the last 24 hours.
Notification health checks
BugMonitor periodically validates your configured notification endpoints. If an email address bounces or a webhook becomes invalid, you will see a dashboard notice so you can fix the endpoint before critical alerts are missed.
Settings & Configuration
BugMonitor provides various settings to customize how events are tracked, stored, and reported. Proper configuration ensures you get the most relevant information without overwhelming your dashboard.
Event Retention
Control how long events are stored in your database. The default retention period is 30 days, but you can adjust this based on your needs and available database space. Older events are automatically purged to keep your database clean and performant.
Notification Settings
Email Notifications
Configure email addresses to receive notifications. You can set up multiple recipients and customize which types of events trigger notifications. Critical errors can be sent immediately, while minor issues can be batched into daily summaries.
Push Notifications
Enable browser push notifications for instant alerts about critical errors. This ensures you're immediately aware of site-breaking issues even when you're not checking your email.
Notification Frequency
Control how often you receive notifications. Options include instant alerts for critical errors, hourly summaries, or daily digests. You can also set quiet hours to avoid notifications during specific times.
Toolbar Settings
BugMonitor adds a toolbar to your WordPress admin bar showing the current event count. You can disable this toolbar if you prefer a cleaner admin interface. The toolbar provides quick access to recent events without opening the full dashboard.
Monitoring Toggles
Each monitoring category can be individually enabled or disabled. This allows you to focus on the types of issues most relevant to your site. For example, if you're not concerned about SEO issues, you can disable that category entirely to reduce noise in your event list.
Developers
BugMonitor provides hooks and filters that developers can use to customize its behavior and integrate it with other systems. This section documents all available developer tools.
Filter Hooks
Filter hooks allow you to modify BugMonitor's behavior and data. Here's a complete list of available filters.
bug_monitor/disable_frontend
Controls whether BugMonitor's frontend monitoring script should be loaded. This is useful for disabling monitoring on specific pages or for specific user roles.
Parameters:
$disabled(boolean) - Whether to disable frontend monitoring (default: false)
Example:
// Disable BugMonitor for page builders
add_filter('bug_monitor/disable_frontend', function($disabled) {
// Disable for Elementor editor
if (isset($_GET['elementor-preview'])) {
return true;
}
// Disable for logged-in administrators
if (current_user_can('manage_options')) {
return true;
}
return $disabled;
});
bug_monitor/save-settings
Filters the default settings before they are saved. Allows you to programmatically set default monitoring options.
Parameters:
$settings(array) - Array of default settings
Example:
// Customize default settings
add_filter('bug_monitor/save-settings', function($settings) {
// Disable PHP warnings by default
$settings['php/warning'] = '';
// Enable uptime monitoring by default
$settings['server/uptime'] = 'on';
return $settings;
});
bug_monitor/get_option
Filters option values when they are retrieved. Useful for dynamically changing settings based on context.
Parameters:
$value(mixed) - The option value$key(string) - The option key
Example:
// Dynamically modify options
add_filter('bug_monitor/get_option', function($value, $key) {
// Disable specific monitoring on staging
if (defined('WP_ENVIRONMENT_TYPE') && WP_ENVIRONMENT_TYPE === 'staging') {
if ($key === 'server/uptime') {
return '';
}
}
return $value;
}, 10, 2);
bug_monitor/set_option
Filters option values when they are set for the current request (temporary, not saved to database).
Parameters:
$value(mixed) - The option value being set$key(string) - The option key
bug_monitor/update_option
Filters option values before they are saved to the database. This is called when an option is permanently updated.
Parameters:
$value(mixed) - The option value being saved$key(string) - The option key
Example:
// Validate option values before saving
add_filter('bug_monitor/update_option', function($value, $key) {
// Ensure event retention is at least 7 days
if ($key === 'system/event_retention' && intval($value) < 7) {
return '7';
}
return $value;
}, 10, 2);
bug_monitor/event_tick
Controls the time window for grouping similar events. Events occurring within the same tick are grouped together to avoid duplicate reporting.
Parameters:
$tick(integer) - Time window in seconds (default varies by event type)$type(string) - Event type$details(string) - Event details$url(string) - Affected URL
Example:
// Adjust event grouping window
add_filter('bug_monitor/event_tick', function($tick, $type, $details, $url) {
// Group WebVitals events over 1 hour instead of 5 minutes
if (strpos($type, 'webvitals/') === 0) {
return 3600;
}
return $tick;
}, 10, 4);
bug_monitor/event_id
Filters the generated event ID used for grouping similar events. This allows you to customize how events are grouped together.
Parameters:
$event_id(string) - The generated event ID hash$type(string) - Event type$details(string) - Event details$url(string) - Affected URL$tick(integer) - Time tick used in the hash
bug_monitor/session_tick
Controls how long a user session is tracked before starting a new session. Default is 12 hours (43200 seconds).
Parameters:
$tick(integer) - Session duration in seconds (default: 43200)
Example:
// Extend session tracking to 24 hours
add_filter('bug_monitor/session_tick', function($tick) {
return 86400; // 24 hours
});
bug_monitor/rate_limit_screenshot_tick
Controls the rate limiting for screenshot captures. Screenshots taken within the same tick for the same issue are deduplicated. Default is 12 hours (43200 seconds).
Parameters:
$tick(integer) - Rate limit duration in seconds (default: 43200)
Example:
// Capture screenshots more frequently (every 1 hour)
add_filter('bug_monitor/rate_limit_screenshot_tick', function($tick) {
return 3600; // 1 hour
});
bug_monitor/frontend/init_priority
Controls the priority at which BugMonitor's frontend script is loaded in wp_head. Default is -PHP_INT_MAX to load as early as possible.
Parameters:
$priority(integer) - Hook priority
bug_monitor_api_request_args
Filters the arguments passed to API requests. Useful for modifying timeout, headers, or other request parameters.
Parameters:
$args(array) - wp_remote_post arguments
Example:
// Increase API timeout
add_filter('bug_monitor_api_request_args', function($args) {
$args['timeout'] = 120; // 2 minutes
return $args;
});
Action Hooks
Action hooks allow you to execute custom code at specific points in BugMonitor's execution.
bug_monitor/option_updated
Triggered when a BugMonitor option is updated.
Parameters:
$value(mixed) - The new option value$key(string) - The option key
Example:
// Log option changes
add_action('bug_monitor/option_updated', function($value, $key) {
error_log("BugMonitor option '{$key}' updated to: " . print_r($value, true));
}, 10, 2);
REST API Endpoints
BugMonitor exposes REST API endpoints for receiving event data from the frontend. These endpoints are used internally by the monitoring script but can also be used for custom integrations.
Endpoint: /wp-json/bug-monitor/v1/report/{action}
Available Actions:
event- Report a new eventsingle_event- Report a single occurrence eventsession- Update session datascreenshot- Upload a screenshotmutations- Report DOM mutations
Changelog
0.3.1 – 2025.08.20.
- [FIX] Minor Bugfixes
0.3 – 2024.11.06.
- [IMPROVE] Must-Have Plugins license management added
- [FIX] Minor Bugfixes
0.2.3.3 – 2024.07.18.
- [FIX] Minor bugfixes
- [IMPROVE] Improved detection of form submission issues
- [IMPROVE] Improve content obstruction detection
0.2.3.2 – 2024.07.11.
- [FIX] Minor bugfixes
- [FIX] False positive vertical text-overflow
- [IMPROVE] Frontend performance
- [IMPROVE] Session playback video
0.2.3.1 – 2024.07.04.
- [FIX] Minor bugfixes
- [FIX] False positive empty hard to read text and text-overflow warning
- [IMPROVE] Fix false positive unresponsive clicks for link opened new window
- [IMPROVE] Report original script URL instead blob
0.2.3 – 2024.06.07.
- [NEW] Detect email sending errors
0.2.2.1 – 2024.05.29.
- [IMPROVE] Compatibility with visual builders
0.2.2 – 2024.05.26.
- [FIX] Minor bugfixes
- [IMPROVE] Update translations
- [NEW] Event Retention Period has been added
- [NEW] Unnatural word break detection
0.2.1 – 2024.05.17.
- [FIX] Minor bugfixes
- [FIX] Report layout issues on mobile
0.2 – 2024.03.22.
- [FIX] Minor bugfixes
- [IMPROVE] Frontend memory usage
- [IMPROVE] Form submission issues
- [NEW] Form abandonment issues
- [NEW] Detect new layout issues (cluttered elements, content obstruction)
0.1.17 – 2024.02.24
- [FIX] Minor bugfixes
- [NEW] French translation has been added (special thanks to Jean Lagarrigue 😎)
- [NEW] Hungarian translation has been added
- [NEW] Error Insights links added
0.1.16 – 2024.02.14
- [FIX] Minor bugfixes
- [FIX] False positive malicious redirect
- [NEW] Detect insecure connections
0.1.15 – 2024.02.06
- [FIX] Minor bugfixes
- [NEW] Uptime Monitor
0.1.14 – 2024.02.01
- [FIX] Minor bugfixes
- [FIX] Avoid JavaScript error caused by BugMonitor in certain cases
0.1.13 – 2024.01.30
- [FIX] Minor bugfixes
- [IMPROVE] Avoid fatal error if WordPress constants are missing
- [NEW] Push notifications
- [NEW] Webhook notifications
0.1.12 – 2023.12.21
- [FIX] Minor bugfixes
- [FIX] False positive redirect loop
- [IMPROVE] Show event count on dashboard
0.1.11 – 2023.12.13
- [FIX] Minor bugfixes
- [IMPROVE] Use local timezone for errors instead UTC
- [IMPROVE] Video seekbar functionality
- [IMPROVE] Add more details to JS errors
- [NEW] Detect malicious redirects
- [NEW] Monitor non-fatal errors
0.1.10 – 2023.11.30
- [FIX] Minor bugfixes and code improvements
0.1.9 – 2023.11.23
- [NEW] Deactivate plugins on error
- [FIX] Minor bugfixes
0.1.8 – 2023.11.21.
- [FIX] Plugin updater conflict
0.1.7 – 2023.11.21.
- [FIX] Reset logs option added
- [FIX] Minor bugfixes
- [IMRPOVE] Performance improvements
0.1.6 – 2023.11.16.
- [FIX] Minor bugfixes
0.1.5 – 2023.11.15.
- [FIX] Updater error on frontend
- [IMPROVE] WordFence compatibility
0.1.4 – 2023.11.15.
- [FIX] Option descriptions added
0.1.3 – 2023.11.14.
- [FIX] Minor bugfixes
0.1.2 – 2023.11.10.
- [FIX] Minor bugfixes
0.1.1 – 2023.11.09.
- [FIX] Minor bugfixes
0.1 – 2023.10.09.
- Initial release