=== SitePulse – Performance Monitor, Safe Updates & Site Management ===
Contributors: nilbug, frederickgzmn
Tags: performance, speed, monitoring, security, manage-multiple-sites
Requires at least: 5.5
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.5.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

See which plugin slows each page and fix it. Update with a backup, a screenshot check and one-click undo, on every site from one dashboard.

== Description ==

Your site got slow, and nobody knows which plugin did it. An update broke the checkout, and the first person to notice was a customer.

**SitePulse** ends both. It shows, in plain English, which plugins, theme code and external requests slow each page. And it updates plugins, themes and WordPress the careful way: a backup first, a check of the home page, wp-admin and the checkout after, and a rollback when something breaks. Run it on one site, or look after every site you manage from one SitePulse dashboard.

**[Try SitePulse in your browser](https://playground.wordpress.net/?plugin=sitepulse&login=yes&url=/wp-admin/admin.php?page=wpsp_sitepulse)** – a temporary WordPress with SitePulse already installed. Nothing to set up.

### 🔍 Find what slows your site, in minutes

* **Plugin Activity** – which plugins and theme code add time to a page load, ranked over the last 24 hours. A plugin you fix or remove stops being blamed within a day.
* **Page Analysis** – paste any address, or choose "Analyze this page" in the toolbar, and see what slows that product, post, archive or search page, with what to do about it.
* **External Requests** – every call to payment, analytics and social services, with response times and status codes. A slow third party cannot hide.
* **Hook timing** – millisecond timing for every hook and callback, when you need the detail.
* **Health score and PageSpeed** – load time, TTFB, errors, memory, plugin count and Google PageSpeed Insights in one view.
* **AI Diagnostic** – a report that reads your figures and tells you what to fix first.

### 🚨 Catch errors before your visitors do

* **Fatal error alerts** – an email when a PHP fatal error happens, so you hear it from SitePulse and not from a customer.
* **Error log** – PHP errors, warnings and notices, kept tidy by itself.
* **Recovery access** – get back into wp-admin when a plugin locks you out.
* **Cron watch** – know when WP-Cron stops running, and rein in scheduled tasks that flood your server.
* **wp-admin check** – every hour SitePulse makes sure wp-admin and the login page load, and tells you why not when they don't.

### 🛡️ Update without fear

Connect a site to your SitePulse dashboard with its connection key (the way ManageWP works) and update it from there:

* **Updates with a safety net** – plugins, themes and WordPress update one at a time through WordPress's own updater, after a backup with UpdraftPlus or BackWPup. Each update is checked on the home page, wp-admin and WooCommerce's cart and checkout, and rolled back when it breaks them.
* **Safe update with screenshots** – for the plugin or theme you don't quite trust. SitePulse backs up its folder and the database, photographs your monitored pages just before and just after the update, and shows you what changed. One click keeps the update; one click undoes it.
* **An update policy that works nights** – by default security and minor updates, three days after release, between 1 and 5 am site time. Set your own rules per site. A version you undid stays out for 90 days.
* **Works where WP-Cron doesn't** – a site with few visitors still updates within about a minute, because SitePulse wakes it.
* **Nothing is installed from SitePulse** – updates come from WordPress.org or the plugin's own updater, never from our servers.

### 🔐 Know where you stand on security

* **Vulnerability scanner** – known vulnerabilities in your plugins, themes and WordPress version, with what to do about them.
* **Login open to the internet** – every two days SitePulse checks each site from the outside, as a stranger would, and your dashboard lists the sites whose wp-admin login anyone can open, where bots guess passwords, with ways to close it.
* **A backup before every update, a rollback after a bad one** – the two things most sites skip.

### 🖥️ One dashboard for every site you look after

Your SitePulse dashboard at [sitepulse.me](https://sitepulse.me/) puts all your sites on one screen:

* **Overview** – priority actions, fatal errors, vulnerabilities, PageSpeed and a daily summary across every site.
* **Updates for all sites** – every pending update in one list. Update everything at once, or roll an update out in stages: a few sites first, the rest once they pass.
* **Backups** – schedules, recent backups, warnings for missing, overdue or unusually small backups, and backup presets you apply to any site.
* **Timeline** – every update, plugin change, backup and fatal error on a site, with how each update changed page speed.
* **Visual monitoring** – screenshots of your pages on a schedule, and an alert when a page changes.
* **Alerts** – by email, Slack or webhook when an update or backup fails, a site stops checking in, a page changes or a site slows down.
* **Client reports** – monthly performance reports under your brand, as PDF.
* **White label** – your name and logo on the plugin inside your clients' sites.
* **AI assistants** – an MCP server lets Claude and other AI assistants read your sites' performance, errors, updates, backups and vulnerabilities, with a token you create and revoke.

### ✨ Simple when you want it, detailed when you need it

* **Simple dashboard** with a guided checklist, or the **Advanced** view with hook-level detail. Choose during onboarding, switch any time.
* **Toolbar menu** on every page: analyze this page, pause monitoring, wp-admin status.
* **Three-step setup** that ends with a real check-up of your home page.
* **Pause instead of deactivating** – no profiling overhead, and your settings and history stay.

### 🔒 Private by design

* Monitoring runs on your server. Nothing leaves it until you turn on Cloud Services (PageSpeed and AI reports) or connect the site to your dashboard.
* Only performance figures and plugin names and versions are sent: never visitor data, content, passwords or backup files.
* Remote management stays off until you connect the site, and **Block remote management** in SitePulse's settings stops it on the site at any time, whatever the dashboard says.
* Full details under External Services below.

### 💎 Free forever, and what a plan adds

Everything the plugin does on your site, the profiler, Page Analysis, External Requests, error tracking, cron watch and the toolbar, is free on as many sites as you like, and will stay free. We do not paywall the tools you need to find what is slow.

A SitePulse plan adds the dashboard: all your sites on one screen, updates and safe updates from the dashboard, alerts, visual monitoring, client reports, white label, and more AI diagnostics and vulnerability scans. See plans at [sitepulse.me](https://sitepulse.me/).

### 🔌 Works with

* **UpdraftPlus** (1.26 or later) and **BackWPup** (5) – backups before updates, backup schedules and recent backups in your dashboard, and the restore behind a safe update's undo.
* **WooCommerce** – every update from the dashboard is checked on the cart and checkout as well as the home page and wp-admin.
* **Google PageSpeed Insights** – scores and Core Web Vitals in the plugin and the dashboard.
* **Slack, email and webhooks** – alerts from the dashboard.
* **Claude and other MCP assistants** – read your sites' data through the dashboard's MCP server.
* **Multisite** – monitoring runs on multisite networks; remote management is not available on them yet.

### 🔁 Coming from another tool?

* **P3 (Plugin Performance Profiler)** – P3 has not been updated for years. SitePulse does what P3 did, on today's WordPress: it shows which plugins add time to a page load. It also ranks them over the last 24 hours instead of one scan, analyzes a single page, logs external requests and keeps the history in your dashboard.
* **Query Monitor** – keep it; it is a developer's view of one request. SitePulse ranks all plugins across every page load of the last 24 hours, explains the findings in plain English, emails you about fatal errors and shows all your sites together. The two run side by side.
* **ManageWP, MainWP, WP Umbrella** – SitePulse connects a site with a key from its plugin, as ManageWP does, and updates it with a backup first and a page check after each update. It adds the plugin-level profiler on every site, the speed impact of each update (the full day before against the full day after), an outside check of each site's wp-admin login, and an MCP server for AI assistants. It runs alongside them if you want to keep both; remote management stays off until you turn it on.

### 👥 Who it is for

* **Site owners** who want to know why the site is slow before paying for a bigger server.
* **Freelancers and agencies** who update dozens of sites a month and want a backup, a check and an undo every time.
* **Developers** who want hook-level timing and a log of every external request without leaving wp-admin.

### 🔗 External services

SitePulse talks to **api.sitepulse.me**, run by the plugin developer, for PageSpeed reports, AI diagnostics, vulnerability scans and the SitePulse dashboard. It sends performance figures, plugin and theme names and versions and the site's domain; it never sends visitor data, content, passwords, storage credentials or backup files, and it never installs code from our servers. No data is sold or shared with third parties. Nothing is sent until you turn on Cloud Services or connect the site to your dashboard, and you can switch both off in SitePulse's settings at any time. The FAQ lists exactly what is sent, what the dashboard can do on a connected site and when api.sitepulse.me requests pages from the site.

**Service terms:** by using the enhanced features you acknowledge that performance metrics are sent to api.sitepulse.me for analysis. **Privacy:** https://sitepulse.me/privacy/

---

== Installation ==

### Try it first, without installing
[Try SitePulse in your browser](https://playground.wordpress.net/?plugin=sitepulse&login=yes&url=/wp-admin/admin.php?page=wpsp_sitepulse) opens a temporary WordPress with SitePulse installed and activated.

### Install on your site
1. Install **SitePulse** from Plugins → Add New, or upload the `sitepulse` folder to `/wp-content/plugins/`.
2. Activate it from the Plugins screen.
3. Open **SitePulse** in the admin menu. The three-step setup ends with a check-up of your home page.
4. Browse your site for a few minutes, then look at Plugin Activity: the slowest plugins are already ranked.

### Connect it to your dashboard (optional)
1. Create your account at [sitepulse.me](https://sitepulse.me/) and add the site to a plan.
2. On the site, open **SitePulse → Settings → Remote Management** and choose **Get connection key** (there is also a Connection key link on the Plugins screen).
3. In your dashboard, add the site with its address and the key. It checks in at once, and its updates, backups and timeline appear.

You can disconnect the site from the same settings page, or stop remote management on the site at any time with **Block remote management**.

---

== Frequently Asked Questions ==

= Can I try SitePulse without installing it? =
Yes. [Try SitePulse in your browser](https://playground.wordpress.net/?plugin=sitepulse&login=yes&url=/wp-admin/admin.php?page=wpsp_sitepulse) opens a temporary WordPress site with SitePulse installed, in WordPress Playground. No account, nothing to install.

= Which plugin is slowing down my WordPress site? =
Open **SitePulse → Plugin Activity**. Plugins and theme code are ranked by the time their own code adds to a page load over the last 24 hours, slowest first, so the heavy one is at the top. For one page, use **Page Analysis**: paste its address and SitePulse shows how much of that page's build time each plugin takes, and what to do about it.

= Does SitePulse slow my site down? =
No. SitePulse is built to be lightweight, and visitors' pages load no SitePulse scripts or styles; only administrators who see the toolbar do. Profiling can be switched off, or paused from the SitePulse toolbar menu ("Pause monitoring") without deactivating the plugin.

= How do I find out why one specific page is slow? =
Open the page on your site and choose **SitePulse → Analyze this page** in the toolbar, or go to **SitePulse → Page Analysis** and paste its address. SitePulse loads the page a few times as a logged-out visitor and shows how long WordPress needs to build it, how much of that time each plugin and your theme take, every external request the page makes, and what to do about it. It works for any front-end address: products, posts, pages, archives, your shop and search results.

= Page Analysis says my server could not load the page. What now? =
Some hosts, firewalls and password-protected staging sites block a site from requesting its own pages. Click **Open the page and measure my visit**: the page opens in a new tab, SitePulse measures that visit, and the report appears in the first tab. The same happens if a page cache or CDN answers instead of WordPress.

= What time period do the warnings and rankings cover? =
The last 24 hours. Speed warnings, Plugin Activity, scores and AI diagnostics are based on the time each plugin's and theme's own code adds to a page load during the last 24 hours. A plugin you fixed, updated or deactivated stops being flagged within a day, and code that runs very often but quickly is not flagged however much its time adds up. Activity of code that has not run for two days is removed. The External Requests screen keeps its full log.

= Can I pause SitePulse instead of deactivating it? =
Yes. Choose **Pause monitoring** in the SitePulse toolbar menu (or "Pause instead of deactivating" when you deactivate). SitePulse stops measuring page loads, so it adds no profiling overhead, and keeps your settings and history. Choose **Resume monitoring** when you need it again.

= How do I update WordPress plugins safely? =
Connect the site to your SitePulse dashboard and update it from there. Each plugin, theme or WordPress update runs through WordPress's own updater after a backup with UpdraftPlus or BackWPup, is checked on the home page, wp-admin and WooCommerce's cart and checkout, and is rolled back when it breaks them. For a plugin you don't trust, choose **Safe update**: SitePulse photographs your pages before and after and lets you undo with one click.

= How do I update my sites from the SitePulse dashboard? =
Connect each site with its connection key (SitePulse → Settings → Remote Management → **Get connection key**, then add the site in your dashboard). The dashboard then lists every pending plugin, theme and WordPress update on all your sites. Update one site, all of them at once, or in stages. Each update runs through WordPress's own updater after a backup, is checked on the home page, wp-admin and WooCommerce's cart and checkout, and is rolled back when it breaks them. Updates can also run by themselves under the site's update policy.

= What is a safe update? =
An update of one plugin or theme with a visual check. SitePulse backs up the plugins (or themes) folder and the database with UpdraftPlus or BackWPup, takes screenshots of the site's monitored pages just before and just after the update, and compares them. If a page changed a lot or stopped loading, the dashboard shows you the before and after and you choose: keep the update, or undo it with one click. Undoing restores the folder and the whole database from the UpdraftPlus backup (anything saved since is lost), or without one reinstalls the previous version from WordPress.org.

= Does SitePulse back up my site? =
SitePulse does not make backups itself. It drives the backup plugin you already have: UpdraftPlus 1.26 or later, or BackWPup 5. With one active, the dashboard shows the site's schedules and recent backups, warns about missing, overdue or unusually small backups, starts or cancels a backup and applies saved backup settings. Without one, updates still run, checked and rolled back to the previous version when they break the site, but safe updates have no backup to restore.

= What happens if an update breaks my site? =
A plugin or theme that breaks the home page, wp-admin or WooCommerce's cart or checkout is rolled back to its previous version from WordPress's temporary backup, and the dashboard tells you. An update cut short by a PHP time limit takes the site out of maintenance mode and puts the previous version back. After an undo, WordPress's own automatic updates do not reinstall that version for 90 days.

= How do I know whether my login page is open to the internet? =
Your SitePulse dashboard checks every site from the outside every two days, as any visitor would, and lists on its Overview the sites whose wp-admin login anyone can open, with how to close it: allow wp-admin and wp-login.php only from your own IP addresses, put them behind a server password, or move the login page, and turn on two-factor sign-in either way. Separately, the plugin checks every hour that the site's own server can reach wp-admin (the check that runs after each update), and shows the result under Site Information and in the toolbar.

= Can AI assistants read my SitePulse data? =
Yes. The SitePulse dashboard is an MCP server: create a token in your dashboard and Claude or any other assistant that speaks MCP can list your sites and read their overview, error logs, PageSpeed, updates, backups, visual monitoring and vulnerabilities. A token reads only your own sites, and you can revoke it at any time.

= Does SitePulse use external services? =
Yes, but only for optional enhanced features. SitePulse can communicate with api.sitepulse.me to provide PageSpeed reports, AI diagnostics, vulnerability scans and the dashboard. The core monitoring features work 100% locally without any external connection. Only performance metrics (plugin names, load times, memory usage) are sent, never personal data or user content. The next three questions list exactly what is sent and when.

= What does SitePulse send to api.sitepulse.me? =
**What is sent.** To provide these enhanced features, SitePulse sends **only performance-related metrics** to the external API:
* Plugin names, versions, and slugs installed on your site
* WordPress hook execution times and memory usage
* API request URLs and response times
* Site domain name
* Performance statistics and load times

**What is never sent.** SitePulse is designed with privacy in mind and **does NOT collect**:
* ❌ Personal user data (names, emails, passwords, IP addresses)
* ❌ User content (posts, pages, comments, custom data)
* ❌ Database content or sensitive information
* ❌ Customer or visitor information
* ❌ Any personally identifiable information (PII)

While Cloud Services (PageSpeed & AI Reports) are on, the site checks in with api.sitepulse.me every hour, and every 5 minutes while remote management is on. A check-in sends the SitePulse and WordPress versions, which backup plugin is active, whether remote management is blocked on the site, how WP-Cron runs there: the address of wp-cron.php, whether WP-Cron is turned off and how long scheduled tasks have been waiting, and whether the site's own server can reach its wp-admin, as the plugin's hourly check found it: the HTTP status of wp-admin and the login page, how long they took, when it checked and, when they failed, why (a timeout, a connection error, an HTTP status or a PHP fatal error, with the first line of the error message, up to 200 characters).

Only while remote management is on, the site also sends:
* Plugin and theme names, versions, whether they are active, their auto-update setting and available updates
* WordPress, PHP and database versions and the site language
* Backup schedules, how many backups are kept, storage types, the result of the last backup and the dates and sizes of recent backups
* Events when plugins, themes, translations or WordPress are updated, a plugin is activated or deactivated, the theme changes or a backup finishes
* Page speed figures from SitePulse's profiler: once a day, the time plugins, themes and WordPress took per page load the day before (with the five slowest), and after each update, the updated item's time on the full day before and the full day after it
* PHP fatal errors in SitePulse's error log: the first line of the message (up to 300 characters), the file and the line
* How far a running update or undo is: its step, the backup's progress and the item it is on

= What can my dashboard do on this site while remote management is on? =
While remote management is on, the dashboard can also:
* Start or cancel a backup, and apply backup settings saved in your dashboard (schedules, how many backups to keep, which parts of the site to include) to UpdraftPlus or BackWPup. It restores a backup only when you undo a safe update from the dashboard (see below), and never deletes backups or changes where they are stored.
* Update plugins, themes and WordPress, on request or automatically under the site's update policy (by default security and minor updates, three days after release, between 1 and 5 am site time). Updates run through WordPress's own updater, so they come from WordPress.org or a premium plugin's own updater, never from api.sitepulse.me. Each update is preceded by a backup and followed by a check of the home page, wp-admin and, with WooCommerce, the cart and checkout; a plugin or theme that breaks them is rolled back to its previous version.
* Run a safe update of one plugin or theme. First the plugins (or themes) folder and the database are backed up with UpdraftPlus or BackWPup; without a backup plugin there is no backup. SitePulse's screenshot service loads the site's monitored public pages (the home page by default) just before and just after the update and compares them. If a page changed a lot or stopped loading, the dashboard offers to keep the update or undo it. With an UpdraftPlus backup, undoing restores that folder and the whole database to the time of the backup, so anything saved since (such as orders, comments or form entries) is lost; otherwise it reinstalls the previous version from WordPress.org. After an undo, WordPress's own automatic updates do not install the undone version again, for 90 days or until a newer version is installed.
* Turn WordPress's own automatic updates on or off for plugins and themes.

Requests are signed with the site's SitePulse license, or with a key the dashboard rotates for remote management; the license key itself is never sent. Remote management never sends backup files, passwords, storage credentials or site content, and SitePulse never installs code from api.sitepulse.me. Turn on "Block remote management" in SitePulse's settings to stop it on this site at any time, whatever the dashboard says.

= Does api.sitepulse.me make requests to my site? =
Remote management runs in WP-Cron, which WordPress only runs when the site gets visitors unless a server cron job runs it. So while remote management is on, api.sitepulse.me requests the site's wp-cron.php, at most once a minute, when the dashboard has work waiting for the site or the site has stopped checking in. That request sends no data; with `?sitepulse_check_in=1` the site checks in during that run instead of at its next scheduled check-in.

While the site is registered with SitePulse (Cloud Services on) and has connected in the last 30 days, api.sitepulse.me also requests its wp-admin and login page every two days, as any visitor could, to tell your dashboard whether the login is open to the internet. That request sends no data and uses no credentials.

= Where do I get help? =
Ask in the [SitePulse support forum](https://wordpress.org/support/plugin/sitepulse/) or open an issue on GitHub. We answer quickly, and feedback that makes performance easier to see helps everyone.

= Can it work with WooCommerce or multisite? =
Page Analysis works on any front-end address, including WooCommerce product, shop, cart and category pages, and updates from the dashboard are checked on WooCommerce's cart and checkout. SitePulse runs on multisite networks; remote management is not available on them yet.

= Is SitePulse a replacement for P3 Plugin Performance Profiler? =
For what P3 did, yes. P3 has not been updated for years. SitePulse shows which plugins add time to a page load on today's WordPress, ranked over the last 24 hours, and goes further: one page at a time with Page Analysis, every external request the site makes, fatal error alerts, and the history of all your sites in the dashboard.

= Does SitePulse work with Query Monitor? =
Yes, keep both. Query Monitor shows a developer everything about the request on screen. SitePulse ranks plugins across every page load of the last 24 hours, explains the findings in plain English for anyone, alerts you about fatal errors and shows all your sites together.

= How is SitePulse different from ManageWP? =
ManageWP's Worker plugin only connects a site to the ManageWP service; the profiler, Page Analysis, External Requests and error tracking in SitePulse's plugin work on their own, free, with no account. Both connect a site with a key and update plugins with a backup first and a rollback when a page breaks. SitePulse keeps backups in your own UpdraftPlus or BackWPup instead of a cloud we run, shows you the before-and-after screenshots of a safe update so you decide what stays, shows what each update did to page speed, checks from the internet whether a site's login is open, and lets AI assistants read your sites through MCP. ManageWP has things SitePulse does not: its own cloud backups, cloning and migration, uptime monitoring and Google Analytics. Many agencies run both; SitePulse's remote management stays off until you turn it on.

= Is this a "Lite" version with limited features? =
No. Everything the plugin does on your site is free and unlimited, and will stay free. A SitePulse plan adds the dashboard: all your sites on one screen, updates and safe updates from the dashboard, alerts, visual monitoring, client reports, white label, and more AI diagnostics and vulnerability scans. See plans at [sitepulse.me](https://sitepulse.me/).

---

== Screenshots ==
1. The SitePulse dashboard inside wp-admin: your site's health score, what to fix first, and an AI diagnostic of the site.
2. A safe update waiting for your choice in the SitePulse dashboard: each page before and after the update, the differences, and one click to restore the backup or keep the update.
3. Remote Management in the SitePulse dashboard: every pending update on all your sites, with Update, Safe update, rollouts and backups.
4. Page Analysis: how long WordPress needs to build one page, its database queries, memory and external requests, and what stands out.
5. Plugin Activity: which plugins and theme code add time to a page load, ranked over the last 24 hours.
6. The dashboard's Overview: every site's errors, cron issues, vulnerabilities and priority actions on one screen.
7. wp-admin login open to the internet: the sites whose login page anyone can open, checked from the internet every 2 days, with how to close it.
8. A site in the dashboard: remote management status, the wp-admin check, safe update history and pending updates.
9. A site's timeline: every update, plugin change and backup, with what SitePulse did and when.
10. External Requests: every call your site makes to outside services, with its status and how long it took.
11. Site Information: WordPress, PHP, server and database details, active plugins, and the hourly wp-admin check.
12. Settings → Remote Management: connect the site to your dashboard with a connection key, see exactly what is sent, and block remote management at any time.
13. The toolbar menu on every page: analyze this page, pause monitoring, and whether wp-admin can be reached.
14. The Advanced view: scores for plugin activity, external requests, memory, active plugins and errors, with hook-level detail below.

---

== Changelog ==
= 1.5.0 =
* New: Remote management (optional). Your SitePulse dashboard can show this site's plugins, themes and available updates, plus a history of updates, plugin changes and backups, and update plugins, themes and WordPress, on request (on one site, or on all your sites at once) or under an update policy (by default security and minor updates, after three days, at night): a backup first when UpdraftPlus 1.26+ or BackWPup 5 is active, then one update at a time through WordPress's own updater, each checked on the home page, wp-admin and WooCommerce's cart and checkout, and rolled back when it breaks them. With UpdraftPlus 1.26+ or BackWPup 5 active, the dashboard also shows this site's backup schedules and recent backups, can start or cancel a backup and apply saved backup settings (schedules, how many backups to keep, what to include), and warns about backups kept only on the server, missing or overdue backups and unusually small ones. The dashboard also shows how each update changed page speed (the full day before against the full day after), daily page speed and PHP fatal errors in one timeline of everything that changed on the site, builds monthly client reports, and can alert you by email, Slack or webhook when an update or backup fails, check-ins stop or the site slows down. It is off until you set the site up in your dashboard with its connection key, and you can block it at any time under SitePulse Settings. An update cut short by a PHP time limit or crash takes the site out of maintenance mode and puts the previous version back, and the dashboard can rotate the key remote management signs with.
* New: safe update of one plugin or theme from your dashboard: the plugins (or themes) folder and the database are backed up first, screenshots of the site's monitored pages taken just before and after the update are compared, and when a page changed a lot or stopped loading you can keep the update or undo it. Undoing restores the folder and the whole database from the UpdraftPlus backup (anything saved since is lost), or without one reinstalls the previous version from WordPress.org.
* New: connect this site to your SitePulse dashboard with a connection key, as with ManageWP: choose Get connection key under SitePulse Settings → Remote Management (or the Connection key link on the Plugins screen), then enter the site's address and the key in your dashboard. A site with the free plugin joins one of your plans, and it is set up at once: it registers with SitePulse if needed, checks in as soon as the key is used, even when its WP-Cron does not run, and the settings page updates by itself. You can disconnect it from the settings at any time.
* New: SitePulse checks every hour, from the site's own server, that wp-admin and the login page load, the way WordPress checks an edited plugin for errors. Site Information (System Information in the Advanced dashboard's settings) and the toolbar show whether wp-admin can be reached, why not when it cannot (a timeout, a blocked connection, an HTTP error or a PHP fatal error) and since when, with a Check now button, and each check-in tells your SitePulse dashboard, which warns that updates would stop.
* New: remote management also works on sites where WP-Cron does not run by itself (few visitors, or DISABLE_WP_CRON without a server cron job): api.sitepulse.me wakes the site's WP-Cron when the dashboard has work for it, so updates and backups start within about a minute, and the dashboard warns when a site's WP-Cron is not running, with the server cron job to add. When a check-in is 10 minutes late, an administrator's wp-admin page checks in after it loads.
* Fixed: with SitePulse active, WordPress's plugin and theme editors missed most PHP fatal errors in edited code (those PHP reports as uncaught exceptions, such as a call to a missing function), because SitePulse's error log caught them first. WordPress now sees them again; SitePulse still logs each one.
* Fixed: an AI diagnosis on a site without a license key (for example, after its key was removed) failed with "the license key field is required". The site now registers with SitePulse first and gets a key; when SitePulse refuses, the message says why.
* Fixed: the vulnerability scan said "Vulnerabilities detected." on a site with none, answered "Free scan requests exhausted" to any refused request, and showed nothing in Easy Mode while the first scan waited in the queue. It now says when the queued scan was requested and when to check again, counts the findings, and explains a refusal (daily limit, Pro license, SitePulse temporarily unavailable).
* Fixed: Easy Mode said "No Threats Found" before the first vulnerability scan, and showed the severity of every finding as "Unknown".
* Fixed: a failed AI diagnosis kept showing "Waiting in queue" and could start a new diagnosis by itself an hour later. It now shows the failure, the reason SitePulse gave and a retry button. A temporary server error no longer marks a diagnosis as failed or hides the previous report.

= 1.4.7 =
* Fixed: after SitePulse had been running for a while, warnings kept blaming plugins that were slow in the past or that simply ran often. Warnings, rankings, scores and AI diagnostics now use the last 24 hours and the time each plugin's own code adds to a page load.
* Fixed: slow external requests from earlier days no longer appear as warnings or in diagnoses; the External Requests log still lists them.
* Fixed: "Slowest Plugins" lists plugins slowest first, with averages over the last 24 hours.
* Fixed: the dashboard assistant showed "?ms" for the slowest item and based its heaviest-plugin tip on outdated timings.
* Improved: Plugin Activity forgets code that has not run for two days, so stored data stays small.

= 1.4.6 =
* New: Page Analysis. Analyze any page (products, posts, archives, your shop, search results) and see which plugins, theme code and external requests slow it down, with plain-English findings. Replaces the old single-page tracking, which only supported posts and pages and mixed in data from other requests.
* New: "Analyze this page" in the toolbar on every front-end page.
* New: when the server cannot load its own pages, Page Analysis measures your browser visit instead.
* New: Pause and resume monitoring from the toolbar, without deactivating.
* New: getting-started checklist on the dashboard.
* Improved: the Simple dashboard (Easy Mode) is now the default; the classic dashboard is the "Advanced view". Dashboard preferences are saved per user instead of per browser.
* Improved: onboarding ends with a real check-up of your homepage.
* Improved: plain menu names: Page Analysis, Plugin Activity and External Requests.
* Improved: profiler measures each callback's own time, so nested plugins are no longer counted twice.
* Improved: pages for visitors no longer load jQuery or SitePulse styles; only administrators who see the toolbar do.
* Improved: the deactivation dialog offers to pause instead, a quick-start guide and a support link, and can be translated.
* Improved: uninstalling also removes the error log and plugin timing data.
* Fixed: switching off External Requests tracking now really stops it (it kept recording before), and the dashboard switches confirm the right state.
* Fixed: single-file plugins (such as Hello Dolly) appear under their own name in Plugin Activity.
* Fixed: a deprecation notice from the error handler on PHP 8.4 and newer.
* Fixed: PHP warnings and errors (such as "Undefined array key avg_ms") when a site still holds data saved by earlier versions or damaged data.
* Removed: the simulated "Real-Time Tracking" modal on the front end.

= 1.4.5 =
* Better reporting
* Cron Fixes

= 1.4.4 =
* Fixed an UI bug
* Improved performance for plugins with hooks

= 1.4.3 =
* Hooks now display the url of the page that triggered it
* Remove sitepulse pro dependencies
* Added early profiler
* Auto increment profiler calls when persistent
* Auto detect active hooks activately consuming resources
* Fixed a bug where the hook report was not showing


= 1.4.2 =
* Hook and api hook bugs fixed


= 1.4.1 =
* Better performance handling
* sitepulse alternative cronjobs management
* Fixes

= 1.4.0 =
* Easy Mode for beginners
* AI Assistant integration
* Fixes

= 1.3.6 =
* Streamlined onboarding wizard from 7 steps to 3 steps for faster setup
* Added performance impact indicators (High Impact, Average, Good) for plugin activity
* Added internal request identification in External Requests reports
* Admin bar compact view mode option for cleaner interface
* Clarified feature naming: "Performance Monitor" and "External Requests tracker"
* Enhanced settings page with email blocking and WP Cron configuration warnings
* Improved deactivation feedback modal

= 1.3.5 =
* Autoload option
* Error report free version
* Cron fails detection
* Feedback from deactivation - Help us to improve

= 1.3.0 =
* Whitelabel support
* AI Diagnostic is here!

= 1.2.8 =
* vulnerabilities scan + fix and improvements

= 1.2.2 =
* Hotfix and cleanup

= 1.2.0 =
* Complete UI redesign with modern, intuitive dashboard interface
* Enhanced plugin load time detection and performance metrics
* Refreshed frontend and backend iconography for better visual clarity
* Improved API request tracking and cron job management
* Comprehensive error handling with fatal error email notifications
* New Basic View for simplified performance overview
* Code optimization and performance improvements
* Added PageSpeed Insights widget integration
* Fixed recovery mode email notifications
* Introduced performance glossary for user education
* Refined button styling with design system guidelines
* Google PageSpeed Insights branding and integration
* Confirmed compatibility with WordPress 6.9

= 1.1.1 =
* Added admin notices to surface important updates and status messages
* Automatically enable Tracker mode when the plugin is activated
* Confirmed compatibility with WordPress 6.8

= 1.1.0 =
* Added frontend tracking interface
* Block cronjobs and outgoing emails
* Load time tracking per page and plugin usage report

= 1.0.0 =
* Initial public release with uptime monitoring, dashboard, and basic profiler

---

== Upgrade Notice ==
= 1.5.0 =
Adds optional remote management from your SitePulse dashboard: updates, backups, connection keys and safe updates with visual checks and one-click undo. Nothing changes on this site until you connect it with its key. Warnings and rankings now use the last 24 hours.

= 1.1.1 =
Adds admin notices to surface important updates and status messages, automatically enables Tracker mode on activation so performance tracking starts immediately, and confirms compatibility with WordPress 6.8.

---
