Skip to main content

Customize your organization's logo

Goal

You'll replace the default MeasuredCloud wordmark in the sidebar with your own organization's logo, so everyone in your org sees your brand. You can set a light-theme and a dark-theme variant; the sidebar picks the right one for each viewer's theme.

Prereqs

  • You're an organization admin (super admin / owner). The Branding settings page and the upload endpoint are gated to the org-admin tier — a workspace admin, technical admin, editor, or viewer can't change the logo (they still see it).
  • A logo image, 256 KB or smaller, in one of: PNG, JPEG, or SVG.
  • Optionally, a second variant tuned for dark backgrounds.

Steps

  1. Navigate to Settings → Branding. Non-admins don't see this tab; an admin who deep-links a non-admin to it gets a clear "you don't have permission" banner rather than a broken form.

  2. Choose a light-theme logo. Click Choose file under "Light theme logo" and pick your image. A live preview appears on a light swatch. The preview swaps the wordmark for your image so you can confirm it before saving.

  3. (Optional) Choose a dark-theme logo. Do the same under "Dark theme logo" — the swatch is dark so you can check contrast. If you skip this, the sidebar uses your light variant in dark mode too (and vice-versa); only when neither variant is set does it fall back to the MeasuredCloud wordmark.

  4. Click "Save logo". MeasuredCloud validates each variant's type and size, stores it, and the sidebar updates immediately — no reload.

  5. To revert, click Reset to default. This removes both variants and the sidebar goes back to the MeasuredCloud wordmark.

Verify

  • The sidebar header shows your logo (top-left), not the wordmark.
  • Toggle your theme (the sun/moon control at the bottom of the sidebar) and confirm the right variant shows in each theme.
  • Ask a teammate who is not an admin to reload — they see your logo too (the logo is readable by every org member), but their Settings has no Branding tab.

Notes

  • No default is stored in the database. "Unset" means the UI falls back to the MeasuredCloud wordmark at render time, so resetting truly returns you to the built-in mark.
  • The logo is org-level, not workspace-level — it's the same across every workspace in your organization. (The org id and active workspace id, formerly on the removed Settings → Organization page, now live at the bottom of this Branding page.)
  • The image bytes are stored in the public.org_branding table (a light variant, a dark variant, and a per-variant content type for each), capped at 256 KB per variant. The two variants can be different formats — e.g. an SVG light mark and a PNG dark one. Nothing here is secret — the logo is shown to everyone — so it isn't encrypted or redacted.
  • SVG is allowed and recommended for crisp scaling. Treat it like any uploaded asset and only upload SVGs you trust — the API serves an SVG variant with X-Content-Type-Options: nosniff and a sandboxed Content-Security-Policy so that even an SVG opened directly can't execute embedded script.
  • See #647 for the tracking ticket and the API reference (the Branding row) for the endpoint shapes.