# WordPress Plugin Release & Compatibility Risk Monitor (`kayorama/wordpress-plugin-release-risk-monitor`) Actor

Monitor WordPress.org plugin releases, requirements, tested-up-to lag, staleness, availability, and deterministic upgrade-risk signals.

- **URL**: https://apify.com/kayorama/wordpress-plugin-release-risk-monitor.md
- **Developed by:** [Kayorama](https://apify.com/kayorama) (community)
- **Categories:** Developer tools, Automation, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 wordpress plugin lookup attempteds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## WordPress Plugin Release & Compatibility Risk Monitor

Monitor public WordPress.org plugin metadata for releases, requirement changes, tested-up-to lag, stale maintenance signals, and directory availability.

> **Unofficial community tool.** This Actor is not affiliated with, endorsed by, or sponsored by WordPress.org, the WordPress Foundation, Automattic, or any plugin vendor.

### Buyer value

Agencies, plugin vendors, managed hosts, and maintenance teams can schedule this Actor to turn a plugin watchlist into structured snapshots and deterministic changes. It uses the official public WordPress.org Plugin Information API—no site credentials, admin access, or arbitrary crawling.

### Quick start

1. Click **Try for free** and paste the input below.
2. Run it once to create a baseline for the watchlist.
3. Schedule the same input daily or weekly. Later runs emit typed changes against the last fully successful baseline.
4. Download `REPORT.html` from the run's key-value store for a prioritized, print-to-PDF pre-flight report, or route structured dataset rows into the maintenance queue.

```json
{
  "pluginSlugs": ["woocommerce", "wordfence"],
  "currentWordPressVersion": "6.8",
  "staleAfterDays": 365,
  "useStoredState": true
}
````

Start with two plugins to validate the output. A 25-plugin watchlist costs $0.05 in Actor charges at the current price, plus Apify platform usage.

### Need a client-ready review?

If you need a human-reviewed handoff rather than raw monitoring output, request the **WordPress Plugin Upgrade Risk Audit**: **€149 prepaid**, covering up to 25 public WordPress.org plugins with delivery within two business days after valid intake and confirmed payment.

[Request the €149 audit](mailto:info@kayorama.nl?subject=WordPress%20Plugin%20Upgrade%20Risk%20Audit)

Send only the public plugin slugs, target WordPress version, and non-sensitive context. Do not send site credentials, private plugin files, customer data, or production access. The audit uses public directory metadata, prioritizes upgrade-review signals, and does not replace staging, backups, vulnerability scanning, or vendor guidance.

### Output

One `plugin_snapshot` per successful lookup, a `plugin_fetch_error` for unavailable/API-failed slugs, and a final `summary`. Snapshots include versions, WordPress/PHP requirements, tested-up-to, last update, active installs, typed changes, deterministic risk signals, and source URLs.

Every run also writes `REPORT.html` to the default key-value store. It is a self-contained, print-friendly report sorted high-risk first, with no external scripts, styles, or tracking requests. Use it as a staging-review handoff; it retains the same public-metadata limitations as the dataset.

### Comparison

By default the Actor stores the last fully successful snapshot set in a named Apify key-value store. Independent slug sets receive separate stable record keys. You can instead supply `previousSnapshots`; explicit snapshots—including an explicit empty array—take precedence.

### Risk semantics

- `tested_up_to_lag`: target WordPress version exceeds the directory's tested-up-to value.
- `stale_release`: directory update is older than your threshold.
- `major_version_change`: the numeric major version increased.
- `requiresWordPress_increased` / `requiresPhp_increased`: minimum runtime requirement increased.

These are upgrade-review signals, not vulnerability findings, compatibility guarantees, or legal/security advice. WordPress.org metadata can be delayed, incomplete, or changed by maintainers. Test upgrades on staging and consult the plugin vendor.

### Billing

The current price is **$0.002 per attempted plugin lookup** ($2.00 per 1,000). For example, a 25-plugin watchlist costs $0.05 in Actor charges per run, plus Apify platform usage.

The pay-per-event event is `plugin-lookup-attempted`, charged immediately before each official API lookup. A lookup that later fails can therefore be billable, but emits a visible `plugin_fetch_error` record. Processing stops cleanly if the spending cap rejects the next event. Dataset items are not charged again.

### Privacy

The Actor accepts WordPress.org directory slugs plus optional comparison/state settings, calls only the fixed official `api.wordpress.org` endpoint, and needs no credentials or site/customer data. See [PRIVACY.md](PRIVACY.md).

# Actor input Schema

## `pluginSlugs` (type: `array`):

Directory slugs such as woocommerce or wordfence.

## `currentWordPressVersion` (type: `string`):

Optional target used to flag tested-up-to lag, such as 6.8.

## `staleAfterDays` (type: `integer`):

Flag plugins whose latest recorded release is older than this number of days.

## `previousSnapshots` (type: `array`):

Optional prior plugin\_snapshot records. Explicit input, including an empty list, takes precedence over stored state.

## `useStoredState` (type: `boolean`):

Compare with and safely update prior snapshots in a named key-value store after a complete run.

## `stateStoreName` (type: `string`):

Named Apify key-value store used to preserve plugin baselines across separate runs.

## `stateRecordKey` (type: `string`):

Optional explicit record key for isolating one monitoring set within the named state store.

## Actor input object example

```json
{
  "pluginSlugs": [
    "woocommerce",
    "wordfence"
  ],
  "staleAfterDays": 365,
  "useStoredState": true,
  "stateStoreName": "wp-plugin-release-risk-monitor-state"
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("kayorama/wordpress-plugin-release-risk-monitor").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("kayorama/wordpress-plugin-release-risk-monitor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call kayorama/wordpress-plugin-release-risk-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=kayorama/wordpress-plugin-release-risk-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "WordPress Plugin Release & Compatibility Risk Monitor",
        "description": "Monitor WordPress.org plugin releases, requirements, tested-up-to lag, staleness, availability, and deterministic upgrade-risk signals.",
        "version": "0.1",
        "x-build-id": "pwmdoKcFEwLxRGj1s"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/kayorama~wordpress-plugin-release-risk-monitor/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-kayorama-wordpress-plugin-release-risk-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/kayorama~wordpress-plugin-release-risk-monitor/runs": {
            "post": {
                "operationId": "runs-sync-kayorama-wordpress-plugin-release-risk-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/kayorama~wordpress-plugin-release-risk-monitor/run-sync": {
            "post": {
                "operationId": "run-sync-kayorama-wordpress-plugin-release-risk-monitor",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "pluginSlugs"
                ],
                "properties": {
                    "pluginSlugs": {
                        "title": "WordPress.org plugin slugs",
                        "minItems": 1,
                        "maxItems": 100,
                        "type": "array",
                        "description": "Directory slugs such as woocommerce or wordfence.",
                        "items": {
                            "type": "string",
                            "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
                        },
                        "default": [
                            "woocommerce",
                            "wordfence"
                        ]
                    },
                    "currentWordPressVersion": {
                        "title": "Target WordPress version",
                        "pattern": "^\\d+(?:\\.\\d+){0,2}$",
                        "type": "string",
                        "description": "Optional target used to flag tested-up-to lag, such as 6.8."
                    },
                    "staleAfterDays": {
                        "title": "Stale release threshold",
                        "minimum": 30,
                        "maximum": 3650,
                        "type": "integer",
                        "description": "Flag plugins whose latest recorded release is older than this number of days.",
                        "default": 365
                    },
                    "previousSnapshots": {
                        "title": "Previous snapshots",
                        "maxItems": 100,
                        "type": "array",
                        "description": "Optional prior plugin_snapshot records. Explicit input, including an empty list, takes precedence over stored state.",
                        "items": {
                            "type": "object",
                            "properties": {
                                "recordType": {
                                    "title": "Record type",
                                    "type": "string",
                                    "description": "Must be plugin_snapshot.",
                                    "enum": [
                                        "plugin_snapshot"
                                    ]
                                },
                                "slug": {
                                    "title": "Plugin slug",
                                    "type": "string",
                                    "description": "WordPress.org directory slug for this prior snapshot.",
                                    "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
                                },
                                "version": {
                                    "title": "Previous version",
                                    "type": "string",
                                    "nullable": true,
                                    "description": "Previously observed plugin version, or null."
                                },
                                "requiresWordPress": {
                                    "title": "Previous WordPress requirement",
                                    "type": "string",
                                    "nullable": true,
                                    "description": "Previously observed minimum WordPress version, or null."
                                },
                                "testedUpTo": {
                                    "title": "Previous tested-through version",
                                    "type": "string",
                                    "nullable": true,
                                    "description": "Previously observed tested-up-to version, or null."
                                },
                                "requiresPhp": {
                                    "title": "Previous PHP requirement",
                                    "type": "string",
                                    "nullable": true,
                                    "description": "Previously observed minimum PHP version, or null."
                                },
                                "lastUpdated": {
                                    "title": "Previous update time",
                                    "type": "string",
                                    "nullable": true,
                                    "description": "Previously observed directory update timestamp, or null."
                                }
                            },
                            "required": [
                                "recordType",
                                "slug"
                            ],
                            "additionalProperties": true
                        }
                    },
                    "useStoredState": {
                        "title": "Compare with stored state",
                        "type": "boolean",
                        "description": "Compare with and safely update prior snapshots in a named key-value store after a complete run.",
                        "default": true
                    },
                    "stateStoreName": {
                        "title": "State store name",
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,62}$",
                        "type": "string",
                        "description": "Named Apify key-value store used to preserve plugin baselines across separate runs.",
                        "default": "wp-plugin-release-risk-monitor-state"
                    },
                    "stateRecordKey": {
                        "title": "Optional state record key",
                        "pattern": "^[A-Za-z0-9][A-Za-z0-9_-]{0,63}$",
                        "type": "string",
                        "description": "Optional explicit record key for isolating one monitoring set within the named state store."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
