Bubble
How do I get my Bubble app indexed by Google?
Connect a custom domain, configure per-page and dynamic-page SEO settings in Bubble's SEO & Metatags panel, verify the domain in Search Console, and submit yourdomain.com/sitemap.xml. Google can render Bubble's JavaScript, but rendering is queued — expect slower indexing than a server-rendered site, and push important URLs directly.
https://yourdomain.com/sitemap.xml
Where the Bubble sitemap lives
Bubble generates a sitemap, but dynamic data-driven pages need configuring before they appear in it.
Why Bubble pages don't get indexed
- Google's rendering queue means client-rendered pages can take days longer to index than static ones.
- Dynamic pages need their SEO meta configured per data type, or every one of them shares the same title.
- bubbleapps.io subdomains shouldn't be your indexed address.
- Pages behind a login are not indexable, which is usually most of a Bubble app.
- The sitemap won't include dynamic pages unless you've set them up to be included.
Step by step: getting your Bubble app into Google
- Connect a custom domain in Bubble's settings and make it primary.
- Open Settings → SEO & Metatags and set unique titles and descriptions per page, including dynamic expressions for data-driven pages.
- Make sure your public pages' content is in the server response, not only added after load.
- Verify the domain in Google Search Console.
- Submit https://yourdomain.com/sitemap.xml and check dynamic pages are actually in it.
- Push key public URLs through the Indexing API so they skip the rendering-delayed discovery path.
Bubble indexing controls at a glance
- Sitemap — https://yourdomain.com/sitemap.xml — Bubble generates a sitemap, but dynamic data-driven pages need configuring before they appear in it.
- robots.txt — You can edit it. Bubble exposes robots.txt in its SEO settings, so AI-crawler rules are possible.
- Rendering — Bubble apps are single-page applications. Bubble can serve SEO meta and pre-rendered content to crawlers, but the default experience is client-rendered — this is the single biggest issue on the platform.
- Hiding a page — Per page, in the app's SEO settings, with separate handling for dynamic pages.
- Custom head code — Settings → SEO & Metatags has a script/meta area in the page head, which accepts JSON-LD.
- llms.txt — Serve it from a route on your custom domain and reference it in robots.txt.
Connect your own Search Console, point IndexerNow at your sitemap, and push new and updated URLs straight to Google's Indexing API and IndexNow — on your account, your quota, no plugin.
Get your pages indexedFrequently asked
Are Bubble apps good for SEO?
Workable, not ideal. Bubble gives you robots.txt, sitemap, and per-page meta control, but the client-rendered default means indexing is slower and AI fetchers often see nothing. Public marketing pages benefit from being pre-rendered.
Why aren't my Bubble dynamic pages indexed?
Dynamic pages need SEO settings configured per data type and need to be included in the sitemap explicitly. Without that they share the app's generic meta and may not be discovered at all.
Can I edit robots.txt in Bubble?
Yes — Bubble exposes robots.txt in its SEO settings, so you can allow or block specific crawlers.
Why isn't my Bubble app showing up in AI answers?
Being in Google's index doesn't put you in ChatGPT's answers — those run on Bing plus their own crawlers, and they quote pages built to be quoted. The companion guide covers what Bubble lets you control.
Bubble AI visibility guide →Other platforms
Softr
Connect a custom domain, fill in each page's SEO settings, verify the domain in Google Search Console, and submit yourdomain.com/sitemap.xml. Because Softr renders data-driven content in the browser, Google's rendering queue adds delay — push important URLs directly rather than waiting.
Notion
Notion publishes pages but not a sitemap — here's how to make a Notion site genuinely indexable.
Webflow
Webflow can generate your sitemap and noindexes staging by default — here's the checklist.