Skip to main content

Configuration

The config.json file controls your status page's appearance, behavior, and integrations.

Basic Configuration

Here's a minimal configuration to get started:

config.json
{
"domain": "https://status.example.com",
"siteSettings": {
"siteName": "My Status Page",
"siteDescription": "Service status for My Company"
},
"github": {
"owner": "your-username",
"repo": "your-repo-name"
}
}

Full Configuration Reference

Site Settings

{
"domain": "https://status.example.com",
"majorOutageThreshold": 2,
"siteSettings": {
"siteName": "My Status Page",
"siteDescription": "Service status for My Company",
"metaColor": "#3b5998"
}
}
PropertyTypeDefaultDescription
domainstringRequiredFull URL of your status page
majorOutageThresholdnumber2Consecutive failures before marking as "Major Outage"
siteSettings.siteNamestringRequiredDisplay name shown in header
siteSettings.siteDescriptionstring""Description shown below the title
siteSettings.metaColorstring"#3b5998"Theme color for browser/embed meta tags

GitHub Integration

{
"github": {
"owner": "your-username",
"repo": "your-repo-name",
"issuesLabel": "incident",
"manualMonitorLabel": "manual",
"maintenanceLabel": "maintenance",
"announcementLabel": "announce"
}
}
PropertyTypeDefaultDescription
ownerstringRequiredGitHub username or organization
repostringRequiredRepository name
issuesLabelstring"incident"Label for incident issues
manualMonitorLabelstring"manual"Label for manual status updates
maintenanceLabelstring"maintenance"Label for maintenance windows
announcementLabelstring"announce"Label for announcements
tip

Create these labels in your GitHub repository before using them. Go to Issues > Labels > New label.


Design Options

{
"design": {
"useLogo": "/img/logo.png",
"logoDimensions": {
"width": 200,
"height": 50
},
"showSiteName": true,
"showDescription": true,
"showOverallStatus": true,
"footer": {
"enabled": true,
"credits": true
},
"statusDot": {
"enabled": {
"group": true,
"monitor": true
},
"animation": {
"group": false,
"monitor": "ping"
}
},
"recentIncidents": {
"active": true,
"number": 5
},
"incident": {
"showCommentAuthor": true,
"showGithubLink": true
},
"announcement": {
"showIcon": true,
"showTitle": true,
"showCommentAuthor": false,
"showGithubLink": true
}
}
}

Logo & Header

PropertyTypeDefaultDescription
useLogostringnullPath to logo image (relative to static/)
logoDimensions.widthnumber200Logo width in pixels
logoDimensions.heightnumber50Logo height in pixels
showSiteNamebooleantrueShow site name in header
showDescriptionbooleantrueShow description below header
showOverallStatusbooleantrueShow overall status banner
PropertyTypeDefaultDescription
footer.enabledbooleantrueShow footer
footer.creditsbooleantrueShow "Powered by Shadow Development" credit

Status Indicators

PropertyTypeDefaultDescription
statusDot.enabled.groupbooleantrueShow status dot on groups
statusDot.enabled.monitorbooleantrueShow status dot on monitors
statusDot.animation.groupstring/booleanfalseAnimation for group dots ("ping", "pulse", or false)
statusDot.animation.monitorstring/boolean"ping"Animation for monitor dots

Incidents & Announcements

PropertyTypeDefaultDescription
recentIncidents.activebooleantrueShow recent resolved incidents
recentIncidents.numbernumber5Number of recent incidents to show
incident.showCommentAuthorbooleantrueShow author on incident updates
incident.showGithubLinkbooleantrueLink to GitHub issue
announcement.showIconbooleantrueShow icon on announcements
announcement.showTitlebooleantrueShow title on announcements

Overall Status Text

Customize the messages shown in the overall status banner:

{
"overallStatusText": {
"operational": "All systems are running smoothly.",
"degraded": "Some systems are experiencing issues.",
"major": "We're experiencing a major outage.",
"maintenance": "Scheduled maintenance is in progress."
}
}

Status Levels

Define the available status levels for incidents and monitors:

{
"statusLevels": {
"operational": {
"label": "Operational",
"color": "success",
"priority": 0
},
"degraded": {
"label": "Degraded Performance",
"color": "warning",
"priority": 1
},
"partial": {
"label": "Partial Outage",
"color": "warning",
"priority": 2
},
"major": {
"label": "Major Outage",
"color": "error",
"priority": 3
},
"maintenance": {
"label": "Under Maintenance",
"color": "info",
"priority": 4
}
}
}
PropertyTypeDescription
labelstringDisplay text for this status
colorstringColor theme: "success", "warning", "error", or "info"
prioritynumberHigher number = worse status. Used to determine overall/group status
Priority Logic

When calculating overall or group status, the system uses the highest priority among all monitors. For example, if one monitor is major (priority 3) and others are operational (priority 0), the overall status shows "Major Outage".

Exception: maintenance (priority 4) only applies during active maintenance windows, not as a "worst" status.


Notifications

Configure Discord and webhook notifications:

{
"notifications": {
"defaultEnabled": true,
"numberOfDown": 1,
"discord": {
"enabled": true,
"defaultPingRole": "",
"pingForReturn": false
},
"webhook": false
}
}
PropertyTypeDefaultDescription
defaultEnabledbooleantrueEnable notifications by default for monitors
numberOfDownnumber1Consecutive failures before sending notification
discord.enabledbooleanfalseEnable Discord notifications
discord.defaultPingRolestring""Role to ping: "" (none), "everyone", "here", or role ID
discord.pingForReturnbooleanfalsePing when service recovers
webhookbooleanfalseEnable generic webhook notifications

See the Notifications guide for detailed setup instructions.


Complete Example

Click to expand full config.json example
config.json
{
"domain": "https://status.example.com",
"majorOutageThreshold": 2,
"siteSettings": {
"siteName": "Example Status",
"siteDescription": "Real-time status for Example services",
"metaColor": "#3b5998"
},
"github": {
"owner": "example-org",
"repo": "status-page",
"issuesLabel": "incident",
"manualMonitorLabel": "manual",
"maintenanceLabel": "maintenance",
"announcementLabel": "announce"
},
"design": {
"useLogo": "/img/logo.png",
"logoDimensions": {
"width": 200,
"height": 50
},
"showSiteName": true,
"showDescription": false,
"showOverallStatus": true,
"footer": {
"enabled": true,
"credits": true
},
"statusDot": {
"enabled": {
"group": true,
"monitor": true
},
"animation": {
"group": false,
"monitor": "ping"
}
},
"recentIncidents": {
"active": true,
"number": 5
},
"incident": {
"showCommentAuthor": false,
"showGithubLink": true
},
"announcement": {
"showIcon": true,
"showTitle": false,
"showCommentAuthor": false,
"showGithubLink": true
}
},
"overallStatusText": {
"operational": "All systems are running smoothly.",
"degraded": "Some systems are experiencing issues.",
"major": "We're experiencing a major outage.",
"maintenance": "Scheduled maintenance is in progress."
},
"statusLevels": {
"operational": {
"label": "Operational",
"color": "success",
"priority": 0
},
"degraded": {
"label": "Degraded Performance",
"color": "warning",
"priority": 1
},
"partial": {
"label": "Partial Outage",
"color": "warning",
"priority": 2
},
"major": {
"label": "Major Outage",
"color": "error",
"priority": 3
},
"maintenance": {
"label": "Under Maintenance",
"color": "info",
"priority": 4
}
},
"notifications": {
"defaultEnabled": true,
"numberOfDown": 1,
"discord": {
"enabled": true,
"defaultPingRole": "",
"pingForReturn": false
},
"webhook": false
}
}