Web app

SEO and metatags

Social media and open graph settings

Set the metadata that controls how your app appears when shared on social platforms. You can customize the title, site name, description, and thumbnail used for link previews.

Social media sharing

Many social media platforms (and other types of software that allow link sharing) fetch some information about your app that it uses to generate a preview. This gives you as the app's developer the chance to set up the text content and image that the platform displays, to ensure it represents your app in a good way.

Open Graph tags for Social Networks

What is Open Graph?

Open Graph is a protocol that enables web pages to become rich objects (meaning that they are displayed with details like a customizable title and preview image) in social media platforms and other online services.

It was first introduced by Facebook, but has since been adopted by many other platforms such Twitter and LinkedIn. By tweaking the Open Graph settings in Bubble, you can control what content is displayed on platforms that support the Open Graph protocol.Open Graph is a protocol that enables web pages to become rich objects (meaning that they are displayed with details like a customizable title and preview image) in social media platforms and other online services.

It was first introduced by Facebook, but has since been adopted by many other platforms such Twitter and LinkedIn. By tweaking the Open Graph settings in Bubble, you can control what content is displayed on platforms that support the Open Graph protocol.

Social Metatags

This setting specifies the tags that are used when your app's domain is shared. You can also set specific tags for a given page. See the page level settings section.

Popular social networks let you customize how links to your website look, when posted on their platforms. You can control this setting (open graph meta tags) in the Meta tags section and customize the image and the content of the text that will be displayed.

Here's an example of what the tags for the www.bubble.io website look like on LinkedIn:

This link preview is automatically generated by LinkedIn, based on the settings in the Social Media / Open Graph section

Page level settings

Settings in the Settings tab will be applied to all pages of the application. Bubble also lets you modify these values at the page level. This is in particular useful if you want to use some dynamic information (for instance, the current page's product's image) instead of a generic image.

If you have some settings at the page level, they will prevail over the application's settings. To edit the page's setting:

  1. Open up the page that you want to edit

  2. Double-click the page itself or locate it in the element tree to open up the property editor

  3. In the Appearance tab, scroll down to the Title/Description and Image setting as illustrated below:

SEO settings

Manage settings that affect how search engines interpret and index your app. Options include exposing heading tags, pointing URLs to your primary domain, customizing your robots.txt, and exposing a sitemap file.

Custom headers and body

What is a custom header or body for?

Using this setting adds a custom header/body to all of your pages. If you want to add them to one or more specific pages, you can do so in the pages property editor.

Article: The page

Custom headers

The content in the header loads before the content on the page and is useful for content that you need to ensure is loaded before the page is loaded and rendered.

A custom header refers to the HTML content that can be added to the <head> section of every page in your app. The content inside the <head> tag does not appear on the page itself, but it sends specific instructions to the browser, such as:

  1. Meta Tags: If you need to add meta tags to all pages (in addition to the tags already built into Bubble), you can place them here

  2. Link to External CSS: External stylesheets are typically linked in the header to ensure that they are loaded before the page content

  3. Link to External JavaScript Libraries: Although JavaScript can be loaded in the header or the body, certain libraries and scripts that must be loaded before the page content are placed in the header

  4. Third-party Integrations: Some third-party integrations require code snippets to be placed in the head. The third-party documentation will usually instruct where to place the code.

Custom body

The content in the body loads as the page is being rendered. It's useful for code that interacts with elements and content that don't necessarily need to be loaded before the page starts displaying

A custom body refers to content placed within the <body> tag of the HTML document. This is where the content displayed on the webpage itself is housed (including every element you place on the page in the Design tab). You might use a custom body for:

  1. Embedding Custom HTML Elements: For special content that should be present on every page.

  2. Embedding JavaScript: When scripts are dependent on the page content, or when they should execute after the content has been loaded, they are typically placed near the end of the body section.

  3. Third-party Integrations: Certain third-party integrations are placed in the body.

As you can see from the examples, there is some overlap as to what kind of content is placed where. If you are relying on a third-party code snippet, we recommend you check the documentation for that third party to make sure it's implemented in the right place.

Advanced settings

Add custom script or meta tags to the <head> or <body> of your app pages. Useful for adding analytics, third-party integrations, or custom styles.

301 redirections

Set up permanent server-side redirects from one URL to another. This helps preserve SEO value when changing URLs and ensures users are routed to the correct destination. Supports wildcard redirects for dynamic patterns.

Hosting files in the root directory

Upload and host static files at the root level of your domain (e.g., yourdomain.com/filename). This is often used to verify domain ownership or support third-party services. Files are version-specific and should not conflict with page names.

Domain and email

When an app is created, Bubble uses the name you provide to generate a unique URL where you can run of your app. For example, if your app has the name my-bubble-application, Bubble generates the URLs below:

https://my-bubble-application.bubbleapps.io
What does it mean to connect to a custom domain?

Connecting to a custom domain means linking your Bubble app to a domain you own (like yourapp.com) instead of using the default Bubble URL (e.g. yourapp.bubbleapps.io). This gives your app a professional web address and allows you to manage branding, SEO, and email settings tied to your domain. See the article below for a more in-depth look:

Article: Custom domain and DNS

Domain registrars

Registrars are accredited entities that manage the reservation of domain names. There are many different providers and in the list below you'll find some of the biggest ones:

  1. Google Domains - https://domains.google

Bubble is not responsible for the content, accuracy, or practices of third-party websites or services that are linked from our platform and website. We provide these links for your convenience. Always review the terms and conditions and privacy policies of any third-party websites or services that you visit.

Domain settings

Connect a custom domain to your app. Enter your domain name and click Set up this domain to register it with Bubble and receive the instructions needed to configure your DNS.

Email settings

Customize your app's email behavior after a domain has been set up. Domain configuration is required before enabling email features.

Email settings

This section explores using Bubble's built-in email features, which utilize Sendgrid. If you want to set up a more customized solution or prefer a different email API provider, consider configuring an API using the API Connector plugin or browsing the plugin store for plugins related to your desired provider.

Article: The API Connector plugin

Article series: Plugins

There are many scenarios in which you'll need to email the users of your app. Whether it's to notify them about updates, send password reset links, share promotional offers, or simply welcome them onboard, effective email communication enhances user engagement and trust in your platform.

Sending emails can be done sing the Send Email action. Some specific email types, such as resetting a user's password, has a built-in feature that generates a secure password reset token for you and can also automatically send the email.

Bubble offers two ways to send emails:

  • Shared email address: if you haven't set up a custom domain and/or SendGrid account, Bubble offers a shared email address from which you can email your users. For apps in development, this solution is suitable. However, for live apps, we recommend using a dedicated SendGrid account to ensure email deliverability. The shared email address also has a limitation of 50 recipients per email.

  • Custom domain: when you own a custom domain, you can customize SendGrid and Bubble's built-in email features use that domain instead. This is a more reliable solution for apps with live users.

When your app does not use a custom domain, all emails will come from [email protected]. This is a shared email address from Sendgrid that comes out-of-the-box with your new Bubble app to help you get started.

In many scenarios you'll need to send an email to your users. This article covers the basic email settings needed to use Bubble's built-in email system.

Built-in email features

Bubble lets you send emails with customizable content, and additionally offers built-in features for sending more technically-oriented emails, such as those required for resetting a user's password.

Click on each point below for more information and links to their core reference entries:

Using the shared email address

If you have not yet connected your app to a custom domain, you can use Bubble's shared email address. What this means is that all your emails will come from the same address as other apps using the same feature:

This is useful for when you are developing and testing your app, but we recommend setting up your own SendGrid account when your app goes live. You can read more about why and how to do that in the section below.

The built-in functionality for sending from the shared address comes out-of-the-box when your app is set up, and you don't need to make any changes to your app's settings. To send an email, simply use the feature in the workflow editor.

Limitations of using the shared email address

Using Bubble's shared email address comes with a few limitations:

  • Due to rate limiting from SendGrid, a maximum of 50 recipients can be specified per email

  • You can only send emails from the [email protected] email address

  • Measures such as is only available if you are managing your own SendGrid account

  • SendGrid provides a range of features including custom email templates, tracking, analytics, and more. These are only available if you register your own account

  • SendGrid keeps logs of all sent emails. The logs are only available if you register your own account.

Using a custom domain

Regardless of the email domain you want to use, Bubble's built-in email feature uses SendGrid to send emails. If you want to use your own and , you need to set up your own SendGrid account.

Setting up SendGrid

Before you set up your SendGrid account, you must own the domain that you want to use and connect it to your Bubble app. You can read more about registering our domain in the article below.

Article: Custom domain and DNS

Step 1: Creating a SendGrid account

The first thing you need to do is to register a SendGrid account at https://signup.sendgrid.com/.

Step 2: Generating an API key

After logging in, you need to get your API key from SendGrid (see SendGrid documentation here). Make sure to treat the API key as sensitive data and store it in a secure way.

Step 3: Set up and validate the key in Bubble

Navigate to Settings - Domain / Email and scroll down to the header that says Email settings. Note that if you have not yet connected your Bubble app to a domain, the setting will not be displayed.

Enter it in the input box in the SendGrid API Key field, and click on Verify Sendgrid Key. If your key is valid, a validation email will be sent to the account you used to sign up for Bubble.

Once you have validated your SendGrid connection, you will be able to, optionally, enter a template ID (so that all emails coming from your app follow a template you design in SendGrid).

You will also be able to modify the alias of the admin email.

Note that there are some things you can do on SendGrid's end to optimize email delivery, such as domain white-labeling, IP white-labeling, etc.

We recommend you read SendGrid's documentation for more details about their service.

TLS encryption (HTTPS)

Enable HTTPS for secure communication between your app and users. TLS encryption can only be configured after a custom domain has been set.

Last updated

Was this helpful?