Frazil
Live
Poll
Never refreshed
✎ Edit mode — drag widgets or groups to reorder
Ad-hoc query runner
Awaiting query…
Saved queries
No saved queries yet. Run a query and click ⊕ Save to save it.
Admin
Users
UsernameEmailRoleBoardLast login
Boards
BoardMembersWidgetsMin recompute
API key (global)
Notification channels — where alerts get delivered (Slack webhook or email)
NameTypeTargetEnabled
Threshold rules — per-widget conditions that fire a channel on each ok→firing transition
WidgetConditionChannelStateLast fired
Recent firings — last 100 alert evaluations that crossed into firing
TimeWidgetValueThresholdChannelDelivered
Query timeout — how long a MySQL query is allowed to run before being killed
The server kills any single SELECT that exceeds this many seconds. The default is set by the MYSQL_QUERY_TIMEOUT env var (currently s). Raise it here if widgets are consistently timing out. Per-widget overrides can be set in the widget editor (global admins only).
Server caches — flush after editing a filter template, CPM rules, or any widget SQL referenced by these caches
The server caches two heavy reads. Filtered-snap caches widget results per filter-value combination so repeated filter clicks are instant. CPM eligible stores caches the latest-row-per-store scan of fraznetapp_cpm for the {{cpm_eligible_stores}}/{{cpm_latest}} tokens. Both refill on the next request after a flush.
HubSpot API connection — Private App token used by Python widgets
Paste a HubSpot Service Key token (or legacy Private App token). Widgets running Python get it as the HUBSPOT_TOKEN environment variable. Step-by-step setup ↗
HubSpot query library — reusable Python snippets users can drop into widgets
NameDescriptionUpdated
HubSpot dashboards (PNG snapshots) — snapshot URLs you can drop into Presenter mode
LabelDashboard IDLast snapshotPagesDark modeKiosk URL
Other external dashboards (Genesys, Salesforce, generic) — snapshot URLs you can drop into Presenter mode
LabelKindLast snapshotPagesDark modeKiosk URL
After adding a source you need to seed its login session once:
python bootstrap_session.py --source <source_id> on your local machine, then scp the resulting JSON to the server path shown.
Frazil Dashboard
Frazil
Live
Poll
Never refreshed
✎ Edit mode — drag widgets or groups to reorder
Ad-hoc query runner
Awaiting query…
Saved queries
No saved queries yet. Run a query and click ⊕ Save to save it.
Admin
Users
UsernameEmailRoleBoardLast login
Boards
BoardMembersWidgetsMin recompute
API key (global)
Notification channels — where alerts get delivered (Slack webhook or email)
NameTypeTargetEnabled
Threshold rules — per-widget conditions that fire a channel on each ok→firing transition
WidgetConditionChannelStateLast fired
Recent firings — last 100 alert evaluations that crossed into firing
TimeWidgetValueThresholdChannelDelivered
Query timeout — how long a MySQL query is allowed to run before being killed
The server kills any single SELECT that exceeds this many seconds. The default is set by the MYSQL_QUERY_TIMEOUT env var (currently s). Raise it here if widgets are consistently timing out. Per-widget overrides can be set in the widget editor (global admins only).
Server caches — flush after editing a filter template, CPM rules, or any widget SQL referenced by these caches
The server caches two heavy reads. Filtered-snap caches widget results per filter-value combination so repeated filter clicks are instant. CPM eligible stores caches the latest-row-per-store scan of fraznetapp_cpm for the {{cpm_eligible_stores}}/{{cpm_latest}} tokens. Both refill on the next request after a flush.
HubSpot API connection — Private App token used by Python widgets
Paste a HubSpot Service Key token (or legacy Private App token). Widgets running Python get it as the HUBSPOT_TOKEN environment variable. Step-by-step setup ↗
HubSpot query library — reusable Python snippets users can drop into widgets
NameDescriptionUpdated
HubSpot dashboards (PNG snapshots) — snapshot URLs you can drop into Presenter mode
LabelDashboard IDLast snapshotPagesDark modeKiosk URL
Other external dashboards (Genesys, Salesforce, generic) — snapshot URLs you can drop into Presenter mode
LabelKindLast snapshotPagesDark modeKiosk URL
After adding a source you need to seed its login session once:
python bootstrap_session.py --source <source_id> on your local machine, then scp the resulting JSON to the server path shown.
Frazil Dashboard
Menu
Board
Data
Poll interval
Account