How to Set Up Email Confirmation in Bubble.io (Step-by-Step)
Add secure, customizable email confirmation to your Bubble.io app in just a few simple steps.

Thomas Couderq
16 Jan 2025
Adding an email confirmation feature to your Bubble.io app is one of the best ways to boost your app’s security and build trust with your users. Whether you're building a marketplace, a SaaS platform, or a community site, confirming users' email addresses helps prevent spam, ensures account validity, and gives you a verified communication channel.
The good news? You don’t need any plugins or code to set it up.
In this hands-on guide, we’ll walk you through every step to create a custom email confirmation flow in Bubble.io, from generating a secure token to updating your database and sending a branded confirmation email.
No fluff—just a clean and functional solution you can implement in less than 30 minutes.
Let’s get started!
Why You Should Add Email Confirmation to Your Bubble.io App
When building apps with Bubble.io, user sign-up is often the first interaction someone has with your platform. But without verifying the user’s email address, you leave the door open to:
Fake or spam accounts
Typos that break your communication
Security vulnerabilities in account recovery flows
That’s where email confirmation in Bubble.io comes in. By asking users to confirm their email after sign-up, you’re not just validating identity—you’re also protecting your platform and improving your app’s reliability.
A proper email verification system in Bubble also lets you:
Ensure users have access to a valid inbox
Reduce bounce rates and improve deliverability for future emails
Create smarter onboarding flows by tracking confirmed users
In short, whether you’re running a marketplace, SaaS tool, internal dashboard or directory app, adding email confirmation to your Bubble.io app is a best practice that will pay off quickly.
Step 1 – Build Your Signup Flow
Before setting up your email confirmation in Bubble.io, you’ll need a working signup page where users can register.
In this tutorial, we’re using a prebuilt Signup/Login page from the Nocodable Components library. It includes everything you need:
A responsive layout
Login, Signup, and Reset Password views
Clean design that’s ready to plug into any Bubble.io app
✅ No time wasted on UI. Just focus on your features.
💡 Don’t have a signup page yet? Grab the pre-made one from Nocodable Components and get started in minutes!

Already have a signup form set up in your Bubble app? Great! You can skip to the next step and integrate the email confirmation feature right into your existing flow.
Step 2 – Set Up Your Signup Workflow
Now that your signup page is ready, let’s build the workflow that registers a new user.
In the example below, we're using a basic “Sign the user up” action—just to demonstrate the logic clearly. Your actual signup flow might include extra steps like sending data to external services, showing alerts, or redirecting to an onboarding page. That’s totally fine!

Why We’re Not Using Bubble’s Built-in Email Confirmation
You might notice a checkbox in the "Sign the user up" action:
☑️ Send an email to confirm the email
Sounds great, right? Not quite.
❗️We’re intentionally not using Bubble’s native email confirmation feature in this tutorial.
Here’s why:
You can’t customize the email’s layout or branding
The built-in email is very limited (only plain text edits)
It’s harder to track and manage the confirmation status within your own database
Instead, we’ll build a custom email confirmation flow in Bubble.io that gives you full control over design, logic, and user experience—while still being simple to implement. And most importantly, you'll be able to use this logic with any Email provider you want.
Step 3 – Set Up Your Database for Email Confirmation
Now that we’ve built the interface and signup logic, let’s prepare the database to track whether a user has confirmed their email.
To do this, we’ll add two new fields to the User
data type:
emailConfirmed?
→ (yes/no) —> default value = "no"emailConfirmationToken
→ (text)

🔐 Why These Fields Matter
emailConfirmed?
will help you control access across your app.
For example, you can easily restrict users from accessing certain pages unlessCurrent User's emailConfirmed?
is “yes”.emailConfirmationToken
will store a unique string that we'll generate right after signup. This token will be used to identify and verify the user when they click the link in their confirmation email.
💡 This gives you complete control over the email confirmation process in Bubble.io—far more than the default built-in solution.
So go ahead and add these two fields to your User type before moving on.
Step 4 – Generate a Secure Confirmation Token (Using Backend Workflows)
Right after a user signs up, your app needs to do two things:
Generate a secure
emailConfirmationToken
Send a confirmation email with that token
To do this securely, we’ll use a Backend Workflow (also known as an API workflow in Bubble).
Why Not a Frontend Workflow?
While you could generate the token using a regular frontend workflow, this isn’t 100% secure. A tech-savvy user could inspect their browser and retrieve the confirmation token—without even clicking the email.
✅ Using a Backend Workflow keeps the token generation hidden and secure, since it happens server-side.
⚠️ Note: Backend Workflows require a paid Bubble plan. If you’re using the free plan, you can still follow this tutorial using a frontend workflow—but be aware of the security limitations.
Step-by-Step: Create the Token Generator Workflow
1. Go to your Backend Workflows tab
Make sure the "Backend Workflows" (API workflows) feature is enabled in your app settings.
2. Create a new API Workflow
Click “Add an API workflow” and name it something like sendEmailConfirm
.
3. Add a new parameter
Call it user
and set its type to User.

4. Add a “Make changes to thing” action
Set the “thing to change” to user
.
5. Update the emailConfirmationToken
field
Use the “Calculate formula” → “Generate random string”.
Length: 8 characters
Only Numbers (you can customize this)

6. Add an email sending action
Now, let’s send the confirmation email. You can use any email provider, as long as you include the confirmation link with the token.
In this example, we’ll use Bubble’s built-in Send Email action for simplicity, but you can also use:
Mailchimp
Postmark
Brevo (Sendinblue)
Or any plugin/API you prefer
Make sure the email contains a link like this:
email_confirm
is the page we’ll create in the next steptoken=12345678
is the token we just generated

💡 Pro Tip: Bubble recently announced that the free SendGrid integration will be discontinued. Consider switching to a paid SendGrid plan or an alternative email provider if you're planning for production use.
Step 7 – Trigger the Backend Workflow After Signup
Now that your backend workflow is set up and ready to generate the confirmation token and send the email, let’s connect it to your Signup flow.
Here’s how to do it:
Go back to your Signup page
In the workflow where you sign the user up (the “Sign the user up” action), add a new step right after
Choose the action “Schedule API Workflow”
In the “API Workflow” dropdown, select the backend workflow you just created (e.g.,
sendEmailConfirm
)Set the
User
parameter to Current UserSet the
Scheduled Date
to Current Date/Time

And that’s it! 🎉
Now, whenever a new user signs up, your app will:
Securely generate an email confirmation token
Send the confirmation email with a link
Track whether their email is confirmed
Let’s move on to Step 5 – Build the Email Confirmation Page so users can click the link and confirm their email address.
Step 5 – Create Your Email Confirmation Page
Now that we’re sending a confirmation email with a unique link, we need to create the page where users will land to verify their email.
Here’s how to do it:
Create a new page in your Bubble.io app (you can call it something like
email_confirm
,verify
, or anything you want).Design it however you like! A simple message like “Thanks for confirming your email” or “Email verification in progress…” is enough.
🔗 IMPORTANT: The page URL must exactly match the one you added in the confirmation email link.
For example, if your email includes this link:Then your Bubble page must be called
email_confirm
.

This is where we’ll process the token and confirm the user’s email in the next step.
Step 6 – Confirm the User’s Email on Page Load
We’re almost there! Now we just need to confirm the user’s email when they land on the confirmation page.
Here’s what you need to do:
Open your confirmation page in Bubble (the one you linked to in your email, like
email_confirm
).Go to the Workflow tab, and create a new event:
👉 "When Page is loaded"Add a new action:
➕ "Make changes to a thing"For the Thing to change, you’ll need to find the user based on the token in the URL:
Click "Do a Search for User"
Add this constraint:
emailConfirmationToken = Get data from URL → parameter = token
Then select
:first item
to get the user that matches this token
In the changes, update:
emailConfirmed?
→ ✅ Yes


And just like that, the user’s email is now confirmed! 🎉
🔐 This is the final step to making your Bubble.io email confirmation feature secure and fully functional.
Conclusion
And there you go — you’ve just built a complete email confirmation system in Bubble.io!
By using a secure backend workflow, a custom confirmation token, and a dedicated confirmation page, you now have full control over your email confirmation process — both in terms of design and security.
This approach not only helps you verify your users’ identities, but it also improves your app’s trustworthiness and keeps your database clean from fake or mistyped emails.
Quick Recap:
We created a signup flow using a responsive component.
We extended the database to handle confirmation logic.
We built a backend workflow to generate and send a secure confirmation token.
We created a confirmation page and used URL parameters to verify the user.
If you followed this tutorial step-by-step, your Bubble.io app now has a fully working email confirmation feature — and one that’s flexible and scalable!
🧠 Need more help building advanced features in Bubble?
Check out Nocodable Components — a growing library of high-quality UI blocks and components made for Bubble developers who want to save time and ship faster.

Thomas Couderq
Founder @ Nocodable
I've been building with Bubble for more than four years now. I've launched several projects (with more or less success). I'm passionate about no code and UI Design, which led me to founding Nocodable Components to help founders and professional Bubble developers build faster on Bubble.
Blog
Continue reading!
Check out our other tutorials to continue improving your Bubble skills!