Description
NoticePilot is not another admin notice plugin. It is a self-hosted remote campaign distribution platform built specifically for WordPress plugin and theme authors.
If you maintain a WordPress plugin or theme running on hundreds or thousands of remote sites, NoticePilot lets you push announcements, update prompts, sales banners, or deprecation warnings centrally from your own site—without shipping new plugin releases. It operates via a hub-to-remote architecture: manage your campaigns centrally on your hub site, while a lightweight PHP SDK bundled in your plugin automatically fetches and renders them.
Who Is This For?
NoticePilot is built for WordPress plugin and theme developers who need to manage user communication across multiple remote installations from a single, self-hosted dashboard. It is not a tool for suppressing or customizing notices on a single site.
Key Features
- Hub-to-Remote Architecture — Manage campaigns from a single dashboard and distribute them to unlimited remote WordPress sites via a REST API. Zero SaaS dependencies.
- Single-File PHP SDK — Bundle a lightweight, self-contained PHP file in your plugin or theme. Initialize it with a single line of code.
- Privacy-First Analytics — Track impressions, clicks, and dismissals. Site URLs are MD5-hashed; no IP addresses, usernames, or cookies are ever saved.
- Audience Targeting — Target campaigns by plan type (free vs. pro), plugin/theme version (supporting
<,>,=), and WordPress user roles. - Campaign Scheduling — Set start/end dates for campaigns. Expired campaigns are automatically deactivated via WP-Cron.
- Rich HTML & Styles — Author custom layouts with standard HTML and CSS. Offers predefined styles (Info, Success, Warning, Error).
- Smart Dismissal & Snooze — Limit notice clutter with automatic dismissal periods (stored locally on remote sites using a FIFO queue) and optional snooze options.
- A/B Testing & Conversions (Pro) — Test campaign variants, set metric-based smart triggers, track conversion goals, and collect deactivation feedback.
How It Works
- Create a Product — Add your plugin/theme in the hub to generate a unique API endpoint.
- Add Campaigns — Write the HTML notice content, define targeting and scheduling rules, and publish.
- Integrate the SDK — Download the single-file SDK, bundle it with your extension, and initialize it with one line of code.
- Track Performance — Monitor impressions, clicks, and conversion rates from the dashboard.
SDK Integration Guide
Integrating the NoticePilot SDK into your plugin or theme is simple. Follow these steps to get started:
1. Setup the Hub & Product
Install NoticePilot on your central management site. Navigate to NoticePilot, click + Add New Product, enter your plugin/theme name, and toggle Enable this site. This generates your product’s API endpoint.
2. Create a Campaign
On your product card, click + Add Content. Enter your HTML notice content, configure optional targeting or scheduling rules, toggle Enable this offer, and save.
3. Bundle the SDK
Download class-remote-notice-client.php from the product card’s How To Integrate tab (or copy it from the plugin’s sdk/ folder) and place it in your extension (e.g., in an includes/ folder).
4. Initialize the SDK
Add the following code to your plugin’s main file or theme’s functions.php:
require_once __DIR__ . '/includes/class-remote-notice-client.php';
add_action( 'plugins_loaded', function() {
Noticepilot_Remote_Notice_Client::init( 'your-product-slug', [
'api_url' => 'https://your-hub-site.com/wp-json/noticepilot/v1/content/your-product-slug',
'schedule' => 'daily',
'capability' => 'manage_options',
'dismiss_duration' => WEEK_IN_SECONDS,
] );
} );
Replace your-product-slug and the api_url with the values from your product card.
SDK Configuration Options
The init() method supports several optional parameters:
* schedule — Polling frequency: hourly, twicedaily, or daily (default).
* capability — Required user capability to see notices. Default is manage_options.
* dismiss_duration — Cooldown in seconds before a dismissed notice can reappear. Default is one week.
* snooze_duration — Cooldown for “Remind me later” links. Default is one week.
* max_notices — Maximum number of notices displayed at once. Default is 3.
* screen_ids — Restrict notices to specific admin screen IDs. Default is [] (site-wide).
* require_consent — Set to true to block tracking until the user explicitly consents (highly recommended for WordPress.org compliance).
* plugin_version — Current version string to enable version targeting on the hub.
* is_pro — Set to true when Pro features/plans are active to enable plan targeting.
Advanced SDK Features
-
Analytics Consent (WordPress.org Guideline 7 Compliance):
Ifrequire_consentis set totrue, control tracking dynamically using:
Noticepilot_Remote_Notice_Client::grant_consent( ‘product-slug’ );
Noticepilot_Remote_Notice_Client::revoke_consent( ‘product-slug’ ); -
Conversion Goals (Pro):
Track high-value user conversions (e.g., upgrading to Pro):
Noticepilot_Remote_Notice_Client::track_goal( ‘product-slug’, ‘goal_key’ ); -
Smart Triggers (Pro):
Report usage metrics (e.g., forms created) to trigger milestone campaigns:
Noticepilot_Remote_Notice_Client::set_metric( ‘product-slug’, ‘metric_key’, $count ); -
Deactivation Feedback (Pro):
Collect deactivation surveys without blocking deactivation:
Noticepilot_Remote_Notice_Client::init( ‘product-slug’, [
‘api_url’ => ‘…’,
‘deactivation_feedback’ => true,
‘plugin_file’ => ‘plugin-folder/plugin-file.php’,
] );
Verification & Testing
- Force a Fetch: Run
wp cron event run noticepilot_rnc_fetch_content_your-product-slugvia WP-CLI on your test site to fetch campaigns immediately. - Check Database: Verify campaigns are cached in
wp_optionsunder the keynoticepilot_rnc_your-product-slug_contents. - Verify Render: Navigate to the admin dashboard on your test site to see the notice and test its dismissal.
- Verify Analytics: Check NoticePilot Analytics on your hub site to see impression and click tracking roll up (typically hourly).
Screenshots




FAQ
How is NoticePilot different from other admin notice plugins?
Most admin-notice plugins manage, dismiss, or suppress notices on a single WordPress installation. NoticePilot serves an entirely different purpose — it is a remote campaign distribution platform for plugin and theme authors. You create and manage campaigns on a central hub site, and a lightweight SDK embedded in your plugin automatically fetches and displays those campaigns across hundreds or thousands of remote installations. It also includes campaign analytics, audience targeting, and scheduling — capabilities not found in typical notice-management plugins.
Can I use custom HTML and CSS in my campaigns?
Yes. Campaign content supports full HTML, including inline styles,
<style>blocks, and custom layouts. Your content renders exactly as written on every remote site.Is it safe to store and serve raw HTML campaign content?
Yes, within its intended use case. Campaign content can only be created by administrators who have the
manage_optionscapability, and all form submissions are protected by WordPress nonce verification. HTML is stored without additional sanitization intentionally, to preserve inline CSS and custom styling. NoticePilot is a developer tool designed for trusted authors — not for end-user-generated content.Does the plugin collect personal data from remote sites?
No. Analytics events are recorded using fire-and-forget
navigator.sendBeacon()calls. Before any data is written to the database, remote site URLs are MD5-hashed server-side. No IP addresses, usernames, cookies, user agents, or other personally identifiable information is ever collected or stored.Can I target campaigns to specific users or plan types?
Yes. Each campaign supports three independent targeting dimensions:
- Plan type — Show to all users, free-plan users only, or pro-plan users only.
- Plugin version — Target by version number using comparison operators (
<,>,=,<=,>=). - WordPress user role — Restrict visibility to specific roles such as Administrator, Editor, and others.
Leave all targeting fields blank to display the campaign to every eligible user.
What happens when a user dismisses a notice?
The notice is hidden for the duration configured via the
dismiss_durationSDK option. Dismissals are recorded locally on the remote site inwp_optionsusing a FIFO cleanup strategy that retains only the 20 most recent dismissed campaign IDs. During each fetch cycle, the SDK also automatically prunes stale IDs for campaigns that no longer exist on the hub.Does installing NoticePilot add notices to my own site’s dashboard?
No. NoticePilot does not inject any admin notices into the WordPress dashboard of the site where it is installed. It provides only a management interface under its own admin menu page. Campaign notices are displayed exclusively on remote sites — and only when a plugin or theme author explicitly integrates the SDK.
Reviews
There are no reviews for this plugin.
Contributors & Developers
“NoticePilot – Remote Campaign Hub for WordPress Plugin & Theme Authors” is open source software. The following people have contributed to this plugin.
ContributorsInterested in development?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Changelog
1.5.0
- Rebuilt: The entire admin UI is now a React + JSX app (built with @wordpress/scripts) — hero, stats, product cards, and all dialogs are component-based, with modals and form fields as reusable components. Same look (reuses the existing styles); smoother, no full-page reloads.
- New: Authenticated REST CRUD (
/noticepilot/v1/admin/…) replaces the old form-POST handlers for every product/campaign action (create, edit, delete, duplicate, import). - New: Add-on extension point — the campaign modal exposes the
noticepilot.campaignFieldGroupsJS filter (@wordpress/hooks), so NoticePilot Pro injects its A/B, snooze, and trigger fields as React components. Server-side, add-ons still receive their data via thenoticepilot_campaign_datafilter. - Removed: The legacy jQuery admin script and PHP-rendered modals.
- All existing features preserved: templates, live preview, targeting, scheduling, notice styles, placement, import/export, “See More”, and the SDK integration guide + download.
1.4.1
- Developer: Added range-aware analytics query methods to the data layer —
Analytics::get_range_totals(),get_product_daily(), and optional date bounds onget_product_summary()— powering the enhanced Pro analytics dashboard (date ranges, trend deltas, activity chart). Backward compatible; no schema change.
1.4.0
- Change: The Analytics screen has moved entirely to NoticePilot Pro, rebuilt as a modern React dashboard (charts, per-campaign detail, A/B variant comparison, conversions, CSV export). The free hub keeps the analytics data layer (event recording + hourly rollup) and the product/campaign stat ribbon.
- New: Opt-in geo (data layer) — a
country_codecolumn and a cached, filterable resolver (noticepilot_geoip_lookup, defaulting to ip-api.com, with CDN-header fast-path). Collected only when the hub owner enables it in Pro’s analytics settings and Pro is active (noticepilot_geo_collectionfilter). No per-visitor data. - Improvement: Analytics schema upgraded to 1.2.0 (adds
country_code); migrates automatically on update. - Removed: The legacy jQuery analytics page, its script, and its CSS.
1.3.0
- Change: A/B testing, conversion goals, smart triggers, and per-campaign snooze are now NoticePilot Pro features. The free hub keeps campaign push, scheduling, targeting, templates, live preview, placement, and analytics.
- New (SDK 1.5.0):
set_metric()for usage-milestone smart triggers, plus first-seen tracking for install-age triggers. The SDK runtime ships free; the rules that drive it are authored in Pro. - Developer: New
noticepilot_accept_goal_eventsfilter — the free hub ignores conversion (goal) events unless an add-on opts in, keeping conversion analytics gated. Snooze and trigger data are exposed to the SDK via the existingnoticepilot_api_content_itemfilter. - The SDK continues to support
snooze_durationandmax_noticesconfig options; a campaign only shows a “Remind me later” link when a Pro-authored snooze flag is delivered.
1.2.1
- New (SDK 1.4.0):
Noticepilot_Remote_Notice_Client::track_goal( 'slug', 'goal_key' )reports a conversion, attributed to the campaign/variant a site last saw. The hub records goal events (and accepts them after a campaign ends). Per-variant CVR and conversion summaries surface in NoticePilot Pro.
1.2.0
- New: Freemius integration and a Free + Pro model. The free hub stays fully functional; the optional NoticePilot Pro add-on unlocks A/B testing, per-variant analytics, and deactivation feedback.
- New: A/B testing groundwork — campaigns can carry weighted variants (authored in Pro); the SDK splits traffic deterministically and tracks events per variant.
- New (SDK 1.3.0): Opt-in deactivation-feedback modal (
deactivation_feedback+plugin_fileoptions) — asks users why they deactivated your plugin (skippable, anonymous) and reports it to your hub. - New: Developer extension points are stable —
noticepilot_campaign_data,noticepilot_api_content_item,noticepilot_test_site_hashesfilters and thenoticepilot_campaign_modal_fieldsaction — so add-ons plug in without core changes. - Improvement: An A/B testing upsell appears in the campaign editor when Pro is not active.
1.1.0
- New: Campaign templates — one-click starting points for review requests, BFCM sales, update prompts, deprecation warnings, and feature announcements.
- New: Live notice preview — see exactly how a campaign renders as a WordPress admin notice before publishing.
- New: Notice styles — choose Info, Success, Warning, or Error styling per campaign.
- New: Placement control — restrict a campaign to the integrating plugin’s own admin screens (via the SDK
screen_idsoption) instead of site-wide, following WordPress.org guideline 11. - New: “Remind me later” snooze — an optional gentler alternative to permanent dismissal.
- New: Import/export campaigns as JSON, and duplicate any campaign in one click.
- New: Test sites — exclude your own development/staging URLs from analytics so test traffic never skews campaign numbers.
- New (SDK 1.2.0): Analytics consent mode (
require_consent) withgrant_consent()/revoke_consent()helpers — keeps beacons off until the user opts in, for WordPress.org guideline 7 compliance. - New (SDK 1.2.0): Frequency cap (
max_notices) and configurablesnooze_duration. - Fix (SDK 1.2.0):
dismiss_durationis now honored — dismissed notices reappear after the configured window (previously dismissals were effectively permanent). - Improvement: Analytics schema now records per-variant events and conversion goals, laying the groundwork for A/B testing (NoticePilot Pro). Existing data is migrated automatically on update.
- Developer: New extension filters —
noticepilot_campaign_data,noticepilot_api_content_item,noticepilot_test_site_hashes— and thenoticepilot_campaign_modal_fieldsaction for add-ons.
1.0.1
- Security: Sanitized nonce input in the admin form handler.
- Security: Replaced inline
<style>output in the SDK with the properwp_add_inline_style()API. - Security: Replaced inline
<script>output in the SDK with the properwp_add_inline_script()API. - Improvement: Added an explicit
__return_truepermission callback to the public analytics REST API route to comply with WP REST API guidelines. - Improvement: Added plugin owner to the contributors list.
- Improvement: Updated readme tags and short description to better reflect the plugin’s developer-focused, remote-distribution use case.
1.0.0
- Initial public release.
- Multi-product management with support for unlimited campaigns per product.
- Rich HTML campaign editor with full CSS and custom layout support.
- Campaign scheduling with automatic expiration handling via WP-Cron.
- Built-in analytics tracking for impressions, clicks, and dismissals.
- Analytics dashboard with both product-level and campaign-level breakdowns.
- Lightweight single-file PHP SDK for remote site integration, with auto-fetch, transient caching, and dismissal handling.
- Privacy-first analytics — remote site URLs are MD5-hashed before storage; no personal data is collected.
