Title: UsageRay
Author: Dagemawi Alemayehu
Published: <strong>September 2, 2026</strong>
Last modified: September 4, 2026

---

Search plugins

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

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

# UsageRay

 By [Dagemawi Alemayehu](https://profiles.wordpress.org/dagemawi409/)

[Download](https://downloads.wordpress.org/plugin/usageray.0.3.0.zip)

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

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

## Description

**Know what depends on a plugin before you turn it off.**

UsageRay is a read-only plugin usage and dependency auditor for WordPress administrators,
developers, agencies, and maintenance teams. It gathers evidence from content and
background systems, explains why each result was attributed to a plugin, and links
to matching content when WordPress provides an edit screen.

#### Audit your entire plugin stack

Run one site-wide audit to review every installed plugin from a single dashboard.
UsageRay scans shared content and storage in bounded batches instead of repeating
the same work for each plugin. You can monitor progress, cancel safely, resume after
a page reload, search the results, filter by evidence status, expand the supporting
details, and export the completed audit as CSV or JSON.

#### Review before deactivation

UsageRay adds a **Find usage** action to the Installed Plugins screen. For active
plugins, Deactivation Preflight places an evidence and risk review before the normal
WordPress deactivation action. It also adds **Review deactivation with UsageRay**
to the bulk-action menu so several selected plugins can be reviewed together, including
declared plugin dependency warnings.

Opening a scan or preflight never deactivates anything. Deactivation requires a 
separate explicit confirmation and is then handled by WordPress’s normal protected
workflow.

#### Evidence instead of false certainty

UsageRay separates visible dependency evidence, stored footprint, and uncertainty.
An old option, metadata key, empty custom table, or inactive widget is useful cleanup
evidence, but it is not treated as proof that the plugin is currently active on 
the site.

An inactive plugin becomes a cleanup candidate only when UsageRay can attribute 
supported components and finds neither visible usage nor stored footprint. A candidate
still requires manual confirmation. **No visible evidence never means safe to delete.**
Background, security, caching, backup, SEO, and integration plugins may leave no
supported content evidence.

#### What UsageRay checks

 * Individual plugin deactivation links, with a cautious High, Medium, or Unknown
   preflight assessment.
 * Selected-plugin bulk preflights, with separate risks, combined evidence, and 
   declared Requires Plugins relationships.
 * Gutenberg blocks declared or registered by the selected plugin.
 * Shortcodes registered by the selected plugin or declared literally in its source.
 * Active legacy widgets registered by the selected plugin.
 * Attributable legacy widget options, classified as active, inactive, or orphaned
   instances without exposing their settings.
 * Content stored in custom post types declared literally by the selected plugin.
 * Reusable blocks, Site Editor templates and template parts containing detected
   blocks or shortcodes.
 * Classic and block navigation records that reference attributed custom post types.
 * Recurring and one-time WordPress cron events attributed through registered callbacks
   or conservative literal scheduling calls. Event arguments are never displayed
   or exported.
 * Custom database tables attributed through maintained mappings or conservative
   literal creation patterns. UsageRay checks existence and COUNT(*) only; row and
   column values are never read or exported.
 * Conservative references in the active child and parent themes for attributed 
   blocks, shortcodes, custom post types, and plugin-owned function calls. Only 
   relative filenames and line numbers are retained.
 * Plugin-associated post metadata keys and generic option names. Generic option
   values are never read.
 * Known signals for Elementor, WooCommerce, ACF, Contact Form 7, WPForms, Gravity
   Forms, Formidable Forms, Ninja Forms, Yoast SEO, Rank Math, All in One SEO, and
   The Events Calendar.

#### Transparent scan coverage

Every focused scan, site-wide audit, and Deactivation Preflight includes a Scan 
Coverage manifest. It distinguishes checked surfaces from surfaces that were not
applicable, are not yet supported, failed, or were only partially inspected because
of a safety limit. This makes the result’s limitations visible instead of implying
complete detection.

#### Privacy-conscious and read-only

UsageRay does not modify content, delete plugins, or silently deactivate anything.
Generic option values, post metadata values, scheduled-event arguments, custom-table
row values, theme source text, and absolute filesystem paths are not retained in
results or exports.

Use UsageRay when cleaning up an inherited site, replacing a form or page-builder
plugin, preparing a client maintenance report, or investigating whether an installed
extension still supports content or background behavior.

#### See UsageRay in action

Watch the short UsageRay overview:

The video narration is AI-generated.

## Screenshots

[⌊Choose any installed plugin and start a read-only usage scan.⌉⌊Choose any installed
plugin and start a read-only usage scan.⌉[

Choose any installed plugin and start a read-only usage scan.

[⌊Review the evidence summary and open matching content directly from the results.⌉⌊
Review the evidence summary and open matching content directly from the results.⌉[

Review the evidence summary and open matching content directly from the results.

[⌊Start a scan directly from the Find usage link on the Installed Plugins screen.⌉⌊
Start a scan directly from the Find usage link on the Installed Plugins screen.⌉[

Start a scan directly from the Find usage link on the Installed Plugins screen.

[⌊Audit all installed plugins from one dashboard, then filter and expand the evidence.⌉⌊
Audit all installed plugins from one dashboard, then filter and expand the evidence
.⌉[

Audit all installed plugins from one dashboard, then filter and expand the evidence.

[⌊Review evidence and risk before deactivating one active plugin.⌉⌊Review evidence
and risk before deactivating one active plugin.⌉[

Review evidence and risk before deactivating one active plugin.

[⌊Review several selected plugins together, including dependency warnings, before
WordPress deactivates them.⌉⌊Review several selected plugins together, including
dependency warnings, before WordPress deactivates them.⌉[

Review several selected plugins together, including dependency warnings, before 
WordPress deactivates them.

## Installation

 1. Upload the `usageray` directory to `/wp-content/plugins/` or install the ZIP in
    WordPress.
 2. Activate UsageRay.
 3. Open Tools > UsageRay, or click “Find usage” beside an installed plugin.

## FAQ

### Does this plugin tell me that another plugin is safe to delete?

No. It reports evidence and uncertainty. It never claims that absence of visible
usage makes deletion safe.

### Does it change my content?

No. UsageRay is read-only.

### Does UsageRay deactivate plugins automatically?

No. Opening an individual or bulk Deactivation Preflight never changes plugin state.
Only after an administrator explicitly confirms does UsageRay submit the reviewed
action to WordPress’s normal nonce-protected deactivation handler.

### How do I review several plugins before deactivation?

On the Installed Plugins screen, select the active plugins, choose “Review deactivation
with UsageRay” from Bulk actions, and select Apply. UsageRay scans only that selection
and presents a separate risk and evidence panel for every plugin.

### Can I stop or resume an audit?

Yes. You can cancel a site-wide audit or Deactivation Preflight while it is running.
If the page reloads during an unfinished audit, UsageRay resumes it automatically.
Temporary audit data expires after one hour.

### Why did a Deactivation Preflight open immediately?

UsageRay reuses a completed preflight for up to 10 minutes when you select Deactivate
again for the same plugin. The result says when it was completed and provides a “
Run a fresh preflight” link.

### Does UsageRay read private option values?

Generic option inspection reads option names only. For an attributable legacy widget
option, WordPress must decode the option so UsageRay can identify its numeric instance
keys. Widget setting values are immediately discarded and are never displayed, retained
in results, or exported. Post metadata values are not retained or exported. The 
ACF adapter performs a database-side field-reference prefix comparison and returns
only counts and content locations.

For attributable custom tables, UsageRay checks the database catalog and runs COUNT(*)
only. It never selects table rows or column values. Empty tables are reported separately
from table identifiers that are not currently present.

### What is a cleanup candidate?

It is an inactive plugin with attributable supported components, no detected visible
usage, and no detected stored footprint. This narrows manual cleanup work; it is
not a claim that deletion is safe.

### What is included in exports?

CSV and JSON exports contain plugin status, cautious guidance, scan coverage and
limitations, component names, evidence counts, matching content locations, and edit
links. They do not contain post content, metadata values, option values, or filesystem
paths.

Theme-reference evidence contains only an attributed identifier, relative theme 
filename, child/parent role, line number, and an optional Theme File Editor link.
Theme source text is never retained or exported.

Scheduled-event evidence includes the hook name, recurrence, and next-run time. 
Event arguments are never included because they may contain private integration 
data.

### Can it inspect inactive plugins?

It can find literal shortcode and custom post type registrations and block.json 
metadata in many inactive plugins. Runtime-only or dynamically registered components
may require the plugin to be active.

### Why can usage be “unable to determine”?

Some plugins work entirely in the background or register components dynamically.
WordPress does not maintain a universal ownership record for all plugin data.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

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

Contributors

 *   [ Dagemawi Alemayehu ](https://profiles.wordpress.org/dagemawi409/)

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

### Interested in development?

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

## Changelog

#### 0.3.0

 * Added a versioned Scan Coverage manifest across focused scans, site-wide audits,
   Deactivation Preflight, JSON, and CSV exports.
 * Added privacy-safe recurring and one-time WordPress scheduled-event detection
   without retaining or exporting event arguments.
 * Added legacy widget storage inspection with active, inactive, and orphaned instance
   classification.
 * Added conservative custom-database-table attribution using existence and COUNT(*)
   checks only; table row and column values are never read.
 * Added bounded active child and parent theme reference detection for attributed
   blocks, shortcodes, custom post types, and plugin-owned functions.
 * Reports theme evidence using relative filenames and line numbers without retaining
   or exporting source text or absolute paths.
 * Strengthened shortcode and function matching against comments, declarations, 
   method calls, static calls, malformed patterns, and documentation-only strings.
 * Improved long-identifier wrapping and narrow-screen evidence-card layouts.
 * Added upgrade, compatibility, multisite, privacy, false-positive, high-volume,
   accessibility, and real-plugin stabilization checks.

#### 0.2.0

 * Added a site-wide dashboard that audits all installed plugins together.
 * Scans each content batch once against components discovered across every plugin.
 * Added batched progress, cancellation, and automatic resume after page reloads.
 * Added result summaries, search and status filters, and expandable evidence explanations.
 * Added reusable block, Site Editor template, navigation, post-metadata, and option-
   name evidence.
 * Added conservative adapters for Elementor, WooCommerce, ACF, The Events Calendar,
   major form plugins, and major SEO plugins.
 * Added cleanup-candidate guidance that never claims a plugin is safe to remove.
 * Added administrator-only CSV and JSON audit reports with spreadsheet-formula 
   protection.
 * Preserved the focused single-plugin scan and read-only safety model.
 * Added individual Deactivation Preflight with cautious High, Medium, or Unknown
   risk assessments.
 * Added “Review deactivation with UsageRay” for selected plugins in the Installed
   Plugins bulk-action menu.
 * Added separate risk summaries, combined evidence, and declared Requires Plugins
   relationship warnings for bulk reviews.
 * Added focused, resumable preflight scans and 10-minute reuse of recent completed
   results.
 * Kept deactivation behind a separate explicit action handled by WordPress’s native
   nonce-protected workflow.

#### 0.1.2

 * Added a short demonstration video to the plugin page.
 * Added a third screenshot showing Find usage links on the Installed Plugins screen.
 * Added a scalable SVG directory icon while retaining PNG fallbacks.

#### 0.1.1

 * Added a custom icon, banner, and real interface screenshots.
 * Improved the directory description to explain the plugin’s purpose more clearly.

#### 0.1.0

 * Initial read-only MVP.
 * Added block, shortcode, widget, and custom post type evidence scanning.
 * Added Find usage links to the Installed Plugins screen.

## Meta

 *  Version **0.3.0**
 *  Last updated **2 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [blocks](https://wordpress.org/plugins/tags/blocks/)[cleanup](https://wordpress.org/plugins/tags/cleanup/)
   [plugin usage](https://wordpress.org/plugins/tags/plugin-usage/)[shortcodes](https://wordpress.org/plugins/tags/shortcodes/)
   [unused plugins](https://wordpress.org/plugins/tags/unused-plugins/)
 *  [Advanced View](https://wordpress.org/plugins/usageray/advanced/)

## Ratings

No reviews have been submitted yet.

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

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

## Contributors

 *   [ Dagemawi Alemayehu ](https://profiles.wordpress.org/dagemawi409/)

## Support

Got something to say? Need help?

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