Skip to main content

Admin Notifications and Announcements

Benecaster displays admin notices in two places: a notification bell (πŸ””) in the Benecaster top bar and a persistent notice bar above all Benecaster screens. Both surfaces draw from the same benecaster_notices table. What appears where depends on each notice’s display_mode.

Where Notices Appear

Notification bell β€” the πŸ”” icon in the Benecaster top bar shows a badge with the count of unread notices at or above your minimum severity preference. Clicking opens a slide-in panel listing each notice with its tier badge, title, message, timestamp, and dismiss button. A β€œβœ“ All” button dismisses all currently visible notices at once.

Persistent notice bar β€” a full-width colored stripe above all Benecaster admin screens, below the WordPress admin toolbar. Used for high-priority notices that need to stay visible until acknowledged or resolved. When multiple bar-eligible notices exist, only the highest-tier one is shown. A close [βœ•] button dismisses a dismissible bar notice; non-dismissible bar notices remain until the underlying condition clears.

display_mode controls which surface a notice uses:

Value Where it appears
bell Bell panel only (default for most notices)
bar Persistent bar only
both Both surfaces simultaneously

Critical notices default to both. All others default to bell.

Notice Tiers

Tier Color Always shown Example
Critical Red Yes β€” cannot be suppressed Security vulnerability, expired license
Warning Amber No PHP approaching end-of-life, feed errors
Info Blue No Subscriber milestone, new feature announcement
Tip Purple No Setup step incomplete, usage hint
Marketing Teal No Add-on promotion, upgrade nudge

Notification Severity Preference

Settings β†’ Notifications lets you set the minimum notice tier you want to see. The dropdown has four options:

Option What it hides
Critical only All notices except critical
Warnings and above Info, tip, and marketing
Info and above Tip and marketing
Show all notices (including promotions) Nothing

Default is β€œShow all notices.” Critical notices are always shown regardless of this setting. The preference is stored as benecaster_min_notice_tier in wp_options and is site-wide β€” it applies to all admin users.

Built-in Health Checks

Benecaster runs seven health check classes and generates local notices automatically. Most checks run once per admin session (transient-gated so they do not fire on every page load). The feed health check and license server check also run on the daily license validation cron, so they surface even on days when no admin visits the site.


PHP Version

Trigger Tier Dismissible
PHP is below the minimum supported version Critical No
PHP is within 12 months of its end-of-life date Warning Yes

WordPress Version

Trigger Tier Dismissible
WordPress is below the minimum recommended version Warning Yes

Feed Health

Trigger Tier Dismissible
RSS feed has returned errors on 3 or more consecutive checks Warning Yes

Runs on the daily cron in addition to admin page loads, so feed errors surface promptly without requiring a site visit.


License Server

Trigger Tier Dismissible
License server unreachable for more than 7 days Warning Yes β€” re-surfaces every 7 days while the condition persists
License expires within 30 days Warning Yes β€” re-surfaces every 7 days while the condition persists
License has expired and is in the grace period Critical No

Runs on the daily cron alongside the license validation request. The two dismissible notices re-surface every 7 days as long as the underlying condition is still true β€” dismissing them is a β€œremind me later,” not a permanent suppression.


Setup Completion

Trigger Tier Dismissible
Setup wizard not completed more than 7 days after activation Tip Yes
No published episodes more than 30 days after activation Tip Yes

Milestones

Trigger Tier Dismissible
Subscriber count reaches 10, 50, 100, 250, 500, or 1,000 Info Yes
Episode count reaches 10, 25, 50, or 100 Info Yes

Listener Support Setup

Trigger Tier Dismissible
Listener Support is enabled but Stripe is not configured (checked weekly) Warning Yes

Feed Request Log

Trigger Tier Dismissible
Feed request log row count exceeded the configured hard cap and oldest rows were deleted Warning Yes β€” re-surfaces every 7 days while the log remains above cap

Appears when the nightly cron pass detects the raw feed request log (benecaster_feed_request_log) has grown past the hard row cap. Benecaster automatically trims the oldest rows to 80% of cap when this happens, but the notice re-surfaces every 7 days as long as the log remains near the limit β€” a prompt to raise the cap or shorten the retention window at Settings β†’ Tools β†’ Feed request log. See Feed Request Log Retention β†’.


License Server Notices

The license server pushes notices as part of the daily POST /validate response. These cover security alerts, version announcements, deprecation warnings, feature announcements, and promotional messages. Benecaster stores them in the benecaster_notices table with source = 'remote' and processes them alongside local health notices in the bell panel and notice bar.

Remote notices respect your severity preference setting β€” a marketing promotion from the server is hidden if you have set your minimum to β€œWarnings and above.”

All dismissals are site-wide. Dismissed License Server notices do not automatically return after a period of time β€” once dismissed, a notice with the same ID stays gone. The server can re-surface a notice by issuing a new notice ID (for example, appending -reminder to a security alert slug), which is treated as a distinct notice by Benecaster.

Dismissal

Once any admin on the site dismisses a notice, it is gone for the entire installation β€” with three exceptions. The following notices re-surface every 7 days as long as the underlying condition persists:

  • License expires within 30 days
  • License server unreachable for more than 7 days
  • Feed request log hit the emergency row cap

Dismissing any of these is a β€œremind me later,” not a permanent suppression. You cannot configure the 7-day cadence β€” it is set per-notice in code and is not exposed in Settings.

Critical notices are non-dismissible β€” they remain visible until the underlying condition resolves. When a critical condition clears (for example, you update PHP past the minimum version), the notice is removed on the next health check run.

For Developers

The notification system is extensible via two filter hooks documented in the Filter Hooks Reference:

The re-surfacing behavior is controlled by a re_dismiss_after field on NoticeManager::publish() data arrays. Pass a positive integer (days) to opt a notice into the 7-day re-dismissal cycle; omit the field or pass 0 to preserve the default β€œdismiss = suppress forever” behavior for that notice. This field is code-side only β€” it is not configurable per-user or per-installation.

See Also