Feature Availability by Plan

Leed gates 26 named capabilities by plan. This page lists all of them. There are two ways to read it: find the capability you want and read across to the plan it needs, or pick a plan heading and read everything it turns on.

How to read this table

Every gated capability has exactly one minimum plan, and access is a rank comparison: free → starter → growth → enterprise, and you have the capability when your plan’s rank is at least the minimum’s. There is no partial access and no per-capability purchase.

The column that matters is Below its plan, because Leed does not gate uniformly. Some capabilities return an error you can see and a prompt telling you which plan to buy. Others hide a control, strip part of a response, return an empty list, return a 404, or quietly skip a step when your site builds. That non-uniformity is deliberate — a visitor’s browser must never receive a billing error from your published site — but it means “nothing happened” is sometimes the correct gated behavior rather than a fault.

BehaviorWhat you see
Upgrade promptThe surface is replaced by a panel or banner naming the capability and the plan it needs. A write attempt against the API returns 402.
Hidden controlThe editing UI is not rendered at all. The read path still works.
Withheld dataThe record loads, part of the payload is removed, and an existence flag survives — so the UI can honestly say a thing is there and still not show it.
Empty responseA public endpoint on your published site answers 200 [] or 200 {}. The block on the page renders nothing.
Not foundA public endpoint answers 404, so the surface is indistinguishable from “not a thing here” rather than from a billing problem.
Skipped at buildYour site builds successfully, without the feature.
Badge shownThe “Powered by Leed” link appears in your documentation footer.

Behind an upgrade prompt is a single, consistent error shape:

{
  "error": "upgrade_required",
  "reason": "feature_gated",
  "feature": "campaignPlanner",
  "requiredTier": "growth",
  "currentTier": "free"
}

402 is used deliberately rather than 403, which Leed reserves for permission problems — a different fix, asked of a different person. What a gate looks like from the inside, including the quota variant of that body and all five observable behaviors, is covered in When a feature is gated.

Starter and up

Nine cataloged capabilities unlock at Starter. Two more Starter-gated things are not catalog entries at all and are listed underneath, because a reader meeting them cannot tell the difference.

FeatureMinimum planWhere you meet it in LeedBelow its plan
Marketing emailStarterSending a marketing email — the send flow from a contact groupUpgrade prompt. The send route returns 402; the Free allowance is 0, so the meter card is replaced by a gate banner rather than an empty bar.
Reader-level identityStarterLead profiles and visitor identity — a contact’s timeline, and the Engage engagement panelsWithheld data. The profile itself loads on every plan; page views, form fills and sessions come back empty with readerIdentityGated: true.
Release notes emailStarterPage workflows — the Workflows tab in the page editorUpgrade prompt on create and enable. Reading, disabling and deleting an existing channel stay open on every plan, so a downgrade never traps a configuration you cannot clean up.
Badge removalStarterDocumentation header, footer and logos — the footer of your published documentationBadge shown. The footer renders a Powered by Leed link where a paid site renders your copyright line.
Auto-linkingStarterAutolinks — configured in Settings, applied when your site buildsSkipped at build. The build succeeds and no automatic links are inserted; nothing fails in the foreground of the build log.
Auto-transcription & content extractionStarterTranscription and text extraction — video, audio and document assetsWithheld data. Transcription still runs and is still stored; the text is stripped from responses and the payload carries contentExtractionGated: true.
Content-level RBACStarterResource-level access overrides — the override columns on page types and labelsHidden control. The editors go remove-only with a banner; creating a page-type or label override returns 402. Per-page overrides are ungated on every plan.
Custom theme & font namesStarterThemes, fonts and code themes — naming your own color theme, code theme or fontHidden control. Gated on change only: echoing back the stored value, clearing it, or swapping one built-in for another passes on every plan.
AI-powered docs searchStarterLive documentation search — the search box on your published documentationNot found. The search endpoints answer 404, and the build ships the static index instead, so readers still get search — without live results.
Ejectable documentation header templateStarterleed site eject — replacing the docs header in your repositoryHidden control. The template is not listed by leed site eject and cannot be ejected; the default header always renders.
Ejectable documentation footer templateStarterleed site eject — replacing the docs footer in your repositoryHidden control. Same as the header — and this is precisely what keeps the Powered by Leed badge on a Free site: you cannot override the footer that carries it.

The last two rows are Starter-gated by a plain tier check rather than by the feature catalog. The user-facing answer is identical; the mechanism differs, which matters only if you are reading the templates themselves. Tier gating helpers covers both hasTier and hasFeature for template authors, and defers to this page for every minimum.

Content-level RBAC — exactly what is and is not gated

The gate covers one thing: creating an access override whose resource is a page type or a label. That request returns 402 below Starter, and the override editors on Settings → Page Types and Settings → Labels render remove-only with an upgrade banner.

Everything adjacent stays open on every plan, including Free:

  • Per-page overrides. Granting one person elevated access to one page is not gated at any tier.
  • Every read. Listing and inspecting overrides works on every plan.
  • Every delete. This is deliberate: a workspace that downgrades must be able to clean up overrides it can no longer create.
  • Enforcement of existing overrides. An override created on Starter keeps working after a downgrade to Free. It is grandfathered, not suspended.
  • Base roles. The six-role model is not a paid feature and never has been.
  • Approval workflows. The pricing page bundles “approval workflows” into this row; they carry no plan gate anywhere. See Roles and permissions for what the Content Approver role actually does.
Transcription and extraction — the file is processed either way

Uploading is never blocked, and the transcription or extraction job runs and stores its result on every plan, Free included. The gate is on retrieval.

Below Starter, asset responses have transcription, transcriptionSummary and extracted document text removed, and carry contentExtractionGated: true. The existence flags — hasTranscription, hasExtractedText — survive the strip. That is why the asset panel can tell you a transcript exists while refusing to show it: it is not guessing, and the text is genuinely there.

The practical consequence is that upgrading is instant and retroactive. There is no reprocessing step and no re-upload — the transcripts for everything you uploaded while on Free appear the moment the plan changes.

Reader-level identity — the profile loads, the history does not

Identified contacts are a Free capability. A contact record, its email, its fields and its opt-in state are all readable on every plan, and the contacts list works on Free.

What Starter buys is the per-reader history attached to that record: which pages this person read, which forms they filled, which sessions they had. Below Starter the profile still loads and those three collections come back empty, with readerIdentityGated: true on the response.

A contact profile that opens with a populated header and a completely empty timeline is this gate, not a tracking failure. Capture continues on every plan, so the timeline fills in retroactively on upgrade.

Live documentation search — why it 404s instead of prompting

Search on your published documentation is the one gated capability your readers meet rather than your team. A visitor’s browser must never receive a payment error from your site, so below Starter the live search endpoints answer 404 — the surface reads as “not a thing here”, which is exactly what it is for that site.

Your readers are not left without search. The build detects the tier and ships the prebuilt static index and its client instead, so the search box still works; what it loses is live, server-side, AI-ranked results and faceting. Live documentation search covers the difference between the two, and Search for your documentation covers configuring either.

The 404 is enforced twice — once at your site’s edge worker and once at the API behind it — so it holds even for a request that bypasses the edge.

Growth and up

Twelve capabilities unlock at Growth. This is the campaign and funnel-analytics rung.

FeatureMinimum planWhere you meet it in LeedBelow its plan
Custom themes & layoutsGrowthDesign workspace — the Email Templates and Site Layouts editorsUpgrade prompt. Each editor renders a panel in place of itself. Naming your own documentation theme is a different, Starter capability — see the row above.
Custom highlight themesGrowthNo surface reads this entryNothing observable. Choosing among the built-in code-highlighting themes is free on every plan, and naming your own code theme is Starter, under Custom theme & font names.
Lead workflowsGrowthPage workflows — the Workflows tab in the page editorUpgrade prompt on create and enable; reads, disables and deletes stay open.
Campaign plannerGrowthCampaigns and deliverables — the Campaigns section of EngageUpgrade prompt. Every campaign route returns 402. The plan calendar is deliberately left ungated, so the calendar itself keeps working.
Auto social postingGrowthPage workflows — the social channel rowsUpgrade prompt. Locked rows carry a Growth plan note; a channel already switched on can still be switched off.
Dynamic CTAsGrowthDynamic CTAs — configured in Settings, rendered in a slot on your siteUpgrade prompt in the CMS; empty response on your published site — the CTA endpoint returns 200 {} and the slot stays blank.
Short-URL trackingGrowthShort links and attribution — the short-link surfaces in EngageUpgrade prompt. Every shortcode route, including its metrics, returns 402.
Agent analyticsGrowthNo surface in the product todayNothing to meet. See Cataloged but not built yet.
Recommendation engineGrowthRecommendations — configured in Settings, rendered as a block on your siteUpgrade prompt in the CMS; empty response on your site — the endpoint returns 200 [], the block renders nothing, and the recommendation stub template is not ejectable.
Video & audio engagement analyticsGrowthMedia engagement analytics — the media widgets on the Know dashboardUpgrade prompt. The eight video and audio metrics return 402; every other widget on the same dashboard keeps working.
Menu click analyticsGrowthClick tracking and the overlay — element and internal-link click metricsUpgrade prompt for the metrics. The in-page click overlay shows nothing at all rather than a prompt — a known defect, recorded in Known limitations.
Full-journey attributionGrowthJourneys, funnels and attribution — the inbound attribution metricUpgrade prompt. The metric returns 402; capture continues on every plan, so the history is there when you upgrade.

Analytics gating deserves one sentence of its own: capture never stops. The site trackers record on every plan and the data lands in storage regardless of tier. Only reporting on the gated metrics is withheld, which is why an upgrade produces a populated chart immediately rather than starting a clock.

Recommendation engine — the block that renders nothing

Recommendations are the clearest example of a gate you will mistake for a broken embed. On Free and Starter:

  • The public endpoint answers 200 [] — a successful, empty response. Nothing is logged as an error and the vector lookup is skipped entirely.
  • The block on your page therefore renders nothing at all. No placeholder, no message, no gap you can style around.
  • The recommendation stub template does not appear in leed site eject’s list, so a developer looking for something to customize finds an absence rather than a refusal.

If a recommendation block on your site is silently empty and your workspace is below Growth, this is why — check the plan before checking the template. Recommendations covers what it does once it is on.

Enterprise

Five capabilities are cataloged at Enterprise. One of them is built and enforced; the other four have no surface in the product today.

FeatureMinimum planWhere you meet it in LeedBelow its plan
Custom syntax languagesEnterpriseCode blocks — highlighting languages beyond the built-in setUpgrade prompt. Adding an extra language, and reading one back, both return 402. Every built-in language is free on every plan.
Account-based qualificationEnterpriseNo surface in the product todayNothing to meet. See below.
Cluster analyticsEnterpriseNo surface in the product todayNothing to meet. See below.
CRM integrationEnterpriseNo gated surface today — CRM integration describes what does existNothing to meet. See below.
SSOEnterpriseNo surface in the product todayNothing to meet. See below.

What every plan includes

The mirror image of the three tables above, and the section that prevents the most dead ends. Absence from the gate list means ungated — these work identically on Free and on Enterprise.

CapabilityNote
Unlimited users, templates and pagesNo seat price, no page ceiling, no editor count anywhere in the product.
Your own custom domainOn Free too.
Real-time collaborative editing and AI authoringThe full editor, on every plan.
The Leed AssistantUngated.
Operator MCPFree on every plan, including Free. No tier badge appears on any MCP page — see AI in Leed.
Docs MCPFree on every plan. Gated on a per-workspace switch that is on by default, never on the tier.
WebMCP and the A2A agent cardSame per-workspace switch, same default.
Lead-capture forms and form submissionsCapture is never blocked on any plan — including past your contact quota.
Forms as general data collectionUngated.
The menu builderUngated.
Aggregate analyticsEvery metric not named in the Growth table above. The 30-day window on Free is a quota, not a feature gate.
Standard themes and all three documentation layoutsAnd there are exactly three layouts — no custom layout is possible at any plan.
Built-in code-highlighting themesChoosing among them is free; naming your own is Starter.
Page schedulingGoverned by the page:publish privilege, never by plan. See Scheduling and automatic publishing.
Approval workflowsRole-driven, with no entitlement gate anywhere in the product. See Roles and permissions.
Per-page access overridesUngated, unlike page-type and label overrides. Resource-level access overrides draws the line.
Reads and deletes on every gated write surfaceA downgrade never leaves you unable to inspect or remove what you configured while paying.

Features that are cataloged but not built yet

Five catalog entries have a minimum plan and no surface in the product: agent analytics (Growth), and account-based qualification, cluster analytics, CRM integration and SSO (Enterprise).

One further entry, custom highlight themes, is cataloged at Growth and read by nothing at all. It is listed in the Growth table for completeness, with the honest observation that no behavior changes at that boundary.

Where this table and the pricing page differ

This page describes the product. The plan comparison on leed.ai describes the offer, and in eleven places the two do not line up. Every one is listed here rather than quietly reconciled, because the difference is visible to you and you should not have to discover it by trying.

Where a row below says the product is stricter than the offer, the offer is what will be corrected. Where it says the offer is silent about something the product delivers, you are getting the capability regardless.

RefCapabilityWhat the product does todayWhat the pricing page saysStatus
C1Custom themes & layoutsThe email-template and site-layout editors are Growth. Naming your own documentation color or code theme is Starter.“Custom themes & layouts” from StarterPricing row to be split; this page’s minimums are what the product enforces.
C2Custom highlight themesCataloged at Growth, read by no code. Choosing a built-in code theme is free everywhere; naming your own is Starter.“Custom highlighting themes” from StarterNo difference in what you get — the Starter claim is delivered by the Starter capability.
C3AI-powered docs searchStarter, enforced at the edge, at the API and in the build.No row at allA paid capability that is not being advertised. Pricing row to be added.
C4Approval workflowsNo plan gate anywhere. Driven by the Content Approver role.Bundled into the Starter “RBAC by content type & label” rowThe bundling overstates the gate; the role is available on every plan.
C5Enterprise priceNegotiated, never self-served. The card shows Custom and a Contact sales button.“Custom”Agreed. Any concrete Enterprise list price you see quoted elsewhere is internal and not the offer.
C6Dynamic CTAs, short-URL trackingGrowth, enforced in the CMS and on your published site.On the Growth card only — absent from the comparison matrixMatrix rows to be added; the Growth minimum is correct.
C7Custom theme & font namesStarter, enforced on change only.No dedicated row; nearest is “Custom themes & layouts”Folded into C1.
C8Agent analyticsGrowth in the catalog, not built.Sold as a Growth row with emphasisNot available today at any plan.
C9Account-based qualification, cluster analytics, CRM integration, SSOEnterprise in the catalog, not built.Sold as Enterprise rowsNot available today at any plan.
C10Custom layoutsThere are exactly three documentation layouts and no custom layout is possible at any plan — the layout name becomes a template path, so it stays a fixed choice.“Custom themes & layouts” from StarterThe word “layouts” cannot be delivered by a price change; the row is to be reworded.
C11Release notes to email, auto social postingBuilt and gated, and inert: arming a channel records the setting and persists it. Nothing is delivered yet.Sold from Starter and Growth respectivelyConfigure them if you like; do not plan a launch around delivery. Recorded in Known limitations.
The upgrade prompt panel rendered in place of the Campaigns section on a Free workspace, reading "Campaign planner is available on the Growth plan" above an Upgrade plan button

That panel is what a feature_gated denial looks like from the CMS, and it names both halves of what you need to know — the capability and the plan. When a feature is gated covers the other four ways a gate can present itself, including the ones that show you nothing at all.

ESC