Title: GuardLMS
Author: Luuk Verhoeven
Published: <strong>August 30, 2026</strong>
Last modified: August 30, 2026

---

Search plugins

![](https://ps.w.org/guardlms/assets/banner-772x250.png?rev=3672369)

![](https://ps.w.org/guardlms/assets/icon.svg?rev=3672369)

# GuardLMS

 By [Luuk Verhoeven](https://profiles.wordpress.org/luukverhoeven/)

[Download](https://downloads.wordpress.org/plugin/guardlms.0.2.2.zip)

 * [Details](https://wordpress.org/plugins/guardlms/#description)
 * [Reviews](https://wordpress.org/plugins/guardlms/#reviews)
 *  [Installation](https://wordpress.org/plugins/guardlms/#installation)
 * [Development](https://wordpress.org/plugins/guardlms/#developers)

 [Support](https://wordpress.org/support/plugin/guardlms/)

## Description

GuardLMS keeps your WordPress installation under continuous vulnerability monitoring.
Once
 configured, the plugin sends a daily snapshot of your site’s software inventory
to the GuardLMS service ([dashboard.guardlms.com](https://dashboard.guardlms.com)),
where it is matched against a database of known CVEs affecting WordPress core, plugins,
and themes. If a vulnerable component is detected, it is surfaced in your GuardLMS
dashboard so you can patch or remove it before it is exploited.

**What the plugin does**

 * Collects the installed WordPress core version, the full plugin inventory (including
   
   must-use plugins and drop-ins) with slugs, names, versions and active state, 
   and the active theme inventory with slugs, names and versions.
 * Collects basic server and PHP environment details (operating system, hostname,
   web server
    signature, PHP version, SAPI, memory/execution limits, and loaded
   extensions) to help GuardLMS assess environment-specific risk.
 * Pushes this snapshot to GuardLMS once a day via a background (WP-Cron) task, 
   and on demand
    whenever you click “Push now” in the plugin settings.
 * Renders a `<meta name="guardlms-verification">` tag in your site’s `<head>` so
   GuardLMS can
    verify that you own the site. The token is installed by the connect
   flow.
 * Optionally includes a small, non-secret set of configuration flags (`WP_DEBUG`,
   
   force_ssl_admin, `users_can_register`, `default_role`, `blog_public`) when you
   explicitly opt in, disabled by default.

Setup is one click: “Connect to GuardLMS” sends you to GuardLMS to confirm, then
installs the
 push key and verifies ownership automatically. No API key to copy.

**Source code and issues**

Development happens in the open on [GitHub](https://github.com/LdesignMedia/wordpress-guardlms).

Report bugs, suggest improvements or send a pull request there.

#### Third Party Services

This plugin relies on a third-party service, **GuardLMS** ([dashboard.guardlms.com](https://dashboard.guardlms.com)),
to
 perform CVE and vulnerability monitoring for your site. This section discloses
exactly what is shared with that service, in line with the WordPress.org plugin 
guidelines.

**What is sent to GuardLMS:**

 * Your WordPress core version number.
 * Your installed plugin and theme slugs, versions, and active/inactive state (including
   
   must-use plugins and drop-ins).
 * Basic server details: operating system, hostname, and web server software string.
 * Basic PHP environment details: PHP version, SAPI, memory limit, max execution
   time, upload
    and post size limits, timezone, and the list of loaded PHP extensions.
 * Optionally, if you explicitly enable “Include configuration” in the plugin settings,
   a small
    allowlist of non-secret configuration flags (`WP_DEBUG`, `force_ssl_admin`,
   users_can_register, `default_role`, `blog_public`).
 * Your site URL, used by GuardLMS to identify which registered website the data
   belongs to.

**What is never sent:** no personal data, no user data, no post/page content, no
database
 contents, and no secrets or credentials of any kind. The GuardLMS API 
key you configure is used only to authenticate the outgoing push request to GuardLMS
and is never included in the transmitted payload.

**When data is sent:** once daily via a scheduled background task, and immediately
whenever you
 click “Push now” on the plugin settings page.

**Real-time monitoring (optional, off by default).** If you switch on “Real-time
monitoring” in
 the plugin settings, the plugin additionally loads a GuardLMS JavaScript
file on your public pages, which reports JavaScript errors from your visitors’ browsers
directly to GuardLMS. This is a separate opt-in and nothing is loaded or sent while
it is switched off.

 * **What the script sends:** the error message and stack trace, the page URL and
   referrer, the
    browser user agent and viewport size, and an anonymous per-session
   identifier. If you also switch on the optional analytics checkbox, it sends page-
   view events too.
 * **What the script never sends:** GuardLMS is never told which user is logged 
   in — the plugin
    never identifies a visitor to the service. The script does not
   record clicks, keystrokes or form input, and does not collect the visitor’s IP
   address. Security tokens in URLs (`_wpnonce`, `sesskey`, `token`, `apiKey`, `
   authorization`, `password`, `secret`) are replaced with `[REDACTED]` before anything
   leaves the browser.
 * **Where it is loaded:** public front-end pages only. Never in wp-admin and never
   on the login
    screen.

By installing and configuring this plugin, you agree to GuardLMS’s own Terms of 
Service and
 Privacy Policy, which govern how GuardLMS itself handles the data described
above:

 * [Terms of Service](https://guardlms.com/terms)
 * [Privacy Policy](https://guardlms.com/privacy)

If you do not wish to use this third-party service, do not enter a GuardLMS API 
key, or
 deactivate/uninstall the plugin — no data is sent to GuardLMS while the
plugin is disabled or unconfigured.

## Installation

 1. Upload the `guardlms` folder to the `/wp-content/plugins/` directory, or install
    the plugin
     through the WordPress Plugins screen directly.
 2. Activate the plugin through the “Plugins” screen in WordPress.
 3. Go to **Settings  GuardLMS**.
 4. Click “Connect to GuardLMS”. You are sent to GuardLMS to sign in or create a free
    account and
     confirm the connection, then returned to your site.
 5. That is it. The site is registered, ownership is verified automatically, the push
    key is
     installed and the first inventory push is queued.

Advanced settings (base URL, push path, API key, verification token, manual push)
are hidden on
 purpose so a working connection cannot be broken by accident. Support
and self-hosted setups can reach them at `/wp-admin/options-general.php?page=guardlms&
advanced=1`, or pin them in wp-config.php with `GUARDLMS_PUSH_KEY`, `GUARDLMS_BASEURL`
and `GUARDLMS_PUSHPATH`.

## FAQ

### Does this plugin send any personal or user data to GuardLMS?

The daily inventory push sends none: GuardLMS receives only your WordPress core 
version,
 plugin/theme inventory, and server/PHP environment details as described
in the “Third Party Services” section above. No posts, pages, users, or database
content are ever transmitted.

If you switch on the optional real-time monitoring, the GuardLMS script running 
in your
 visitors’ browsers additionally sends page URLs, referrers, user agents
and error stack traces. GuardLMS is never told which user is logged in, and the 
script neither records what a visitor clicked or typed nor collects their IP address.
Read the “Real-time monitoring” bullets in the “Third Party Services” section before
switching it on, and mention it in your own privacy policy if your jurisdiction 
requires it.

### How do I turn on real-time error monitoring?

Connect the site, then tick “Report JavaScript errors from visitors’ browsers to
GuardLMS”
 under Settings -> GuardLMS and save. There is no key to copy. Use “Send
a test error” to confirm it is working — it reports back in your own browser, and
tells you if another plugin is deferring or blocking the script.

### Do I need a GuardLMS account?

Yes. You need a GuardLMS account. A free account is enough.
 [Register at dashboard.guardlms.com](https://dashboard.guardlms.com),
or create one during the connect flow.

### What happens if I don’t connect the site?

The plugin stays inactive: no data is collected or sent, and the daily push is skipped
until you
 click “Connect to GuardLMS”.

### Why did my push key stop working after I cloned or moved my site?

GuardLMS ties a push key to the site URL it was issued for. If the plugin detects
that your
 site’s URL has changed since the key was saved (for example after cloning
to a staging environment), it automatically clears the stored key so the clone cannot
push data as if it were the original site. Click “Connect to GuardLMS” again to 
reconnect the new URL.

### Where can I report a bug or contribute?

The plugin is developed on [GitHub](https://github.com/LdesignMedia/wordpress-guardlms).
Open an
 issue there for bugs and feature requests, or send a pull request.

### How often is data sent?

Once a day via WP-Cron, plus on demand with “Push now” in the advanced view.

### Is my GuardLMS API key stored securely?

The API key is stored in a dedicated, non-autoloaded WordPress option and is never
included in
 outgoing payload data. You may alternatively define `GUARDLMS_PUSH_KEY`
as a constant in wp-config.php, which takes precedence over the stored key and keeps
it out of the database entirely.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“GuardLMS” is open source software. The following people have contributed to this
plugin.

Contributors

 *   [ Luuk Verhoeven ](https://profiles.wordpress.org/luukverhoeven/)

[Translate “GuardLMS” into your language.](https://translate.wordpress.org/projects/wp-plugins/guardlms)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/guardlms/), check out
the [SVN repository](https://plugins.svn.wordpress.org/guardlms/), or subscribe 
to the [development log](https://plugins.trac.wordpress.org/log/guardlms/) by [RSS](https://plugins.trac.wordpress.org/log/guardlms/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.2.2

 * Settings screen styling and the “Replace SDK key” confirmation are now a
    stylesheet
   and script enqueued on the plugin screen only, instead of inline styles and an
   inline event handler.
 * Admin notices about a changed site URL or an expiring key are shown only to
    
   administrators, are dismissible, and link straight to the Reconnect button.

#### 0.2.1

 * Fixed the default GuardLMS endpoint: the plugin now talks to
    https://dashboard.
   guardlms.com. Earlier releases shipped https://app.guardlms.com, a host that 
   was never put into service, so connecting and the daily push failed on the default
   configuration. Sites that kept the old default are moved over automatically; 
   a custom (self-hosted) base URL is left untouched.

#### 0.2.0

 * Added optional real-time monitoring: a GuardLMS script on your public pages reports
   
   JavaScript errors from visitors’ browsers, with optional page-view analytics.
   Off by default; switch it on under Settings -> GuardLMS. No key to copy — connecting
   the site installs it, and sites connected before this release fetch it the first
   time the settings page is opened.
 * Added “Send a test error”, which reports back in your own browser and tells you
   when another
    plugin is deferring or blocking the script.
 * Added “Replace SDK key” for rotating the real-time credential. Nothing rotates
   automatically.
 * The plugin refuses to load the script when it already knows the data would be
   rejected (no
    active subscription, or real-time monitoring switched off in the
   GuardLMS dashboard) and says which one it is, rather than reporting “on” and 
   collecting nothing.
 * Disconnecting now revokes the real-time credential at GuardLMS before clearing
   the local key.

#### 0.1.0

 * Initial Phase 1 release: daily/on-demand inventory push (core, plugins, themes,
   
   server/PHP environment) to GuardLMS using a manually issued API key, settings
   page, key-expiry warning, clone/URL guard, and optional pasted-token ownership
   verification meta tag.

## Meta

 *  Version **0.2.2**
 *  Last updated **16 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [cve](https://wordpress.org/plugins/tags/cve/)[monitoring](https://wordpress.org/plugins/tags/monitoring/)
   [security](https://wordpress.org/plugins/tags/security/)[vulnerability](https://wordpress.org/plugins/tags/vulnerability/)
 *  [Advanced View](https://wordpress.org/plugins/guardlms/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/guardlms/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/guardlms/reviews/)

## Contributors

 *   [ Luuk Verhoeven ](https://profiles.wordpress.org/luukverhoeven/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/guardlms/)