Title: Notice Triage
Author: Avo Avetisyan
Published: <strong>November 7, 2026</strong>
Last modified: November 7, 2026

---

Search plugins

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

![](https://ps.w.org/notice-triage/assets/icon-256x256.png?rev=3789319)

# Notice Triage

 By [Avo Avetisyan](https://profiles.wordpress.org/loyaltyoverroyalty/)

[Download](https://downloads.wordpress.org/plugin/notice-triage.0.1.0.zip)

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

 [Support](https://wordpress.org/support/plugin/notice-triage/)

## Description

Every plugin gets to shout at the top of wp-admin, and they all do: licence reminders,
review requests, setup wizards, update nags. The existing answer is to hide them,
and that creates a worse problem: a genuinely critical warning disappears along 
with the sales pitch.

Notice Triage does not hide anything. It ranks. It captures every admin notice, 
works out which plugin or theme emitted it (by reflecting on the hook callback, 
not by guessing from the text), sorts it into a severity bucket and shows one summary
bar: “6 notices — 2 need action, 3 informational, 1 license”. Critical notices stay
inline by default, exactly where they were, unmodified. The log then tells you which
plugin has shown you the same nag 400 times. Setup banners and onboarding bars that
are not standard notice markup are collapsed as well; scripts and hidden templates
pass through untouched. Nothing is deleted, nothing is rewritten; the panel simply
moves the noise out of the way and labels each notice with its source.

#### Buckets

 * **Critical** — error notices. Shown inline, at the top, by default. You can collapse
   them too: the panel then opens by itself and turns red whenever a critical notice
   is present.
 * **Needs action** — warnings and update nags.
 * **Informational** — success and info notices.
 * **Marketing & license** — licence prompts, upgrade pitches, review requests, 
   sales. Collapsed by default whatever colour the plugin painted them. A notice
   the plugin marked as an error is never put here.

Severity comes from the notice’s declared type, then its CSS classes, then a list
of keywords that can only raise a notice (security, failed, database error…). The
keyword and marketing lists are visible and editable in Settings and filterable 
in code.

#### Notice log

Tools  Notice Log lists every distinct notice this admin has seen: the plugin behind
it, its bucket, when it first and last appeared and how often it has interrupted
you (counted at most once every five minutes per notice, so the log costs nothing
on busy sites). The same count shows next to each notice in the panel. From there
you can mute a notice for everyone, snooze it for 7 or 30 days, or pin it inline
or collapsed regardless of its bucket. Each notice in the panel also has a per-user
Snooze link (7 days), and administrators get a Mute link right there. Counters and
dates are normalised before logging, so “3 items need attention” and “4 items need
attention” are one entry.

#### Safe by design

This plugin intercepts other plugins’ output, so the recovery paths come first:

 * `define( 'NOTICE_TRIAGE_DISABLE', true );` in wp-config.php switches capture 
   off entirely.
 * Append `?notice_triage_off=1` to any admin URL to bypass capture for that one
   page load — no FTP needed.
 * Capture never runs during AJAX, REST, cron, the Customizer, iframes, or on the
   update and install screens, and never before the admin screen is known.
 * A per-plugin “always inline” rule and a screen exclusion list exempt anything
   whose own scripts rely on inline notices.
 * A notice callback that throws is caught and logged instead of taking down wp-
   admin.

Captured markup is re-emitted byte-for-byte, including ids, classes, data attributes
and inline scripts, so each plugin’s own dismiss buttons and AJAX handlers keep 
working.

#### Compatibility

Checked on WordPress 7.1 with each plugin’s current release, on a clean site. “Dismiss”
means the plugin’s own dismiss control was clicked inside the collapsed panel and
the notice stayed dismissed after a reload.

 * **Yoast SEO** — captured, attributed, “blocking robots” is Critical (inline),
   first-run configuration notice is Informational. No dismiss control on its notices.
 * **Rank Math SEO** — captured and attributed; “only one SEO plugin” is Critical
   and stays inline, its own dismiss works.
 * **Elementor** — captured and attributed; promotional notices land in Informational,
   its own dismiss control (`e-notice__dismiss`) works inside the panel and persists.
 * **WooCommerce** — no admin_notices output on a fresh store (its notes live in
   the WooCommerce Admin app). The panel renders on WooCommerce screens without 
   conflict.
 * **Jetpack** — its connection banners are injected by JavaScript, not printed 
   as admin notices, so they are neither captured nor affected.
 * **Wordfence** — captured and attributed (“Needs action”); its dismiss button 
   works inside the panel and persists. Its onboarding banner is not a notice and
   passes through untouched.
 * **WPForms** — removes every admin notice on its own screens itself; elsewhere
   nothing to capture on a fresh install.
 * **Contact Form 7** — emits no notices on a fresh install; no conflict.
 * **UpdraftPlus** — welcome notice captured on its settings screen as Informational.

No plugin needed the shipped “always inline” list, which is therefore empty in this
release.

#### Known limitation

A plugin whose JavaScript binds to a position-dependent selector, or binds before
the panel exists in the page, may lose its dismiss button when its notice is collapsed.
Set that plugin to “Always inline” in Settings  Notice Triage  Per-plugin rules.

#### Privacy

Notice Triage stores the plain-text excerpt, source and counts of each notice in
a table on your site. It makes no outbound requests and sends nothing anywhere.

## Screenshots

[⌊One collapsed panel instead of a stack of banners; the critical notice stays inline
above it.⌉⌊One collapsed panel instead of a stack of banners; the critical notice
stays inline above it.⌉[

One collapsed panel instead of a stack of banners; the critical notice stays inline
above it.

[⌊The panel expanded, grouped by bucket, each notice labelled with its source.⌉⌊
The panel expanded, grouped by bucket, each notice labelled with its source.⌉[

The panel expanded, grouped by bucket, each notice labelled with its source.

[⌊Tools → Notice Log: every distinct notice, its source, bucket and how often it
has appeared.⌉⌊Tools → Notice Log: every distinct notice, its source, bucket and
how often it has appeared.⌉[

Tools  Notice Log: every distinct notice, its source, bucket and how often it has
appeared.

[⌊Settings: bucket behaviour, the marketing and keyword lists, per-plugin rules 
and screen exclusions.⌉⌊Settings: bucket behaviour, the marketing and keyword lists,
per-plugin rules and screen exclusions.⌉[

Settings: bucket behaviour, the marketing and keyword lists, per-plugin rules and
screen exclusions.

## Installation

 1. Upload the `notice-triage` folder to `/wp-content/plugins/`, or install it from
    the Plugins screen.
 2. Activate it.
 3. Open any admin screen: non-critical notices are now in a single collapsed panel.
    Tools  Notice Log shows what has been seen; Settings  Notice Triage holds the rules.

## FAQ

### How is this different from the notice-hiding plugins?

Three things. Attribution: every notice is labelled with the plugin or theme whose
callback printed it, resolved from the code, so you know who is shouting. Ranking:
notices are sorted into Critical, Needs action, Informational and Marketing & license,
with a guard rail that never demotes an error notice, so critical warnings cannot
vanish into a “hidden” pile. The log: each distinct notice is counted, so you can
see which plugin has interrupted you hundreds of times and act on that plugin rather
than on one banner.

### Does it hide anything?

Not on its own. Every notice is either inline or inside the panel. The only way 
a notice disappears is a mute or snooze you set yourself, and the panel still counts
them. If you collapse the Critical bucket, the panel forces itself open whenever
a critical notice is present.

### A plugin’s dismiss button stopped working.

Open Settings  Notice Triage  Per-plugin rules and set that plugin to “Always inline”.
Its notices then print exactly where they did before. Please also open a support
thread with the plugin’s name so it can be added to the shipped defaults.

### Can I change what counts as marketing?

Yes. Settings  Notice Triage lists every phrase, one per line. Developers can also
use the `notice_triage_marketing_patterns` and `notice_triage_boost_keywords` filters,
and `notice_triage_severity` to override the final bucket for a notice.

### Does each user get their own settings?

Bucket behaviour and the admin bar badge can be overridden per user on the profile
screen. Snoozes set from the panel are per user; mutes and rules set from the Notice
Log apply to everyone.

### Something broke and I cannot reach wp-admin.

Add `?notice_triage_off=1` to the admin URL to bypass the plugin for one page load,
then switch capture off in Settings or deactivate it. For a permanent switch add`
define( 'NOTICE_TRIAGE_DISABLE', true );` to wp-config.php.

### Does it work on multisite?

Yes. Network admin notices are captured on network screens. The log and settings
are per site.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

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

Contributors

 *   [ Avo Avetisyan ](https://profiles.wordpress.org/loyaltyoverroyalty/)

[Translate “Notice Triage” into your language.](https://translate.wordpress.org/projects/wp-plugins/notice-triage)

### Interested in development?

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

## Changelog

#### 0.1.0

 * First release.

## Meta

 *  Version **0.1.0**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.4 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 8.1 or higher **
 * Tags
 * [admin](https://wordpress.org/plugins/tags/admin/)[Admin notices](https://wordpress.org/plugins/tags/admin-notices/)
   [cleanup](https://wordpress.org/plugins/tags/cleanup/)[dashboard](https://wordpress.org/plugins/tags/dashboard/)
   [Notifications](https://wordpress.org/plugins/tags/notifications/)
 *  [Advanced View](https://wordpress.org/plugins/notice-triage/advanced/)

## Ratings

No reviews have been submitted yet.

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

[See all reviews](https://wordpress.org/support/plugin/notice-triage/reviews/)

## Contributors

 *   [ Avo Avetisyan ](https://profiles.wordpress.org/loyaltyoverroyalty/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/notice-triage/)