Settings → General at /settings/site is the one settings screen documented in full here, because it is the only one with no other owner. Its header reads “General — Site title, domain, branding, and default content configuration.” Everything on it saves as you type, and nothing on it reaches your published site until you deploy.
Who can edit it
Seeing the screen needs company:read, whose floor is Read Only — so every member except Restricted gets the General card on the Settings grid and can read what is on it.
Saving needs company:write, whose floor is Content Publisher. Below that role every input on the screen is disabled, along with the Logo and Favicon buttons and the Domain Connect button. The full ladder is at roles and permissions.
The five sections
The screen is a single stack, always in this order:
- General Details — title, description, the domain pair, logo and favicon.
- Socials — four handle fields.
- Documentation — the whole shape of your documentation site.
- MCP Configuration — two toggles governing reader access to your Docs MCP.
- Default Configuration — nine company-wide defaults your page types inherit.
This page owns the first two. The rest have their own homes, and this section is the hand-off.
Documentation is where a customer sets the shape of an entire documentation set: the layout (alpha, bravo or charlie), the color theme, the code theme, the font, the light and dark logo pair, the top and bottom menu slots that give the docs a header nav and a footer, the header CTA button, the starting page, and the tab groups the editor’s Tab Group menu offers your writers. Every field in it is listed at the documentation configuration reference, and the theme, font and code-theme choices in particular at themes, fonts and code themes.
One fact about that section belongs here rather than downstream, because it is the difference between a setting that sticks and one that appears to vanish: the durable home for documentation configuration is the docs page type, not the company record. The copy stored here is what the editor reads. The site is built from the page type’s copy, which round-trips into src/<slug>/<slug>.11tydata.json on publish. If a documentation setting looks right in Settings and wrong on the built site, that split is where to look — global site data and the data cascade describes how the two files layer.
Three onward links for the parts of Documentation that most often send people looking:
- The top and bottom menu slots are what give your documentation the same header and footer as the rest of your site. Documentation header, footer and logos explains what each slot renders, why an unset one renders nothing at all, and why the logo pair must always include the light variant.
- The tab groups defined here are what the editor’s Tab Group button offers. Tab groups for consistent examples is the configuration side; tabs is the authoring side.
- Charlie is the layout Leed’s own documentation uses; the three are compared at documentation layouts.
MCP Configuration renders only when your workspace has MCP enabled, and MCP is enabled on every plan including Free, so in practice you will always see it. Its two toggles are the whole of configuring the Docs MCP.
Default Configuration is the nine-field block at the bottom, explained at default content configuration.
General Details
Six fields, two of which you cannot type into.
| Field | Editable | What it sets | Reaches your site as |
|---|---|---|---|
| Site Title | Yes | The name of the site | siteTitle in src/src.11tydata.json |
| Description | Yes | The site’s one-line description | siteDescription in src/src.11tydata.json |
| Domain | Read-only | Your live domain | deployment in src/src.11tydata.json |
| Preview Domain | Read-only | Displayed only; never stored | Nothing — it is derived for display |
| Logo | Yes, via upload | The site logo | logo |
| Favicon | Yes, via upload | The browser-tab icon | favicon |
Site title and description
Both are free text and both save as you type: the field waits 750 ms after your last keystroke and saves, and saves again immediately when you leave the field. There is no Save button and no confirmation toast — the amber dot appearing beside the section title is the acknowledgment.
If a value fails validation the field turns red, shows the error underneath, and is not saved. Fixing the value and moving on saves it.
Domain and Preview Domain are read-only
The Domain box shows your live domain and cannot be typed into. Preview Domain is not stored anywhere at all: it is rendered as staging. prefixed to whatever your live domain is, so it always tracks the box above it.
Logo and Favicon
Each shows a preview when one is set, and a single button beside it. The button reads Create when nothing is set and Update when something is — that label is the only indicator of which state you are in, so a workspace with no favicon shows Create even though the control looks identical.
Both buttons open the image upload modal; the favicon one opens it in favicon mode. What your logo, favicon, title and description then do on the published site — where each one surfaces and at what size — is at site identity and branding.
Domain Connect
Domain Connect is a one-click handshake with your registrar. The button beside the Domain field carries the entire state of the flow in its label, which is why the same control looks different on different visits.
stateDiagram-v2
[*] --> NotConnected
NotConnected --> Redirecting : you click the button
Redirecting --> Waiting : registrar returns you with ?domainConnect=pending
Redirecting --> NotConnected : the URL request fails
Waiting --> Connected : a re-check reports connected
Waiting --> NotConnected : 12 re-checks, 10 s apart, none succeeded
Connected --> [*]
NotConnected : Start Domain Connect
Redirecting : Redirecting…
Waiting : Waiting for DNS to propagate…
Connected : Connected — disabled, with a hover tooltip
Clicking Start Domain Connect opens a popup at your registrar. Leed opens that window synchronously inside the click so popup blockers allow it; if the browser blocks it anyway, the current tab navigates to the registrar instead of opening a new one. While the label reads Redirecting… the registrar URL is still being fetched.
The registrar sends you back to Settings with ?domainConnect=pending on the URL. From that point the label reads Waiting for DNS to propagate… and Leed re-checks every 10 seconds, up to 12 times — two minutes in total. On success the button becomes a disabled Connected, and hovering it shows the native tooltip Connected <date> via <provider>.
stateDiagram-v2
[*] --> NotConnected
NotConnected --> Pending: Start Domain Connect, registrar returns ?domainConnect=pending
Pending --> Polling: "Waiting for DNS to propagate…"
Polling --> Polling: re-check every 10s
Polling --> Connected: records found
Polling --> NotConnected: two minutes elapse
Once connected, the Domain field becomes read-only and the button reads Connected and is disabled — there is nothing left to click, which is the whole signal that the flow finished.
If the two minutes pass without success, polling stops and the button returns to Start Domain Connect. Clicking it then restarts the registrar flow — it does not re-check the DNS you already configured. There is no “Check now” button on this screen. So if you are confident the records were written, reload the page after a few minutes rather than starting the handshake again.
What Domain Connect actually writes at your registrar, and the manual CNAME alternative for registrars that do not support it, belong to domains and DNS.
Socials
Four fields — Linkedin ID, Twitter ID, Facebook ID, Bluesky ID — stored on the company record under externalAccounts and written into src/src.11tydata.json on publish.
These are handles and IDs, not URLs. The shipped documentation footer builds each link by concatenation, so what you type is appended to a fixed prefix:
| Field label | Stored as | Link the docs footer builds | Has a field in the CMS | Renders in the shipped docs footer |
|---|---|---|---|---|
| Linkedin ID | linkedinId | https://www.linkedin.com/company/<value> | Yes | Yes |
| Twitter ID | twitterId | https://x.com/<value> | Yes | Yes |
| Facebook ID | facebookId | https://www.facebook.com/<value> | Yes | Yes |
| Bluesky ID | blueskyId | https://bsky.app/profile/<value> | Yes | Yes |
The company record defines thirteen external-account keys and the shipped documentation footer renders all thirteen — but only these four have a field on this screen. The rest are settable through the API or an MCP client and nowhere else.
The nine social accounts with no field in the CMS
Each of these exists on the company record and is rendered by the shipped documentation footer, but has no input on Settings → General. Set them through the API or an MCP client if you need them.
| Stored as | Link the footer builds | Renders |
|---|---|---|
mastodonId | https://<value> — the full host and path, not a handle | Yes |
discordInviteId | https://discord.gg/<value> | Yes |
instagramId | https://www.instagram.com/<value> | Yes |
tiktokId | https://www.tiktok.com/<value> | Yes |
twitchId | https://www.twitch.tv/<value> | Yes |
redditId | https://www.reddit.com/user/<value> | Yes |
githubId | https://github.com/<value> | Yes |
gitlabId | https://gitlab.com/<value> | Yes |
youtubeChannelId | — | No |
YouTube is the odd one out and is worth calling out: the footer reads a key named youtubeId, while the company record stores youtubeChannelId. The two never meet, so a YouTube channel set through the API produces no icon on the site. Treat YouTube as not configurable until that is fixed; it is listed with the other product defects at known limitations.
Nothing here is live until you publish
Each section title carries an amber dot when the company record has unpublished changes, with the tooltip “Must be published to be active”.
Opening this screen can create a change
The first time someone with save permission opens Settings → General in a workspace whose documentation defaults have never been set, Leed writes them: layout alpha, color theme color-theme-blue, code theme code-theme-github, font font-open-sans, and the default set of API snippet languages.
That is a real save. It marks the workspace as having unpublished changes and puts an amber dot on the screen without you having touched a field. It happens once per workspace and it is not a bug — but it is indistinguishable from one if nobody tells you, which is why it is written down here.