Skip to main content

Hub Pricing

The Hub Pricing tab is a super-admin-only surface for the standard price list CleverCam bills every control room off. Each hub type -- a CCU, a CleverMail product, an alarm communicator, the Panic App -- carries a monthly price, and that price is what turns a claimed hub into a line on a VCR's CleverCam bill.

Before this page existed the price list could only be changed by writing SQL against the database directly. That meant nobody could check a price without a developer, and a hub type left on an unadjusted default could sit wrong indefinitely with no record of how it got that way.

Accessing Hub Pricing​

  1. Sign in with a super admin account.
  2. Activate Super Admin mode via the sidebar toggle.
  3. Click Super Admin in the sidebar (only visible while Super Admin mode is on), then open the Hub Pricing tab.
Super-admin only, and platform-wide

This is not a per-company setting. One number here moves every control room's bill at once. Access is enforced in three places: the page checks you are a super admin with Super Admin mode on, the hub-types table refuses a direct write from any app user, and the save operation re-checks super-admin server-side. A company admin who reached the address bar gets "Access denied" and could not write a price even if they bypassed the page entirely.

What a price change actually affects​

This is the part worth reading before touching a number.

It applies to the current month, immediately​

The CleverCam bill is not snapshotted per period. The billing breakdown recalculates from today's prices and today's hub counts every time it is opened. Change a price now and the month already in progress re-prices immediately, for every control room that does not have its own override.

There is no "effective from" date. If a price should only apply from next month, the change has to be made at the start of that month.

It does not touch invoices your control rooms have already issued​

The CleverCam price list and the invoices a control room sends its own customers are two separate things. Customer invoices are generated from that control room's billing plans, which never read the hub-type price list. Editing a price here changes what CleverCam charges the control room -- it does not retroactively alter, reissue or adjust any invoice a control room has already sent out.

A per-VCR override wins​

If a control room has a negotiated price for a hub type, that override takes precedence and the control room is unaffected by a change here. Negotiated prices are set from that control room's own billing breakdown, not from this page.

Enterprise control rooms use the number for more than the price​

On the enterprise billing package, owned non-CCU hardware is priced per monitored site rather than per hub: the cheapest hardware hub on a site is absorbed by its CCU, the next is free, and the rest bill at half of their own price. Because that ordering is driven by price, re-pricing one hub type can change which hub on a shared site comes out free -- not just what the site costs. The figure also counts toward the enterprise minimum monthly spend.

The four kinds of charge​

Pricing is deliberately sparse: most hub types carry exactly one of these, and some carry none at all.

ChargeUnitUsed by
Ownedper hub / monthHubs a control room owns. Only bills once the hub is linked to a site.
Rentalper hub / monthHubs flagged as hardware rental. Bills whether or not the hub is linked to a site.
Per streamper camera / monthCleverMail products -- charged per video stream linked to a hub of that type.
Per userper app user / monthThe Panic App -- charged per distinct app user on a site carrying that hub. Community members are excluded; they bill through their community instead.

A hub type with no price at all is shown as no price set. It is not an error -- serial receiver gateways and similar infrastructure are deliberately unpriced -- but it does mean hubs of that type generate no bill line anywhere.

Reading the table​

Hub types are grouped by category (CCUs & virtual hubs, Alarm communicators, Panic app). Each row shows the display name, the internal type key and its id, then one cell per charge kind.

A cell is in one of two states:

  • A price box. The charge applies to this hub type. Type a Rand amount, or clear the box to leave the charge in place with no amount. The X next to it removes the charge from the hub type entirely.
  • A "+ Set" button. The charge does not apply to this hub type. Click it to add one -- this is how a hub type with no price at all is given its first price.

Editing a cell reveals Review & save and Revert on that row. Saving is per hub type, not one bulk commit, so a mistake is contained to a single price.

Guarding against the hundred-times mistake​

Entering Rand where cents were meant (or the reverse) is the classic pricing error, so the amount is read back in two places before it can be saved.

As you type, the cell shows the formatted result underneath -- entering 1500 in a box that should read 15.00 immediately displays = R1 500,00 (150000 cents).

On save, a confirmation panel lists every change in full: Owned: R70,00 to R1 500,00 (150000 cents). A change of ten times or more in either direction is called out explicitly as the fingerprint of a Rand/cents mix-up. Removing a charge, or leaving a hub type with no price at all, is likewise flagged before it is committed.

The save is also validated server-side. Amounts must be whole cents, cannot be negative, and anything above R100 000 per unit is refused outright as an obvious mis-entry.

Add a reason

The confirmation panel has an optional Reason field. It is stored on the audit trail alongside the change. Because pricing feeds billing, a one-line "why" saves a lot of archaeology later.

Charges are never dropped by accident​

A hub type can carry more than one charge -- a CCU 8 has both an owned and a rental price. Saving one of them never disturbs the other. If a charge is being removed, that removal is stated explicitly in the confirmation panel and has to be accepted; the save operation refuses to drop a priced charge that was not deliberately removed.

Recent pricing changes​

Every change made through this page is recorded at the bottom of the tab, newest first: when it happened, who made it, which hub type, the before and after amounts for each charge, and the reason if one was given.

SQL changes do not appear here

The trail records writes made through this page. Prices set directly in the database before this page existed -- which is every current price -- have no entry. An empty trail means nothing has been changed here yet, not that the prices were never set.