From c6870087b418640f41a19d2b7db23fddea774da9 Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Tue, 11 Aug 2026 17:40:26 -0400 Subject: [PATCH 01/30] Document Advanced Uptime Monitor abilities Adds an Abilities API reference page for the 7 abilities the Advanced Uptime Monitor extension registers under the mainwp-advanced-uptime-monitor category, covering input schemas, responses, the sync token/cursor loop, and the extension error codes. Links it from the nav and from the add-on page, and bumps the add-on data-version to 5.4.0. --- .../advanced-uptime-monitor-extension.mdx | 8 +- api-reference/abilities-api/overview.mdx | 13 +- .../abilities-api/uptime-monitors.mdx | 409 ++++++++++++++++++ docs.json | 3 +- 4 files changed, 429 insertions(+), 4 deletions(-) create mode 100644 api-reference/abilities-api/uptime-monitors.mdx diff --git a/add-ons/monitoring/advanced-uptime-monitor-extension.mdx b/add-ons/monitoring/advanced-uptime-monitor-extension.mdx index 71e97d6..afc453c 100644 --- a/add-ons/monitoring/advanced-uptime-monitor-extension.mdx +++ b/add-ons/monitoring/advanced-uptime-monitor-extension.mdx @@ -25,7 +25,7 @@ addonType: extension data-pricing-tier="free" data-bundle="Essentials" data-addon-type="integration" - data-version="5.3.5" + data-version="5.4.0" data-developer="MainWP" data-changelog-url="https://mainwp.com/changelog/mainwp-advanced-uptime-monitor-extension/" data-owned-by="Jestart LLC" @@ -316,6 +316,12 @@ Notes on how this works: No additional configuration is required. Assign **Allowed Child Sites** to each role in Team Control as described in the [Define Role Permissions](/add-ons/agency/team-control-extension#define-role-permissions) section, and the uptime monitor list will honor those permissions automatically. +## Abilities API Support + +Version 5.4.0 registers 7 uptime monitoring abilities into the WordPress Abilities API, so AI agents and automation tools can list monitors and events, read live uptime percentages, create and pause monitors, delete them, and synchronize the provider inventory. The same extension access and Team Control site restrictions described above apply to every call. + +See [Uptime Monitor Abilities](/api-reference/abilities-api/uptime-monitors) for the parameters, responses, and error codes. + --- ## Related Resources diff --git a/api-reference/abilities-api/overview.mdx b/api-reference/abilities-api/overview.mdx index e357abd..d88c7dd 100644 --- a/api-reference/abilities-api/overview.mdx +++ b/api-reference/abilities-api/overview.mdx @@ -2,12 +2,12 @@ title: Abilities API Overview sidebarTitle: "Abilities API Overview" description: >- - MainWP registers 62 abilities into WordPress Core's Abilities API framework for programmatic site management via AI agents and automation tools. + MainWP registers 62 abilities into WordPress Core's Abilities API framework, plus 7 more from the Advanced Uptime Monitor extension, for programmatic site management via AI agents and automation tools. --- The WordPress Abilities API is a **WordPress Core feature** (available in WordPress 6.9+) that provides a standardized registry for capabilities across the WordPress ecosystem. Any plugin can register discrete actions ("abilities") with defined input/output schemas, making functionality discoverable by external systems. -MainWP Dashboard registers 62 abilities into this framework across five categories. This integration enables AI agents, automation platforms, and external tools to discover what MainWP can do and execute those capabilities through a consistent interface. +MainWP Dashboard registers 62 abilities into this framework across five categories, and MainWP extensions add their own on top. With the Advanced Uptime Monitor extension active, a sixth category brings the total to 69. This integration enables AI agents, automation platforms, and external tools to discover what MainWP can do and execute those capabilities through a consistent interface. ## What You'll Learn @@ -137,6 +137,12 @@ MainWP registers these categories: | `mainwp-tags` | 7 | Tag/group management | | `mainwp-batch` | 1 | Batch operation monitoring | +Extensions register categories of their own. This one appears once the extension is installed: + +| Category | Abilities | Description | +|----------|-----------|-------------| +| `mainwp-advanced-uptime-monitor` | 7 | Uptime monitors, from the Advanced Uptime Monitor extension | + 30 abilities for site management @@ -150,6 +156,9 @@ MainWP registers these categories: 7 abilities for tag management + + 7 abilities from the Advanced Uptime Monitor extension + --- diff --git a/api-reference/abilities-api/uptime-monitors.mdx b/api-reference/abilities-api/uptime-monitors.mdx new file mode 100644 index 0000000..501d29a --- /dev/null +++ b/api-reference/abilities-api/uptime-monitors.mdx @@ -0,0 +1,409 @@ +--- +title: Uptime Monitor Abilities +sidebarTitle: "Uptime Monitor Abilities" +description: >- + 7 abilities for reading and managing uptime monitors through the Advanced Uptime Monitor extension. +--- + +The Advanced Uptime Monitor extension registers 7 abilities into the WordPress Abilities API framework under the `mainwp-advanced-uptime-monitor` category. They cover the four providers the extension supports: UptimeRobot, Site24x7, NodePing, and Better Uptime/Better Stack. + +These abilities only appear when the Advanced Uptime Monitor extension is installed and activated on the Dashboard, and calls against a provider only succeed once that provider's credentials are saved in the extension settings. The abilities index paginates at 50 entries per page, so add `?category=mainwp-advanced-uptime-monitor` when discovering them: + +```bash +curl -u 'admin:xxxx' \ + 'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities?category=mainwp-advanced-uptime-monitor' +``` + +## What You'll Learn + +- Reading cached monitor mappings and events for a site +- Reading live uptime percentages from the provider +- Creating monitors, pausing them, and deleting them +- Running a paginated provider synchronization + +--- + +## Service Values + +Every ability takes a `service` parameter naming the provider to talk to: + +| Value | Provider | +|-------|----------| +| `uptimerobot` | UptimeRobot | +| `site24x7` | Site24x7 | +| `nodeping` | NodePing | +| `betteruptime` | Better Uptime / Better Stack | + +Monitors are addressed by `local_monitor_id`, the Dashboard's own mapping row ID. Provider-side monitor IDs are never accepted as input and never returned. + +--- + +## Access Control + +Six of the seven abilities are site-scoped: the caller needs MainWP extension access to Advanced Uptime Monitor and access to the specific site in `site_id`. [Team Control](/add-ons/agency/team-control-extension) role restrictions apply here the same way they do in the Dashboard UI, including for requests authenticated with an API key. + +`mainwp/sync-uptime-monitors-v1` works across the whole provider inventory rather than one site, so it requires `manage_options` plus unrestricted access to all sites. A role limited to a subset of child sites cannot run it. + +--- + +## mainwp/list-uptime-monitors-v1 + +List the Dashboard's cached monitor mappings for one site and provider. No provider request is made. + +**Method:** GET (readonly) + +```bash +curl -u 'admin:xxxx' \ + 'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/list-uptime-monitors-v1/run?input[site_id]=1&input[service]=uptimerobot' +``` + +**Input Parameters:** + +| Name | Type | Required | Default | Description | +|------|------|----------|---------|-------------| +| `site_id` | integer | Yes | — | MainWP Dashboard site ID | +| `service` | string | Yes | — | One of `uptimerobot`, `site24x7`, `nodeping`, `betteruptime` | +| `page` | integer | No | 1 | Page number (max 100000) | +| `per_page` | integer | No | 50 | Rows per page (max 100) | + +**Response:** + +```json +{ + "source": "dashboard_cached_mapping", + "site_id": 1, + "service": "uptimerobot", + "monitors": [ + { + "local_monitor_id": 12, + "site_id": 1, + "service": "uptimerobot", + "name": "Example Site", + "address": "https://example.com", + "administrative_state": "active", + "observed_status": "up", + "last_local_update": 1739000000 + } + ], + "pagination": { + "page": 1, + "per_page": 50, + "returned": 1, + "total": 1, + "has_more": false + } +} +``` + +`administrative_state` is `active`, `paused`, or `unknown`. `observed_status` is `up`, `down`, `degraded`, `pending`, or `unknown`. + +--- + +## mainwp/list-uptime-monitor-events-v1 + +List cached events for one monitor. Values are redacted down to timing and status; provider event IDs and payloads are not exposed. + +**Method:** GET (readonly) + +```bash +curl -u 'admin:xxxx' \ + 'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/list-uptime-monitor-events-v1/run?input[site_id]=1&input[service]=uptimerobot&input[local_monitor_id]=12' +``` + +**Input Parameters:** + +| Name | Type | Required | Default | Description | +|------|------|----------|---------|-------------| +| `site_id` | integer | Yes | — | MainWP Dashboard site ID | +| `service` | string | Yes | — | Provider slug | +| `local_monitor_id` | integer | Yes | — | Dashboard-local monitor mapping ID | +| `page` | integer | No | 1 | Page number | +| `per_page` | integer | No | 50 | Rows per page (max 100) | + +**Response:** + +```json +{ + "source": "dashboard_cached_event", + "site_id": 1, + "service": "uptimerobot", + "local_monitor_id": 12, + "events": [ + { + "event_id": 340, + "occurred_at": 1738990000, + "status": "down", + "duration_seconds": 420, + "response_time_ms": null + } + ], + "pagination": { + "page": 1, + "per_page": 50, + "returned": 1, + "total": 1, + "has_more": false + } +} +``` + +`status` is one of `up`, `down`, `degraded`, `paused`, `resolved`, `open`, `unknown`. `duration_seconds` and `response_time_ms` are `null` when the provider did not report them. + +--- + +## mainwp/get-site-uptime-summary-v1 + +Read live uptime percentages from the provider for one site. This call reaches the provider but does not import events or write to the Dashboard cache. + +**Method:** GET (readonly) + +```bash +curl -u 'admin:xxxx' \ + 'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/get-site-uptime-summary-v1/run?input[site_id]=1&input[service]=uptimerobot' +``` + +**Input Parameters:** + +| Name | Type | Required | Default | Description | +|------|------|----------|---------|-------------| +| `site_id` | integer | Yes | — | MainWP Dashboard site ID | +| `service` | string | Yes | — | Provider slug | + +**Response:** + +```json +{ + "source": "live_provider", + "site_id": 1, + "service": "uptimerobot", + "local_monitor_id": 12, + "measured_at": 1739001200, + "ratios": { + "days_7": 100, + "days_15": 99.98, + "days_30": 99.95, + "days_45": 99.93, + "days_60": 99.9, + "all_time": 99.87 + }, + "remote_confirmed": true +} +``` + +Any ratio the provider does not report comes back as `null`. Site24x7 and Better Stack cap `all_time` at the last 365 days rather than the full monitor history. + +--- + +## mainwp/create-site-uptime-monitor-v1 + +Create one monitor for a site using the provider's default check settings, then store the confirmed mapping on the Dashboard. + +**Method:** POST + +```bash +curl -X POST -u 'admin:xxxx' \ + -H 'Content-Type: application/json' \ + -d '{"input":{"site_id":1,"service":"uptimerobot"}}' \ + 'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/create-site-uptime-monitor-v1/run' +``` + +**Input Parameters:** + +| Name | Type | Required | Default | Description | +|------|------|----------|---------|-------------| +| `site_id` | integer | Yes | — | MainWP Dashboard site ID | +| `service` | string | Yes | — | Provider slug | + +There are no check-interval, alert-contact, or monitor-type parameters. The monitor is created with provider defaults against the site's own URL. Adjust it afterwards in the extension UI or in the provider's own dashboard. + +**Response:** + +```json +{ + "status": "created", + "site_id": 1, + "service": "uptimerobot", + "local_monitor_id": 12, + "remote_confirmed": true, + "local_mapping_saved": true, + "stored_http_credentials_forwarded": false +} +``` + +`stored_http_credentials_forwarded` reports whether HTTP basic auth credentials already stored for the site were sent to the provider so the monitor can reach a protected site. The credential values are never returned. + +A site that already has a monitor for the same provider returns `mainwp_aum_monitor_exists` (409). If the provider creates the monitor but the Dashboard write then fails, the call returns `mainwp_aum_database_failure` (500) with a message telling you to run a provider synchronization before retrying, so a blind retry does not create a second remote monitor. + +--- + +## mainwp/set-uptime-monitor-state-v1 + +Pause or resume one monitor. The Dashboard cache is reconciled only after the provider confirms the change. + +**Method:** POST + +```bash +curl -X POST -u 'admin:xxxx' \ + -H 'Content-Type: application/json' \ + -d '{"input":{"site_id":1,"service":"uptimerobot","local_monitor_id":12,"state":"paused"}}' \ + 'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/set-uptime-monitor-state-v1/run' +``` + +**Input Parameters:** + +| Name | Type | Required | Default | Description | +|------|------|----------|---------|-------------| +| `site_id` | integer | Yes | — | MainWP Dashboard site ID | +| `service` | string | Yes | — | Provider slug | +| `local_monitor_id` | integer | Yes | — | Dashboard-local monitor mapping ID | +| `state` | string | Yes | — | `active` or `paused` | + +**Response:** + +```json +{ + "status": "updated", + "site_id": 1, + "service": "uptimerobot", + "local_monitor_id": 12, + "state": "paused", + "remote_confirmed": true, + "local_cache_updated": true +} +``` + +The ability is idempotent. Asking for a state the monitor is already in returns `"status": "unchanged"` with `local_cache_updated` set to `false`. + +--- + +## mainwp/delete-uptime-monitor-v1 + +Delete one monitor at the provider, then remove its Dashboard mapping and cached events. + +**Method:** POST (destructive) + +```bash +curl -X POST -u 'admin:xxxx' \ + -H 'Content-Type: application/json' \ + -d '{"input":{"site_id":1,"service":"uptimerobot","local_monitor_id":12}}' \ + 'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/delete-uptime-monitor-v1/run' +``` + + +This ability is registered with `destructive: true` and has no `confirm` or `dry_run` parameter. Nothing in the API asks a second time, so a client that runs abilities on behalf of a user should prompt before calling it. MCP clients read the `destructive` annotation and gate the call themselves. + + +**Input Parameters:** + +| Name | Type | Required | Default | Description | +|------|------|----------|---------|-------------| +| `site_id` | integer | Yes | — | MainWP Dashboard site ID | +| `service` | string | Yes | — | Provider slug | +| `local_monitor_id` | integer | Yes | — | Dashboard-local monitor mapping ID | + +**Response:** + +```json +{ + "status": "deleted", + "site_id": 1, + "service": "uptimerobot", + "local_monitor_id": 12, + "remote_confirmed": true, + "local_mapping_deleted": true, + "local_events_deleted": true +} +``` + +Local data is removed only after the provider confirms the remote deletion. If the provider call fails or its outcome cannot be determined, the mapping and events stay in place and the ability returns an error instead. + +--- + +## mainwp/sync-uptime-monitors-v1 + +Pull the provider's monitor inventory into the Dashboard one page at a time and reconcile mappings. + +**Method:** POST (destructive) + +```bash +# Start a run +curl -X POST -u 'admin:xxxx' \ + -H 'Content-Type: application/json' \ + -d '{"input":{"service":"uptimerobot"}}' \ + 'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/sync-uptime-monitors-v1/run' + +# Continue with the token and cursor from the previous response +curl -X POST -u 'admin:xxxx' \ + -H 'Content-Type: application/json' \ + -d '{"input":{"service":"uptimerobot","sync_token":"BW1t...","cursor":50}}' \ + 'https://your-dashboard.com/wp-json/wp-abilities/v1/abilities/mainwp/sync-uptime-monitors-v1/run' +``` + +**Input Parameters:** + +| Name | Type | Required | Default | Description | +|------|------|----------|---------|-------------| +| `service` | string | Yes | — | Provider slug | +| `sync_token` | string | No | "" | Opaque token from the previous response. Omit on the first call | +| `cursor` | integer | No | 0 | Page cursor from the previous response's `next_cursor` | + +**Response:** + +```json +{ + "status": "more", + "service": "uptimerobot", + "sync_token": "BW1t...", + "cursor": 0, + "next_cursor": 50, + "fetched": 50, + "inserted": 12, + "updated": 38, + "deleted": 0, + "skipped_unassigned": 0, + "remote_confirmed": true +} +``` + +Keep calling with the returned `sync_token` and `next_cursor` until `status` is `complete` and `next_cursor` is `null`. + +`skipped_unassigned` counts provider monitors whose address does not match any child site on this Dashboard. Those monitors are left alone. + + +Stale mapping removal happens on the terminal page only. When the last page reports `"status": "complete"`, any Dashboard mapping for that provider that was not seen during the run is deleted and counted in `deleted`. Abandoning a run part way through leaves stale mappings in place rather than deleting the wrong ones. + + +Run state lives in a transient that expires after 15 minutes. A token that has expired, or a `cursor` that does not match where the run left off, returns `mainwp_aum_sync_expired` (409). Starting a second run for the same provider while one is still open returns `mainwp_aum_operation_locked` (409). + +Site24x7 and NodePing return their whole inventory on the first call, so a `cursor` above `0` for those two providers is rejected as invalid input. + +--- + +## Error Reference + +These codes come from the extension in addition to the framework errors listed in the [Abilities API Overview](/api-reference/abilities-api/overview). + +| Code | HTTP | Description | +|------|------|-------------| +| `mainwp_aum_invalid_input` | 400 | Input failed the extension's validation | +| `mainwp_aum_access_denied` | 403 | No extension access, or no access to this site | +| `mainwp_aum_site_not_found` | 404 | Site ID not found on this Dashboard | +| `mainwp_aum_monitor_not_found` | 404 | No mapping for this monitor, site, and provider | +| `mainwp_aum_monitor_exists` | 409 | A monitor already exists for this site and provider | +| `mainwp_aum_operation_locked` | 409 | Another run of this operation is already in progress | +| `mainwp_aum_sync_expired` | 409 | Synchronization token expired or does not match the run | +| `mainwp_aum_remote_outcome_unknown` | 504 | The provider did not confirm the outcome | +| `mainwp_aum_database_failure` | 500 | A Dashboard write failed | +| `mainwp_aum_invalid_stored_monitor` | 500 | Cached monitor data failed validation | +| `mainwp_aum_invalid_stored_event` | 500 | Cached event data failed validation | + +A `mainwp_aum_remote_outcome_unknown` response means the write may or may not have landed at the provider. Run `mainwp/sync-uptime-monitors-v1` to find out before retrying. + +--- + +## Related Resources + +- [Abilities API Overview](/api-reference/abilities-api/overview) - API basics and authentication +- [Advanced Uptime Monitor](/add-ons/monitoring/advanced-uptime-monitor-extension) - Extension setup and provider credentials +- [Sites Abilities](/api-reference/abilities-api/sites) - Site management abilities +- [Team Control](/add-ons/agency/team-control-extension) - Role-based access to sites and monitors diff --git a/docs.json b/docs.json index eef3d20..a2a33e9 100644 --- a/docs.json +++ b/docs.json @@ -337,7 +337,8 @@ "api-reference/abilities-api/updates", "api-reference/abilities-api/clients", "api-reference/abilities-api/tags", - "api-reference/abilities-api/batch-operations" + "api-reference/abilities-api/batch-operations", + "api-reference/abilities-api/uptime-monitors" ] }, "api-reference/mainwp-control" From 8f0e7efe217ad73dbc85254d35ccb15a5ca94c91 Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 17 Aug 2026 14:11:41 -0400 Subject: [PATCH 02/30] Document Article Uploader publishing recovery --- add-ons/posts-pages/article-uploader-extension.mdx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/add-ons/posts-pages/article-uploader-extension.mdx b/add-ons/posts-pages/article-uploader-extension.mdx index 36b13d0..daeefd2 100644 --- a/add-ons/posts-pages/article-uploader-extension.mdx +++ b/add-ons/posts-pages/article-uploader-extension.mdx @@ -25,7 +25,7 @@ addonType: extension data-pricing-tier="pro" data-bundle="MainWP Pro" data-addon-type="extension" - data-version="5.0.5" + data-version="5.1.0" data-developer="MainWP" data-changelog-url="https://mainwp.com/changelog/mainwp-article-uploader-extension/" data-owned-by="Jestart LLC" @@ -93,6 +93,13 @@ After a successful upload, ![Uploaded articles list with Publish, Edit, and Dele +### Publishing and Recovery + +When WordPress Abilities are available, you can list staged articles, publish them, check their delivery status, and delete them. + +If delivery to one or more child sites is incomplete, the staged article remains available. Publish it again to retry only the sites that did not receive it. + +Article Uploader handles invalid selections, interrupted requests, and unverified delivery results safely during publishing and Post Dripper setup. ### Edit Articles From d1e353c06a42622462636a9de93ccdfe57de40ff Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 17 Aug 2026 14:17:59 -0400 Subject: [PATCH 03/30] Document Atarim abilities --- add-ons/development/mainwp-and-atarim-integration.mdx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/add-ons/development/mainwp-and-atarim-integration.mdx b/add-ons/development/mainwp-and-atarim-integration.mdx index b447dc1..5e4a0c2 100644 --- a/add-ons/development/mainwp-and-atarim-integration.mdx +++ b/add-ons/development/mainwp-and-atarim-integration.mdx @@ -27,7 +27,7 @@ thirdPartyPlugin: Atarim data-pricing-tier="pro" data-bundle="MainWP Pro" data-addon-type="integration" - data-version="5.0.1" + data-version="5.2.0" data-developer="MainWP" data-changelog-url="https://mainwp.com/changelog/mainwp-atarim-extension/" data-integrates-with="Atarim" @@ -70,6 +70,8 @@ After connecting with Atarim, MainWP will gain the following features: - **Pro Reports data note**: Pro Reports Extension version 4.0.11 or newer is required for Atarim data. - Atarim Data can be included in the Report from the **Report Data** section ![Atarim pro reports settings](/images/add-ons/3e3c796fdd7f.png) - Atarim data can also be included by using two tokens: `[atarim.all.tasks]` displays all tasks for a site within the selected date range, and `[atarim.billable.tasks]` displays all billable tasks for a site within the selected date range. +- **MainWP Abilities (version 5.2.0)** + - MainWP abilities can read Atarim site, task, and time-entry data and refresh task data. ## Connect MainWP to Atarim Dashboard From 2a6c63f18297f13d433388c21834e31e228a180b Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 17 Aug 2026 14:22:04 -0400 Subject: [PATCH 04/30] Update BackWPup documentation for 5.2.0 --- add-ons/backups/backwpup-extension.mdx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/add-ons/backups/backwpup-extension.mdx b/add-ons/backups/backwpup-extension.mdx index 7d9bdf1..ea7b181 100644 --- a/add-ons/backups/backwpup-extension.mdx +++ b/add-ons/backups/backwpup-extension.mdx @@ -17,7 +17,7 @@ thirdPartyPlugin: BackWPup data-pricing-tier="free" data-bundle="Essentials" data-addon-type="integration" - data-version="5.1.1" + data-version="5.2.0" data-developer="MainWP" data-changelog-url="https://mainwp.com/changelog/mainwp-backwpup-extension/" data-integrates-with="BackWPup" @@ -42,6 +42,10 @@ thirdPartyPlugin: BackWPup With the MainWP BackWPup Add-on, you can control the [BackWPup Plugin](https://wordpress.org/plugins/backwpup/) settings for all your child sites directly from your MainWP Dashboard. This includes giving you the ability to create your child site backups and even set Backup schedules directly from your MainWP Dashboard. +## BackWPup Abilities + +MainWP Abilities can manage BackWPup site status, jobs, backups, logs, diagnostics, and plugin visibility. + ## Installing the BackWPup add-on The MainWP BackWPup add-on needs to be installed **only on your MainWP Dashboard** site. You can [install it as any other MainWP add-on](https://mainwp.com/kb/manage-extensions/#install-add-ons). @@ -144,6 +148,8 @@ The BackWPup Add-on allows you to manage the BackWPup plugin backups directly fr After you click **Save Changes**, the add-on syncs this global job to child sites that do not use **Override General Settings**. +If a global template becomes shared with another site, you cannot change its schedule for one site only. + ### Create a Backup Job on a Single Site @@ -292,6 +298,8 @@ In the top right of the page, select the desired child site from the dropdown, a +Backup downloads use secure, temporary access links. If a protected FOLDER backup is unavailable, the same one-use access remains available for another attempt. + ### Delete Backup Files From 36dac9a7837d0a2950cf0febb146734609f46781 Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 17 Aug 2026 14:25:55 -0400 Subject: [PATCH 05/30] Document White Label abilities --- add-ons/agency/white-label-extension.mdx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/add-ons/agency/white-label-extension.mdx b/add-ons/agency/white-label-extension.mdx index 73e7732..1ac402c 100644 --- a/add-ons/agency/white-label-extension.mdx +++ b/add-ons/agency/white-label-extension.mdx @@ -26,7 +26,7 @@ addonType: extension data-pricing-tier="pro" data-bundle="MainWP Pro" data-addon-type="extension" - data-version="5.0.3" + data-version="5.1.0" data-developer="MainWP" data-changelog-url="https://mainwp.com/changelog/mainwp-white-label-extension/" data-owned-by="Jestart LLC" @@ -66,6 +66,12 @@ White Label no longer includes child-site plugin and update hiding controls (for | WordPress Options | Customize login images, favicons, dashboard widgets, footer text, and admin CSS | | Support Form | Add a branded contact form to child site admin areas | +## White Label Abilities + +Version 5.1.0 adds White Label abilities for authorized MainWP users. You can view global and site-specific configuration summaries, enable or disable an existing per-site override, and apply saved configuration to one child site. + +If White Label settings cannot be saved, the extension shows an error instead of confirming the update. + ## White Label the MainWP Child Plugin Rebrand how the MainWP Child plugin appears in the WordPress plugins list. The same **White Label** tab and **MainWP Child White Label Settings** section also includes the option to visually hide the plugin, so you can configure the branding fields, the hide option, or both at the same time. From 2e3d12304f5f7a1830ef392f80be2de7cf26dff2 Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 17 Aug 2026 14:29:52 -0400 Subject: [PATCH 06/30] Document Cache Control 5.3.0 updates --- add-ons/performance/cache-control-extension.mdx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/add-ons/performance/cache-control-extension.mdx b/add-ons/performance/cache-control-extension.mdx index ed98ac8..231067c 100644 --- a/add-ons/performance/cache-control-extension.mdx +++ b/add-ons/performance/cache-control-extension.mdx @@ -25,7 +25,7 @@ addonType: "integration" data-pricing-tier="pro" data-bundle="MainWP Pro" data-addon-type="integration" - data-version="5.1" + data-version="5.3.0" data-developer="MainWP" data-changelog-url="https://mainwp.com/changelog/mainwp-cache-control-extension/" data-integrates-with="Cloudflare and supported cache plugins" @@ -98,6 +98,8 @@ Use the global settings when most of your MainWP Child sites should use the same When **Purge Cloudflare cache** is enabled, Cache Control verifies the Cloudflare credentials after you click **Save Settings**. If Cloudflare returns an error, the settings are saved, but MainWP Dashboard shows a warning with the Cloudflare API error so you can correct the credentials before syncing. + +Cloudflare credentials saved by earlier versions migrate safely to encrypted storage. ## Configure a Single Site @@ -141,6 +143,8 @@ Go to **MainWP > Sites > Manage Sites**, select the sites, choose **Purge Cache If a selected site does not have a supported cache plugin detected and does not have Cloudflare purging enabled, MainWP Dashboard shows a warning for that site instead of reporting a successful purge. +Bulk purges validate every selected site and report the result for each site. + ### From Widgets Cache Control widgets can appear on the Dashboard Operations page and individual site dashboard pages. Click **Clear Cache** in the widget to purge cache for the relevant site or site set. If you do not see the widget, enable it from the page settings for that screen. @@ -151,6 +155,8 @@ Cache Control widgets can appear on the Dashboard Operations page and individual The **MainWP > Sites > Manage Sites** table can show Cache Control columns such as **Last Purged Cache** and **Cache Solution**. These columns help you confirm when cache was last purged and which supported cache plugin MainWP Child detected on each site. +The MainWP Abilities API also exposes cache status and purge information for connected sites. + ## View Logs Go to **MainWP > Add-ons > Cache Control > Logs** to review the Cache Control log table. From 69a0edf18bf45797b63146d57381f03f381f3e20 Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 17 Aug 2026 14:34:31 -0400 Subject: [PATCH 07/30] Document Dashboard Lock abilities --- add-ons/security/dashboard-lock-extension.mdx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/add-ons/security/dashboard-lock-extension.mdx b/add-ons/security/dashboard-lock-extension.mdx index 95d5d6c..03c592d 100644 --- a/add-ons/security/dashboard-lock-extension.mdx +++ b/add-ons/security/dashboard-lock-extension.mdx @@ -25,7 +25,7 @@ addonType: extension data-pricing-tier="free" data-bundle="Essentials" data-addon-type="extension" - data-version="5.1" + data-version="5.2.0" data-developer="MainWP" data-changelog-url="https://mainwp.com/changelog/mainwp-dashboard-lock-extension/" data-owned-by="Jestart LLC" @@ -46,6 +46,10 @@ addonType: extension The [MainWP Dashboard Lock Extension](https://mainwp.com/add-on/dashboard-lock/) allows you to limit access to your Admin area and even redirect Non-WP-Admin pages to a different site making your MainWP Dashboard virtually invisible. All of these changes can be made without you having to ever edit the .htaccess file yourself. +## Dashboard Abilities + +Dashboard Lock 5.2.0 includes abilities that let you view the stored Dashboard Lock configuration and the application state of its extension-owned files. You can manage frontend redirects, IP restrictions, and HTTP Basic Authentication, check whether the Dashboard is ready to apply changes, and remove access locks for recovery. + ## Frontend Redirect Rules Make your dashboard front page inaccessible to everyone but you. Easily set a redirect URL, and all hits on Non-WP-Admin pages will be redirected to it. This will make your MainWP Dashboard site virtually invisible. Redirection is the process of forwarding one URL to a different URL. There are three main kinds of redirects: 301, 302, and meta refresh. It is a way to send both users and search engines to a different URL from the one they originally requested. From 98f9f9a21a3e627e3eb339a553ae03566ae1991a Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 17 Aug 2026 14:39:21 -0400 Subject: [PATCH 08/30] Document Clone policy abilities --- add-ons/development/clone-extension.mdx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/add-ons/development/clone-extension.mdx b/add-ons/development/clone-extension.mdx index 469ac7f..6cca5e7 100644 --- a/add-ons/development/clone-extension.mdx +++ b/add-ons/development/clone-extension.mdx @@ -18,7 +18,7 @@ addonType: extension data-pricing-tier="pro" data-bundle="MainWP Pro" data-addon-type="extension" - data-version="5.0.1" + data-version="5.1.0" data-developer="MainWP" data-changelog-url="https://mainwp.com/changelog/mainwp-clone-extension/" data-owned-by="Jestart LLC" @@ -45,6 +45,12 @@ The [MainWP Clone Extension](https://mainwp.com/add-on/clone/) provides the abil The Clone extension requires a preinstalled WordPress site connected to your MainWP Dashboard **(Destination Site)**. Once you install a fresh WordPress website and connect it to your MainWP Dashboard, you will be able to use the clone feature and clone your template site **(Source Site)**. +## Manage Clone Policy with WordPress Abilities + +WordPress Abilities can view and manage the Clone policy saved in your MainWP Dashboard. You can enable or disable the Clone feature and allow or disallow individual destination sites. + +The settings are saved without starting a clone or syncing a child site. If another change conflicts with your save, MainWP reports that the setting could not be saved. + The Extension allows you to clone websites in two ways: 1. Quick Clone From b792eef0eede8dfd084224b4f476e7358c175f9e Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 17 Aug 2026 14:44:15 -0400 Subject: [PATCH 09/30] Document Code Snippets abilities --- add-ons/development/code-snippets-extension.mdx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/add-ons/development/code-snippets-extension.mdx b/add-ons/development/code-snippets-extension.mdx index 12fe759..682537c 100644 --- a/add-ons/development/code-snippets-extension.mdx +++ b/add-ons/development/code-snippets-extension.mdx @@ -16,7 +16,7 @@ addonType: extension data-pricing-tier="pro" data-bundle="MainWP Pro" data-addon-type="extension" - data-version="5.1" + data-version="5.2" data-developer="MainWP" data-changelog-url="https://mainwp.com/changelog/mainwp-code-snippets-extension/" data-owned-by="Jestart LLC" @@ -260,6 +260,12 @@ When you click **Run Snippet**, the Console opens and shows the current process The Console also shows progress counts, site-level status icons, returned output for **Return Info** snippets, and a **Stop Process** button for stopping queued or in-progress processing. +## WordPress Abilities + +Version 5.2 lets authorized integrations use WordPress Abilities to manage snippets, validate PHP without executing it, run snippets, apply persistent snippets, remove persistent snippets, and delete Dashboard records. + +Integrations can access only snippets and child sites that the current user is authorized to access. Execution results display as plain text. + ## Useful Code Snippets MainWP is not responsible for the code that you run on your sites. Use this tool with extreme care and at your own risk. It is recommended that you run any code on a test site before releasing it on live sites. In case you damage your site by using a bad code snippet, read [Remove a Code Snippet From a Broken Site](#remove-a-code-snippet-from-a-broken-site) to see how to fix it. From f121572ed5fcf387c19ba54e09522d4e6bd97931 Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 17 Aug 2026 14:48:08 -0400 Subject: [PATCH 10/30] Document Comments Abilities --- add-ons/administrative/comments-extension.mdx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/add-ons/administrative/comments-extension.mdx b/add-ons/administrative/comments-extension.mdx index 564921d..a7647ef 100644 --- a/add-ons/administrative/comments-extension.mdx +++ b/add-ons/administrative/comments-extension.mdx @@ -25,7 +25,7 @@ addonType: extension data-pricing-tier="pro" data-bundle="MainWP Pro" data-addon-type="extension" - data-version="5.0" + data-version="6.1.0" data-developer="MainWP" data-changelog-url="https://mainwp.com/changelog/mainwp-comments-extension/" data-owned-by="Jestart LLC" @@ -235,6 +235,12 @@ curl -X PUT \ See [Extensions Endpoints](/api-reference/rest-api/extensions#comments) for the full parameter reference and additional examples. +## Comments Abilities + +Version 6.1.0 adds MainWP Abilities for working with comments through supported automation tools. You can list comments, retrieve one comment, view recently synced comments, and moderate comments on authorized child sites. + +For permanently deleting trashed comments, use the preview first. A confirmed request then deletes only the comments shown as eligible by that preview. + --- ## Related Resources From 5724a10e040cca1f6291435396eda1e69005fdb4 Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 17 Aug 2026 14:52:58 -0400 Subject: [PATCH 11/30] Document Cost Tracker Assistant 5.1.0 changes --- add-ons/client/cost-tracker-assistant-extension.mdx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/add-ons/client/cost-tracker-assistant-extension.mdx b/add-ons/client/cost-tracker-assistant-extension.mdx index ed9b957..9b071c4 100644 --- a/add-ons/client/cost-tracker-assistant-extension.mdx +++ b/add-ons/client/cost-tracker-assistant-extension.mdx @@ -24,7 +24,7 @@ addonType: extension data-pricing-tier="pro" data-bundle="MainWP Pro" data-addon-type="extension" - data-version="5.0.8" + data-version="5.1.0" data-developer="MainWP" data-changelog-url="https://mainwp.com/changelog/mainwp-cost-tracker-assistant-extension/" data-owned-by="Jestart LLC" @@ -79,6 +79,13 @@ When installing plugins or themes via ZIP upload, Cost Tracker Assistant streaml This eliminates the need to navigate to Cost Tracker separately after each purchase. +## What's New in 5.1.0 + +- Automation can manage renewal notification settings and Cost Tracker site memberships. +- Alert results show when the mailer accepted an alert but its reminder state could not be recorded. +- Invalid or unauthorized Cost Tracker edits and archive uploads are rejected before changes are made. +- Duplicate plugin and theme Cost Tracker entries are prevented. + ## Requirements - MainWP Dashboard with the Cost Tracker feature enabled From 59cca5e5d2b7cc689ccb7237b5d9dd0329d9ec04 Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 17 Aug 2026 14:56:47 -0400 Subject: [PATCH 12/30] Document Custom Dashboard 5.2.0 changes --- .../development/mainwp-custom-dashboard-extension.mdx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/add-ons/development/mainwp-custom-dashboard-extension.mdx b/add-ons/development/mainwp-custom-dashboard-extension.mdx index b0a06c1..463693d 100644 --- a/add-ons/development/mainwp-custom-dashboard-extension.mdx +++ b/add-ons/development/mainwp-custom-dashboard-extension.mdx @@ -13,6 +13,7 @@ addonType: extension - Where custom code is stored and executed - Using the built-in code editor (CodeMirror 6) with autocompletion, code folding, and the One Dark theme - Validating PHP snippets before saving with the built-in syntax check +- Avoiding overwritten drafts when another editor changes a snippet - Handling PHP errors safely - Accessing example code snippets @@ -26,7 +27,7 @@ addonType: extension data-pricing-tier="free" data-bundle="Essentials" data-addon-type="extension" - data-version="5.1" + data-version="5.2.0" data-developer="MainWP" data-changelog-url="https://mainwp.com/changelog/mainwp-custom-dashboard-extension/" data-owned-by="Jestart LLC" @@ -86,6 +87,12 @@ The editor is powered by CodeMirror 6 and ships with productivity features enabl Use the language tab at the top of the page to switch between the PHP, CSS, and JS editors. Each language is saved independently. +## Saving Snippets + +When you save a snippet, the extension checks whether it changed after you opened the editor. If another editor saved a change first, your draft remains in the editor and the extension asks you to reload before saving again. Copy your draft if needed, reload the page, then review and save it. + +MainWP abilities can view snippet status, validate PHP, and preview or apply changes to PHP, CSS, and JavaScript snippets. Applying a change requires explicit confirmation. + ## Writing PHP Snippets PHP snippets are saved as **tagless** PHP — write your code without `` tags. The extension validates this on save and rejects snippets that contain PHP tags. @@ -108,7 +115,7 @@ add_action( 'admin_footer', function () { ### Pre-save syntax validation -Before a PHP snippet is saved, the extension runs a syntax check on the code. If the snippet contains a parse error, the save is rejected and the editor displays the error message so you can fix it before it ever runs. +Before a PHP snippet is saved, the extension runs a syntax check on the code. If the snippet is malformed, the save is rejected without running it. This catches the most common cause of a broken dashboard — a typo in a snippet — without you having to reload the page to find out. From b7bf7d43460eb5e478be9b3254b096e3f8d4fa4b Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 17 Aug 2026 15:00:27 -0400 Subject: [PATCH 13/30] Document Database Updater 5.2.0 release --- add-ons/updates/mainwp-database-updater-extension.mdx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/add-ons/updates/mainwp-database-updater-extension.mdx b/add-ons/updates/mainwp-database-updater-extension.mdx index 75e9dc4..bcf2ee3 100644 --- a/add-ons/updates/mainwp-database-updater-extension.mdx +++ b/add-ons/updates/mainwp-database-updater-extension.mdx @@ -25,7 +25,7 @@ addonType: extension data-pricing-tier="pro" data-bundle="MainWP Pro" data-addon-type="extension" - data-version="5.1.1" + data-version="5.2.0" data-developer="MainWP" data-changelog-url="https://mainwp.com/changelog/mainwp-database-updater-extension/" data-owned-by="Jestart LLC" @@ -46,6 +46,12 @@ addonType: extension The Database Updater Extension detects available database updates for WooCommerce, Elementor, and Elementor Pro. This means that you no longer need to access the WordPress admin area of a child site to start these database updates. +## Use with WordPress Abilities + +For sites you are authorized to manage, WordPress Abilities can view available database update actions, preview selected actions, and confirm a preview to send the updates to the child site. + +Each request checks the site's current state before it sends work. Pending database updates remain visible until a later sync confirms that they are complete. + ## Install the Database Updater Extension From 5b38fd2cc373c72083ff6ab4bf785d5ec11b4378 Mon Sep 17 00:00:00 2001 From: Dennis Dornon Date: Mon, 17 Aug 2026 15:04:54 -0400 Subject: [PATCH 14/30] Document Domain Monitor 5.3.0 updates --- add-ons/monitoring/mainwp-domain-monitor-extension.mdx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/add-ons/monitoring/mainwp-domain-monitor-extension.mdx b/add-ons/monitoring/mainwp-domain-monitor-extension.mdx index 386f49b..e009d5d 100644 --- a/add-ons/monitoring/mainwp-domain-monitor-extension.mdx +++ b/add-ons/monitoring/mainwp-domain-monitor-extension.mdx @@ -14,7 +14,7 @@ addonType: "extension" --- -
+