Bubble hands you the controls and leaves several switched off
This is a platform with genuinely complete SEO settings, which is the good news. The awkward part is that the most important of them defaults to off and is configured one page at a time.
Claims on this page were last checked against the platform's own documentation on .
See what a crawler getsBubble lets you customise robots.txt, expose a sitemap, add header and body tags globally or per page, and set server-side redirects including wildcards. The sitemap is opt-in: you tick a box, then select which pages to include. Privacy rules also filter it, so a page whose data a logged-out visitor cannot find in searches will not appear.
What Bubble gives you
Bubble's documentation describes a set of settings that affect how search engines interpret and index your app: exposing heading tags, pointing URLs at your primary domain, customising robots.txt, and exposing a sitemap file.
It also supports permanent server-side redirects from one URL to another, including wildcard patterns for dynamic URLs, which is genuinely useful and more than most builders in this category offer.
Meta and script tags can be added in the header, where Bubble inserts them between the head tags on every page of the app, and there is a body field that works the same way. Both can also be set page by page rather than globally.
So the toolbox is complete. The difficulty is that several of the tools start in the off position.
The sitemap is opt-in, and per page
This is the item that most often explains a Bubble app that cannot be found.
You tick a box to select pages to add to the sitemap. When it is ticked, the page names appear and you choose which specific pages to include. Nothing is in the sitemap until you put it there.
For a page containing dynamic content, Bubble's documentation says it will also include those dynamic pages in the sitemap, which is the behaviour you want on a listing or profile page and is worth verifying rather than assuming.
The practical consequence is that a Bubble app can be built, launched, and running for months with an empty or partial sitemap while everything looks correct. Go and look at yours, then compare the list against the pages you actually want found.
The privacy rule that silently removes pages
This is the subtle one, and it is specific to how Bubble works.
Bubble automatically filters sitemap URLs based on privacy roles. Its documentation states that to make sure an individual URL does not show up in the sitemap, a non-logged-in user, which includes Google's crawler, should not have find-in-searches permission on that data.
Read that in reverse and you have the failure mode. A page you want indexed will be filtered out of the sitemap if a logged-out visitor lacks that permission on the underlying data, and you will not be told.
So a Bubble sitemap problem can originate in your privacy rules rather than in your SEO settings, which is not where anybody thinks to look. If a page is ticked for inclusion and still absent, check the privacy role on its data before checking anything else.
robots.txt, and Bubble's own warning
By default Bubble exposes a robots.txt that keeps search engines from indexing the pages of the test version of your app, which is sensible and is the behaviour you want.
You can tick a box to customise the file. Bubble's documentation attaches an explicit caution to this, describing it as for SEO experts only and noting that editing the file can affect your site's indexing.
That warning is worth taking seriously, and it is the same point made throughout this section. The default is safe. A file you paste in from an article you found is the single likeliest way to make a working configuration worse, particularly if it carries a blanket disallow or names deprecated AI crawler agents.
If you do customise it, read the live file afterwards rather than trusting the editor, and confirm that the search and citation crawlers are still allowed.
Where the meta tags go wrong
Because header content can be added globally, the easy path is to set one title and description for the whole app, which produces the defect described elsewhere in this section: many pages sharing one label, read by a search engine as one page repeated.
Bubble supports adding this data page by page as well, and that is what you want for anything you expect to be found individually.
The check is the same as everywhere. Visit three different pages, read the browser tab, and confirm it changes. If it does not, the tags are global and your pages are competing with each other rather than adding up.
For dynamic pages driven by data, the title should be built from that data so each generated page carries a genuinely different one, in the same way the sitemap includes them individually.
Where to start on a Bubble app
In this order, because the first item invalidates the rest if it is wrong.
- Open the live robots.txt in a browser and read it, confirming nothing you want found is blocked.
- Open the sitemap and compare its contents against the pages you want indexed. Expect gaps, because inclusion is opt-in.
- For any page that is ticked and still missing, check the privacy role on its data for a logged-out user.
- Confirm the app is on your primary domain and that URLs point at it.
- Check that titles and descriptions differ between pages, and set them per page where they do not.
- Then verify in Search Console and submit the sitemap, since Bubble exposing one tells Google nothing.
Part of a larger guide
This page is one part of Vibe coding SEO. The other parts:
Questions people ask
- Why is my Bubble app not in Google?
- Most often because the sitemap is opt-in and nothing was added to it. You tick a box to enable page selection and then choose which pages to include, so an app can run for months with an empty or partial sitemap while everything looks correct.
- Why is a page missing from my Bubble sitemap even though I selected it?
- Check the privacy role on its data. Bubble filters sitemap URLs by privacy roles, and its documentation notes that a URL stays out of the sitemap when a non-logged-in user, which includes Google's crawler, lacks find-in-searches permission on that data.
- Should I customise Bubble's robots.txt?
- Usually not. The default keeps search engines out of your test version, which is what you want, and Bubble's own documentation describes customising it as for SEO experts only and warns that editing can affect indexing. A file pasted from an article is the likeliest way to break a working setup.
- Can I set different meta tags per page in Bubble?
- Yes. Header content can be added globally, which is the easy path and produces many pages sharing one title, or page by page, which is what you want for anything you expect to be found individually. Check by visiting three pages and watching the browser tab change.
- Does Bubble include dynamic pages in the sitemap?
- Its documentation says that for a page containing dynamic content, Bubble will also include those dynamic pages. That is the behaviour you want on listing or profile pages, and it is worth verifying by opening your sitemap rather than assuming.
- Does Bubble support redirects?
- Yes, permanent server-side redirects from one URL to another, including wildcard patterns for dynamic URLs. That is more than most builders in this category offer and it matters when you change a URL structure and want to keep whatever standing the old addresses earned.
Keep reading
Read your live sitemap and robots.txt
The free crawler view fetches both from your Bubble app and reports what they actually contain, rather than what the settings screen implies.
See what a crawler gets Have Licheo do it for you