Title: NoticePilot – Remote Campaign Hub for WordPress Plugin &amp; Theme Authors
Author: Spider Themes
Published: <strong>12 de maig de 2026</strong>
Last modified: 8 de juny de 2026

---

Cerca extensions

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

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

# NoticePilot – Remote Campaign Hub for WordPress Plugin & Theme Authors

 Per [Spider Themes](https://profiles.wordpress.org/spiderdevs/)

[Baixa](https://downloads.wordpress.org/plugin/noticepilot.1.0.1.zip)

 * [Detalls](https://ca.wordpress.org/plugins/noticepilot/#description)
 * [Ressenyes](https://ca.wordpress.org/plugins/noticepilot/#reviews)
 *  [Instal·lació](https://ca.wordpress.org/plugins/noticepilot/#installation)
 * [Desenvolupament](https://ca.wordpress.org/plugins/noticepilot/#developers)

 [Suport](https://wordpress.org/support/plugin/noticepilot/)

## Descripció

**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 that runs on hundreds or thousands of
sites, you need a reliable way to push announcements, update prompts, sale banners,
or deprecation warnings to your users — without shipping a new plugin release for
every message. NoticePilot solves this with a **hub-to-remote architecture**: you
manage campaigns centrally on your own site, and a lightweight PHP SDK bundled in
your plugin automatically fetches and displays them on every remote installation.

#### Who Is This For?

NoticePilot is purpose-built for **WordPress plugin and theme developers** who need
to communicate with their users across multiple remote installations from a single,
self-hosted dashboard. It is **not** a tool for managing or suppressing admin notices
on a single site — there are many plugins already serving that purpose.

#### What Makes It Different?

Unlike most admin-notice plugins, NoticePilot is a complete developer communication
platform:

 * **Hub-to-Remote Architecture** — One central dashboard pushes campaigns to unlimited
   remote WordPress sites via a REST API. No third-party SaaS, no external dependencies—
   everything runs on your own WordPress installation.
 * **Single-File PHP SDK** — Bundle one PHP file into your plugin or theme. Initialize
   with a single line of code. The SDK handles fetching, caching, rendering, and
   dismissal automatically.
 * **Privacy-First Analytics** — Track impressions, clicks, and dismissals across
   all remote sites without collecting personal data. Remote site URLs are MD5-hashed
   before storage — no IP addresses, usernames, or cookies are ever saved.
 * **Audience Targeting** — Deliver the right message to the right users by targeting
   campaigns based on plan type (free or pro), plugin version (with comparison operators
   like `<`, `>`, `=`), and WordPress user roles.
 * **Campaign Scheduling** — Set start and end dates for time-sensitive campaigns.
   Expired campaigns are auto-disabled via WP-Cron — no manual clean-up required.
 * **Rich HTML Support** — Write full HTML including inline CSS, `<style>` blocks,
   and custom layouts. Your content renders exactly as authored on every remote 
   site.
 * **Smart Dismissal Handling** — Users who dismiss a notice won’t see it again 
   for a configurable duration. Dismissals are stored locally on the remote site
   using a FIFO strategy, keeping only the 20 most recent dismissed IDs.
 * **Scalable Analytics Engine** — Raw events roll up into daily summaries via an
   hourly WP-Cron job with automatic pruning. Built for scale — no unbounded table
   growth.

#### How It Works

 1. **Create a Product** — Each product represents a plugin, theme, or service you 
    maintain. NoticePilot generates a unique REST API endpoint for it automatically.
 2. **Add Campaigns** — Write rich HTML content, set optional scheduling and audience-
    targeting rules, then enable the campaign.
 3. **Integrate the SDK** — Download the single-file PHP SDK from your product card,
    bundle it with your plugin or theme, and initialize it with one line of code. The
    SDK polls your hub on a configurable schedule and renders active campaigns as WordPress
    admin notices on remote sites.
 4. **Track Performance** — Monitor impressions, clicks, dismissals, and click-through
    rates from the analytics dashboard. Drill down by product or by individual campaign
    with daily breakdowns.

#### Real-World Use Cases

 * **Plugin authors:** Push update prompts, deprecation warnings, or feature announcements
   to all users of your plugin — without shipping a new release.
 * **Theme authors:** Announce seasonal sales, new theme versions, or compatibility
   updates directly inside the WordPress admin on every active installation.
 * **Agency developers:** Broadcast maintenance windows, policy changes, or onboarding
   tips across all client sites from a single central hub.
 * **Freemium plugins:** Show upgrade prompts exclusively to free-plan users while
   displaying different messaging to pro users — all without code changes on the
   remote site.

#### A Self-Hosted Alternative

Plugin authors today face a difficult choice: build a custom notice system from 
scratch for every product (duplicating effort), or rely on third-party SaaS platforms(
adding external dependencies and data-privacy concerns). NoticePilot offers a **
self-hosted, privacy-respecting, zero-external-dependency alternative** that runs
entirely on your own WordPress installation — giving you full control over your 
data and your users’ experience.

### SDK Integration Guide

This section explains the complete end-to-end workflow for wiring the NoticePilot
SDK into your own plugin or theme. Follow these steps in order — they cover everything
from creating your first product on the hub through to verifying notices appear 
on remote sites.

#### Step 1 — Set Up the Hub

Install and activate the NoticePilot plugin on your **central management site** (
not on the sites of your customers). This is the one WordPress installation that
will act as your private campaign server.

Once activated, navigate to **NoticePilot** in the WordPress admin sidebar. This
is where all products and campaigns live.

#### Step 2 — Create a Product

A «Product» is the bridge between the hub and one of your plugins or themes.

 1. Click **+ Add New Product**.
 2. Enter the name of your plugin or theme (e.g. `Super SEO Form`). NoticePilot automatically
    generates a URL-safe slug (e.g. `super-seo-form`). This slug is the identifier 
    your SDK will use when polling for campaigns.
 3. Toggle **Enable this site** to ON.
 4. Click **Save Site**.

Each product gets its own REST API endpoint in the form:

    ```
    https://your-hub-site.com/wp-json/noticepilot/v1/content/your-product-slug
    ```

#### Step 3 — Add a Campaign

With your product created, you can add one or more campaigns (notices) to it.

 1. Click **+ Add Content** on your product card.
 2. Fill in the fields:
 3.  * **Content Title** — Internal reference only (e.g. `Black Friday Sale 2025`).
     * **HTML Content** — The full HTML notice rendered on remote sites. Supports inline
       styles, `<style>` blocks, and any custom layout.
     * **Enable this offer** — Toggle ON to make the campaign live immediately.
     * **Start / End Date (Optional)** — Schedule the campaign for a specific window.
       Expired campaigns are auto-disabled by WP-Cron.
 4. Click **Save Content**.

You can attach multiple campaigns to a single product. All active and in-schedule
campaigns are returned together when the SDK polls the endpoint.

#### Step 4 — Download the SDK

 1. On your product card, click the **How To Integrate** button.
 2. Click **Download SDK** to download `class-remote-notice-client.php`.

Alternatively, copy the file directly from the `sdk/` directory of the NoticePilot
plugin.

#### Step 5 — Bundle the SDK Into Your Plugin or Theme

Copy `class-remote-notice-client.php` into your plugin or theme directory. A recommended
location is an `includes/` subdirectory:

    ```
    your-plugin/
    ├── your-plugin.php
    └── includes/
        └── class-remote-notice-client.php
    ```

The SDK is fully self-contained — no Composer, no external libraries, no additional
files required.

#### Step 6 — Initialize the SDK

Add the following code to your plugin’s main PHP file (or to your theme’s `functions.
php`). Replace the placeholder values with your own product slug and hub URL:

    ```
    // Load the NoticePilot remote notice SDK.
    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,
        ] );
    } );
    ```

**Copy the exact URL from your product card’s «How To Integrate» panel** to avoid
typos — the slug in `api_url` must match the product slug precisely.

#### SDK Configuration Options

 * `api_url` _(required)_ — The full REST URL to your product’s content endpoint
   on the hub. Find it in the **How To Integrate** panel on the product card.
 * `schedule` _(optional)_ — How often the remote site polls the hub for new campaigns.
   Accepted values: `hourly`, `twicedaily`, or `daily`. Default: `daily`. Use `hourly`
   for time-sensitive campaigns; use `daily` to reduce server load.
 * `capability` _(optional)_ — The WordPress capability a user must have to see 
   notices. Default: `manage_options` (administrators only). Change to `edit_posts`
   to show notices to editors as well.
 * `dismiss_duration` _(optional)_ — How long (in seconds) a dismissed notice stays
   hidden before it can reappear. Default: `WEEK_IN_SECONDS`. Pass `0` to make dismissals
   permanent for that campaign ID.

#### Step 7 — (Optional) Pass Targeting Context

If you use the audience-targeting feature (plan type, plugin version, or user roles),
pass a `$context` array as the third argument to `init()`:

    ```
    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',
    ], [
        'plan'    => 'free',            // 'free' or 'pro' — matches Plan Type targeting on the hub.
        'version' => '2.3.1',          // Your plugin's current version string — matches Version targeting.
        'roles'   => wp_get_current_user()->roles,  // Current user's roles array.
    ] );
    ```

The SDK sends this context to the hub, which filters campaigns before returning 
them. Campaigns with no targeting rules set are always returned regardless of context.

#### Step 8 — Verify the Integration

 1. **Trigger the first fetch manually:** After adding the initialization code, log
    in to a remote WordPress admin that has your plugin active. The SDK registers a
    WP-Cron event on first load (`plugins_loaded`). To force an immediate fetch without
    waiting for the cron, use WP-CLI on the remote site:
 2. wp cron event run noticepilot_rnc_fetch_content_your-product-slug
 3. **Check the stored contents option:** In the remote site’s database, look for the
    option `noticepilot_rnc_your-product-slug_contents`. It should contain the JSON-
    encoded campaign data returned by the hub.
 4. **View the notice in the admin:** Navigate to any admin page on the remote site.
    Active campaigns appear as standard WordPress admin notices at the top of the page.
    Each notice has a dismiss (✕) button.
 5. **Check the analytics:** Go back to your hub site  **NoticePilot  Analytics**. 
    After a page load on the remote site triggers a beacon, you should see an impression
    logged against your campaign within the hour (after the next rollup cron runs),
    or immediately after clicking **↻ Refresh Data** on the Analytics page.

#### How the SDK Works at Runtime

Understanding what the SDK does automatically helps you diagnose issues:

 1. **Cron registration** — On `plugins_loaded`, the SDK schedules a repeating WP-Cron
    event (e.g. `noticepilot_rnc_fetch_content_your-product-slug`) on the remote site
    if one is not already registered.
 2. **Remote fetch** — When the cron fires, the SDK sends a `GET` request to the `api_url`
    endpoint on your hub. The hub checks each campaign’s `enabled` flag and schedule,
    then returns the active ones as JSON.
 3. **Local caching** — The fetched campaigns are stored in the remote site’s `wp_options`
    table (key: `noticepilot_rnc_your-product-slug_contents`). Notices are rendered
    from this local cache on every page load — no live HTTP request is made on each
    admin page.
 4. **Rendering** — On `admin_notices`, the SDK outputs each cached campaign as a standard`.
    notice` div. Campaign HTML is filtered through `wp_kses()` before output to prevent
    script injection.
 5. **Analytics beacons** — Immediately on render, and on link click or dismiss, the
    SDK fires a `navigator.sendBeacon()` call to the hub’s analytics tracking endpoint.
    This is fire-and-forget and does not block the page.
 6. **Dismissal** — When a user clicks the ✕ button, an AJAX call stores the campaign
    ID in `noticepilot_rnc_your-product-slug_dismissed_ids`. Only the 20 most recent
    IDs are kept. After `dismiss_duration` seconds, the campaign can reappear.
 7. **Cron cleanup** — On plugin deactivation (your plugin), the SDK’s cron event is
    automatically unscheduled.

#### Developer Notes

 * **Namespace safety** — The SDK class is named `Noticepilot_Remote_Notice_Client`.
   It checks `class_exists()` before declaring itself, so it is safe to bundle in
   multiple plugins on the same site without conflicts.
 * **No singleton collision** — Each `init()` call is keyed by its product slug.
   Multiple plugins on the same remote site can each run their own SDK instance 
   independently.
 * **Hub availability** — The SDK caches results locally, so if your hub server 
   is temporarily unreachable during a cron run, the last successfully fetched campaigns
   continue to display until the next successful poll.
 * **Detecting the hub** — In your plugin’s own code, you can detect whether the
   hub is installed on the current site with `class_exists( '\NoticePilot\Core' )`.
   This is useful for offering hub-specific admin links in a bundled UI.
 * **Forcing a re-fetch** — To trigger the fetch action programmatically (e.g. after
   a plugin update), use: `do_action( 'noticepilot_rnc_fetch_content_your-product-
   slug' );`

## Captures

[⌊NoticePilot Dashboard – Centralized hub to manage products, launch campaigns, 
and configure SDK integrations.⌉⌊NoticePilot Dashboard – Centralized hub to manage
products, launch campaigns, and configure SDK integrations.⌉[

**NoticePilot Dashboard** – Centralized hub to manage products, launch campaigns,
and configure SDK integrations.

[⌊Campaign Analytics – Track performance, impressions, clicks, and conversion rates
across all remote installations.⌉⌊Campaign Analytics – Track performance, impressions,
clicks, and conversion rates across all remote installations.⌉[

**Campaign Analytics** – Track performance, impressions, clicks, and conversion 
rates across all remote installations.

[⌊SDK Integration – Simple, step-by-step guide to download and initialize the remote
notice client SDK.⌉⌊SDK Integration – Simple, step-by-step guide to download and
initialize the remote notice client SDK.⌉[

**SDK Integration** – Simple, step-by-step guide to download and initialize the 
remote notice client SDK.

[⌊Add Campaign – Create HTML campaigns with customized start dates, end dates, and
targeting rules.⌉⌊Add Campaign – Create HTML campaigns with customized start dates,
end dates, and targeting rules.⌉[

**Add Campaign** – Create HTML campaigns with customized start dates, end dates,
and targeting rules.

## Instal·lació

#### Installing the Hub Plugin

 1. Upload the `noticepilot` folder to the `/wp-content/plugins/` directory of your**
    central management site**.
 2. Activate the plugin through the **Plugins** menu in WordPress.
 3. Navigate to **NoticePilot** in your WordPress admin sidebar to begin creating products
    and campaigns.

#### Integrating the SDK With Your Plugin or Theme

Once you have created a product and added campaigns on your hub site, integrate 
the SDK into your own plugin or theme to start displaying notices on remote sites:

 1. In the NoticePilot dashboard, click the **How To Integrate** button on your product
    card.
 2. Click **Download SDK** to download the `class-remote-notice-client.php` file.
 3. Copy the file into your plugin or theme (e.g., into an `includes/` subdirectory).
 4. Add the following initialization code to your plugin’s main file or your theme’s`
    functions.php`:
 5. // Load the NoticePilot SDK. require_once **DIR** . ‘/includes/class-remote-notice-
    client.php’;
 6. 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’, ‘dismiss_duration’ => WEEK_IN_SECONDS,]);});

Replace `your-product-slug` with the slug shown on your NoticePilot product card,
and `your-hub-site.com` with the domain of the site running the NoticePilot hub 
plugin.

**SDK configuration options:**

 * `api_url` — _(Required)_ The full REST API URL to your product’s content endpoint.
 * `schedule` — How often the SDK checks for new campaigns. Accepted values: `hourly`,`
   twicedaily`, or `daily`. Default: `daily`.
 * `capability` — The WordPress capability a user must have to see notices. Default:`
   manage_options`.
 * `dismiss_duration` — How long a dismissed notice remains hidden before it can
   reappear. Default: `WEEK_IN_SECONDS`.

Once initialized, the SDK automatically handles fetching, caching, rendering, and
dismissing notices — no additional code required.

## PMF

### 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_options` capability, 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_duration` SDK 
option. Dismissals are recorded locally on the remote site in `wp_options` using
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.

## Ressenyes

No hi ha ressenyes per a aquesta extensió.

## Col·laboradors i desenvolupadors

«NoticePilot – Remote Campaign Hub for WordPress Plugin & Theme Authors» és programari
de codi obert. La següent gent ha col·laborat en aquesta extensió.

Col·laboradors

 *   [ Spider Themes ](https://profiles.wordpress.org/spiderdevs/)
 *   [ Muaz BK ](https://profiles.wordpress.org/muaz404/)

[Traduïu «NoticePilot – Remote Campaign Hub for WordPress Plugin & Theme Authors» a la vostra llengua.](https://translate.wordpress.org/projects/wp-plugins/noticepilot)

### Interessats en el desenvolupament?

[Navegueu pel codi](https://plugins.trac.wordpress.org/browser/noticepilot/), baixeu-
vos el [repositori SVN](https://plugins.svn.wordpress.org/noticepilot/), o subscriviu-
vos al [registre de desenvolupament](https://plugins.trac.wordpress.org/log/noticepilot/)
per [fisl de subscripció RSS](https://plugins.trac.wordpress.org/log/noticepilot/?limit=100&mode=stop_on_copy&format=rss).

## Registre de canvis

#### 1.0.1

 * **Security:** Sanitized nonce input in the admin form handler.
 * **Security:** Replaced inline `<style>` output in the SDK with the proper `wp_add_inline_style()`
   API.
 * **Security:** Replaced inline `<script>` output in the SDK with the proper `wp_add_inline_script()`
   API.
 * **Improvement:** Added an explicit `__return_true` permission 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.

## Meta

 *  Versió **1.0.1**
 *  Darrera actualització **fa 2 setmanes**
 *  Instal·lacions actives **Menys de 10**
 *  Versió del WordPress ** 5.8 o posterior **
 *  Provada fins a **6.9.4**
 *  Versió del PHP ** 7.4 o posterior **
 *  Idioma
 * [English (US)](https://wordpress.org/plugins/noticepilot/)
 * Etiquetes
 * [Admin notices](https://ca.wordpress.org/plugins/tags/admin-notices/)[campaign analytics](https://ca.wordpress.org/plugins/tags/campaign-analytics/)
   [developer-tools](https://ca.wordpress.org/plugins/tags/developer-tools/)
 *  [Vista avançada](https://ca.wordpress.org/plugins/noticepilot/advanced/)

## Valoracions

Encara no s'ha enviat cap ressenya.

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

[Visualitzeu totes les ressenyes](https://wordpress.org/support/plugin/noticepilot/reviews/)

## Col·laboradors

 *   [ Spider Themes ](https://profiles.wordpress.org/spiderdevs/)
 *   [ Muaz BK ](https://profiles.wordpress.org/muaz404/)

## Suport

Teniu quelcom a dir? Necessiteu ajuda?

 [Visualitza els fòrums de suport](https://wordpress.org/support/plugin/noticepilot/)