← Back to insights
Guide · #499

Bubble SEO: No-Code App Settings for Discovery

Step-by-step guide to Bubble SEO settings that actually move rankings. Configure sitemaps, meta tags, crawlability, and Core Web Vitals in minutes.

Filed
April 3, 2026
Read
18 min
Author
The Seoable Team

Why Most Bubble Apps Disappear from Search

You shipped a Bubble app. Users love it. But Google doesn't know it exists.

This isn't because Bubble is broken. It's because most founders never flip the right switches. Single-page apps (SPAs) don't index themselves. Meta tags don't populate without explicit configuration. Crawlers get lost in dynamic routing. And Core Web Vitals—the signals Google actually ranks on—stay broken because nobody knew where to look.

Bubble has the settings. Most builders just don't know which ones matter, in what order, and why.

This guide walks you through the exact Bubble SEO configuration that moves rankings. Not theory. Not agency-speak. The settings that work, the order that works, and what to skip.

Prerequisites: What You Need Before Starting

Before you touch a single Bubble setting, make sure you have these in place:

Access Requirements:

  • Admin access to your Bubble app (you need to modify settings)
  • A live, published Bubble app with actual pages
  • A custom domain (free Bubble subdomains rank poorly; skip them)
  • Google Search Console access to your domain
  • At least 30 minutes of uninterrupted time

Knowledge You'll Need:

Tools to Have Open:

If you're building on Bubble but haven't set up foundational SEO infrastructure yet, you might also benefit from The Free SEO Tool Stack Every Founder Should Set Up Today to get GSC, GA4, and basic monitoring running in parallel.

Step 1: Enable Sitemap Exposure and Crawlability

This is the first thing Google needs: permission to find your pages.

Bubble apps are single-page applications. That means all your routes live on one HTML shell. If you don't explicitly expose your sitemap and tell crawlers how to navigate your app, Google indexes only your homepage.

In your Bubble editor:

  1. Click Settings (gear icon, top right)
  2. Go to SEO/Metadata
  3. Look for Expose sitemap.xml—toggle it ON
  4. Look for Expose robots.txt—toggle it ON
  5. In robots.txt content, add this:
User-agent: *
Allow: /
Disallow: /admin
Disallow: /api
Sitemap: https://yourdomain.com/sitemap.xml

Replace yourdomain.com with your actual custom domain.

  1. Click Save

This tells Google's crawler: "Yes, you can explore my app. Here's the map."

Within 24 hours, check Google Search Console. Go to Sitemaps and submit your sitemap manually:

https://yourdomain.com/sitemap.xml

Google will crawl it and discover all your indexed pages. If your sitemap is empty or shows errors, your dynamic pages aren't being registered in Bubble's routing. This is a separate issue—see Step 6 below.

Pro Tip: Some builders miss that Bubble's sitemap is auto-generated from your page routes. If a page doesn't appear in your sitemap, it's because Bubble doesn't know about it. Check your URL structure in the Bubble editor's page settings.

Step 2: Configure Dynamic Page Titles and Meta Descriptions

Static titles kill rankings. Every page needs its own title and description.

Bubble lets you set these dynamically, but most builders set them once and forget them. This is where most Bubble apps lose click-through rate (CTR) in search results.

For each page in your Bubble app:

  1. Open the page in the editor

  2. Click the page name (at the top of the left panel)

  3. Scroll down to SEO/Metadata

  4. In Page title, enter your target keyword phrase:

    • Example: "Best Project Management Tool for Indie Hackers" (not just "Dashboard")
    • Keep it under 60 characters
    • Lead with your keyword
  5. In Meta description, write a compelling summary:

    • Example: "Manage projects, track time, collaborate with your team. Free for indie hackers. Start organizing your work in seconds."
    • Keep it 150–160 characters
    • Include your target keyword once, naturally
    • Write for humans, not crawlers
  6. Leave Open Graph image blank for now (we'll cover this in Step 5)

  7. Click Save

Repeat this for every page your app has. If you have 20+ pages, prioritize the ones you want to rank for:

  • Homepage
  • Pricing page
  • Top 5 feature pages
  • Blog landing page (if you have one)

Then do the rest in batches.

This single step—writing unique, keyword-rich titles and descriptions—typically lifts CTR by 15–30% once Google re-indexes your pages. Google doesn't rank you higher, but more people click your result, which signals relevance.

Warning: Don't stuff keywords. Google penalizes keyword stuffing. Write titles and descriptions you'd actually want to click on.

Step 3: Fix Canonical Tags and Prevent Duplicate Content

Bubble apps often have multiple URL paths that lead to the same content. This confuses Google.

Canonical tags tell Google: "This is the real version. Index this one, not the duplicates."

In Bubble settings:

  1. Go back to Settings > SEO/Metadata

  2. Look for Canonical tag

  3. Set it to your primary domain (not a subdomain):

    https://yourdomain.com
    
  4. For pages that have parameters (like /dashboard?user=123), Bubble should handle this automatically, but verify:

    • Go to each parameterized page
    • Check Page title and Meta description settings
    • Make sure they're not duplicating across different parameter values
  5. If you have multiple subdomains or domain variations (like www.yourdomain.com vs yourdomain.com), set up a permanent redirect in your Bubble settings or at the domain level (via your DNS provider)

Why this matters: If Google sees the same content at /page and /page?ref=google, it counts both as separate pages. This dilutes your ranking power. Canonical tags consolidate that power into one URL.

Check this in Google Search Console:

  • Go to Coverage
  • Look for "Excluded" pages
  • If you see duplicates, your canonical setup needs work

Step 4: Configure Core Web Vitals and Page Speed

Google ranks fast pages higher. Bubble apps are often slow because they load JavaScript on every interaction.

You can't make Bubble as fast as static HTML, but you can optimize what you control.

Step 4a: Measure your baseline

Before making changes, measure your current performance:

  1. Open PageSpeed Insights
  2. Enter your Bubble app's homepage URL
  3. Run the audit
  4. Note your Core Web Vitals scores:
    • Largest Contentful Paint (LCP): Should be under 2.5 seconds
    • Cumulative Layout Shift (CLS): Should be under 0.1
    • First Input Delay (FID): Should be under 100ms (or Interaction to Next Paint, under 200ms)

If you're scoring in the "Poor" range, you have work to do. If you're in "Good," you're ahead of most Bubble apps.

Alternatively, use Lighthouse for Founders: Running Your First Audit in Chrome for a free, local audit.

Step 4b: Enable Bubble's performance features

  1. In Bubble, go to Settings > Performance
  2. Toggle Enable progressive web app (PWA) modeON
  3. Toggle Cache static filesON
  4. Toggle Minify CSS and JavaScriptON
  5. Look for Image optimization — toggle ON if available

These settings tell Bubble to:

  • Compress your code
  • Cache files on users' browsers
  • Optimize images automatically

Step 4c: Optimize images in your app

Images are often the biggest performance killer in Bubble apps.

  1. Go to each page with images

  2. For each image element:

    • Right-click > Inspect
    • Check the file size (look in DevTools Network tab)
    • If any image is over 200KB, it's too large
  3. Use an external image optimization tool like TinyPNG or Squoosh to compress before uploading

  4. In Bubble's image element settings, set:

    • Max width to the display width (not larger)
    • Alt text to a descriptive phrase (this helps both SEO and accessibility)

Step 4d: Consider Cloudflare

If your Core Web Vitals are still poor after these changes, add Setting Up Cloudflare for SEO: The Free Speed Boost as a reverse proxy. Cloudflare's free tier adds caching and compression that Bubble alone can't provide.

Pro Tip: Core Web Vitals are a ranking factor, but not the biggest one. A slow page with great content ranks better than a fast page with thin content. Don't obsess over perfect scores. "Good" is enough.

Step 5: Set Up Open Graph Tags for AI Search Discovery

Google isn't your only discovery engine anymore. ChatGPT, Perplexity, and Claude are indexing the web and citing sources.

Open Graph tags tell these AI engines how to display your content when they reference it.

In Bubble, for each page:

  1. Go to SEO/Metadata

  2. Find Open Graph title — set it to your page title (or a variation if you want different text in AI summaries)

  3. Find Open Graph description — set it to your meta description

  4. Find Open Graph image — upload a branded image (1200x630px works best)

    • This image appears when your content is cited in AI search results
    • Use your logo, a product screenshot, or a branded graphic
    • Don't use the same image for every page if possible (variety helps)
  5. Find Open Graph URL — leave this blank; Bubble fills it automatically

For a deeper dive on this, see Setting Up Open Graph Tags for Better Click-Through from AI Search.

Why this matters: When Perplexity cites your content, it shows your OG image and description. A clear, branded image gets more clicks than a generic one.

Step 6: Ensure Dynamic Pages Are Indexed

This is where most Bubble apps fail. You have 100 product pages, but Google only indexes 3.

The problem: Bubble's router needs to be configured so Google can discover parameterized pages.

Check your URL structure:

  1. In your Bubble app, go to a dynamic page (like a product detail page)
  2. Look at the URL in your browser's address bar
  3. It should look like one of these:
    • /product/123 (URL parameter)
    • /product?id=123 (query parameter)

If you're using URL parameters (/product/123):

Bubble handles these well by default. Google can crawl them. Just make sure:

  1. Each product/item has a unique, stable URL
  2. The page title and meta description change based on the item (using dynamic expressions)
  3. In Bubble, use the URL parameter field to pass the ID:
    • Page name: "product"
    • URL parameter: "id"
    • This creates /product/123 URLs

If you're using query parameters (/product?id=123):

These are crawlable but less SEO-friendly. If possible, migrate to URL parameters. If you must use query parameters:

  1. In Bubble, go to Settings > SEO/Metadata
  2. Look for Search parameter handling
  3. Set it to Crawlable (not "Hashbang")

If you have hundreds of dynamic pages:

You need to submit them to Google Search Console explicitly:

  1. Go to Google Search Console
  2. Go to Sitemaps
  3. Check if your sitemap includes dynamic pages
  4. If it doesn't, you need to configure Bubble's sitemap generation

In Bubble, go to Settings > SEO/Metadata and look for Dynamic page sitemap generation. If available, toggle it ON.

If Bubble's sitemap still doesn't include your dynamic pages, you may need to manually add them to GSC or use a tool like How to Generate a Sitemap.xml for Your Site (Every Stack Covered) to create a custom sitemap.

Warning: Don't submit thousands of pages at once. Google will crawl them slowly. Start with your top 100 pages and let them index over 2–4 weeks before adding more.

Step 7: Add Schema Markup for Trust and Rich Snippets

Schema markup tells Google what your content is. It also enables rich snippets—those fancy preview boxes in search results.

For your homepage, add Organization schema:

See Organization Schema: The 5-Minute Trust Signal Most Founders Skip for a step-by-step guide.

In Bubble:

  1. Go to your homepage
  2. In SEO/Metadata, look for Custom code or Header code
  3. Add this JSON-LD schema:
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Your Company Name",
  "url": "https://yourdomain.com",
  "logo": "https://yourdomain.com/logo.png",
  "description": "Your company description",
  "sameAs": [
    "https://twitter.com/yourhandle",
    "https://linkedin.com/company/yourcompany"
  ]
}

For product pages, add Product schema:

If you're selling or showcasing products:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "[Product Name]",
  "description": "[Product Description]",
  "image": "[Product Image URL]",
  "offers": {
    "@type": "Offer",
    "price": "[Price]",
    "priceCurrency": "USD"
  }
}

Replace the bracketed values with dynamic Bubble expressions if the content changes per page.

For FAQ pages, add FAQ schema:

If you have a FAQ page, use Adding FAQ Schema to Your Site Without Touching Code as a reference.

In Bubble, add:

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Question 1?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Answer 1."
      }
    }
  ]
}

How to add schema in Bubble:

  1. If Bubble has a Custom code field in SEO/Metadata, paste the schema there
  2. If not, go to Settings > Custom code > Head code and paste it there
  3. Save and republish your app
  4. Check that it worked using Google's Rich Results Test

Schema markup doesn't directly boost rankings, but it:

  • Enables rich snippets (which boost CTR)
  • Helps Google understand your content (which helps relevance)
  • Improves how AI search engines cite you

Step 8: Submit to Google Search Console and Monitor

You've configured everything. Now tell Google it's ready.

Add your site to Google Search Console:

  1. Go to Google Search Console
  2. Click Add property
  3. Enter your domain: https://yourdomain.com
  4. Verify ownership (Bubble usually handles this automatically if you're using a custom domain)
  5. Click Go to property

Submit your sitemap:

  1. In GSC, go to Sitemaps (left sidebar)
  2. Enter: https://yourdomain.com/sitemap.xml
  3. Click Submit

Google will crawl it within 24–48 hours.

Monitor crawl status:

  1. Go to Coverage in GSC
  2. You should see your pages listed as "Valid"
  3. If you see "Excluded" or "Error," click on the status to see why
  4. Common issues:
    • Blocked by robots.txt — Fix Step 1
    • Duplicate — Fix Step 3 (canonical tags)
    • Crawl anomaly — Usually resolves itself; wait 2 weeks

Check indexation over time:

  1. Go to Indexation in GSC
  2. You should see a graph showing indexed pages over time
  3. After 2 weeks, you should see growth
  4. If the graph is flat, your pages aren't being indexed; go back to Step 6

Pro Tip: GSC takes 2–4 weeks to show meaningful data. Don't panic if nothing shows up in the first week. Keep an eye on it, but focus on the next step: content.

Step 9: Create Content That Ranks (The Real Work)

Configuring Bubble SEO settings is necessary but not sufficient. You still need content.

Google ranks pages based on:

  1. Relevance — Does your content match the search query?
  2. Authority — Do other sites link to you?
  3. User experience — Do people click your result and stay on your page?

Settings alone don't provide any of these.

Create a keyword roadmap:

Before writing, know what you're ranking for:

  1. Pick your top 5 target keywords
  2. For each keyword, create one page
  3. Write content that answers the searcher's question better than your competitors

If you're overwhelmed by this, Seoable generates a keyword roadmap and 100 AI-written blog posts in under 60 seconds for a one-time $99 fee. You can then publish these posts to your Bubble app and let them drive organic traffic.

Alternatively, see SEO Bootcamp for Busy Founders: 14 Days, 14 Wins for a structured approach to content creation.

Publish to Bubble:

  1. Create a blog or resources section in your Bubble app
  2. Each post should be a separate page with its own URL (/blog/post-title)
  3. Set unique titles, meta descriptions, and Open Graph tags for each post
  4. Use internal links to connect related posts
  5. Republish your app

Google will discover these pages via your sitemap and start ranking them within 4–8 weeks.

Step 10: Iterate Based on Search Console Data

After 4 weeks, check your GSC data and iterate.

Look for quick wins:

  1. Go to Performance in GSC
  2. Filter by queries with Impressions > 10 and CTR < 20%
  3. These are pages Google is showing but users aren't clicking
  4. Go back to those pages and improve the title or meta description
  5. Republish and resubmit to GSC

Look for ranking opportunities:

  1. Filter by queries with Average position > 10
  2. These pages rank but are on page 2 or later
  3. Improve the content on these pages, add more detail, or add internal links from higher-ranking pages
  4. Republish and wait 2 weeks

Identify missing content:

  1. Look at your competitors' sites
  2. Use a tool like Ahrefs or Semrush to see what keywords they rank for
  3. Create pages for high-volume keywords you're missing
  4. Add them to your sitemap and let Google crawl them

This is the ongoing work. SEO isn't a one-time setup; it's a cycle of measurement, iteration, and improvement.

Common Bubble SEO Mistakes to Avoid

Mistake 1: Using a free Bubble subdomain

Free subdomains like myapp.bubbleapps.io rank poorly because Google treats them as low-authority. Use a custom domain. Even a $10/year domain is better than a free subdomain.

Mistake 2: Not setting dynamic titles and descriptions

If every page has the title "Dashboard" or "Page," Google can't differentiate them. You're competing with yourself. Set unique, keyword-rich titles for every page.

Mistake 3: Ignoring Core Web Vitals

A slow page loses ranking power. Spend 2 hours optimizing images and enabling caching. It's worth it.

Mistake 4: Submitting thousands of pages at once

Google crawls slowly. If you have 1,000 product pages, submit them in batches of 100–200 over 4 weeks. Let each batch index before adding more.

Mistake 5: Not using schema markup

Schema is free and easy. It doesn't directly boost rankings, but it improves CTR and helps Google understand your content. Do it.

Mistake 6: Forgetting about AI search

ChatGPT and Perplexity are indexing Bubble apps. Make sure your Open Graph tags are set up so you show up with a branded image when they cite you.

Bubble SEO Settings Checklist

Use this checklist to verify you've configured everything:

  • Sitemap exposed — Settings > SEO/Metadata > Expose sitemap.xml = ON
  • Robots.txt configured — Settings > SEO/Metadata > Expose robots.txt = ON
  • Dynamic titles set — Every page has a unique, keyword-rich title
  • Meta descriptions written — Every page has a 150–160 character description
  • Canonical tags configured — Settings > SEO/Metadata > Canonical tag = your primary domain
  • Core Web Vitals optimized — Settings > Performance > Enable PWA mode, cache static files, minify code = ON
  • Images optimized — All images under 200KB, alt text set
  • Open Graph tags set — OG title, description, and image set for key pages
  • Dynamic pages indexed — URL parameters configured, dynamic pages in sitemap
  • Schema markup added — Organization schema on homepage, Product schema on product pages
  • Submitted to GSC — Sitemap submitted, coverage monitored
  • Content created — At least 5 pages with unique, keyword-rich content
  • Monitoring set up — GSC checked weekly, performance data tracked

Summary: What Actually Moves Bubble App Rankings

Bubble SEO boils down to three things:

1. Technical foundation (Steps 1–4)

  • Expose your sitemap so Google can find your pages
  • Set dynamic titles and descriptions so Google understands what each page is about
  • Fix Core Web Vitals so pages load fast
  • Configure canonical tags so you don't compete with yourself

Done right, this takes 2–3 hours and unlocks 80% of your ranking potential.

2. Trust signals (Steps 5–8)

  • Open Graph tags for AI search visibility
  • Schema markup for rich snippets and authority
  • Google Search Console monitoring so you know what's working

This takes 1 hour and adds 10–15% more ranking power.

3. Content (Step 9)

  • Write or generate content that answers searcher questions
  • Publish it to your Bubble app
  • Let Google crawl and index it

This is the 80/20 work. You can have perfect technical SEO and zero content. You'll rank for nothing. But great content with mediocre technical SEO will rank.

Start with the technical foundation. Then add content. Then iterate based on search data.

Most Bubble app builders skip steps 1–2 entirely and wonder why they don't rank. Do these steps, and you're already ahead of 95% of your competitors.

If you want to accelerate the content phase, Seoable generates a complete keyword roadmap and 100 SEO-optimized blog posts in under 60 seconds for $99. You can publish them to your Bubble app immediately and start ranking within 4–8 weeks.

For a structured, step-by-step approach to all of this, see Onboarding Yourself to SEO: A Self-Paced Founder Track or SEO Bootcamp for Busy Founders: 14 Days, 14 Wins.

Now go configure your Bubble app. You have everything you need.

Free weekly newsletter

Get the next one on Sunday.

One short email a week. What is working in SEO right now. Unsubscribe in one click.

Subscribe on Substack →
Keep reading