Skip to content

Notifications

Every part of CorePanel reports what it does through one pipeline: certificate renewals, backups, imports, disk usage, services, WordPress installs. Before this existed those outcomes ended in a log file, which is another way of saying nobody saw them until something had already broken.

Notifications are available in every edition. This is operational hygiene, not a paid feature.

The bell in the top bar carries the unread count and the ten most recent unread entries. Notifications in the sidebar is the full list, with filters and the delivery state of each entry.

The Notifications page: a filter row for severity, module and unread-only above a table whose rows carry a coloured severity chip, the event text with the module beneath it, the affected account, when it happened and whether it was emailed. Unread rows are highlighted; a repeated certificate failure shows a ×3 chip, and two informational entries are marked "Panel only". The header bell shows an unread badge of 4.

Each entry has:

SeverityCritical, Error, Warning or Info — this is what decides how it is delivered
EventWhat happened, plus the module it came from
AccountThe hosting account affected, when the event is about one
WhenThe first time it happened
EmailWhether it was emailed, and if not, why

A ×N beside an event means the same thing happened N times and was folded into one entry. Folding only happens while the entry is unread: once you have seen it, the next occurrence is news again and gets its own row. That is what keeps a service flapping every five minutes from producing three hundred rows overnight, without hiding the fact that it flapped again after you looked.

SeverityIn the panelBy email
CriticalImmediately — within about a minute
ErrorIn the next digest
WarningIn the next digest
InfoNever to an operator; panel only

The last row is the deliberate asymmetry. “A backup completed” is worth having in the panel and is not worth an email to the person who runs the server — but it is exactly the mail a hosting customer wants about their own account, and that is how it is treated when the recipient is an account owner.

An event is routed by what it is, not by which part of CorePanel produced it. Three audiences, each getting its own copy with its own read state and its own email:

AudienceWhoWhere the mail goes
AdministratorWhoever runs this serverThe server’s administrator email
ResellerThe reseller that owns the affected accountThe reseller’s contact email
Account ownerThe hosting customerThe account’s owner email

Reading an alert as the administrator does not mark it read for the customer — they have not seen it.

On Business, the account owner’s copy is not only emailed: the customer reads it in their own panel, under Notifications, and chooses there whether it is emailed to them at all — see the client panel. What they get is their own audience and nothing else; the administrator’s copy of the same event, and every event about the server itself, stays yours.

Two consequences worth knowing:

  • A server-wide event reaches the administrator alone. A failed renewal on a customer’s domain concerns its owner; the same failure on the server’s own hostname certificate concerns nobody but you, and it carries no account, so that is where it stops.
  • On a server with no resellers there is no reseller copy. The primary vendor’s operator is the administrator, who already has one.

Notifications → Notification email, visible to super-administrators because these are server-wide. A hosting customer has a card of their own with the first two of these settings and neither of the last three: the digest interval and the From address belong to the server, and sending a test is an operator’s diagnostic.

  • Send notification email — off keeps everything in the panel and mails none of it.
  • Minimum severity — the floor that reaches your mailbox. Warning by default.
  • Digest interval — hourly or daily. How often the non-critical events are bundled into a single message, grouped by module.
  • Send from — the address the messages come from. Empty means corepanel@<your server hostname>.
  • Send test notification — one email now, ignoring the severity policy and the rate limit. Use it before you need it.

A recipient receives at most ten emails per hour. It counts emails, not events: a digest carrying forty entries is one email. When the cap is reached, the remaining alerts fold into that recipient’s next digest, which says how many were folded in. A runaway producer can neither flood your mailbox nor a customer’s, and one noisy account cannot consume another’s budget.

This is the part that is not a CorePanel setting, and it decides whether the feature works for you.

A fresh VPS is a poor sender. corepanel@<hostname> with no SPF record, no DKIM signature and no matching reverse DNS is exactly the profile Gmail and Outlook drop silently. Your own alerts landing in your spam folder is survivable; a customer’s “your WordPress is ready” landing in theirs makes your hosting look broken.

Three ways out, in the order most people take them:

  1. Publish the records for your hostname. If the hostname’s DNS zone is on this server, CorePanel signs with DKIM and publishes SPF for you. If it is at a registrar elsewhere — the common case — add them there:

    RecordNameValue
    SPF (TXT)<hostname>v=spf1 a mx ~all
    PTR(at your provider)must resolve to <hostname>

    The PTR is set in your VPS provider’s control panel, not in DNS you host. A mismatched or missing one is the single most common reason this mail is discarded.

  2. Send from a domain you already send from. Set Send from to an address on a domain with working SPF/DKIM, and the messages inherit its reputation.

  3. Relay through a provider. Configure a relayhost in Postfix (SES, Postmark, Mailgun, your own MX). This is a Postfix change, outside CorePanel, and it is the only option that gives you delivery reports.

When the mailbox is inside the account that broke

Section titled “When the mailbox is inside the account that broke”

Account is out of disk space sent to an address hosted on this same server, inside that same account, cannot be delivered — the delivery fails precisely because the alert is true. CorePanel detects this, leaves the entry in the panel marked “Not emailed — the mailbox is inside the affected account”, and adds a note to the administrator’s copy. It never redirects a customer’s mail to the administrator: that would put one customer’s operational detail in somebody else’s mailbox.

ShownMeaning
EmailedHanded to the local mail server
QueuedNot decided yet; the next pass (once a minute) will
Panel onlyBelow the recipient’s minimum severity — by design
Not emailed — no address on fileThe recipient has no email address
Not emailed — email is turned offThe recipient disabled notification email
Not emailed — the mailbox is inside the affected accountSee above
Folded into the next digestThe hourly cap was reached
The mail server refused itPostfix rejected the submission — check its log
EventSeverityWho hears
Certificate renewal failedErrorAdministrator, reseller, owner
Commercial certificate expiring (30, 14, 7, 3, 1 days)WarningAdministrator, reseller, owner
Backup failedErrorAdministrator, reseller
Backup completedInfoAdministrator, owner
Restore failedErrorAdministrator, reseller, owner
Import completed / failedInfo / ErrorAdministrator, owner / Administrator, reseller
Disk nearly full (server)CriticalAdministrator
Service stopped runningCriticalAdministrator
Application stopped answeringErrorAdministrator, owner
Panel logins rate limitedWarningAdministrator
Repeated failed mail logins from one addressWarningAdministrator
WordPress installedInfoOwner
WordPress install failedErrorAdministrator, reseller, owner
Account nearing / over its disk limitWarning / CriticalReseller, owner / all three
Account createdInfoReseller, owner

There is deliberately no expiry warning for automatic certificates. One about to expire either renews itself — making the warning noise — or fails to, and then “renewal failed” has already said so with the reason attached. Two alerts for the same fact train you to ignore both. Expiry warnings exist only for certificates a human has to go and buy.

The commercial one reaches the owner because, since customers install their own certificates, the customer is usually the only person who can buy the renewal. It fires on a ladder — 30, 14, 7, 3 and 1 days, then on expiry — rather than every day the certificate is inside the window, which would be thirty mails for one errand. Its wording distinguishes the two outcomes: a host with an automatic certificate underneath changes issuer, a host without one loses HTTPS. The second case is the only event in this table that keeps repeating daily until somebody acts, because it is the only one where the site is actually down.

Kept for
Read notifications90 days
Unread notifications180 days
Per recipientThe 2 000 most recent

The cap is per recipient, not per server: one busy account cannot evict every other customer’s history.

The CLI is root-local and may therefore read every audience — which is what answers “did my customer actually get that mail?”.

Terminal window
# What has the server been trying to tell me?
corepanel notifications list --unread
# Only the things that are actually on fire
corepanel notifications list --severity critical
# Did this customer get their mail?
corepanel notifications list --account john
# Prove email works before something breaks
corepanel notifications test
corepanel notifications test --account john
# Clear the badge
corepanel notifications ack --all

See the CLI reference for every flag.