Description
LMN Site Monitor watches your websites from the WordPress dashboard and alerts you when something goes wrong. No external SaaS and no account needed.
- Uptime checks (HTTP/HTTPS) with automatic retry to avoid false positives.
- SSL certificate and domain expiry warnings.
- Malware and phishing scans with Google Safe Browsing, URLhaus, VirusTotal and PhishTank, on demand or scheduled, with a PDF report.
- Response-time history, 90-day availability bars, self-hosted ECharts graphs and a statistics table (CSV/PDF).
- Alerts by email (HTML, dark mode), Telegram and Discord.
- Dashboard widget, CSV import/export and encrypted credentials.
- 16 languages: en, es, ca, gl, eu, fr, de, it, nl, pt, ar, tr, uk, ja, ko, zh.
More at lumina.fmkr.net/site-monitor.
External services
Only the first three are used without setup; the rest run once enabled in Settings.
- Monitored sites: an HTTP request on each check.
- WHOIS servers (each TLD registry): the domain name, daily and on WHOIS/DNS.
- WordPress.com mShots: your browser loads each site’s screenshot. Terms, Privacy
- Google Safe Browsing: the site URL, per scan. Terms, Privacy
- URLhaus: the site URL, per scan. Terms, Privacy
- VirusTotal: looks up the site URL per scan, never submits it. Terms, Privacy
- PhishTank (off by default): the site URL, per scan. Terms, Privacy
- Telegram / Discord: alert text (site, URL, status). Telegram Terms, Privacy; Discord Terms, Privacy
- Your SMTP server: alert emails.
Screenshots











Reviews
There are no reviews for this plugin.
Contributors & Developers
“LMN Site Monitor” is open source software. The following people have contributed to this plugin.
ContributorsTranslate “LMN Site Monitor” into your language.
Interested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.2.0 (2026-10-09)
- NEW: VirusTotal (API v3) in the security scan — detection counts, the engines that flagged the URL (first 8, the rest in the linked report), and a link to the full VirusTotal report. Lookups are read-only (URLs are never submitted for analysis) and cached for 30 minutes to stay within the free tier’s 4 requests/minute. A site is flagged when 2+ engines report it; single detections are listed but do not raise an alert.
- NEW: redesigned Sites tab (“control centre”) — summary strip (sites, 30-day uptime, 24-hour response, active incidents), status filters and instant search, and new site cards. Every field shown before is kept (drag handle, selection, URL, status, pin, thumbnail, last check, HTTP, SSL and domain dates with days left, last scan, Force/WHOIS/Scan/Delete); each card adds 30-day uptime, 24-hour response with a sparkline, and a 90-day availability bar. The plugin header is unchanged.
- NEW: “Keep response history” setting (90 / 180 / 365 days, default 90). Old checks are deleted by a daily cron in batches.
- FIX: the response log was capped at 500 rows per site (about 41 hours at 5-minute checks), so the 7- and 30-day charts showed far less than their period. The cap, which also ran a costly DELETE on every check, is replaced by the retention setting.
- FIX: “Select all” only selects the cards visible under the current filter, and hidden cards are unselected, so bulk delete never affects sites you cannot see.
- FIX: unpinning a card left its drag handle faded and unclickable until the page was reloaded.
- IMPROVE: admin-theme.css is versioned by file modification time, like admin-theme.js, so browsers pick up style changes immediately.
- NEW: PhishTank in the security scan — opt-in, works without an application key. Only verified, still-valid phishing entries flag a site; unverified community reports are shown for information.
- COMPAT (WordPress 7.2 preparation): admin menu icon moved from the Dashicons font to an inline SVG, as core is replacing Dashicons in the admin menu. The icon follows the admin color scheme.
- SECURITY (WordPress 7.2 preparation): stored credentials moved from AES-256-CBC (no integrity check) to authenticated encryption (libsodium secretbox). Existing values are re-encrypted automatically on the first admin page load after updating. All secrets now go through a single storage layer, ready for the core Secrets API proposed for WordPress 7.2.
- SECURITY: security report values returned by the scanning APIs are now HTML-escaped before being displayed.
- FIX: uninstall now removes every per-site scan cron event (events scheduled with arguments were left behind).
- FIX: Arabic translation of the domain-expiry alert had broken placeholders that could make the alert email fail on PHP 8; corrected.
- FIX: German translation file contained unescaped quotes that truncated 10 help strings in strict PO parsers; corrected.
- I18N: 28 new strings translated into all 16 languages; .pot synced with the code.
- I18N: Spanish (es_ES) now uses peninsular wording (“monitorizados”, “Monitorización”).
- I18N: the “No API key configured” hint now names the real Settings section in Spanish, Catalan, Galician, Portuguese, French, Basque and Korean.
1.1.1 (2026-08-19)
- FIX: the internal
VERSIONconstant was still hardcoded to1.0.1after the 1.1.0 release, so the admin header badge, the About tab, and the Google Safe BrowsingclientVersionfield kept reporting the wrong version. Now matches the plugin header (1.1.1).
1.1.0 (2026-08-14)
- COMPAT: WordPress 7.1 confirmed — reviewed the iframed post editor, client-side media processing, @wordpress/components changes, persistent toolbar, and jQuery UI 1.14.2 update; none of these affect this plugin (no editor, media, toolbar, or jQuery UI hooks used).
- NEW: SSL certificate details in the WHOIS/DNS modal — issuer, TLS protocol version (best-effort probe), and Subject Alternative Names (SANs) now shown alongside the existing SSL expiry date.
1.0.1 (2026-07-15)
- COMPAT: WordPress 7.0.1 confirmed — reviewed the 7.0.1 patch file list; no changes affect admin_post, wp_ajax, admin_menu, cron, or wp_mail hooks used by this plugin.
- FIX: Uninstall cleanup — uninstall.php was leaving the lmnsimo_order option (card sort order) behind in wp_options after uninstall; now deleted along with the other plugin options.
- FIX: Uninstall cleanup — per-site malware scan schedules (lmnsimo_scan_site_cron) were not cleared on uninstall, leaving orphaned cron events; now cleared alongside lmnsimo_check_sites_cron.
- IMPROVE: Requires at least / Requires PHP added directly to the plugin file header, so WordPress core itself blocks activation on incompatible sites.
1.0.0 (2026-05-26)
- COMPAT: WordPress 7.0 full compatibility — tested and confirmed against WP 7.0 core changes (Modern theme, PHPMailer 7.0.2, PHP 7.4 minimum).
- IMPROVE: CSS scoping fix — postbox header rule (.hndle) now correctly scoped to .lm-scope, preventing style leakage to other dashboard widgets on index.php.
- NEW: Apache ECharts 5.6.0 + echarts-gl 2.0.8 bundled locally in /assets/ (no external CDN, GDPR-safe); Chart.js replaced as charting engine.
- NEW: 3D bar chart of response times per site via echarts-gl (WebGL).
- NEW: GitHub-style activity heatmap (checks per day/hour) powered by ECharts heatmap series.
- NEW: Toggle in the charts UI to switch between 2D and 3D view.
- IMPROVE: Dark mode for charts uses ECharts native ‘dark’ theme — no extra CSS required.
- IMPROVE: Chart.js and date-fns adapter removed from plugin bundle; replaced by ECharts 5.6.0 (self-hosted, Apache 2.0 licence).
0.9.4 (2026-05-16)
- NEW: Site thumbnail — each card now shows a screenshot preview via Automattic mshots (s0.wordpress.com/mshots/v1/). No API key required; images load lazily with CDN caching and dark-mode brightness filter.
- NEW: Telegram Bot alerts — new accordion in Settings Alerts: Bot Token + Chat ID. Formatted HTML messages sent for all alert types (site down, recovery, SSL expiry, domain expiry). Works alongside email and Discord.
- NEW: Discord Webhook alerts — new accordion in Settings Alerts: Webhook URL. Alerts delivered as color-coded embeds (red = down, orange = warning, green = recovery).
- SECURITY: Full secrets encryption — SMTP password, Telegram token, Discord URL, Google Safe Browsing key, and URLhaus key are encrypted with AES-256-CBC using AUTH_KEY + SECURE_AUTH_SALT before storage. Settings forms never return secret values to the browser.
- IMPROVE: i18n complete — 51 previously untranslated PHP strings added to the .pot template and fully translated across all 16 supported languages; all .po and .mo files recompiled. A pre-existing untranslated string (Google Safe Browsing optional key notice) also filled in for 7 languages.
- FIX: Closing the security scan modal no longer causes a flash from dark to light mode; page reload removed, scan results update in-place.
- FIX: Scan status label (“No incidents” / “Incidents detected”) now appears on the card immediately after scanning, without requiring a manual page reload.
- FIX: Plural-form translations in .mo files were corrupted (drag-to-reorder label was appearing in SSL/domain expiry day fields); all 16 .mo files recompiled with correct GNU gettext plural-form encoding.
- IMPROVE: Performance charts redesign — neon color palette for bar chart; trend chart shows filled min–max band with adaptive Y axis; distribution chart replaced with animated Polar Area chart; neon glow effect on all chart canvases in dark mode.
0.9.3 (2026-04-29)
- NEW: Animated toast notification system — success / error / warning toasts appear bottom-right, auto-dismiss 3.8 s, click to close, slide-in/out animation. Replaces silent AJAX operations.
- IMPROVE: “Force” and “Check all now” buttons change to “Checking…” and disable during server-side check.
- IMPROVE: Pin/Unpin actions show a success toast; AJAX errors show an error toast with UI rollback.
- IMPROVE: Card reorder now shows “Order saved” toast on server confirmation.
- IMPROVE: Site cards lift 2 px on hover with smooth shadow transition; suppressed during drag.
- IMPROVE: 5 new i18n strings added; translations for 16 languages pending.
- SECURITY: SSRF protection — admin-supplied URLs validated against private/reserved IP ranges before acceptance; only http/https allowed.
- SECURITY: error_msg sanitization — HTTP error body snippets sanitized with sanitize_text_field() before storage.
- NEW: Unified action bar (top + bottom) — Select all checkbox, bulk actions, Check all now, Scan all, Export CSV, Import CSV consolidated in one strip above and below the cards.
- NEW: Scan all — sequential background scan of all monitored sites with live badge updates and completion toast.
- IMPROVE: 3 new i18n strings (selectAll, scanAll, scanAllDone) translated in 16 languages.
0.9.2 (2026-04-02)
- FIX: URLhaus (abuse.ch) integration now requires an API key (Auth-Key header); added URLhaus API Key field in Settings Security scanning. Without a key the URLhaus check is skipped gracefully.
- FIX: Scan modal failed to open with “i18n is not defined” JS error — resolved by declaring i18n from cfg.i18n inside initScanModal().
- FIX: PDF security report printed blank — modal is now temporarily moved to document.body before window.print() and restored afterwards so @media print selectors work correctly.
- FIX: “Scanning…” text rendered as garbled bytes (double-encoded UTF-8) — replaced with an animated indeterminate progress bar.
- IMPROVE: Scan badge button removed from card header; scan result (shield icon + date + status label) now appears as an inline row inside the card metadata block, consistent with the rest of the card layout.
- FIX: “Scan” button font-size reduced to match the rest of the card action buttons (11 px).
- IMPROVE: Status labels renamed to “No incidents” / “Incidents detected” (es_ES: “Sin incidencias” / “Incidencias detectadas”), color-coded green and red respectively; all 16 .po/.mo files updated.
- NEW: Help tab with 12 documented sections covering all plugin features: Getting started, Uptime monitoring, SSL & domain expiry, Email alerts, Performance charts & statistics, Malware scanning, WHOIS / DNS lookup, Dashboard widget, CSV export / import, Card management, and step-by-step guides for both API keys (Google Safe Browsing and URLhaus).
- IMPROVE: Top toolbar now shows a compact API keys notice with direct links to Google Cloud Console and abuse.ch, replacing the old generic description block.
- IMPROVE: 21 new i18n strings added to all 16 supported languages.
0.9.1 (2026-03-25)
- NEW: Malware scanning powered by Google Safe Browsing API (free key required) and URLhaus (abuse.ch, no key required). Scan button on each site card opens a security report modal.
- NEW: Per-site automatic scan schedule (Never / Daily / Weekly) with WP Cron integration.
- NEW: Security report modal with per-source results, threat types, global status, and one-click PDF download (window.print()).
- NEW: Google Safe Browsing API Key field in Settings Security scanning section.
- NEW: 28 new i18n strings added to all 16 supported languages.
0.9.1 (2026-03-16)
- NEW: Performance charts (bar, line, donut) powered by self-hosted Chart.js 4.5.1 (GDPR-safe, no external CDN).
- NEW: Response-time history stored in a dedicated database table (
lmnsimo_response_log); rolling 500-entry window per site; table removed cleanly on uninstall. - NEW: Statistics modal with per-site total checks, avg / min / max response time and uptime %; accessible from the Monitor tab.
- NEW: CSV export and Print/PDF export of the statistics table.
- NEW: Period selector (Last 24 h · Last 7 days · Last 30 days) for charts and statistics.
- NEW: 25 new strings fully translated across all 16 supported languages;
.potand all.pofiles updated. - IMPROVE: Charts and statistics modal respect the plugin’s light/dark theme.
0.8.1 (2026-03-14)
- FIX: Fix translation errors.
0.8.0 (2026-03-14)
- NEW: New languages: Arabic, German, Basque, Italian, Japanese, Korean, Dutch, Portuguese, Turkish, Ukrainian, and Simplified Chinese.
- NEW: Automatic retry after downtime to avoid false positives.
- NEW: Domain expiry notifications.
- MAINT: i18n maintained; PHPCS/WPCS compliant.
0.7.0 (2026-03-03)
- NEW: Cards are now wider, displaying more information at a glance.
- NEW: Bulk actions now include sorting options: alphabetical (AZ) and by date added.
- NEW: Drag-and-drop card reordering with persistent storage between sessions.
- NEW: Pin system — pin any site to keep it fixed at the top, excluded from sorting.
- NEW: WHOIS / DNS lookup button on each card: shows IP, DNS provider, NS, MX records, TTL and SSL expiry. Native PHP only, no external APIs or API keys required.
- NEW: JetBrains Mono font integrated for monospace elements, self-hosted (GDPR-safe, no external CDN).
- IMPROVE: Full PHPCS / WPCS compliance — zero warnings. Proper nonce and capability checks, sanitization and escaping throughout.
- IMPROVE: All new strings are fully translatable and i18n-compatible.
- IMPROVE: Responsive design preserved and refined across all screen sizes.
- FIX: Removed duplicate
wp_mail_failedhook and unified error handlers. - FIX: Native WP cron schedules (
hourly,daily) are no longer overwritten. - FIX: Added
file_exists()check before readingchangelog.txt. - FIX: Added missing
wp_unslash()in widget preferences handler. - FIX: SSL badge severity now syncs with the user-configured expiry threshold.
- FIX: PHPCS
MissingTranslatorsCommentresolved in alert email builders. - IMPROVE: Removed dead
load_textdomain()method. - IMPROVE: Fixed inconsistent indentation in
ajax_save_order.
0.6.5 (2025-10-31)
- NEW: Full internationalization (en_US, es_ES, ca, fr_FR).
- NEW: Added Catalan (ca) and French (fr_FR) translations.
- IMPROVE: Hybrid textdomain loader – automatically loads WP.org language packs and falls back to /languages for ZIP installs.
- FIX: Added translators comments for all placeholders to comply with WordPress I18n standards.
- FIX: Escaped all dynamic outputs in admin interface and header tips.
- MAINT: Removed deprecated load_plugin_textdomain() function per Plugin Check recommendations.
0.6.4 (2025-10-25)
– Full sanitization and 0 warnings
– All PHPCS/WPCS warnings removed.
– Full sanitization and reordered nonce verification.
– PHP 8.3+ and WordPress 6.8.3+ compatibility.
0.6.3 (2025-10-16)
UI:
– FIX: Unique IDs in forms (nonces and submit buttons).
– FIX: Console warnings removed for duplicated #_wpnonce and #submit IDs.
– IMPROVE: Accessibility and DOM structure of the admin panel.
Maintenance:
– Version bumped to v0.6.3.
0.6.2 (2025-10-15)
UI:
– IMPROVE: Unified blue header (h2.hndle) with v0.6.2 badge.
– ADD: Lightweight Markdown rendering (titles, lists, bold, code, separators).
– KEEP: Consistent padding and structure (.postbox.lm-card > h2.hndle + .inside).
Maintenance:
– Version bumped to v0.6.2.
0.6.1 (2025-10-15)
UI:
– NEW: “Changelog” tab with direct reading of changelog.txt.
– IMPROVE: Body with padding, clean background, and better typographic rhythm.
– IMPROVE: Lightweight Markdown rendering: bold, code, titles (# ## ###), and highlighted list prefixes (NEW, FIX, IMPROVE…).
Maintenance:
– Version bumped to v0.6.1.
2025-10-14
Functional:
– SMTP operational: form aligned with real keys (smtp_*) and authentication.
– Keeps SMTP password when saved empty (not overwritten).
– Compatibility with Gmail (app passwords) and Office 365.
UI:
– Listing replaced by responsive card grid (auto-fit/minmax).
– “OK” status (green/white text) and “Down” (red/white text).
– Down sites with red border + soft pulse (respects reduced motion).
– Inline styles cleaned moved to assets/admin-theme.css.
Maintenance:
– Nonces and handlers verified; no changes in cron or check logic.
– CSV import/export and bulk actions unchanged.
0.6.0 (2025-10-07)
- NEW: CSV import using the same format as export (adds URLs without removing existing ones).
- NEW: Bulk actions in list (Delete selected) using standard WordPress handlers.
- IMPROVE: Listing UI: master checkbox, batch action bar, and confirmations.
- IMPROVE: Error handling and post-action messages for imports or batch actions.
0.5.3 (2025-10-06)
- NEW: CSV export from the “About Site Monitor” section.
- NEW: “About Site Monitor” section with quick metrics and cron status.
- IMPROVE: Minor cleanup in headers and constants (VERSION).
0.5.2 (2025-10-06)
- NEW: “About Site Monitor” box in the right column of the admin dashboard.
0.5.1 (2025-10-06)
- CHANGE: Default light HTML email + automatic dark mode with
prefers-color-scheme.
0.5.0 (2025-10-06)
- NEW: HTML alert email with badges, detail table, and action buttons.
- NEW: Per-user preference in dashboard widget (number of sites displayed).
- IMPROVE: Classic UI improved (light/dark theme, responsive tables and forms).
- FIX: Text contrast in dark theme (labels, cells, and descriptions).
0.4.0 (2025-10-05)
- NEW: Admin page with listing, quick actions, and settings.
- NEW: HTTP and SSL expiry checks with email alerts.
- NEW: Configurable cron (5 min, 15 min, hourly, daily) and “force check” option.
