Bubble is the no-code platform of choice for indie makers building real SaaS products. If you are building on Bubble, you are probably also trying to get paying customers — which means your landing page needs social proof.
Bubble has no native testimonial component. There is no testimonial element in the visual editor, no built-in carousel widget, no quote block. Adding testimonials means choosing your own approach, and the right one depends on how much control you need and where your social proof comes from.
This guide covers three methods: building a testimonial section with Bubble's repeating groups and data types, using a Bubble plugin, and embedding a live carousel via an HTML element.
Method 1 — Build with Repeating Groups and a Data Type
Bubble's database layer and repeating groups let you build a fully dynamic testimonial section that you can manage from the Bubble editor without touching the design.
Setting up the data type
- In the Bubble editor, go to Data → Data types
- Click New type and name it
Testimonial - Add the following fields:
quote(text)name(text)title(text — for role or company)photo(image)featured(yes/no — to filter which ones display)order(number — to control display sequence)
- Go to Data → App data and add your testimonials as entries
Building the repeating group
- On your landing page, add a Repeating Group element
- Set the Type of content to
Testimonial - Set the Data source to
Search for Testimonials - Add a constraint:
featured = yes - Sort by
orderascending - Set the layout to Horizontal scrolling for a carousel effect, or Grid for a static layout
Inside the repeating group cell
- Add a Text element and set its content to
Current cell's Testimonial's quote - Add a smaller Text element for
Current cell's Testimonial's name - Add an Image element for
Current cell's Testimonial's photo - Style the cell as a card: background, border radius, padding
- The repeating group will automatically duplicate this card for every Testimonial entry
When this works
The repeating group approach is right when:
- You want testimonials managed in Bubble's database — update content without touching the design
- You are already comfortable with Bubble's data structure
- You want to conditionally display different testimonials on different pages (filter by tag or category)
- You want full control over the card design to match your app's visual style
Where it falls short
Setup time is real. Creating the data type, populating the database, building the repeating group, and styling the cells takes 30 to 60 minutes for a first-time Bubble builder. It is not complicated, but it is not 15 minutes either.
No social media integration. The testimonials are text you entered into the database. No link to original posts, no real profile photos from X, no verification mechanism. Visitors reading testimonials on a Bubble landing page have no way to confirm they are real. If you want to understand what makes a testimonial credible in the first place, that context is worth reading before you choose an approach.
Horizontal scroll carousel requires configuration. Bubble's repeating group in horizontal scroll mode works as a carousel, but it does not have arrow navigation or autoplay by default. Adding those interactions requires Bubble's workflow layer and potentially custom CSS.
Method 2 — Use a Bubble Plugin
The Bubble plugin marketplace has several options for testimonials and carousels. The most common approach is a slider or carousel plugin that you populate with testimonial content.
Finding a plugin
- In the Bubble editor, go to Plugins → Add plugins
- Search for "testimonials" or "carousel" or "slider"
- Look for plugins with recent updates and active reviews
What to look for in a plugin
- Compatibility with the current Bubble version
- Support for dynamic content (pulling from a data source, not just static entries)
- Mobile responsiveness
- Customizable styling that matches your app design
When plugins make sense
Plugins are worth considering when:
- You need a specific carousel behavior (autoplay, touch swipe, infinite scroll) that Bubble's native repeating group does not provide
- You want a pre-styled component and do not want to build the card design from scratch
- Time to implement is a priority
The plugin risk
Bubble plugins vary in maintenance quality. A plugin that worked six months ago may have broken after a Bubble platform update. Before installing a plugin, check the last update date and the comments section for recent reports of issues.
For a landing page where testimonials are critical to conversion, a broken testimonial section is worse than no testimonials at all. If you go the plugin route, have a fallback plan.
Method 3 — Embed an iframe with the HTML Element
Bubble has an HTML element that renders raw HTML on the page, including <iframe> tags. This is the fastest path from "I have good X replies" to "they are on my Bubble landing page" — and it produces testimonials that are verifiably real. If you are wondering how to use Twitter testimonials on your website more broadly, the same principles apply across all platforms.
How it works with LaunchWall
- Paste the URL of an X post that generated genuine public replies from users or early customers
- LaunchWall fetches all public replies
- Select the specific replies you want in your carousel
- Publish and copy the
<iframe>embed code - Add an HTML element to your Bubble page and paste the code
The result is a scrollable testimonial carousel with real X profile photos, usernames, and links back to the original posts. Visitors can click any testimonial to verify it on X.
Step-by-step: adding to Bubble
- In the Bubble visual editor, navigate to the page where you want testimonials
- From the element panel, add an HTML element (under Visual elements)
- In the HTML element's property editor, paste your LaunchWall
<iframe>code into the HTML field - Resize the HTML element to your desired width and height
- Preview in the Bubble preview mode to confirm the carousel renders correctly
- Deploy to live
Sizing the HTML element
Bubble's HTML elements have a fixed pixel size by default. Set the width to match your section width. For the height, set it to match the carousel's expected render height — LaunchWall carousels have a consistent height that you can check in the LaunchWall preview before copying the embed code.
For responsive behavior, use Bubble's Responsive tab to set the HTML element to stretch to the container width on smaller breakpoints.
Bubble responsive engine
Bubble's new responsive engine (the default for new apps) handles element sizing differently from the legacy fixed layout. If you are using the responsive engine:
- Set the HTML element's width to a percentage (e.g., 100%) rather than a fixed pixel value
- Set a minimum height rather than a fixed height
- Use the responsive preview to check behavior across breakpoints
When this works
The HTML embed is the right choice when:
- Your social proof is public X replies from a launch announcement, beta invite, or campaign post
- You need something on your Bubble landing page quickly — total setup is about 20 minutes
- You want testimonials that link back to verifiable source posts
- You are building a conversion-focused landing page and want the highest-credibility testimonials available
When this is not the right fit
If your testimonials are from in-app feedback, private beta conversations, or support tickets, they are not public X posts. LaunchWall requires publicly accessible reply content. Use Method 1 (repeating groups) to display private testimonials.
Bubble-Specific Considerations
Landing page vs app page
Bubble apps typically have two zones: public-facing pages (landing pages, pricing, about) and the actual app behind login. Testimonials almost always belong on the public landing pages, not inside the app.
The HTML element works on both, but it is most impactful on the landing page — that is where unconverted visitors make their decision.
Page load performance
Bubble apps load JavaScript for the Bubble runtime on every page. Adding additional JavaScript — like 10 individually embedded X tweet widgets — compounds the load. A single LaunchWall iframe is one lightweight resource load and does not meaningfully affect Bubble's page performance.
Preview mode vs live
Bubble's editor preview and the live deployed app can behave differently, especially with external embeds. Always test on the deployed live version (using your app's live URL or the Bubble test mode URL) to confirm the carousel renders and scrolls correctly.
Custom domains
Bubble apps on custom domains use HTTPS. LaunchWall embeds serve over HTTPS. No mixed-content issues.
Which Method Should You Use?
You are building a serious Bubble app and want full control over testimonial data: Method 1 (repeating groups). Takes the most setup but integrates natively with Bubble's data layer and gives you full design control.
You need a specific carousel behavior quickly and a maintained plugin exists: Method 2 (plugin). Check the update history carefully before relying on it for a conversion-critical page.
Your best testimonials are X replies and you want them live quickly: Method 3 (HTML embed). Twenty minutes from LaunchWall signup to live carousel on your Bubble page, with verifiable social proof that a repeating group cannot replicate.
You want both database-managed testimonials and X-verified social proof: Combine Method 1 and Method 3. Use repeating groups for private customer quotes in one section, and a LaunchWall carousel for the X reply thread near your pricing section. For guidance on where to place testimonials on a landing page for maximum conversion impact, that is worth reading before you finalize your layout.
The No-Code Founder's Advantage
Bubble builders already understand the value of not writing everything from scratch. The same logic applies to testimonials. You could build a repeating group with a full data type and custom carousel interactions — or you could embed a live carousel that handles all of that in a single iframe.
For a landing page where your only goal is converting visitors to signups, the fastest credible solution beats the most thoroughly architected one. If you are still in the early stages and wondering how to get your first 10 testimonials, that is a practical starting point before you think about how to display them.
LaunchWall is built for the founder who already has social proof on X and wants it on their Bubble landing page today. The $1 trial takes 15 minutes.