{"id":309010,"date":"2026-05-08T19:50:06","date_gmt":"2026-05-08T19:50:06","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/uptrue-monitor\/"},"modified":"2026-05-08T19:49:46","modified_gmt":"2026-05-08T19:49:46","slug":"uptrue-monitor","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/uptrue-monitor\/","author":15317918,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.4","stable_tag":"1.2.4","tested":"6.9.4","requires":"5.0","requires_php":"7.0","requires_plugins":null,"header_name":"Uptrue Monitor","header_author":"Uptrue","header_description":"Monitor your site from the inside \u2014 file injections, rogue admin users, foreign-language content, brute force attacks, security misconfigurations, and more. Works standalone with a free monthly email report. No inbound ports. Works behind Cloudflare.","assets_banners_color":"4eafd8","last_updated":"2026-05-08 19:49:46","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/uptrue.io\/monitoring\/wordpress-site-monitor","header_author_uri":"https:\/\/uptrue.io","rating":5,"author_block_rating":0,"active_installs":0,"downloads":31,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.2.4":{"tag":"1.2.4","author":"sachindiwaker","date":"2026-05-08 19:49:46"}},"upgrade_notice":{"1.2.4":"<p>Addresses WP.org review feedback: contributor username corrected, admin menu repositioned to coexist with WordPress core navigation.<\/p>","1.2.3":"<p>Defensive sanitisation on the settings form to satisfy WordPress.org Plugin Check. No functional change.<\/p>","1.2.2":"<p>Eliminates false-positive &quot;PHP file in \/uploads\/&quot; findings caused by WordPress&#039;s own directory-protection stubs. Recommended upgrade.<\/p>","1.2.1":"<p>Compliance and security hardening release. No outbound connections happen until you explicitly connect by saving an API token. Plugin renamed to &quot;Uptrue Monitor&quot; \u2014 slug and settings unchanged.<\/p>","1.2.0":"<p>Major update \u2014 adds 10-language content injection detection, security configuration checks, brute force detection, and a free standalone monthly health report. No configuration changes required.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3526825,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3526825,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3526825,"resolution":"1544x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3526825,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.4"],"block_files":[],"assets_screenshots":[],"screenshots":{"1":"Plugin settings page \u2014 paste your API token and configure check frequency.","2":"Plugin dashboard \u2014 connection status, last push time, and API reachability at a glance.","3":"Cron status page \u2014 see all scheduled jobs and reschedule any that have dropped.","4":"Uptrue dashboard \u2014 live security findings, health score, and AI-powered fix suggestions."},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[262369,1184,5603,600,29148],"plugin_category":[54],"plugin_contributors":[262370],"plugin_business_model":[],"class_list":["post-309010","plugin","type-plugin","status-publish","hentry","plugin_tags-file-scan","plugin_tags-malware","plugin_tags-monitoring","plugin_tags-security","plugin_tags-uptime","plugin_category-security-and-spam-protection","plugin_contributors-sachindiwaker","plugin_committers-sachindiwaker"],"banners":{"banner":"https:\/\/ps.w.org\/uptrue-monitor\/assets\/banner-772x250.png?rev=3526825","banner_2x":"https:\/\/ps.w.org\/uptrue-monitor\/assets\/banner-1544x500.png?rev=3526825","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/uptrue-monitor\/assets\/icon-128x128.png?rev=3526825","icon_2x":"https:\/\/ps.w.org\/uptrue-monitor\/assets\/icon-256x256.png?rev=3526825","generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p><strong>Uptrue Monitor<\/strong> keeps an eye on your WordPress site from the inside, detecting threats and misconfigurations that external uptime monitors will never catch.<\/p>\n\n<p>It works by running scheduled checks on your server and either sending findings to your Uptrue dashboard or emailing you a free monthly health report \u2014 no Uptrue account required to get started.<\/p>\n\n<p><strong>No inbound ports. No firewall changes. Works behind Cloudflare.<\/strong><\/p>\n\n<h4>What it monitors<\/h4>\n\n<p><strong>File Security<\/strong>\n* PHP files injected into your \/uploads\/ directory\n* JavaScript files injected into \/uploads\/\n* Executable files (.sh, .exe, .py, .bat) in \/uploads\/\n* WordPress core file modifications (wp-login.php, wp-settings.php, wp-admin\/admin.php)\n* Active theme file changes (functions.php)\n* .htaccess and wp-config.php modification detection\n* World-writable directory permissions<\/p>\n\n<p><strong>User &amp; Access Security<\/strong>\n* New administrator and editor accounts\n* Login failure tracking (brute force detection)\n* REST API user enumeration exposure\n* Application passwords in use\n* XML-RPC enabled status\n* Two-factor authentication plugin detection<\/p>\n\n<p><strong>Content Integrity<\/strong>\n* Foreign-language content injection \u2014 detects Chinese, Russian, Arabic, Hindi, Thai, Japanese, Korean, Hebrew, Bengali, and Georgian characters in page titles, slugs, and content (SEO spam detection)\n* New pages and posts published since last check<\/p>\n\n<p><strong>Configuration &amp; Health<\/strong>\n* Plugin updates available\n* Theme updates available\n* WordPress core auto-update status\n* Backup plugin presence\n* Debug mode (WP_DEBUG) status\n* Spam comment volume\n* Database size\n* Disk usage<\/p>\n\n<h4>Two ways to use it<\/h4>\n\n<p><strong>Standalone (free, no account needed)<\/strong>\nInstall the plugin and get a free monthly health report delivered to your WordPress admin email. No signup required.<\/p>\n\n<p><strong>Connected to Uptrue (real-time alerts)<\/strong>\nAdd your Uptrue API token to get real-time alerts, a live security dashboard, AI-powered fix suggestions, and full historical reports. Create a free account at <a href=\"https:\/\/uptrue.io\">uptrue.io<\/a>.<\/p>\n\n<h4>How it works<\/h4>\n\n<p>The plugin runs on a schedule using WordPress cron (every 60\u2013240 minutes, configurable). On each run it collects site health data and either pushes it to Uptrue or stores it locally for the monthly report. There are no inbound connections \u2014 your server always initiates the outbound request.<\/p>\n\n<h4>Privacy<\/h4>\n\n<p>This plugin does not contact any external service until you explicitly opt in by saving an Uptrue API token in <strong>Uptrue \u2192 Settings<\/strong>. With no token saved, the plugin runs only local checks on your server and (optionally) emails the monthly health report to your WordPress admin email. No data leaves your server in standalone mode. Saving a token is treated as your explicit consent for the plugin to begin transmitting site health data to Uptrue. Clearing the token field stops all transmission immediately. See the Third Party Services section below for the full list of fields sent.<\/p>\n\n<h3>Third Party Services<\/h3>\n\n<p>This plugin transmits data to <strong>Uptrue<\/strong> (https:\/\/uptrue.io), a website monitoring service operated by Vision Software Solutions Limited, Brentford, United Kingdom.<\/p>\n\n<p><strong>When data is transmitted:<\/strong><\/p>\n\n<ol>\n<li>When you save an API token \u2014 a one-time connectivity self-test is performed to verify the connection. This only runs after you have entered a token and clicked Save.<\/li>\n<li>On each scheduled cron run (every 60\u2013240 minutes) \u2014 site health data is pushed to Uptrue.<\/li>\n<\/ol>\n\n<p>No data is transmitted if no API token is saved. The plugin makes no outbound connections on activation or deactivation.<\/p>\n\n<p><strong>Data transmitted includes:<\/strong><\/p>\n\n<ul>\n<li>WordPress version and PHP version<\/li>\n<li>List of active and inactive plugins with version numbers and available update status<\/li>\n<li>Active theme name, version, and available update status<\/li>\n<li>Admin and editor user accounts: login name, email address, roles, and registration date<\/li>\n<li>Recently published pages and posts: title, slug, status, and author ID<\/li>\n<li>Results of file scans: PHP, JavaScript, and executable files found in \/uploads\/; .htaccess and wp-config.php modification flags; core file modification flags; theme file modification flags; world-writable directory paths<\/li>\n<li>Security configuration: XML-RPC status, REST API user enumeration exposure, application passwords in use, auto-update settings, two-factor authentication plugin presence, backup plugin presence, daily login failure count, spam comment count, disk usage percentage and free space<\/li>\n<li>Foreign-language content detection: post IDs, titles, slugs, detected language, and URLs of any pages with non-Latin content<\/li>\n<li>Site URL, database size, and basic site statistics (total pages, posts, users by role)<\/li>\n<\/ul>\n\n<p><strong>Uptrue Terms of Service:<\/strong> https:\/\/uptrue.io\/terms\n<strong>Uptrue Privacy Policy:<\/strong> https:\/\/uptrue.io\/privacy<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the <code>uptrue-monitor<\/code> folder to <code>\/wp-content\/plugins\/<\/code> or install directly through the WordPress plugin screen.<\/li>\n<li>Activate the plugin through the <strong>Plugins<\/strong> screen in WordPress.<\/li>\n<li>Go to <strong>Uptrue \u2192 Settings<\/strong> in your WordPress admin menu.<\/li>\n<li><strong>Optional:<\/strong> Paste your Uptrue API token to connect to your Uptrue dashboard and enable real-time alerts. Get a free token at <a href=\"https:\/\/uptrue.io\/signup\">uptrue.io<\/a>.<\/li>\n<li>Leave the token blank to use standalone mode \u2014 you will receive a free monthly health report by email with no account required.<\/li>\n<li>Click <strong>Save Settings<\/strong>. The plugin will run its first check within a few minutes.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"do%20i%20need%20an%20uptrue%20account%3F\"><h3>Do I need an Uptrue account?<\/h3><\/dt>\n<dd><p>No. Without an API token the plugin runs in standalone mode and sends a free monthly health report to your WordPress admin email address. An Uptrue account adds real-time alerts, a live dashboard, AI-powered fix suggestions, and full history.<\/p><\/dd>\n<dt id=\"does%20it%20work%20behind%20cloudflare%3F\"><h3>Does it work behind Cloudflare?<\/h3><\/dt>\n<dd><p>Yes. The plugin pushes data from your server to Uptrue \u2014 there are no inbound connections, no open ports, and no changes needed to your firewall or Cloudflare settings.<\/p><\/dd>\n<dt id=\"will%20it%20slow%20down%20my%20site%3F\"><h3>Will it slow down my site?<\/h3><\/dt>\n<dd><p>No. All checks run in the background via WordPress cron and are not triggered by visitor requests. The main data push is a lightweight HTTP request. File scans run on a staggered daily schedule to distribute any server load.<\/p><\/dd>\n<dt id=\"what%20wordpress%20version%20does%20it%20require%3F\"><h3>What WordPress version does it require?<\/h3><\/dt>\n<dd><p>WordPress 5.0 or higher. The plugin is tested up to WordPress 6.9.<\/p><\/dd>\n<dt id=\"what%20php%20version%20does%20it%20require%3F\"><h3>What PHP version does it require?<\/h3><\/dt>\n<dd><p>PHP 7.0 or higher.<\/p><\/dd>\n<dt id=\"how%20often%20does%20it%20check%20my%20site%3F\"><h3>How often does it check my site?<\/h3><\/dt>\n<dd><p>Every 120 minutes by default. You can change this to 60, 120, 180, or 240 minutes in the plugin settings, or set it to daily, weekly, or monthly.<\/p><\/dd>\n<dt id=\"what%20happens%20if%20wp%20cron%20is%20disabled%3F\"><h3>What happens if WP Cron is disabled?<\/h3><\/dt>\n<dd><p>If <code>DISABLE_WP_CRON<\/code> is set to <code>true<\/code> in your wp-config.php the plugin will not run automatically. Set up a real server cron job to trigger wp-cron.php on schedule. The Cron Status page in the plugin shows the exact command to use.<\/p><\/dd>\n<dt id=\"what%20data%20is%20sent%20to%20uptrue%3F\"><h3>What data is sent to Uptrue?<\/h3><\/dt>\n<dd><p>Data is only sent when an API token is saved. See the Third Party Services section of this readme for the full list.<\/p><\/dd>\n<dt id=\"can%20i%20disable%20specific%20checks%3F\"><h3>Can I disable specific checks?<\/h3><\/dt>\n<dd><p>Yes. Go to <strong>Uptrue \u2192 Settings \u2192 Advanced \u2014 Enable \/ Disable Checks<\/strong> to toggle individual checks on or off.<\/p><\/dd>\n<dt id=\"how%20do%20i%20disconnect%20from%20uptrue%3F\"><h3>How do I disconnect from Uptrue?<\/h3><\/dt>\n<dd><p>Clear the API token field in <strong>Uptrue \u2192 Settings<\/strong> and save. No data will be sent to Uptrue after that.<\/p><\/dd>\n<dt id=\"is%20the%20plugin%20compatible%20with%20multisite%3F\"><h3>Is the plugin compatible with multisite?<\/h3><\/dt>\n<dd><p>The current version is designed for single-site installations. Multisite support is planned for a future release.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Updated readme Contributors to author's WordPress.org username<\/li>\n<li>Moved admin menu to position 81 (below Settings) to avoid collision with WP core menu items<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Hardened settings form: $_POST['settings'] now sanitised with array_map(sanitize_text_field, wp_unslash(...)) and is_array() guard before use, satisfying Plugin Check's unsanitised-input rule. Behaviour unchanged.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>File scanner now ignores WordPress directory-listing protection stubs (small \"Silence is golden\" index.php\/index.html files dropped by core and many plugins) \u2014 eliminates false positives in \/uploads\/<\/li>\n<li>Pricing link updated to homepage anchor<\/li>\n<li>Plugin row on Plugins screen now shows Dashboard \/ Settings \/ Go Premium quick links<\/li>\n<li>Removed user-facing reference to internal API URL \u2014 plugin always talks to https:\/\/uptrue.io<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>Plugin renamed from \"Uptrue WordPress Monitor\" to \"Uptrue Monitor\" (slug unchanged)<\/li>\n<li>No outbound connections are now made on plugin activation or deactivation \u2014 the plugin only contacts Uptrue after you save an API token (explicit opt-in)<\/li>\n<li>Standalone mode is fully self-sufficient: file scans, security checks, and the monthly email report run with or without an Uptrue account<\/li>\n<li>Hardened admin nonce validation (sanitize and unslash before verify)<\/li>\n<li>REST API authorisation moved into permission_callback with hash_equals comparison<\/li>\n<li>Added uninstall.php to clean up all plugin options and scheduled crons on plugin deletion<\/li>\n<li>Added explicit capability checks (manage_options) to all admin page handlers<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>Added foreign-language content detection \u2014 10 scripts: Chinese, Russian, Arabic, Hindi, Thai, Japanese, Korean, Hebrew, Bengali, Georgian<\/li>\n<li>Added security configuration checks: 2FA detection, backup plugin detection, XML-RPC status, REST API user enumeration, application passwords<\/li>\n<li>Added brute force detection via login failure tracking (wp_login_failed hook)<\/li>\n<li>Added file permission scanning for world-writable directories<\/li>\n<li>Added monthly standalone email health report \u2014 no Uptrue account required<\/li>\n<li>Added disk usage monitoring<\/li>\n<li>Added staggered daily file scans to reduce server load<\/li>\n<li>Added Cron Status admin page with reschedule controls<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<\/ul>","raw_excerpt":"Monitor your site from the inside \u2014 file injections, rogue admin users, foreign-language content, brute force attacks, and security misconfigurations.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/309010","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=309010"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/sachindiwaker"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=309010"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=309010"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=309010"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=309010"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=309010"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=309010"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}