The affected-franchisees roster (and the privacy line)
When Verinode detects that a pattern is hitting a real share of your network at once, a network signal fires. The Signals page tells you a signal exists, how many locations it hit, and how severe i…
On this page
What it is
When Verinode detects that a pattern is hitting a real share of your network at once, a network signal fires. The Signals page tells you a signal exists, how many locations it hit, and how severe it is. What it does not do, on its own, is tell you which locations. That is what the affected-franchisees roster is for.
Open any signal and the detail panel shows a named list, one row per location, of every franchisee the aggregator counted toward that pattern. Each row carries an "Open profile" link into that member's page. This is the single place on the platform where a network-level signal turns into a specific set of locations you can go talk to, and it is also where the HQ privacy boundary is drawn most visibly: the roster tells you who, never what their numbers look like underneath.
Where to find it
Open Signals at hq.verinode.ai/signals. The page does not have its own entry in the left sidebar yet: the sidebar's top entry, Feed, opens HQ's daily briefing surface, which surfaces network-signal cards as they happen but is a separate view. Signals is reached by URL for now, and a dedicated nav entry is expected once Feed absorbs it in a later release. Bookmark hq.verinode.ai/signals in the meantime.
The page's sticky title reads Feed (a naming holdover from that in-progress consolidation), but the content underneath it is the network signal deck:
- A hero band with the total count of open signals and three secondary figures: Critical, High + Medium, and Resolved 30d.
- Critical & High Severity, a row of tiles for every open signal at those two severities.
- By Domain, a row grouping open signals by the operational area they fall under (Certifications, Compliance, Sales & Marketing, and so on). Clicking a domain tile does not filter the list yet; it is a summary row only.
- Recent, signals detected in the last 7 days.
- Resolved, signals closed in the last 30 days.
When nothing is open, the hero reads: "No open network-level signals. The aggregator surfaces a signal here when ≥30% of active members hit the same pattern within a severity threshold." That line is the whole mechanism in one sentence: a signal only exists once a real share of your active membership independently hits the same thing. One franchisee having a problem is never a network signal; it stays that operator's own business.
Click any tile in Critical & High Severity, Recent, or Resolved to open the detail panel this article covers.
The detail panel: reach, before roster
Before the named list, the panel opens with three chips (severity, domain, status) and four reach figures, so you know how big and how current the pattern is before you look at names:
- Affected, the headline count, with "of N franchisees" underneath when a total is on record.
- Network reach, that count expressed as a percentage of active members.
- Fire threshold, the minimum share the aggregator required before this severity was allowed to trip. Thresholds are steeper for higher severities and looser for lower ones, so a Critical signal at 35% reach and a Low signal at 35% reach did not clear the same bar.
- Detected, the date and time the pattern first tripped, with a Resolved line underneath once it has been closed out.
The status chip reads New, Seen, or Resolved. The domain chip is Title Case (Certifications, Compliance, Carrier Denial, and so on); the one deliberate exception is the operator Sales & Marketing domain, which reads Sales & Marketing here too rather than "Growth," so it never gets confused with HQ's own Growth & Retention area (franchisee recruiting).
The affected franchisees roster
Below the reach figures sits Affected franchisees, the roster itself. What renders depends on what the aggregator captured for this particular signal:
- While it loads, the panel reads "Loading…"
- If the load fails, it reads "Couldn't load the affected roster. Refresh and try again."
- If the signal predates per-franchisee capture (see the fallback section below), it reads: "This signal predates the per-franchisee roster capture (2026-05-24). The next nightly aggregator run will populate the list; until then only the affected count is recorded."
- If the roster is available but genuinely empty, it reads "No affected franchisees recorded."
- Once populated, it is a plain list, sorted alphabetically by display name, one row per franchisee, each with:
- The franchisee's name on the left. - An "Open profile →" link on the right.
Alphabetical is the only sort; the roster does not re-order by how recently a franchisee tripped the signal or by any severity of its own. If you are working a long list, that means scanning top to bottom rather than expecting the worst offenders to surface first.
The Affected count at the top of the panel and the number of rows in this roster should always match: the aggregator writes both together, in the same nightly pass, for the same signal. They are stored as two different values under the hood (a summary count column, and a separate list captured in the signal's evidence), which is worth knowing only because it explains the one case where they can fall out of sync: the fallback below.
- 1Open a signal from Critical & High Severity, Recent, or Resolved.
- 2Read Affected, Network reach, and Fire threshold to judge how material the pattern is before looking at names.
- 3Scroll to Affected franchisees and scan the alphabetical list.
- 4Click Open profile on any row that needs a direct look or a call.
Open profile
Clicking Open profile takes you to that member's page (a ?member= deep link into the Network view). What you land on is that franchisee's own rollups: their standing, their trend, their compliance state, the same kind of aggregate picture you'd get looking them up directly in the network. See Network health for what that view shows. It does not hand you the specific transaction, job, or dollar figure that tripped this particular signal; it hands you the person and the context so you can ask them directly.
The pre-2026-05-24 count-only fallback
Per-franchisee roster capture is a feature the aggregator gained on May 24, 2026. Any group signal detected before that date, if it is still open, was written without a list of contributing operator IDs, only a total count. Opening one of those older signals today shows the fallback message quoted above instead of a roster, because there is nothing to render, not a suppressed list, an absent one.
Note
This only affects signals that were already open and never resolved before the capture date. Every signal detected on or after 2026-05-24 carries the full roster. As your open-signal backlog resolves and gets replaced by freshly detected ones, this fallback naturally becomes rarer.
Where the HQ boundary sits
This is the part worth being precise about, because it is the whole reason the roster looks the way it does.
What you see: which named locations a pattern hit, how many, what share of the network that represents, how severe, and when. That is a statement about coverage: enough franchisees hit the same thing, independently, that it stopped being one operator's problem and became a network pattern worth HQ's attention.
What you never see through this list: the underlying private numbers that caused any one franchisee's row to be on it. The roster does not carry dollar figures, job details, client or vendor names, or performance data belonging to any individual member. A name (or an anonymized code, see below) and an "Open profile" link, nothing more, is what each row is built from.
This is deliberate, not incidental. Franchisees own their own data. Verinode HQ's job is to show leadership where a pattern is landing across the network, not to become a window into any single location's private business. The roster is calibrated exactly to that line: specific enough to act on ("go talk to these six locations about their cert renewals"), never specific enough to substitute for that location's own numbers.
Names or anonymized codes, depending on your network's entity model
How a franchisee's name is displayed on the roster depends on how your group is configured:
- Multi-location enterprises operating as one legal entity see real location names on every row. There is nothing to anonymize: it is one company's own locations, and HQ is that company's own leadership looking at its own data.
- Independent-operator networks (the default, and the more common shape for classic franchise systems) see each row anonymized to a stable code, formatted as "Franchisee #XXXX". The code is derived from that operator's own record so the same franchisee always shows the same code across every signal you open, letting you track a repeat offender over time without ever learning their name from this list alone. If you need the name, Open profile still resolves to the right person; the anonymization is a display choice on this list, not a lock on the underlying member record.
Which mode your network runs in is a setup decision made when your group was configured, not something you toggle from this page.
Empty states, in full
Every row on the Signals page degrades gracefully rather than leaving you guessing whether something is broken:
- Hero, zero open signals: "No open network-level signals. The aggregator surfaces a signal here when ≥30% of active members hit the same pattern within a severity threshold."
- Critical & High Severity, none open: "No critical or high-severity signals currently open across the network."
- By Domain, nothing to group: "No open signals to group by domain."
- Recent, nothing in the last 7 days: "No new signals detected in the last 7 days."
- Resolved, nothing closed in the last 30 days: "No signals resolved in the last 30 days."
- Affected franchisees, the four states covered above: loading, load error, pre-capture fallback, and the empty "No affected franchisees recorded."
None of these are errors. A quiet Signals page is a healthy network; the copy says so rather than showing a blank panel that reads as broken.
Best-practice example
Say Critical & High Severity shows a tile reading "8 of 42 franchisees affected" for a certifications pattern. Network reach shows 19%, comfortably past the Fire threshold shown for Critical. You open it, scroll past the reach figures, and the roster lists eight rows, real names because your network runs as one enterprise. Rather than emailing all 42 locations a generic reminder, you open profile on the three that are also showing compliance drift on their own pages and call them directly, while the other five get a lighter-touch nudge through Broadcast. The roster turned "19% of the network has a cert problem" into a short, specific call list, without ever pulling up any of the eight franchisees' underlying job or financial data to get there.
Related
- Network health: what "Open profile" resolves to, and how the aggregate rollups you land on are built.
- HQ overview: how Signals fits alongside Decisions, Broadcast, and the rest of the HQ shell.
- HQ compliance: the domain most Certifications- and Compliance-flavored signals feed into.
Data sources
- 1.the network data, written by the hq-aggregate-refresh nightly cron. Verinode platform.
- 2.the network data, resolved through loadOfficeNameMap. Verinode platform.