Scan the Symptom column for the sentence closest to what you would say out loud, then follow the link in the third column. Every row points at the page that owns the fix — this page names the problem, it does not solve it.
Before you scan anything, know this: the single most common report in Leed is not a fault at all. The change was saved, and it has not been published yet. Every edit you make in the CMS is staged until a deployment carries it to your site, so “my change isn’t showing” is nearly always a publish that has not happened rather than something broken. Saved is not live is the model, and Publishing Changes is where you clear it.
Start here: not live, or not working?
Two questions settle most reports before you reach a table.
Question one: did you publish? Every CMS edit — a page, a menu, a page type, a settings field — is staged. An amber dot beside the thing you changed and a row in the Deploy tab’s Your edits card are the whole model: the dot means staged, not broken. Publish, and watch the deployment finish.
Question two: which site are you looking at? Preview and live are two separate builds from two separate branches. A change published from the CMS lands on the preview host; it reaches your live domain only when someone pushes it live. If you are looking at the wrong host, Preview Site vs Live Site explains which change lands where.
flowchart TD
A["My change isn't visible"] --> B{"Amber dot, or a row<br/>in Deploy → Your edits?"}
B -- "Yes" --> C["Publish it"]
B -- "No" --> D{"Did the last<br/>deployment succeed?"}
C --> D
D -- "No" --> E["Read the error block on the row"]
E --> F["When a Deployment Fails"]
D -- "Yes" --> G{"Preview host,<br/>or your live domain?"}
G -- "Preview only" --> H["Push live from Deploy"]
G -- "Live, and still missing" --> I{"Is the page in the menu,<br/>and is the menu published?"}
I -- "No" --> J["Add it and publish the menu"]
I -- "Yes" --> K["Real fault — use the tables below"]
A failure with a red error block on the deployment row is decoded at When a Deployment Fails. The exact wording of whatever you were shown is cataloged at Common Error Messages. Things that are known not to work are listed, without hedging, at Known Limitations.
Writing and editing
| Symptom | Most likely cause | Where it is explained |
|---|---|---|
| “My last edit wasn’t saved and I got an amber notice” | A publish held the page while you typed, so that keystroke was rejected | Autosave, Collaboration and Locking |
| “The editor is stuck on Connecting…” | The collaborative editing service is unreachable from your browser | Autosave, Collaboration and Locking |
| “The toolbar is missing buttons I expect” | The page type disables that formatting feature | Formatting by Page Type |
“Typing ## doesn’t turn into a heading” | You are in a plain-text field — only the page body is a Leed Markdown editor | Page Editor |
| “A keyboard shortcut does nothing” | Focus is outside the editor, or the shortcut belongs to a mode you are not in | Keyboard Shortcuts |
| “The whole page is read-only” | Its page type is an API type, or Content Locked is set on the page type | Configuring a Page Type |
| “A version chip shows a padlock” | You are viewing a published revision; published revisions are read-only | Revisions and Versions |
| “The AI assistant isn’t available for my account on this page” | The in-editor assistant session is not enabled for your account | AI in the Editor |
| “My suggestion isn’t in the document” | You are in Suggesting mode; a suggestion stays pending until it is accepted | Suggesting and Tracked Changes |
| “The Analytics tab on my page is empty” | Page analytics only exist for pages that have been published | Page Analytics in the Editor |
| “I can see the page but not edit it, and nobody else is in it” | Your role, or a resource override on this page, gives you read access only | Who Can See What |
Pages, URLs and navigation
| Symptom | Most likely cause | Where it is explained |
|---|---|---|
| “My page is live but it isn’t in the left navigation” | The menu leaf points at a page that is not published, so the whole <li> is dropped from the build | Left Navigation Menu |
| “A page is missing from the site entirely” | It was never published, or its page type has Do Not Render set | Publishing and Scheduling a Page |
| “A link renders as plain gray text with no anchor” | The pageid: target is unpublished or deleted, so the build replaces the anchor with a page-removed span | Linking Between Docs Pages |
| “The URL isn’t what I typed in the slug field” | For menu-bound docs pages the folder tree sets the path; the slug field alone does not | Folders Set Your URLs |
| “Renaming a folder moved a lot of pages” | A folder name is slugified into every descendant’s path, so a rename restages all of them | Folders Set Your URLs |
| “I was shown Path already taken” | Another page or alias already owns that exact path | Aliases and Redirects |
| “Adding the page to a second menu was rejected” | A docs page may be referenced once, in exactly one docs left-nav menu company-wide | Building and Editing a Menu |
| “I nested a page under another page and the save failed” | Pages cannot have children — nesting is done with folders | Left Navigation Menu |
| “An old URL 404s instead of redirecting” | No alias was kept for the previous path when the page moved | Aliases and Redirects |
| “The menu save was refused because navigation is locked” | The page type has Navigation Menu Locked set, which freezes its own set’s URLs | Configuring a Page Type |
“Every page of my docs set renders documentationConfiguration is missing!” | The merged configuration has no layoutName, so the layout has nothing to render | Creating a Documentation Set |
Documentation sites, themes and tabs
This is the group with the worst signal-to-noise ratio in the product, because almost every one of these fails silently. If a documentation setting appears to have done nothing, it almost certainly failed rather than being ignored, and the row you want is here.
| Symptom | Most likely cause | Where it is explained |
|---|---|---|
“My whole docs set renders documentationConfiguration is missing!” | No layoutName in the merged configuration — the one key that decides whether a docs set renders at all | Documentation Configuration Reference |
| “My docs render in Leed’s default blue instead of my theme” | The theme class literal never reached a file the Tailwind scanner reads, so the utility was tree-shaken away | Custom Documentation Themes |
| “My code blocks have no colors at all” | A missing or misspelled codeTheme — unlike a color theme it has no fallback chain, so it degrades to nothing | Themes, Fonts and Code Themes |
| “My sidebar is completely empty” | menus.left holds an id that matches no menu; the build warns and renders nothing | Documentation Configuration Reference |
| “My docs header or footer is missing” | Same failure for menus.top / menus.bottom — an id that resolves to no menu | Documentation Header, Footer and Logos |
| “No logo appears in light mode” | logo.dark was set without logo.light | Documentation Header, Footer and Logos |
| “My tabs show raw labels and no icons” | The attribute was written data-tabs-groupid; the build matches the capital I in data-tabs-groupId | Tab Groups for Consistent Examples |
| “A reader lands on the wrong tab on the next page” | Tab sync is by position, so every container in a group must list the same tabs in the same order | Tab Groups for Consistent Examples |
| “My diagram renders unstyled” | A malformed mermaid.theme.json — the build warns and ships unthemed diagrams rather than failing | Theming Diagrams |
| “My theme name was rejected even though we are on Enterprise” | The ^[a-z0-9]{1,32}$ shape check is a 400 that fires before the tier check, so a dash in the name fails on every plan | Common Error Messages |
| “I set a documentation value in Settings and the built site ignored it” | The company copy of documentationConfiguration is read by the CMS editor only; the site build reads the page type’s copy | Documentation Configuration Reference |
A documentation setting that appears to have done nothing has almost certainly failed silently — Documentation Configuration Reference names each key’s failure mode, and Custom Documentation Themes covers the theme and code-theme cases.
Publishing and deployments
| Symptom | Most likely cause | Where it is explained |
|---|---|---|
| “Nothing happens when I publish” | Nothing was selected in Your edits, or your role lacks the publish privilege | Publishing Changes |
| “The deployment failed” | The error block on the row names the phase; the prefix tells you whether it is yours to fix | When a Deployment Fails |
| “The deployment failed and there is no Retry button” | The message starts with [site-build], which means a content or template error — a retry would fail identically | When a Deployment Fails |
| “Retry was refused because this is not the most recent deployment” | Only the newest deployment on a branch can be retried | Deployment History and Status |
| “Push live is disabled” | Preview and live already match, the preview build failed or is still running, or you lack deployment:promote | Promoting Preview to Live |
| “A one-word change takes minutes to appear” | Every deployment is a full rebuild of the whole site; there is no incremental path | Every Deployment Is a Full Rebuild |
| “A scheduled page did not go out” | It was scheduled on preview but never promoted, or the scheduled run failed | Scheduling and Automatic Publishing |
| “My settings change is not on the site” | Settings changes deploy like everything else — they are saved instantly and published separately | Settings Field Reference |
| “The badge says Active but I know a step failed” | The status resolver checks active first, so a failure in a post-deploy step still shows Active | Deployment History and Status |
| “My custom domain still isn’t serving the site” | The custom hostname is not active yet, or DNS has not been pointed at Leed | Domains and DNS |
Assets and media
| Symptom | Most likely cause | Where it is explained |
|---|---|---|
| “The upload was rejected for its file type” | The picker accepts a fixed list per asset kind — images are png, jpeg, gif, webp, svg | Uploading Images |
| “My image was rejected for its size” | Images must be strictly under 10 MB; the check runs in your browser before the upload starts | Limits That Are Not Plan Limits |
| “The video is stuck on Processing” | Encoding has not finished; the asset becomes playable when it does | Video, Audio and Document Assets |
| “There is no transcript, but the asset says one exists” | Transcription runs on every plan; viewing the extracted text needs Starter, and the response is stripped rather than refused | Transcription and Text Extraction |
| “The asset Analytics tab is empty” | Media engagement analytics is a Growth feature, and unpublished pages produce no events either way | Media Engagement Analytics |
| “A document link opens instead of downloading” | Delivery behavior depends on how the asset is linked and served | Asset Delivery and Protection |
| “I can’t find the asset I uploaded last week” | Assets live under Design → Assets; there is no separate library screen | Asset Library |
| “Dragging a file onto the CMS did nothing” | The app-wide dropzone is gated on the asset-create privilege | Global Drag and Drop |
Analytics and Engage
| Symptom | Most likely cause | Where it is explained |
|---|---|---|
| “The Know dashboard is empty” | No tracked events yet — the tracker only runs on a published site | Know Dashboard |
| “One widget is permanently empty while the rest work” | That widget’s feature is not included in your plan and degrades to empty rather than erroring | Know Widgets Reference |
| “The date picker won’t go back far enough” | Your plan’s analytics retention window, and a fixed 365-day ceiling on any single query | Date Ranges and Retention |
| “A query over more than a year is refused” | 365 days is the maximum span of one request on every plan, including Enterprise | Limits That Are Not Plan Limits |
| “A contact I know exists is missing from the list” | Your plan’s contact quota is a visibility cap — capture continues, the oldest rows stay visible | Usage and Limits |
| “A contact page 404s” | The same visibility cap, applied per record rather than per list | Contacts |
| “A contact profile loads but has no history” | Reader-level identity is a Starter feature; the profile is free, the per-reader event history is withheld | Lead Profiles and Visitor Identity |
| “The click overlay shows nothing at all” | Menu click analytics is a Growth feature; below it the overlay query never runs | Click Tracking and the Overlay |
| “Attribution and journey widgets are blank” | Full-journey attribution is a Growth feature | Journeys, Funnels and Attribution |
Forms, contacts and email
| Symptom | Most likely cause | Where it is explained |
|---|---|---|
| “I get no submissions from my preview site” | You are testing against the preview host; check where the form is actually placed and published | Placing a Form on a Page |
| “A submission did not create a contact” | The form does not collect an email address, so there is no key to upsert on | Form Submissions |
| “A form fill overwrote details I had uploaded” | A fill updates the fields the form collects; fields it does not ask for keep your uploaded value | Importing Contacts |
| “The blast was accepted and nothing sent” | Marketing email is a Starter feature, and a Free workspace has a zero monthly allowance | Sending a Marketing Email |
| “A recipient never got the email” | A previous hard bounce or an unsubscribe suppresses that address | Bounces and Deliverability |
| “The unsubscribe link goes to a bare page” | The unsubscribe templates have not been overridden in your repository | Unsubscribes and Opt-Outs |
| “Spam is coming through the form” | A failed Turnstile challenge is recorded but never rejects the submission | Spam Protection and Turnstile |
| “A re-import blanked a column” | A mapped column with an empty cell overwrites the stored value; unmapped columns are left alone | Importing Contacts |
AI, MCP and the CLI
Each of these is a pointer only — MCP Troubleshooting and CLI Troubleshooting and Exit Codes own the diagnosis.
| Symptom | Most likely cause | Where it is explained |
|---|---|---|
| “My client connected but every call fails” | The client is speaking an unsupported protocol revision, or sending a batch | MCP Troubleshooting |
| “I get a 403 the moment I connect” | One of three refusals: the account is banned, has no CMS membership, or resolves to an unrecognized tier | MCP Troubleshooting |
“A GET to the MCP endpoint returns 405” | Both MCP servers are POST-only; Allow: POST is the whole answer | Connecting to the Operator MCP |
| “My AI client’s markdown was rejected” | The page type disables a formatting feature the markdown used | Formatting by Page Type |
“You cannot 'commit' directly” | You ran git commit in a site repository; commits go through leed site commit | CLI Troubleshooting and Exit Codes |
“You must run the following command before changes can committed” | The working tree has not been built since your last edit | Validate, Commit and Push |
“The CLI cannot find leed.config.json” | You are outside a site repository, or the repository was never initialized | Leed Config and Files |
| “The CLI refuses because of the branch I am on” | Commits and pushes are accepted on staging only | Git Workflow |
When it is not a fault
A settings card you cannot see is a role decision. The Settings grid is assembled from the cards your role is allowed to read, so two administrators and one writer genuinely see grids of different sizes. Nothing is hidden by accident — Who Can See What reads the permission model from the role’s point of view.
A search endpoint answering 404 on a Free workspace is the design, not an outage. AI-powered documentation search is a Starter feature, and a public endpoint must never show a visitor a payment error, so it answers as though the route does not exist and the site falls back to its static search index.
A menu item that disappeared right after you published is pointing at an unpublished page. The build drops the whole list item rather than rendering a dead link, so the fix is to publish the target, not to re-save the menu.
If the problem is that a word in an error message means nothing to you, every Leed term has a one-line entry in the Glossary. If you are not yet sure what Leed is, rather than what has gone wrong with it, start at What Is Leed; and if you arrived lost rather than broken, Choose Your Path routes you by what you are trying to do.