From 4385014e71d6e538516f621bcb6b302331704be5 Mon Sep 17 00:00:00 2001
From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com>
Date: Wed, 15 Jul 2026 00:41:51 +0000
Subject: [PATCH] docs: document organization brand appearance settings
---
...omizing-the-appearance-of-your-project.mdx | 77 +++++++++++++++++++
1 file changed, 77 insertions(+)
diff --git a/references/workspace/customizing-the-appearance-of-your-project.mdx b/references/workspace/customizing-the-appearance-of-your-project.mdx
index 0ea345ed..964db9cc 100644
--- a/references/workspace/customizing-the-appearance-of-your-project.mdx
+++ b/references/workspace/customizing-the-appearance-of-your-project.mdx
@@ -55,3 +55,80 @@ Open the dashboard settings modal to pick a palette for a dashboard. Tiles in th
### Setting a chart-level palette
In the chart editor, the palette picker is at the top of the **Series** tab (cartesian and pie charts) and the **Steps** tab (funnel charts). The preview reflects the staged palette before you save; the override only persists when you click **Save changes**.
+
+## Brand appearance
+
+Under `Organization settings` --> `Appearance`, organization admins can also configure a **Brand appearance** for the org. This stores your brand's domain, logos, fonts, and colors alongside the color palettes above, and drives branded UI surfaces in Lightdash.
+
+
+ Brand appearance relies on a [Brandfetch](https://brandfetch.com/) integration to detect a brand from its domain. On Lightdash Cloud this is configured for you. On self-hosted or OSS deployments the section is hidden until the integration is configured on the instance and a brand has been fetched. The `hasBrandfetch` flag on `GET /health` indicates whether the current instance can detect new brands.
+
+
+### Editing your brand
+
+Open `Organization settings` --> `Appearance` --> **Brand appearance**. You'll see a form containing:
+
+- **Domain** — your brand's domain (for example, `ecom-store.com`). Used as the identifier when fetching brand information.
+- **Colors** — the palette detected for your brand. Each color has a hex value and a classification: `brand`, `accent`, `dark`, `light`, or `other`. You can add new colors, remove existing ones, edit a hex value, or re-classify a color.
+- **Fonts** — the title and body font families associated with your brand. These are shown as read-only for now; a font picker is not yet available.
+- **Logos** — the light and dark logos for your brand. Logos are populated by the Brandfetch integration only — direct logo upload is not exposed in the UI.
+
+### Refreshing from Brandfetch
+
+Next to the domain field is a refresh icon. Clicking it calls Brandfetch for the current domain and replaces the form with the freshly detected brand **without persisting** anything — you can review the change and either keep it (by saving) or discard it (by reverting).
+
+- The refresh icon is grey when the domain has not been edited and blue when it differs from the saved brand.
+- The fetch is fully revertible up until you click **Save changes**.
+
+### Saving and reverting
+
+Any edit — including a Brandfetch refresh — opens an **Unsaved changes** footer with **Revert** and **Save changes** buttons. Nothing is persisted to your organization until you click **Save changes**. **Revert** restores the last saved brand.
+
+### Live preview
+
+Alongside the form, a minimal app-window mock previews how your brand will look in Lightdash:
+
+- The nav bar renders in your primary brand color with your current logo.
+- A sample dashboard title and description use your configured title and body fonts.
+- Sample charts are drawn with your brand colors.
+
+The preview updates live as you edit, so you can see the impact of a color re-classification or a Brandfetch refresh before saving.
+
+### Brand API endpoints
+
+The brand appearance settings are backed by three endpoints under the organization API:
+
+| Method | Path | Purpose |
+| ------ | ------------------- | --------------------------------------------------------------------------------------------------- |
+| `GET` | `/org/brand` | Return the organization's currently saved brand, or `null` if none is stored. |
+| `POST` | `/org/brand/fetch` | Fetch a brand from Brandfetch for a given domain without persisting it. Used to power the preview. |
+| `PUT` | `/org/brand` | Persist the edited brand payload (domain, colors, fonts, logos) exactly as provided. |
+
+Example — fetch a brand for a domain without saving:
+
+```bash
+curl -X POST 'https:///api/v1/org/brand/fetch' \
+ -H 'Content-Type: application/json' \
+ -d '{ "domain": "ecom-store.com" }'
+```
+
+Example — save the edited brand payload:
+
+```bash
+curl -X PUT 'https:///api/v1/org/brand' \
+ -H 'Content-Type: application/json' \
+ -d '{
+ "domain": "ecom-store.com",
+ "name": "Ecom Store",
+ "description": "Sample brand for illustration",
+ "logos": [],
+ "colors": [
+ { "hex": "#1f6feb", "type": "brand" },
+ { "hex": "#f5a524", "type": "accent" }
+ ],
+ "fonts": [
+ { "name": "Inter", "type": "title" },
+ { "name": "Inter", "type": "body" }
+ ]
+ }'
+```