Skip to content
Get the kit

Website and help center

Your users need three things outside the extension: a page that says what it is, answers when they’re stuck, and the privacy policy the Chrome Web Store requires. The site template (apps/site) ships all of them, plus the welcome page every install opens.

A static Astro site on the same design tokens and fonts as the extension, rebranded from apps/site/src/site.ts:

PageWhat it is
/the landing page, with the install button
/help/the help center (below)
/privacy/the privacy policy template your store listing links
/terms/terms of service
/changelog/release notes
/welcome/the first-run tour every install opens (details)
/payPaddle only: the checkout page Paddle opens (details)

The wizard gives the site your extension’s name, and its Firebase step fills in the address. Set supportEmail in apps/site/src/site.ts, and replace every highlighted [FILL IN] before you publish your extension.

On Firebase, the site is already live: the wizard’s Firebase step deploys it to your project’s Hosting at https://<project-id>.web.app, next to the checkout return and uninstall pages, and every pnpm firebase:deploy redeploys it. To deploy only the site, from backend/firebase-hosting: firebase deploy --only hosting. Connect your own domain in the Firebase console (Hosting → Add custom domain), then point url in apps/site/src/site.ts and the urls in apps/extension/site.config.ts at it. On Supabase, deploy apps/site/dist to any static host.

The landing page shows your extension at work. Your first store screenshot sits in the hero, inside a drawn browser window with your icon pinned in the toolbar. Below it: three setup steps, feature rows, plans, reviews, FAQ, and a closing band with the install button.

Every section reads from apps/site/src/site.ts. It ships with sample copy for an AI side-panel assistant; the setup wizard writes only your name and one-line description into it. Replace the rest with yours, section by section, and put your Chrome Web Store screenshots in apps/site/public/screenshots/. crop on each feature row picks the part of a screenshot in view. The first step’s picture is Chrome’s install prompt: steps.installWarning is the line it shows for your extension’s access to websites, cleared by the wizard when the on-page demo goes. Before the store submission, the prep-store-submission recipe reads the whole page against your product.

Nothing on the page claims numbers you don’t have. The rating, rating count, and user count stay hidden until you fill them in, and so does the reviews section. An empty plans list hides pricing. Type your plan amounts by hand and keep them in sync with your payment provider: the extension’s plan picker shows live prices, and this static page can’t.

The install button links to urls.chromeWebStore and says “Coming soon” until you set it. It adapts to the visitor’s browser:

VisitorButton
Chrome, Brave, Arc, OperaAdd to Chrome
EdgeAdd to Edge: your urls.edgeAddons listing, or the Chrome Web Store
FirefoxAdd to Firefox, when urls.firefoxAddons is set
Phone or tabletSend to my computer: opens the share sheet with your site’s address

/help/ lists the Markdown articles in apps/site/src/content/help/. Five starters describe what the kit does out of the box: getting started, your account, plans and billing, privacy and your data, troubleshooting. Edit them, delete what your extension doesn’t have, and add an article by adding a file; order in its frontmatter sorts the list.

The extension links here: the account menu’s “Help & support” opens urls.docs in apps/extension/site.config.ts, which the wizard’s Firebase step sets to https://<your-site>/help/. The sign-in form links urls.privacy (/privacy/), and every install opens urls.welcome (/welcome/). On Supabase, set all three by hand. Empty values hide the link, and /prep-store-submission flags any kit address left, so the extension never points at someone else’s site. To send “Help & support” to full product docs elsewhere, set urls.docs to their address.