Integrations
Every integration is optional. Each one reads its own environment
variables; when they're absent the feature silently hides — no broken
tiles, no error banners, no noise. The wall dashboard drops the tile;
the public board drops the mention; GET /api/public-config
reports the feature as false.
Configure in .env, then restart the service.
Google Chat notifications
Posts incident announcements and updates to a Google Chat room.
GOOGLE_CHAT_WEBHOOK_URL=https://chat.googleapis.com/v1/spaces/…/messages?key=…&token=…
Create the webhook in the target space: space name → Apps
& integrations → Webhooks → add. Paste the
URL into .env. Off when empty.
PagerDuty (P1 incidents tile)
Shows currently-active P1 - Critical incidents from a PagerDuty account on the wall dashboard.
| Variable | Purpose |
|---|---|
PAGERDUTY_USER_API_KEY |
PagerDuty user API token (read-only recommended) |
PD_P1_PRIORITY_ID |
ID of the priority treated as P1 (from the PagerDuty web UI URL) |
PD_NE_EP_ID |
Escalation policy ID used to scope "on-call" views, if desired |
The PagerDuty tile appears when PAGERDUTY_USER_API_KEY
is set. Without a priority ID configured, the tile still works but may
match more incidents — set PD_P1_PRIORITY_ID to pin it to
critical-only.
Circuit Incidents tile (circuit monitoring via PagerDuty)
Surfaces incidents from a dedicated circuit-monitoring service (e.g. your ISP/circuit watchdog) mapped to physical sites.
| Variable | Purpose |
|---|---|
PAGERDUTY_CIRCUIT_SERVICE_NAME or
PAGERDUTY_CIRCUIT_SERVICE_ID |
The dedicated service whose incidents are circuit outages |
lib/circuit_clinic_map.json |
Map of circuit/site identifiers to your locations (start from
{} and extend) |
Requires the PagerDuty integration to be configured as well. Tile hides when any piece is missing.
OPManager (device up/down)
Shows devices currently down or warning from ManageEngine OPManager.
| Variable | Purpose |
|---|---|
OPMANAGER_API_URL |
Base URL, e.g.
https://opmanager.example.local:8080 |
OPMANAGER_API_TOKEN |
API token (preferred auth) |
OPMANAGER_API_NAME +
OPMANAGER_API_KEY |
Legacy auth pair (used when no token) |
OPMANAGER_IGNORE_DEVICES |
Comma-separated device names to exclude from the tile |
Tile appears when the URL and any credential pair are set.
Zoho Desk (P1-Critical tickets)
Shows open P1-Critical tickets from Zoho Desk.
| Variable | Purpose |
|---|---|
ZOHO_CLIENT_ID / ZOHO_CLIENT_SECRET /
ZOHO_REFRESH_TOKEN |
OAuth credentials from a Zoho API client |
ZOHO_ORG_ID |
Numeric Zoho org ID (sent as the orgId header) |
ZOHO_ORG_SLUG |
Org URL slug, used to build deep links to tickets in Zoho |
Refresh tokens are exchanged by the app as needed. Tile appears when the OAuth trio and org ID are present.
Power outage monitoring (FEMA EAGLE-I)
Shows known power outages near your locations. Uses the public FEMA EAGLE-I API — no credentials, no signup.
| Variable / file | Purpose |
|---|---|
lib/clinics_fips.json |
FIPS county codes to watch. Start from {} — the feature
stays off. Add county FIPS codes for the areas you care about. |
POWER_OUTAGE_API_* |
Override the API base/endpoint only if FEMA changes it |
The tile (and the location map's power layer) activates when the FIPS file contains at least one county.
Unconfigured behavior (for planners)
| Unconfigured | What users see |
|---|---|
| Subscribe form notes email isn't available; nothing sends | |
| Google Chat | Nothing — silent |
| Any wall tile | Tile absent from /wall |
| All integrations | Board is still fully functional for its core job: incidents + maintenance + subscriptions |
This is checked at startup and logged:
[CONFIG] Features: email=NOT CONFIGURED, googleChat=NOT CONFIGURED, pagerduty=configured, ...
If a tile you expected is missing, that log line is the first place to look.