Skip to content

Notification Banners

Notification Banners let you broadcast a message that appears at the top of the panel (and the customer portal) for a chosen audience over a scheduled time window. Use them for maintenance windows, payment reminders, promo announcements, or anything you want every targeted user to see on their next page load.

Admins broadcast to anyone in the system. Resellers can only broadcast to their own subscribers and sub-resellers, and can only see/edit their own banners.

Sidebar → Notification Banners. Direct URL: /notification-banners.

Requires communication.notifications. The whole /notification-banners route group is gated by that single permission for List, Create, Update, and Delete.

SectionWhat it shows
HeaderPage title + New Banner button (top right)
Banner tableOne row per banner you can see
ColumnSourceNotes
TitletitleTruncated if long.
Typebanner_typeColored pill: Info (blue), Warning (amber), Error (red), Success (green).
Targettargetall, resellers, subscribers, or sub_resellers.
Created Bycreated_by_nameAdmin-only column. Purple pill for admin-created (reseller_id = 0), cyan for reseller-created.
Startstart_dateWhen the banner begins showing.
Endend_dateWhen it stops showing.
StatusDerivedSee below.
ActionsEdit (pencil) and Delete (trash) per row.

The Status column is computed in the browser from enabled, start_date, and end_date:

StatusCondition
Active (green)enabled = true AND start_date <= now <= end_date
Scheduled (grey)enabled = true but the window has not started yet (or has ended)
Disabled (red)enabled = false

Click New Banner (or the pencil on a row) to open the modal. Fields:

FieldNotes
TitleRequired.
MessageRequired. The body text shown in the banner.
TypeInfo / Warning / Error / Success. Defaults to Info. Drives the banner color.
TargetAudience — options differ by role, see below.
Target listCheckbox multi-select of specific resellers / sub-resellers (appears for certain targets). Leave empty to target all.
Start DateRequired. datetime-local picker.
End DateRequired. datetime-local picker.
DismissibleIf checked, viewers can close the banner. Default on.
EnabledMaster on/off switch. Default on. A disabled banner never shows regardless of dates.
PreviewA live colored preview of the banner renders once a title is entered.

Admins can choose:

  1. All Users (all)
  2. Resellers Only (resellers) — optional checkbox list of specific resellers; empty = every reseller.
  3. Subscribers Only (subscribers) — optional checkbox list of resellers whose subscribers should see it; empty = all subscribers.
  4. Sub-Resellers (sub_resellers) — checkbox list of resellers/sub-resellers to target.

Resellers can choose only:

  1. My Subscribers (subscribers) — sent to all of the reseller’s own subscribers.
  2. My Sub-Resellers (sub_resellers) — checkbox list of the reseller’s sub-resellers; empty = all of them. This option is hidden if the reseller has no sub-resellers.

When a reseller saves, the backend forces ownership: the banner’s reseller_id is set to the reseller, and the target is clamped to either subscribers (with target list cleared) or sub_resellers. Resellers cannot create all or resellers banners.

Specific recipients are stored in target_ids as a comma-separated list of reseller IDs. The “active banners” lookup that drives what each viewer sees applies the role-aware rules below.

An admin sees only admin-created banners (reseller_id = 0) whose window is currently active.

A reseller sees the union of:

  1. Admin banners targeting all.
  2. Admin banners targeting resellers where target_ids is empty or contains their reseller ID.
  3. Admin banners targeting sub_resellers where target_ids is empty or contains their ID.
  4. If they are a sub-reseller: their parent reseller’s banners targeting sub_resellers (empty or matching their ID).
  5. Their own reseller-created banners.

After the SQL pass, a second exact-match filter runs in Go so a partial LIKE match (e.g. ID 3 matching inside 13) cannot leak a banner to the wrong reseller.

A logged-in customer (subscriber) sees:

  1. Admin banners (reseller_id = 0) targeting all.
  2. Admin banners targeting subscribers where target_ids is empty or contains their reseller’s ID.
  3. Their own reseller’s banners targeting subscribers.

The same exact-ID post-filter is applied so partial matches do not leak across resellers. A subscriber with no reseller only sees admin banners that target all or subscribers with no reseller restriction.

Announce scheduled maintenance to everyone

Section titled “Announce scheduled maintenance to everyone”
  1. Click New Banner.
  2. Title “Scheduled Maintenance”, set the Message.
  3. Type = Warning, Target = All Users.
  4. Set Start/End to the maintenance window.
  5. Leave Dismissible and Enabled on. Save.

The banner auto-appears for all roles when the start time arrives (Status flips from Scheduled to Active) and disappears after the end time — no need to delete it.

Promo to one reseller’s customers (admin)

Section titled “Promo to one reseller’s customers (admin)”
  1. New Banner → Type = Info, Target = Subscribers Only.
  2. In the reseller checkbox list, tick the one reseller.
  3. Set the window and save. Only that reseller’s subscribers see it in the portal.
  1. As a reseller, click New Banner.
  2. Target defaults to My Subscribers. Fill Title/Message and the window.
  3. Save. The banner reaches every subscriber under that reseller; other resellers and the admin’s global list are unaffected.

Edit the banner and uncheck Enabled (Status becomes Disabled), or just let the End Date pass (Status becomes Scheduled/expired). Either way it stops showing.

PermissionEffect
communication.notificationsRequired for the whole page — viewing, creating, editing, and deleting banners.

Beyond the permission gate, scope is enforced by role: admins manage all banners, resellers see and manage only banners they own (reseller_id matches), and Update/Delete return Forbidden if a reseller targets a banner that is not theirs.

  • Resellers — defines the resellers and sub-resellers you target.
  • Subscribers — the customer accounts that see subscribers/all banners in the portal.
  • Communication — the broader notification channels (email / SMS / WhatsApp) that complement in-panel banners.