I have wanted a public database of WordPress admin notices for years. Every WordPress professional knows the feeling. You log into /wp-admin/ to do one small thing, and the top of the screen is a wall of banners. Activate your license. Update to the latest version. Leave a 5-star review. Opt in to usage tracking. Help shape the future of a plugin you installed twenty minutes ago. None of it is the thing you came to do.

The idea never changed. Catalogue the worst offenders. Pin each nag to the exact plugin that renders it. Rank them so the pattern is impossible to ignore. What changed this month is that it finally became buildable. It is live at dismissed.fyi, and it came together over a few days. Most of it happened out in the open on X.

3,123
Admin notices catalogued
2,023
Plugins on the board
74
Render on every screen
19
Caught remote-injecting

The original plan would never have worked.

For years, I assumed I would source the notices by hand. Spin up a site, install a plugin, screenshot whatever nag it threw, file it, move on. That works for ten plugins. It falls apart at two thousand. There are nearly sixty thousand plugins in the directory, and most of them update constantly. A manual screenshot library would be out of date before I finished the first page. The project sat in my head for years because the only sourcing method I could picture guaranteed it would die.

Manual screenshots were the wrong approach
The point is to capture the most annoying notices across the whole ecosystem and keep them current as plugins ship new versions. A human taking screenshots one plugin at a time can never keep up. The idea only became practical once the notices could be recreated directly from each plugin’s source code. No live site. No screenshot. No human in the loop for the boring part.

Instead of photographing the symptom, the scanner reads the cause. It enumerates every callback hooked onto admin_notices and the related hooks. It uses PHP Reflection to pin each one to its exact file:line and owning plugin. Then it renders that callback in isolation across five unrelated admin screens to prove how much of /wp-admin/ it actually hijacks. Source code in, structured rap sheet out. That is the change that took this from a someday idea to something that catalogued three thousand notices in a few days.

It started with a tweet.

On June 3rd, Jeff Chandler posted a single screenshot that lit the fuse. A stack of nags from Meta Box, The Plus Addons, Elementor, Spectra, and WP Rocket, all piled on top of each other, captioned OHHHH THE HUMANITY. That was the nudge. I replied that we needed a hall of shame and that I was going to build one. A few hours later, it existed.

Claude Code Session
Austin
I want to build that hall of shame for /wp-admin/ notices. What should I call it? dismissed.com is taken.
Claude
Checked 30 TLDs through Spaceship. dismissed.com is gone, but dismissed.fyi, dismissed.wtf and dismissed.fail are all open. Given the "Dismissed." branding, dismissed.fyi reads cleanest. It is short and neutral, and the trailing period in the name does the editorializing for you.
Austin
dismissed.fyi it is. Register it and deploy the local build.
Claude
Registered, DNS pointed at the Anchor nameservers, and the local site deployed over SSH. It is live at dismissed.fyi.

The stack is the boring-on-purpose combination I reach for now. Claude designs and writes the thing. WordPress and WP-CLI are the runtime. SSH reaches the fleet. The rest is a couple of hours of my evening. The first version was deliberately rough. I told people on X to bear with me while I poured in real data, because not every finding was 100% accurate yet. Building in public means the rough version is the one everyone sees. That turned out to be the best part.

For years
The idea. A public database of every obnoxious /wp-admin/ notice. The plan was to source them by hand, one screenshot at a time. It never started because that plan could never scale.
Jun 3, 2026
Jeff Chandler posts a stacked screenshot of Meta Box, The Plus Addons, Elementor, Spectra and WP Rocket nags. OHHHH THE HUMANITY.
Jun 5, 2026
I reply that we need a hall of shame and that I am going to build one. A few hours later it is live at dismissed.fyi.
Jun 6, 2026
Feedback rolls in. Requests for pagination, sorting and filters. The collection page already had them, so I added the same controls to the offenders board.
Jun 8, 2026
The ranking changes. Plugins that remote-inject notices become the worst offenders, ahead of any plugin judged purely on how many notices it shows.
Today
3,123 notices across 2,023 plugins and growing. AI runs the scans and the database sourcing keeps improving.

Then I changed my mind about how to rank them.

The first version ranked offenders in the obvious way. Count the notices. More banners, worse rank. It is intuitive, and it is also subtly wrong. A plugin that shows five static nags is annoying, but you can read all five, dismiss them, and know exactly what you are looking at. The code that draws them is right there in the plugin. It does not change until the plugin updates.

A different class of plugin does something worse with a single banner. It reaches out to the vendor’s own server on every admin page load. It pulls down whatever promotional content the vendor decides to serve that day. It injects that straight into your dashboard. The plugin you audited and the banner you see are no longer the same thing. The vendor can change the message, the link, or the offer at any time, for every site running the plugin, without shipping an update you could review. I ran into one of these during a malware cleanup, and the framing clicked.

Claude Code Session
Austin
We might have to rethink how to capture these. Catching the really annoying ones is the whole point. We should flag plugins that remote-inject admin notices as extra bad activity. Work it into Dismissed.
Claude
Good direction. The remote-fed admin_head banners are exactly the most annoying offenders, and remote-injected is genuinely worse behavior worth its own tier. A raw notice count under-rates them. One banner a vendor can rewrite from their server at any time is worse than five static nags you can actually read and dismiss. I would make remote-injection a top-level flag that sorts above the raw count.
Austin
Right. Rank the remote injectors as the worst offenders, above everyone else.
Claude
Done. New remote-promo tag, a dedicated filter on the offenders board, and the ranking now floats anything that pulls server-controlled content to the top. 19 plugins currently trip it.

So on June 8th, I rewrote the rankings. Plugins that remote-inject /wp-admin/ notifications are now the worst offenders on the board, ahead of anything ranked on raw notice count. I think it is a far more honest measure of bad behavior. I said the same thing on X at the time. This is more accurate than a raw count of notifications, and I will keep letting AI run the scans and improve the database sourcing.

The Dismissed. homepage showing stats and the Hall of Shame leaderboard ranked by render-everywhere notices, with Simple Job Board at number one tagged remote-injected
The Hall of Shame, ranked by render-everywhere notices. After the June 8th change, the remote injectors sit at the top.
What remote-injected actually means
The plugin fetches promotional content from a server it controls and injects it into your admin on page load. They can change what shows, to every site at once, any time, with no plugin update you could read or veto. That is the difference between a nag and a channel. A static notice is a thing the plugin says. A remote-injected one is a thing the vendor can keep saying differently forever.
The servers feeding banners into your dashboard
remotemarket.presstigers.comSimple Job Board
remoteberocket.comAdvanced AJAX Product Filters
remoteapi.wpmet.comElementsKit Lite and ShopEngine
remotewebappick.comProduct Feed Manager for WooCommerce
remotereactheme.comEasy Hotel and RT Mega Menu
remotedemocontent.codex-themes.comTheGem Theme Elements
remoteapi.pluginscafe.comRestrict Dates Add-On for Gravity Forms
remotebackupforwp.comWP Database Backup

What the board says about the ecosystem.

With 2,023 plugins scanned, the pattern is clear. Upselling a paid tier is the single most common reason a plugin interrupts you. Demanding you update comes next, then begging for a review. Remote-promo is the rarest tag on the board. Only 19 plugins. It sits at the very top of the rankings anyway, because of what it represents, not how often it happens.

What 2,023 plugins are nagging you about
Upsell, push a paid tier
328
Version nag, update right now
223
Review beg, wants 5 stars
173
License nag, enter a paid key
118
Telemetry, opt in to tracking
106
Remote-promo, server-controlled
19

Severity is judged by reach, not volume. A notice scoped to the plugin’s own settings page is Low. A global, non-dismissible banner that loads on every screen is Critical. Right now, 74 plugins render a notice on every single admin screen. 818 of the catalogued notices cannot be dismissed at all. Here are three of the current worst offenders. All three are remote injectors.

REMOTE-INJECTED
Simple Job Board
#1 offender

The current top of the board. It pulls promo content from market.presstigers.com and renders on three unrelated admin screens, two of them confirmed global. You installed it to post jobs. It doubles as a billboard the author can re-skin remotely whenever they like.

REMOTE-INJECTED
Advanced AJAX Product Filters
global

It phones home to berocket.com and injects its banner across the WooCommerce admin, confirmed global on two screens. The filtering does its job. The dashboard just happens to carry whatever upsell the vendor is running this week.

REMOTE-INJECTED
ElementsKit Lite
2 notices

It reaches out to api.wpmet.com for its promo content. It is one of several Wpmet products on the board pulling from the same endpoint. A good reminder that remote injection is usually a vendor-wide pattern, not a single rogue plugin.

The community drove the feature list.

Building in the open meant the feature list wrote itself. Someone asked for pagination, sorting, and filters. The collection at dismissed.fyi/collection/ already had them, so I added the same controls to the offenders page. Ben Word suggested listing the exact hooks and filters needed to disable each notice. He keeps a file dedicated to muting them on every site he maintains. I have thought about that, including WP-CLI commands to dismiss them. There are already plugins that turn WordPress notifications off wholesale, which is probably easier than micromanaging each one. Almost every reply was either a feature request or a better way to frame the data. The remote-injection ranking was the biggest reframe of them all.

The Collection page on Dismissed. with severity, behavior and tag filters beside a grid of catalogued admin-notice artifacts
The Collection at dismissed.fyi/collection/. Filter by severity, behavior or tag, then click any artifact for its exact source line.
Where it goes from here
AI keeps running the scans. The database sourcing keeps getting more accurate. The board keeps growing. The whole thing is read-only by design. It recreates each notice from source code and never touches a live site. If your plugin is on the wall and you do not like it, the fix is the same one your users want. Stop interrupting them.

An idea I sat on for years, because the only way I could picture building it was by hand. It took an afternoon once the notices could be read straight from the source. The hall of shame has begun. You can browse it at dismissed.fyi.