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.
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:
- Basic understanding of what SEO is (if you don't have this, start with Onboarding Yourself to SEO: A Self-Paced Founder Track)
- Familiarity with your app's URL structure and page hierarchy
- One target keyword you want to rank for (you can expand later)
Tools to Have Open:
- Bubble editor in one tab
- Google Search Console in another
- Lighthouse for Founders: Running Your First Audit in Chrome to measure Core Web Vitals before and after
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:
- Click Settings (gear icon, top right)
- Go to SEO/Metadata
- Look for Expose sitemap.xml—toggle it ON
- Look for Expose robots.txt—toggle it ON
- 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.
- 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:
Open the page in the editor
Click the page name (at the top of the left panel)
Scroll down to SEO/Metadata
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
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
Leave Open Graph image blank for now (we'll cover this in Step 5)
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:
Go back to Settings > SEO/Metadata
Look for Canonical tag
Set it to your primary domain (not a subdomain):
https://yourdomain.comFor 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
If you have multiple subdomains or domain variations (like
www.yourdomain.comvsyourdomain.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:
- Open PageSpeed Insights
- Enter your Bubble app's homepage URL
- Run the audit
- 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
- In Bubble, go to Settings > Performance
- Toggle Enable progressive web app (PWA) mode — ON
- Toggle Cache static files — ON
- Toggle Minify CSS and JavaScript — ON
- 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.
Go to each page with images
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
Use an external image optimization tool like TinyPNG or Squoosh to compress before uploading
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:
Go to SEO/Metadata
Find Open Graph title — set it to your page title (or a variation if you want different text in AI summaries)
Find Open Graph description — set it to your meta description
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)
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:
- In your Bubble app, go to a dynamic page (like a product detail page)
- Look at the URL in your browser's address bar
- 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:
- Each product/item has a unique, stable URL
- The page title and meta description change based on the item (using dynamic expressions)
- In Bubble, use the URL parameter field to pass the ID:
- Page name: "product"
- URL parameter: "id"
- This creates
/product/123URLs
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:
- In Bubble, go to Settings > SEO/Metadata
- Look for Search parameter handling
- Set it to Crawlable (not "Hashbang")
If you have hundreds of dynamic pages:
You need to submit them to Google Search Console explicitly:
- Go to Google Search Console
- Go to Sitemaps
- Check if your sitemap includes dynamic pages
- 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:
- Go to your homepage
- In SEO/Metadata, look for Custom code or Header code
- 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:
- If Bubble has a Custom code field in SEO/Metadata, paste the schema there
- If not, go to Settings > Custom code > Head code and paste it there
- Save and republish your app
- 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:
- Go to Google Search Console
- Click Add property
- Enter your domain:
https://yourdomain.com - Verify ownership (Bubble usually handles this automatically if you're using a custom domain)
- Click Go to property
Submit your sitemap:
- In GSC, go to Sitemaps (left sidebar)
- Enter:
https://yourdomain.com/sitemap.xml - Click Submit
Google will crawl it within 24–48 hours.
Monitor crawl status:
- Go to Coverage in GSC
- You should see your pages listed as "Valid"
- If you see "Excluded" or "Error," click on the status to see why
- 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:
- Go to Indexation in GSC
- You should see a graph showing indexed pages over time
- After 2 weeks, you should see growth
- 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:
- Relevance — Does your content match the search query?
- Authority — Do other sites link to you?
- 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:
- Pick your top 5 target keywords
- For each keyword, create one page
- 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:
- Create a blog or resources section in your Bubble app
- Each post should be a separate page with its own URL (
/blog/post-title) - Set unique titles, meta descriptions, and Open Graph tags for each post
- Use internal links to connect related posts
- 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:
- Go to Performance in GSC
- Filter by queries with Impressions > 10 and CTR < 20%
- These are pages Google is showing but users aren't clicking
- Go back to those pages and improve the title or meta description
- Republish and resubmit to GSC
Look for ranking opportunities:
- Filter by queries with Average position > 10
- These pages rank but are on page 2 or later
- Improve the content on these pages, add more detail, or add internal links from higher-ranking pages
- Republish and wait 2 weeks
Identify missing content:
- Look at your competitors' sites
- Use a tool like Ahrefs or Semrush to see what keywords they rank for
- Create pages for high-volume keywords you're missing
- 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.
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 →