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.

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 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.