Bubble Docs
  • Introduction
  • New? Start Here
  • What is Bubble?
  • The Glossary
  • User manual
    • Getting started
      • What is Bubble?
      • Building your first app
        • Planning features
        • Database structure
        • Design and UX
        • eCommerce and payments
          • Shopping cart
          • Checkout page
          • One-time payments
          • Subscriptions
          • Marketplace
      • Creating and managing apps
      • The Bubble editor
        • Tabs and sections
          • Design tab
            • The element tree
            • The property editor
          • Workflow tab
          • Data tab
          • Styles tab
          • Plugins tab
          • Settings tab
            • Application settings
              • Custom headers/body
              • Visual settings
              • Social media sharing
              • Translating your app
              • Email settings
              • Collaboration
            • Custom domain and DNS
          • Logs tab
        • Tools
          • Key features
          • The search tool
          • The Issue Checker
          • The element tree
          • The element property editor
          • The debugger
          • Notes
        • Previewing your app
      • Transitioning to Bubble from...
        • JavaScript
        • HTML and CSS
        • SQL
    • Design
      • Elements
        • The element hierarchy
          • The element tree
        • The page
        • Containers
          • Groups
          • Repeating groups
          • Table elements
          • Popups
          • Floating groups
          • Group focus
        • Visual elements
        • Input forms
          • Text and numbers
          • Dates and time
          • File uploads
          • Selection controls
        • Reusable Elements
      • Styling
        • Color variables
        • Font variables
        • Styles
        • Custom Fonts
      • Responsive design
        • Building responsive pages
        • Legacy articles
          • The Basics (Legacy)
          • Building Responsive Pages (Legacy)
          • Migrating Legacy Pages
          • Tips When Designing (Legacy)
      • Templates
      • The Component Library
      • Importing from Figma
    • Data
      • The database
        • Data types and fields
        • Creating, saving and deleting data
        • Finding data
        • Displaying data
        • Protecting data with privacy rules
        • The database editor
        • Export/import data
          • Exporting data
          • Importing data (CSV)
        • Working with location data
        • Using Algolia
        • Database structure by app type
          • Marketplace Apps
          • Directory & Listings Apps
          • Social Network Apps
          • SaaS Apps
          • Project Management Apps
          • CRM Apps
          • Professional Services Apps
          • On-demand Apps
          • Documentation/ CMS Apps
          • Applicant Tracking System (ATS) Apps
          • Portfolio Apps
          • Gallery Apps
          • Online Store / Ecommerce Apps
          • Blog Apps
          • Messaging App
          • Dashboards
          • Building Block Apps
          • Bubble as a backend
      • Files
      • Images
      • Static data
        • App texts (translations)
        • Option sets
      • Temporary data
        • Custom states
        • URL parameters
      • User accounts
        • Authentication plugins
          • Facebook plugin
          • Fitbit plugin
          • Google plugin
          • Instagram plugin
          • LinkedIn plugin
          • Pinterest plugin
          • Slack plugin
          • Wistia plugin
          • YouTube plugin
        • Cookies set by Bubble
      • Time, dates and time zones
    • Logic
      • The frontend and backend
      • Workflows
        • Events
          • Frontend events
            • Recurring workflows
            • Custom events
          • Backend events
            • Database trigger events
        • Actions
        • API Workflows
      • Dynamic expressions
      • Conditions
      • Navigation
        • Single-page applications (SPA)
        • Multi-page applications
        • Page slugs
    • Workload
      • Understanding workload
        • Activity types
        • The workload calculation
        • Client-side and server-side processing
      • Tracking workload
        • Measuring
          • Using App Metrics
        • Monitoring
          • Workload notifications
          • Infinite recursion protection
      • Optimizing workload
        • Optimization framework
        • Optimization checklist
          • Page load
          • Searches
          • Workflows and actions
          • Backend workflows
        • Agency showcases
          • Minimum Studio
          • Neam
          • Support Dept
    • Security
      • Bubble's security features
      • Planning app security
      • Client-side and server-side
      • Bubble account security
      • App security
      • Page security
      • Database security
      • API security
        • API Connector security
        • Data API security
        • Workflow API security
      • Flusk
        • Overview
        • Flusk plan features
        • Getting started with Flusk
        • Flusk security tools
          • The Issues Explorer
          • Issue details
          • Tools and settings
            • Pages rating
            • Database rating
        • Flusk FAQ
      • Cookies
      • Security checklist
    • Publishing your app
      • Web app
      • Native mobile app
        • Global native mobile settings
        • iOS App Store
        • Google Play Store
        • Publishing FAQ
    • AI
      • Generate apps with AI
        • About AI app generation
      • AI page designer
      • Connect to AI agents
    • Maintenance
      • Collaborators
      • Version control
        • Best practices: Version control
        • Transitioning from the legacy version control
        • Terminology: Version control
        • Version Control (legacy)
      • Commenting
      • Database maintenance
        • Copying the database
        • Restoring database backups
        • Bulk operations
          • Bulk operation methods compared
        • Wiping change history
      • Performance
        • Hard limits
        • Capacity Usage (legacy)
        • Notes on queries
      • SEO
        • Introduction to SEO
        • SEO: App
        • SEO: Page
      • Testing and debugging
        • Introduction to testing and debugging
        • The debugger
        • The server logs
        • Supported browsers
      • API workflow scheduler
    • Integrations
      • API
        • Introduction to APIs
          • What is a RESTful API?
        • The Bubble API
          • Bubble API terminology
          • Authentication
            • How to authenticate
            • No authentication
            • As a User
            • As an admin
          • The Data API
            • Data API Privacy Rules
            • Data API endpoints
            • Data API requests
          • The Workflow API
            • Workflow API privacy rules
            • Workflow API endpoints
            • API workflows
              • Creating API workflows
              • Scheduling API workflows
              • Recursive API workflows
              • API Workflow Scheduler
              • Case: Stripe notifications
        • The API Connector
          • Authentication
          • API Connector security
          • API guides
            • OpenAI
              • Authentication
              • Calls
                • ChatGPT
                  • Chat
            • Google Translate
              • How to setup Google API keys
          • Streaming API
        • API security
        • Plugins that connect to APIs
        • API Glossary
      • Plugins
        • What Plugins Can Do
        • Installing and using Plugins
        • Authentication plugins
        • Special Plugins
      • SQL Database Connector
      • Bubble App Connector
      • WorkOS
        • WorkOS SSO
        • WorkOS API
    • Infrastructure
      • Sub-apps
      • Bubble release tiers
      • Hosting and scaling
        • How Bubble hosting works
        • Scaling with Bubble
        • CDN (Cloudflare)
        • Bubble app names
        • Domain and DNS
      • Compliance
        • GDPR
        • SOC 2 Type II
        • HIPAA
        • Other frameworks and standards
    • Bubble for Enterprise
      • Hosting and infrastructure
        • Dedicated instance
          • The Dedicated editor experience
          • Technical specs
          • Main cluster dependencies
          • Customizable options
          • Migration process
            • Pre-migration
            • During migration
            • Post-migration
      • Security and compliance
        • Single sign-on (SSO)
        • GDPR
        • SOC 2 Type II
        • HIPAA
        • Other frameworks
        • Bubble's security features
      • Admin and collaboration
      • Priority support
      • Billing and Payment Guideline for Dedicated Instances
  • Core Reference
    • Using the core reference
    • Bubble's Interface
      • Design tab
      • Design tab (Legacy)
      • Workflow tab
      • Data tab
      • Styles tab
      • Styles tab (Legacy)
      • Plugins tab
      • Settings tab
      • Logs tab
      • Template tab
      • Toolbar
      • Top and context menu options
      • Deployment and version control
        • Deployment & Version Control Dropdown (legacy)
      • Notes
    • Elements
      • General properties
      • General properties (Legacy)
      • Styling properties
      • Styling Properties (Legacy)
      • Responsive Properties
      • Responsive Properties (Legacy)
      • Conditional formatting
      • States
      • Page Element
        • Page Element (Legacy)
      • Visual Elements
      • Containers
      • Container Layout Types
      • Containers (Legacy)
      • Input Forms
      • Reusable Elements
      • Element Templates (legacy)
    • Workflows
    • Events
      • General events
      • Element events
      • Custom events
      • Recurring event
      • Database trigger event
    • Actions
      • Account
      • Navigation
      • Data (things)
      • Email
      • Element
      • Custom
    • Data
      • Data Sources
      • Operators and comparisons
      • Search
      • Privacy
    • Styles
    • API
      • The Bubble API
        • The Data API
          • Authentication
          • Data API endpoints
          • Data API requests
        • The Workflow API
      • The API Connector
        • Authentication
        • Adding calls
    • Bubble-made Plugins
      • AddtoAny Share Buttons
      • Airtable
      • API Connector
      • Blockspring
      • Box
      • Braintree
      • Bubble App Connector
      • Chart.js
      • Circle Music Player
      • Draggable Elements
      • Dropzone
      • Facebook
      • Fitbit
      • Full Calendar
      • Google
      • Google Analytics
      • Google Optimize
      • Google Places
      • Ionic Elements
      • iTunes
      • Slidebar Menu
      • LinkedIn
      • Localize Translation
      • Mixpanel
      • Mouse & Keyboard Interactions
      • Multiselect Dropdown
      • Progress Bar
      • Rich Text Editor
      • Rich Text Editor (Legacy)
      • Screenshotlayer
      • SelectPDF
      • Slack
      • Segment
      • Slick Slideshow
      • SQL Database Connector
      • Star Rating
      • Stripe
      • Tinder-like Element
      • Twitter
      • YouTube
      • Zapier
    • Application Settings
      • App plan
      • General
      • Domain / email
      • Languages
      • SEO / metatags
      • API
      • Collaboration
      • Sub-apps
      • Versions
  • Account & Marketplace
    • Account and billing
      • Pricing and plans
        • Plans and billing
        • Billing cycle
        • FAQ: Pricing and Workload
      • Account Management
      • Building Apps for Others
      • Selling on the Marketplace
      • Plans & Billing (legacy)
    • Official Bubble Certification
      • Hiring certified developers
    • Building Plugins
      • The Plugin Editor
      • General Settings
      • Updating to Plugin API v4
      • Adding API Connections
      • Building Elements
      • Building Actions
      • Loading Data
      • Publishing and versioning
      • Github Integration
    • Building Templates
    • Application and data ownership
    • Marketplace policies
    • Bug reports
  • Beta features
    • About the Beta features section
    • Native mobile apps 🔒
      • Introduction
        • What is a native mobile app?
        • Native mobile vs. web development
        • Differences in native and web elements
        • Native mobile app terminology
      • Building
        • Views and navigation
        • Native mobile actions
        • Components and gestures
        • Device resources
          • Location services
          • Camera/photo library
      • Previewing
      • Publishing
Powered by GitBook
On this page
  • Benefits of Algolia
  • Who should consider this
  • Setup
  • Indexing
  • Searching
  • Known limitations

Was this helpful?

  1. User manual
  2. Data
  3. The database

Using Algolia

This section covers how to use the third-party search provider Algolia with Bubble

Last updated 1 year ago

Was this helpful?

Bubble has an integration with , a third-party search-as-a-service provider. Bubble apps using this integration have their data sent to Algolia for indexing, and use Algolia as a data source to power elements like repeating groups and searchboxes.

Benefits of Algolia

What are the benefits of using Algolia? A noticeable one for your users is speed - Algolia searches are fast, and noticeably faster than Bubble native searches at scale. A second one is customizability - Algolia allows you to tweak the search algorithm, among other parameters as well.

Note that unlike a plugin which must be installed, this integration is built natively into the editor, much like Bubble’s integrations with Google Maps and Google Geocode.

Who should consider this

Bubble does have native search capabilities, but Algolia provides a more performant and customizable search experience at scale. Users of this integration will also need their own Algolia plan (though Algolia also offers a free tier). In other words, Algolia is more suitable for Bubble apps at a large scale that rely on search as an important part of their user experience; thus, this feature is only available for Bubble apps on the Professional plan and above.

Setup

To start off, you must have your own Algolia account and copy your Algolia keys into your app’s Settings. When creating an Algolia account, you do not have to create indices yourself. Instead, right after signing up, you should visit the "API Keys" section of the dashboard. You will see a screen like this:

In your Bubble app, in Settings > General in the "General services API Keys" section, there is a checkbox for "Enable searching with Algolia" (if you do not see this checkbox, your app does not have this feature, chances are because it is not in the right tier). Once you check the box, you will see input fields for the application ID and two keys from the Algolia dashboard. Once you've copied and pasted those values in, the Bubble app will confirm that it thinks the keys are of the correct format (note the green text below):

The other parts of the Algolia feature mentioned below will not appear until valid keys and an application ID have been supplied in Settings.

Indexing

After keys have been added, in the Privacy tab for every data type, you’ll see the option to index that type with Algolia.

If a data type is indexed to Algolia, Bubble will send all public fields to Algolia, i.e. the fields that are visible via search in the “Everyone else (default permissions)” Privacy rule. Bubble will automatically create the necessary indexes in Algolia for you - you should not rename those indexes.

In addition, make sure that the data type being indexed has "Find this in searches" under the "Everyone else" permission checked.

After you toggle a data type to be indexed by Algolia (checkbox on the right), you will probably want to trigger an indexing of all the things of that type. You can do so in the modal accessed at the top of the Privacy page for any indexed type.

You can choose to trigger a full indexing of all indexed types or just one type, and you can choose to do this for your Development database ("test"), Live database, or both. Note that doing a full indexing could take noticeable capacity over a period of time (depending on how many things there are), so the recommendation is to trigger a full indexing once after adjusting all your data types’ settings, and to do it at non-peak hours. Behind-the-scenes, the full indexing runs the same process as a large CSV data export, so you can actually see the status of these tasks in App Data > Export.

When things of an indexed data type are changed, added, or deleted, Bubble will automatically try to update the corresponding Algolia index for you. This should be generally reliable, but in the event that you find Algolia “out of sync” with your Bubble database, you can always trigger a full re-indexing in the same way as above.

During set-up, after you run the first indexing, we recommend you check the Algolia portal to make sure that you're seeing the records you expect in the newly created indices.

Searching

Once you’ve activated Algolia for your app, you will see a new data source, “Search with Algolia”. For example, this can be the data source for a repeating group, or the “Choices style” for a searchbox. The Algolia data source also lets you choose to query over a specific field, or all fields of a data type.

You cannot change the sort order of an Algolia result in Bubble because that is controlled in Algolia. After all, we are relying on their search expertise, manifested in their algorithm! You are able to customize the Algolia search algorithm for a particular index via the Algolia dashboard. For example, you can change the weights of different fields in the search algorithm. Note: one limitation of the current integration is that you should not set two fields as “equal weight” in the Algolia interface.

Note that the default setting in Algolia is to return 20 entries in the first 'page' of the search. At this time there's no way for your Bubble app to access other pages of results, but you can change the number of results in the first page by going to the Algolia portal > the appropriate index > Configuration > Pagination.

Known limitations

This is the v1 of the Algolia feature. It has these known limitations:

  • This only supports text and number fields. For all other field types (including fields which are other custom data types), Bubble will make a "best effort" attempt to send those fields to Algolia, but it will likely not be sensible. To restate explicitly, the Algolia integration is not meant for other fields like dates, geographic addresses, ranges, Users, or fields that are other custom data types.

  • This only supports public data fields, so it is not good in situations where data privacy is very important, e.g. when you want to prevent one user from seeing another user's data. For example, it is good if you have a short-term rental marketplace app where all users can see any rental on the app. It is not good for an e-commerce experience where you have many vendors and you want to build a search for only one vendor's products.

  • Algolia has limits on the size of certain fields. If Bubble detects that a given Thing has a field that is too long (text fields are the most likely culprit), it will automatically clip them for you so that it can be sent to Algolia. This can be disabled in Settings, but should only be done so by advanced users who are accounting for this in Algolia's settings.

  • In Algolia's settings, you may see an option to rank two fields as "equal weight" - please do not do this, as it will break the Bubble integration.

  • Bubble will automatically create the indices in Algolia - please do not change the names of these indices, though you are free to adjust other settings as desired.

Algolia