All posts
2 min readstatus pages

Status page branding without the vendor badge tax

Upload a logo and a favicon to your gochron status page and it renders as your brand. Free tier shows a small "Powered by gochron" line; paid tiers hide it entirely. Here's how the storage + plan projection works.

Public status pages now support per-page logos and favicons. Upload an image in the dashboard, the public page renders it in place of the gochron wordmark, and the browser tab carries your favicon instead of ours.

This is the kind of feature you'd usually expect to find behind a "white label add-on" line item in a competitor's enterprise plan. It isn't here. The free tier gets the logo and the favicon; what changes between tiers is only the small "Powered by gochron" line in the page footer.

A gochron-hosted public status page rendered with a customer wordmark
in the header, a green

What you see

Open any status page in the dashboard and there's now a Branding card alongside the existing Monitors and Subscribers cards. Drop in a logo (PNG, JPEG, WebP, or SVG, up to 2 MB), an optional dark-mode variant, and a favicon (PNG or SVG, also up to 2 MB). Each slot shows an immediate preview. Save, and the public page picks them up on the next render.

The Branding card in the gochron dashboard, with three upload slots:
Logo, an optional dark-mode logo, and Favicon. The Logo and Favicon
slots show a customer wordmark already
uploaded.

The logo replaces the gochron wordmark at the top of the public page. The favicon goes into the <link rel="icon"> tag, so it shows up in browser tabs, bookmarks, and on the desktop home screen if a user "adds to home screen" from mobile. If you upload a dark-mode logo, the public page serves that variant when the visitor's browser is in dark mode; otherwise the main logo is used for both.

How storage works

Uploads land in object storage (the bucket configured at deploy time, S3 or any S3-compatible target) under a per-org prefix. The status page row carries just the object keys, not the bytes. Public reads stream the file out through a signed URL with a long cache lifetime, so the favicon doesn't add a request to the critical path of every page view.

Delete is a real delete: the object is removed from the bucket, the row is cleared, and the public page falls back to the gochron defaults. No soft-delete, no "marked for cleanup later." The state on disk matches the state in the database.

Plan-aware projection

Branding visibility is decided when the public status page is rendered, not when the assets are uploaded. The dashboard always lets you upload the logo and favicon, regardless of tier. The public renderer reads the org's plan and decides what to show:

  • Free: logo + favicon render normally. A small "Powered by gochron" link appears in the page footer.
  • Pro / Pro+ / Team: same logo + favicon, footer line hidden.

This is deliberate. The features people care about (your brand on your status page, your favicon in your customers' browser tabs) work at every tier. The thing that changes is one small line of footer text. Free is a real product, not a trial. Paid is a small, honest upgrade for the customers who care about it being entirely unbranded.

Where to find it

Open any status page in the dashboard, scroll to Branding, and the upload controls are there. Both fields are optional: leave them blank and the public page falls back to gochron defaults exactly as it does today.