=== WDOnline Live Visitor Monitor ===
Contributors: wdonlinedk
Donate link: https://www.paypal.com/ncp/payment/NKERMAVC4PXML
Tags: realtime, visitors, analytics, dashboard, live visitors
Requires at least: 6.2
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.4.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

See who is on your WordPress site right now and which pages they are viewing, directly from the WordPress dashboard.

== Description ==

WDOnline Live Visitor Monitor gives WordPress administrators a simple realtime overview of current website activity without opening an external analytics service.

The plugin shows:

* The number of active visitors right now.
* The pages active visitors are currently viewing.
* The page title and number of active visitors per page.
* Clickable page titles that open the viewed page.
* Automatic updates without refreshing the WordPress admin screen.
* A dashboard widget plus a dedicated page under the shared WD Online admin menu.
* Configurable visitor timeout, frontend heartbeat and dashboard refresh intervals.
* An option to exclude logged-in administrators from visitor counts.
* Separate Settings and Live view tabs in the plugin admin page.
* Translation-ready with the standard `wdonline-live-visitor-monitor` text domain and `/languages` directory, including a POT template for tools such as Loco Translate.

Tracking uses one anonymous persistent identifier per browser/device, matching the proven tracking model from version 1.2.1. The identifier is converted to a server-side HMAC before it is stored. The plugin also stores the current page path, page title and a last-seen timestamp. Query parameters and URL fragments are not stored. The plugin does not intentionally store IP addresses, e-mail addresses, customer/order data, authentication cookies or payment data.

Realtime entries expire automatically. Cleanup runs during normal realtime requests, while loading administrator statistics, and through a scheduled WordPress cron event. This makes timeout cleanup resilient even on sites where WP-Cron is disabled or delayed.

= WD Online Support Diagnostics compatibility =

The plugin includes optional compatibility with WD Online Support Diagnostics. The integration exposes privacy-safe tests for plugin version, database table and structure, required options, AJAX/REST registrations, realtime tracking, cleanup/timeout behavior, cron events, required hooks, configuration state and known error conditions.

WDOnline Live Visitor Monitor does not require WD Online Support Diagnostics and works normally when the diagnostics plugin is not installed or activated. No diagnostic data is automatically sent to WD Online or any external server.

= Diagnostic error codes =

* WDO-LOV-0001: Realtime database table is missing.
* WDO-LOV-0002: Required database columns are missing.
* WDO-LOV-0003: One or more required plugin options are missing.
* WDO-LOV-0004: Realtime AJAX/REST registration or tracking prerequisites are incomplete.
* WDO-LOV-0007: Cleanup failed or stale rows remain after cleanup.
* WDO-LOV-0008: Cleanup cron is unavailable or built-in WP-Cron is disabled.
* WDO-LOV-0009: One or more required WordPress hooks are missing.
* WDO-LOV-0011: A realtime database write operation failed.
* WDO-LOV-0012: Plugin or database version state does not match the running version.
* WDO-LOV-0013: One or more recommended database indexes are missing.
* WDO-LOV-0014: The saved realtime timeout is outside the supported range.
* WDO-LOV-0015: The saved frontend heartbeat is outside the supported range.
* WDO-LOV-0016: The saved dashboard refresh interval is outside the supported range.
* WDO-LOV-0017: The frontend heartbeat is not shorter than the visitor online window.
* WDO-LOV-0018: The realtime table uses an incompatible legacy primary key or visitor index.

= Support =

If this free plugin is useful to you, you can support continued development via PayPal or card:
https://www.paypal.com/ncp/payment/NKERMAVC4PXML

== Installation ==

1. Upload the plugin ZIP through Plugins > Add New > Upload Plugin.
2. Activate WDOnline Live Visitor Monitor.
3. Open WD Online > WDOnline Live Visitor Monitor to configure realtime settings or use the Live view tab. You can also view the WDOnline Live Visitor Monitor widget on the WordPress Dashboard.

No external analytics account is required.

== Frequently Asked Questions ==

= Does the plugin require Google Analytics? =

No. Realtime visitor data is handled locally by the plugin.

= How long is a visitor considered active? =

The default timeout is 90 seconds. The default frontend heartbeat is 30 seconds. The browser sends a lightweight heartbeat while the page is visible. When the page becomes hidden or is closed, it stops contributing new heartbeats and the stored presence expires through the configured timeout.

= Can I translate the plugin with Loco Translate? =

Yes. The plugin uses the `wdonline-live-visitor-monitor` text domain, loads translations from the standard `/languages` directory, and includes a POT template that Loco Translate can use or rescan.

= Does it work without WD Online Support Diagnostics? =

Yes. Diagnostics compatibility is optional and has no effect on normal operation when the diagnostics plugin is absent.

= Does the plugin send telemetry? =

No. The plugin does not automatically send diagnostic data, telemetry or visitor data to WD Online or any other external server.

== Changelog ==

= 1.4.4 =
* Updated compatibility to the official `wdonline_sd_` interface in WD Online Support Diagnostics 0.1.2.
* Removed all legacy diagnostics integration identifiers.
* Added the WD Online author URI to the plugin header.
* Refreshed the translation template and shortened the historical changelog.

= 1.4.3 =
* Deferred Support Diagnostics provider registration until the WordPress `init` action.
* Prevented early just-in-time translation loading notices introduced in WordPress 6.7.
* Kept diagnostic error forwarding safe during activation by avoiding translation calls before `init`.

= 1.4.2 =
* Standardized all plugin-owned identifiers on the company-branded, plugin-specific `wdonline_lvm` prefix.
* Renamed the frontend and admin JavaScript global configuration objects to `WDONLINE_LVM_Tracker` and `WDONLINE_LVM_Admin`.

= Earlier versions =
* Added privacy-safe diagnostics, resilient timeout cleanup, REST/AJAX tracking, translation support, configurable realtime settings and anonymous browser presence tracking.

== Privacy ==

WDOnline Live Visitor Monitor is designed to provide lightweight realtime activity information. It does not intentionally collect IP addresses. Diagnostic reports do not include visitor identifiers, viewed URLs, personal e-mail addresses, customer/order records, passwords, WordPress salts, database credentials, authentication cookies, payment information, API secrets or private API keys.
