Skip to content

Brand your status page

A status page has a light and a dark theme, and visitors can switch between them. Branding covers both: colours that stay readable in each theme, a logo per theme, header and footer text, and custom CSS. Every field is listed in the reference.

  1. Open the status page and go to Branding.

  2. Under Theme, set the Primary Color (the page title and the subscribe heading) and the Accent Color (links, the Subscribe button, focus rings and the response time line). With no accent colour, the primary colour is used for both.

  3. Check the Preview at the top of the tab. It draws the page in both themes with the colours the page will actually use.

  4. Click Save Settings.

The page keeps your colours readable. In each theme it uses a colour as given when it meets WCAG 2.2 AA against the page’s backgrounds (4.5:1 for text, 3:1 for focus rings and the chart line), and otherwise the nearest lighter or darker shade of the same hue that does. A bright yellow accent, for example, shows as a deep olive in the light theme and as itself in the dark one. No colour reaches 4.5:1 on both backgrounds, so most brand colours shift in one theme. When you pick a colour that will be shifted, the dashboard shows its contrast ratio and the shade the page uses instead.

The Logo shows in the header in both themes. Add a Dark theme logo when your logo is drawn for a light background, such as dark lettering: the dark theme then shows it instead. With only a dark theme logo set, the light theme shows the page title.

In the dashboard, use Upload next to each image under Images. Through the API, request an upload with "file_type": "logo_dark" and save the returned key as logo_dark_s3_key, as described in the asset upload flow. Logos can be PNG, JPEG, SVG or WebP up to 2 MB.

A save changes only the fields it sends. To remove a value, send null:

Terminal window
curl -X PUT https://api.siteqwality.com/status_page/$STATUS_PAGE_ID/branding \
-H "Authorization: Bearer $SITEQWALITY_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "footer_text": null, "accent_color": null, "logo_dark_s3_key": null }'

Each field goes back to its default: no footer text, the primary colour as the accent, and the light logo in both themes. Clearing an image key also deletes its file. Fields you leave out keep their values, and blank text clears a field just like null.

In the dashboard, empty a text field and save, use Reset next to a colour, or Remove next to an image. Images save as soon as they upload or are removed; the other fields save with Save Settings.

Custom CSS loads after the page’s own styles. Target the page through its data-sq attributes. These names are the supported surface and stay the same between releases; class names and the element structure can change without notice.

/* A taller logo */
[data-sq="logo"] { height: 3rem; }
/* A serif page title */
[data-sq="title"] { font-family: Georgia, serif; }
/* Keep the uptime bars but hide the percentage */
[data-sq="uptime-percentage"] { display: none; }
/* Underline the names of components that are down */
[data-sq="component"][data-sq-status="down"] [data-sq="component-name"] {
text-decoration: underline wavy;
}
/* A different header background in the dark theme */
.dark [data-sq="header"] { background: #101418; }

Every region carries data-sq="<name>":

NameElement
headerThe page header: logo, title, header text and the theme switch.
titleThe heading that holds the logo or the page title.
logoThe logo image. With a dark theme logo there are two, marked data-sq-theme="light" and data-sq-theme="dark", and only the one for the current theme is displayed.
header-textThe line under the title: your header text, or “System Status”.
theme-toggleThe light and dark switch.
mainEverything between the header and the footer.
statusThe headline status banner.
incidentsThe open incidents section.
incidentOne incident: open, in the history, or on its own page.
maintenanceThe maintenance section.
maintenance-itemOne maintenance window.
componentsThe card that lists the components.
groupOne section of components.
componentOne component row.
component-nameA component’s name.
component-statusA component’s status dot and label.
uptime-percentageA component’s uptime figure.
uptime-barsA component’s daily uptime bars.
historyPast incidents, on the main page and the history page.
subscribeThe email subscription form.
footerThe footer.
footer-textYour footer text.
AttributeOnValues
data-sq-statusstatusoperational, degraded_performance, partial_outage, major_outage, under_maintenance, unknown
data-sq-statuscomponentoperational, degraded, down, paused, maintenance, unknown. Absent until the first reading.
data-sq-statusincidentinvestigating, identified, monitoring, resolved
data-sq-statusmaintenance-itemscheduled, in_progress, completed
data-sq-severityincidentminor, major, critical
data-sq-kindcomponenthttp, browser
data-sq-component-idcomponentThe HTTP check or browser check id.
data-sq-group-idgroupThe group id. Absent on the section of ungrouped components.
data-sq-themelogolight, dark

The page draws from CSS custom properties. Set them in :root for the light theme and in .dark for the dark theme. Custom CSS wins over the page’s own values in both themes, so a value set only in :root applies to the dark theme too.

VariableUsed for
--sq-page, --sq-panel, --sq-panel-altPage background, cards, and raised areas inside cards.
--sq-edgeBorders and dividers.
--sq-body, --sq-muted, --sq-faintMain, secondary and tertiary text.
--sq-wordmarkThe page title and the subscribe heading.
--sq-accentFocus rings, the response time line and other non-text accents.
--sq-accent-textLinks.
--sq-accent-fill, --sq-on-accentThe Subscribe button and text selection, and the label on them.
--sq-bar-up, --sq-bar-partial, --sq-bar-down, --sq-bar-noneUptime bar colours.
:root { --sq-page: #ffffff; --sq-panel: #ffffff; }
.dark { --sq-page: #0d1117; --sq-panel: #161b22; }