How to Build a Marketplace App Without Code

Build a two-sided marketplace MVP with dynamic search, seller admin tools, and automated email workflows — all without writing a single line of code.

Bubble
October 07, 2026 • 27 minute read
A marketplace app on a blue background

TL;DR: A two-sided marketplace has to work for buyers and sellers at once. Choose a platform by how it handles seller payouts and changes after launch, and budget for a monthly plan plus per-transaction fees. Launch the smallest version that lets both sides complete a transaction, then build trust with reviews and privacy rules before you invite real users.

A marketplace app is one of the most popular app ideas, and one of the hardest to get off the ground. The idea is simple enough: Connect buyers and sellers and take a cut of each sale.

A two-sided marketplace, where buyers and sellers both participate independently, is more complex than a standard app because you’re building for two different people at once. Your platform has to work for both sides, or it works for neither.

If you’re ready to build a two-sided marketplace, start by weighing your platform options and costs. Then you’ll build a marketplace step by step, from the database and search page to seller tools, payments, reviews, and messaging.

What is a marketplace app?

A marketplace app like Etsy, Airbnb, or Upwork connects independent buyers and sellers so they can find each other and transact, and the platform usually earns a commission or fee on each sale.

Unlike an e-commerce store, where one business sells its own products, the platform owner usually doesn’t sell anything directly. They build the search, payments, and other tools that make each sale possible, much like running a mall instead of a store. Some marketplaces, such as Amazon, do both by selling their own inventory alongside third-party sellers.

When a marketplace gets traction, it benefits from network effects because more sellers attract more buyers, which attracts more sellers.

One-sided vs. two-sided marketplaces

Marketplaces fall into two broad categories:

  • One-sided marketplaces: The platform manages the supply and listings centrally. The RealReal and Toptal work this way.
  • Two-sided marketplaces: Sellers create profiles, manage their own inventory, set prices, and talk to buyers, while the platform provides the tools. Airbnb and Upwork work this way.

How marketplace apps make money

Most marketplaces combine one or more of these revenue models:

  • Commission per transaction: The platform keeps a percentage or fee from each sale, so you earn more when your sellers do.
  • Listing fees: Sellers pay to post each item, which works for high-value listings like vehicles or rentals.
  • Seller subscriptions: Sellers pay monthly for access or premium tools, which makes your revenue more predictable.
  • Featured listings: Sellers pay to appear at the top of search results.

Unlike commission, the other three models ask sellers to pay before they’ve made a sale, so they work best once your marketplace has steady buyers.

Examples of marketplace apps

The best-known marketplaces each solve a trust problem between strangers:

  • Product marketplaces: Amazon Marketplace lists third-party sellers alongside Amazon’s own inventory, eBay supports auctions and fixed-price listings, and Etsy is known for handmade and vintage goods.
  • Service marketplaces: Uber matches drivers with riders, and TaskRabbit connects people with local help.
  • Digital and freelance marketplaces: Fiverr connects businesses with freelancers and holds payment until the work is delivered.

Each of these started with one niche and a short list of features.

What features does a marketplace app need?

Most marketplaces eventually need these seven core features. You can launch with fewer, but each one has to work for both sides:

  • User authentication and profiles: Buyers and sellers get separate account types, each with its own permissions.
  • Search and filtering: Buyers find what they want with keyword search, filters, and sorting.
  • Listing management: Sellers add products, photos, and prices, and keep their inventory current.
  • Secure payments: Each payment splits into the seller’s payout and your fee. Most marketplaces use a provider like Stripe, which also handles refunds, disputes, and tax forms.
  • Reviews and ratings: Reviews help buyers trust sellers they don’t know, and limiting them to completed orders keeps them honest.
  • Messaging and notifications: Buyers and sellers can talk directly, and automated emails keep everyone updated on orders and promotions.
  • Admin tools: You’ll need a way to review listings, settle disputes, and remove bad actors on either side.

Start with a focused MVP

The fastest way to stall is to build every feature before anyone uses your marketplace. Start with one niche and the one transaction it exists for, and talk to a handful of sellers and buyers before you build. Your MVP only needs enough to complete that transaction safely, and everything else can wait until users ask for it.

This tutorial walks you through building each of these, from search and seller tools to payments, reviews, and messaging. First, though, you’ll need to decide where to build.

How to choose a platform for your marketplace app

Before you build, decide where your marketplace will live. The marketplace app builder or approach you pick shapes how far you can customize it and whether you can change it yourself as you grow.

Platform type Good fit when What to check
Marketplace-specific builders like
Sharetribe
Your marketplace follows a common model, like renting out spaces or selling products Whether unusual booking rules or custom logic need extra configuration or a developer
Traditional no-code tools
like Softr and
FlutterFlow
You want to build on an existing data source like Airtable, or want a mobile app with exportable code How split payments, buyer and seller roles, and server-side logic are handled
Visual development tools
like Bubble
You want to build with AI without giving up control of any part of your app, including the logic and data The time it takes to learn the visual editor
Frontend-backend combinations like
WeWeb with Xano
You think in APIs and want flexibility on both sides of the app The work of managing two platforms, two subscriptions, and the API connections between them
AI coding tools You want a first version up fast from prompts How you'll change logic and data, which stay in code, once buyers and sellers depend on the app
Custom development You need a fully custom build at large scale The budget and timeline before launch, and who makes every change after

Platform details last checked October 2026.

Marketplace-specific builders like Sharetribe

Sharetribe starts you with the pieces most marketplaces share: listings, profiles, search, and transaction flows with payments. If your marketplace follows a common model, it’s often the quickest way to launch.

You can customize its data, transactions, and bookings, but if your marketplace works differently from the usual models, expect extra setup or a need for a developer.

Traditional no-code tools like Softr and FlutterFlow

Softr builds portals and client-facing apps on top of data you already keep, like an Airtable base or a Google Sheet, and it can take Stripe payments. FlutterFlow focuses on mobile and web apps and usually connects to a backend like Firebase or Supabase for server-side logic.

Both let you shape your screens visually, but neither pays out sellers out of the box. Softr’s Stripe integration handles direct payments and subscriptions, and FlutterFlow builders typically add Stripe Connect with custom cloud functions.

Frontend-backend combinations like WeWeb with Xano

Some builders pair a visual frontend like WeWeb with a backend like Xano, which handles the database, APIs, and server-side logic. It’s a flexible setup for builders who think in APIs, and many still use it even though WeWeb now has its own backend builder.

The trade-off is running two separate services and keeping them connected, so when something breaks, you troubleshoot across both.

AI coding tools

AI coding tools generate a working app from your prompts. They’ve inspired millions of people to start building, they get a first version up fast, and most let you adjust screens visually.

The logic and data are still code, though. To change how payouts work or who sees an order, you re-prompt or edit the code yourself, which gets harder as your marketplace grows.

Custom development

Hiring developers or an agency gets you a fully custom build, which some marketplaces need once they’re large. It’s usually slower and costs more upfront, and every change after launch goes through your engineers. That’s a big bet if you’re still testing the idea.

Questions to ask before you choose

Look past how quickly you can launch. These questions show how a platform will hold up once buyers and sellers depend on it:

  • How does it handle split payments? Paying sellers minus your commission is the feature most marketplaces can’t launch without. Check whether you can set up a provider like Stripe Connect yourself or whether it takes a developer and custom code.
  • Can you decide who sees what? Buyers shouldn’t see each other’s orders, and sellers shouldn’t see each other’s customers. Look for access rules you can read back later to confirm they’re right.
  • Can you change a core feature yourself six months after launch? Picture a seller asking for a new pricing option. If you can’t see how your app handles pricing well enough to change it, you’ll wait on someone else every time your business shifts.
  • What happens when you grow? Find out whether hosting, scaling, and mobile are included or whether each one means another vendor and additional expense.

How much does it cost to build a marketplace app?

The cost of a marketplace app comes down to what it costs to build and what it costs to run every month, plus payment processing fees on every transaction.

What drives the cost of a marketplace

Most of your costs come from a few predictable places:

  • Platform subscription: Your plan often decides whether you can go live, how much traffic your app can handle, and whether it can run scheduled tasks, so price out the plan you’ll launch on.
  • Developer time: Engineers or an agency usually cost the most, and you keep paying them for every fix and feature after launch.
  • Third-party services: Email, SMS, maps, and premium plugins each add to your monthly bill.
  • Your own time: Building it yourself costs hours instead of dollars, and a platform you understand well keeps those hours down.

Payment processing and platform fees

Marketplace payment providers split each sale between the seller and you. They also take a cut, usually a percentage plus a small fixed fee. Depending on the pricing model, Stripe Connect may add fees per connected seller account or payout, so check Stripe’s Connect pricing page for current rates.

If you charge sellers 10%, run the numbers on a typical order to see how much of that you keep after fees.

What it costs to build a marketplace on Bubble

On Bubble, getting started is free. Generating an app with the Bubble AI Agent doesn’t use AI credits (up to a monthly limit), and neither does editing in the visual editor. Building or editing with the Agent draws on a monthly AI credit allowance that comes with every plan, and you can always make changes by hand instead.

You’ll need a paid plan to go live. Starter Web is $29/month billed annually or $32/month billed monthly until October 20, 2026, when it moves to $32 and $39. Buy the annual plan before then to keep $29/month for a year.

Every plan includes a built-in database, and paid plans add hosting and the backend workflows Part 2 uses. Payment provider fees are separate, and the pricing page has the full breakdown.

Why build your marketplace app on Bubble?

Bubble is the fully visual app builder where you can build software, understand every part of it, and control every detail without code. Every layer of your marketplace, including the logic, data, and privacy rules, is visual and editable. You can build with AI without giving up control, and you’ll know your marketplace well enough to change it as your business changes.

Start with a planning session with the Bubble AI Agent

Describe your marketplace idea to the Agent, and it starts with a planning session, asking clarifying questions and drafting a blueprint you can refine before it generates the design, database, and workflows. As it builds, it shows what it’s about to do and explains what it built in plain language, and you learn how your marketplace works as you go.

From there, you can keep chatting with the Agent or work directly in the visual editor. Use AI when it helps, or edit by hand when you want precision.

See and change every part of your marketplace

Workflows read as steps you could say out loud: “When a buyer clicks ‘Follow,’ create a Follow record, then add the shop to their list.” When a seller asks for a new feature, you can open the workflow, see exactly what it does, and change it the same day.

Your database is visible too, with every shop, product, and order in view. With privacy rules, you decide who sees what in your app, down to each field. That matters in a marketplace, where buyers and sellers each trust you with their own data.

Grow on web and native mobile from one platform

Many marketplace buyers arrive on their phones. With Bubble for native mobile apps, you build iOS and Android apps in the same editor and database as your web app, then publish to both app stores from the editor.

In-app purchases (beta) cover subscriptions only. Marketplaces selling physical goods or services typically use Stripe instead, but check each app store’s rules for your model.

Hosting and auto-scaling come with paid plans, so the marketplace you launch is the one you keep growing.

Marketplaces built on Bubble

Bubble apps transact more than $1 billion a year, and these marketplace stories show what that looks like up close:

  • Ohana: The sublease marketplace generated $16.2 million in host earnings in its first 14 months. “Bubble gives us an advantage because anybody can go in and easily understand what’s going on,” says co-founder Ezra Gershanok.
  • BuyTicket: The Brazilian ticket resale marketplace reached 20,000 users in its first week. “On Bubble, you can change features fast and learn in less time than a traditional platform,” says co-founder Gustavo Celso.
  • EqualReach: The marketplace for refugee and displaced professionals launched its MVP in three months and created more than 100 jobs in its first year. “If there’s a quick UI fix needed on the platform, I can jump into Bubble and update it right away,” says Product Lead Olena Voloshyna.

Part 1: Building your marketplace search page

Over the next three parts, you’ll walk through a bookseller marketplace built on Bubble. We’re showing a manual build so you’ll know how the database, pages, and workflows should fit together when the Agent builds them for you, and you can spot anything you want to change. Describe your marketplace to the Agent, and it will generate an app with similar logic that you can review and refine yourself.

1. Set up your database structure

💡
If you’re following along on Bubble and don’t have an account yet, create one before getting started. Create a free Bubble account →

Go to the data tab. Under the data types subtab, create two custom data types: “Shop” and “Product.” Then add the following custom fields:

Shop:

  • Name (text): The shop’s display name, shown on every product it sells.

Product:

  • Name (text): The book title. Keyword search will match against it.
  • Description (text): A short summary that helps buyers decide whether to click.
  • Price (number): Storing it as a number lets you filter by price range and format it as currency.
  • SellerShop (Shop): Links each product to the shop that sells it, which is what makes your marketplace two-sided.

Next, define your product data type further using static options. From the option sets subtab, create three new option sets:

Book Genre:

  • Fantasy
  • Romance
  • Thriller

Book Format:

  • Print
  • Digital
  • Audiobook

Book Type:

  • Novel
  • Comic Book
  • Short Stories

Three distinct options per set make it easy to test that each filter works. Add more if you like, but each one adds to the filters and metadata you display later.

Now go back to your product data type and add your option sets to its structure. Click Create a new field and select each option set you created from the Field type dropdown. To keep it simple, match the Field name to the Field type.

Your database structure is ready.

2. Add sample data

Sample data is useful for testing and demoing, and it becomes critical when you add more complex features.

To add it, go to the app data subtab in the data tab and click New entry to add your own. Vary your products so search and filters are easier to test.

3. Build the marketplace search page

Create a new page called “search” from the page dropdown. Double-click on the page to open the property editor and set the Container layout to Column.

Set up your page skeleton. Open the component library from the toolbar at the top of your editor and drag in a header and footer.

Then add a blank group to the left-hand side for your main content. Change its layout to Row, and uncheck Make this element fixed-width.

As you work, rename your elements to keep them organized.

Now build the main search page content. Rename the row group “G Dashboard” (Group Dashboard).

Then add a new group and name it “G Filters.” You can add a Background style from the dropdown so it stands out on the page.

Next to your G Filters group, add a repeating group and rename it “RG Products” (Repeating Group Products). Give it the following settings:

  • Layout: Uncheck Make this element fixed-width so that it expands to its parent container, and set the cell’s Container layout to Column to give it a top-to-bottom layout.
  • Appearance: Set Type of content to “Product” and Data source to “Do a search for Products.” This tells the repeating group to show one cell for every product in your database.

Now add a text element. Under Layout, uncheck the box for fixed-width and make the Min height 5px. From Appearance, click Insert dynamic data to create the dynamic expression “Current cell’s Product’s Name.”

You’ll add several more text elements to this repeating group. You can copy and paste the first text element to keep the settings the same. Add one dynamic expression to each:

  • “Current cell’s Product’s Description”: The book’s summary.
  • “Current cell’s Product’s Price: formatted as Currency”: The price with a currency symbol.
  • “Current cell’s Product’s SellerShop’s Name”: Who’s selling each book, pulled from the linked Shop.
  • “Current cell’s Product’s Genre’s display”: The genre label. The display part turns the option set value into readable text.
  • “Current cell’s Product’s Format’s display”: The format label.
  • “Current cell’s Product’s Type’s display”: The type label.

Lastly, select all the content in your repeating group cell, right-click, and group the elements into a row container. Then drop a new group to the right.

Drag an icon into this group and select a heart. Then add a button and label it “Add to cart.” Adjust the spacing and alignment to match your preference.

To fix the repeating group only showing a set number of products, uncheck the Set fixed number of rows option on the repeating group.

4. Set up filters

Add a way for users to filter their search by adding the following elements to the G Filters group:

  • One input: For searching by title or keyword.
  • One slider: For setting a maximum price.
  • Four radio buttons: One each for genre, format, type, and shop, so buyers pick one option per filter.
  • One button: For clearing every filter at once.

You can also add text elements to label your filters. Add the first text element and adjust its min and max width and height settings, then duplicate it for each label.

Now tackle each input one by one.

Search bar input: There’s nothing to program here. Users only need to type into it.

Slider input: Adjust the label to include dynamic data. After “Price filter,” insert the dynamic expression “SliderInput A’s value:formatted as $.”

Then set the Min and Max values to 0 and 100 and the Step to 5 to make the slider less granular. Lastly, set the Default value to your max price so your app shows all products and all prices by default.

Radio buttons: For the Genre radio button, select Dynamic Choices under Choices style, and select Book Genre for Type of choices. Make the Choices source “All Book Genre” and the Option caption “Current option’s Display.”

Do the same for the Book Format and Book Type radio buttons.

The Shop radio button is slightly different, since it displays dynamic data (sellers) instead of option sets. Select Shop for Type of choices. Make the Choices source “Do a search for Shops” and the Option caption “Current option’s Name.”

Button: For now, label it “Clear Filters” and center it or adjust its width and height as needed. You’ll revisit it later.

Your filters are ready. Now connect everything together.

5. Connect filters to the repeating group

Modify the Data source for your RG Products repeating group. Earlier, you made it a straightforward database search. If you click the dynamic expression, you can add constraints to this search that reference each filter.

Start with Genre. Add a new constraint to the database search and set Genre = “RadioButtons A’s value.”

If you preview your app to test it, you may not see anything in the repeating group anymore. This is expected, and the fix is quick.

Go back to the Data source expression and check the Ignore empty constraints box. Now, if any of your inputs are empty, the database search won’t apply that filter.

Apply the same logic to the other radio buttons. Add a constraint that sets each field to be equal to that radio button element’s value.

Add “Price ≤ SliderInput A’s value” as a constraint. This way, only products with a price equal to or below the slider input’s value appear.

Lastly, add another constraint for your search input: “Name contains keyword(s) Input A’s value.” Allen uses “contains keyword(s)” instead of “contains” to create a more flexible, word-based search. The two operators match text differently, and the linked manual entry explains how.

Your search and filtering functionality is now set up.

6. Implement the “Clear Filters” button functionality

Select the button you added to the bottom of the G Filters group and click Add workflow.

In the workflow tab, add one action to the new workflow. Under Element actions, select Reset a group/popup, then choose the G Filters group.

If you preview your app, you should have a fully functioning search page. Customers can browse products, search for specific titles, and filter results.

7. Optional design enhancements

You’ve completed the functionality for Part 1. Here are a few additional customizations to consider:

  • Add white space between the design and page edges so the page is easier to scan.
  • Add an image next to each product listing. Add an image field to the Product data type for book covers.
  • Customize the font and styles in the repeating group so your marketplace looks like your brand.
  • Add elements to the header, like a cart icon, a login button, or a “Sell on our marketplace” link, to give each side of your marketplace a clear entry point.

Part 2: Adding backend workflows

You don’t have to build this by hand. Ask the Agent to set up the follow feature and scheduled emails, then fine-tune any step in the visual editor.

See what the Agent can build →

1. Update the database structure

Start by expanding your data structure in the data tab.

First, create a data type called “Follow” to record when a user follows a shop. It needs two custom fields: “Shop” with the Field type Shop, and “User” with the Field type User.

In the User data type, add a field called “Shops I’m Following” with the type Shop, and check This field is a list (multiple entries).

Since sellers will manage a shop, you also need a way to associate a user with the shop they own. Add another field to the User data type called “Managed Shop” of type Shop. You’ll reference this later when building seller tools.

To let shops email their followers later, create a data type called “Email” with these fields:

  • “Body” (text): The message the shop sends to followers.
  • “Subject Line” (text): What followers see in their inbox.
  • “Shop” (Shop): The shop sending the email, used to find its followers.
  • “User” (User): The seller who created the email.
  • “Send Date” (date): When the email should go out, which your backend workflow reads to schedule it.

2. Build the “follow” functionality

Head back to the design tab and open your search page. Program the heart icon you added earlier so that users can follow shops.

First, add a popup named “Popup Follow Shop” to confirm that the user wants to follow this shop. It should have some basic text explaining this to the user, along with a button to confirm the follow. Design the popup however you like.

Next, add a workflow to the heart icon. Select Show an element and choose your popup from the dropdown. If any text in your popup references the particular shop, add a second step to your workflow: Display data in Popup Follow Shop.

Now that customers can open the popup, add a workflow to the popup’s follow button. The first step should be Create a new Follow. Define your two fields: User should equal the Current User, and Shop should equal the shop selling the product in that cell.

You’ll also want to update the list of shops that the user is following. To do this, add a second step to the workflow: Make changes to Current User.

Change the field Shops I’m Following to add the current product’s SellerShop (or Result of Step 1’s Shop). Now your users can follow shops.

Users will also want to unfollow shops, and you can repurpose everything you built to handle that.

On the workflow you created, add a conditional at the bottom of the property editor next to Only when. You want this event to fire only when Current User’s Shops I’m Following doesn’t contain the current product’s SellerShop. In other words, a user can only follow the shop if it isn’t already in their follow list.

To create the inverse of this workflow event, copy and paste it. Then change the conditional expression from doesn’t contain to contains, so it only fires if the user is already following the shop.

Delete the copied actions and reconstruct the workflow as needed.

First, find the Delete a thing action and set it to delete a Follow. You’ll need to perform a search for Follows and constrain it so that the follow’s user is Current User and the follow’s shop is the current shop.

These two constraints should pinpoint the right follow in your database. Confirm that you only pull one item from the search by adding :first item to the search.

You’ll also want a second step to Make changes to Current User and remove that shop from Shops I’m Following.

Now make sure the UI changes based on whether a user is following the shop. Right now, the button on your popup says Follow no matter what.

Copy the conditional you added to the workflow event so you can use it again. Then, in the design tab, find the button on that popup. Paste the conditional into the When field, and change the text to say “Unfollow.”

You can use the same conditional logic for the word “Follow” or the heart icon in your popup.

This completes the basic functionality needed on the customer’s side. Now tackle the seller’s experience.

3. Set up the shop admin page

Create a new page called “shop-admin,” adding a header or footer if you want. You’ll need these elements:

  • A “Send Email” button: Opens the popup where sellers write and schedule an email.
  • A repeating group of created emails: Shows each email’s subject line, body, send date, and a “delete” button for canceling anything that’s no longer relevant.

To pull the appropriate data into the email repeating group, set the Type of content to Email and the Data source to “Search for Emails” where Shop = Current User’s Managed Shop.

4. Create and delete email functionality

Next, build two popups: a schedule email popup with inputs for the subject line, body, and send date, and a simpler delete popup that confirms when someone clicks delete. Once both are designed the way you want, hook up the logic.

To create an email, make sure the button you added to your page opens the schedule email popup. Then add a workflow to the popup’s button: Create a new Email.

Define the subject line, the body, and the send date using the inputs from the popup. Define the Shop attached to the Email as Current User’s Managed Shop (the shop the current user manages), and define the User as Current User (the sender).

It’s good practice to also add a step that resets all relevant inputs, so the fields are blank the next time the user presses the button.

Now program your delete functionality. On your new delete popup, set the Type of content to Email and leave the Data source empty.

Add a workflow to your delete button with a step to Display data in a group/popup, and select your delete popup. This sends data to the popup (in this case, the email) right before it appears. Then, like before, add a step to show the popup.

Next, add a workflow to the cancel email button on the popup. Add a step that deletes the Parent Group’s Email, then hide the popup.

Now you have a way to create and delete emails, but none of them are scheduled to send yet. For that, turn to backend workflows.

5. Backend workflows: Scheduling and sending an email

💡
Backend workflows are included starting on the Starter plan, and their limits depend on your Bubble plan, so check what your plan includes before you start. Keep API workflows unexposed unless they need to be called from outside your app. If you expose an endpoint, require authentication and review the access settings before using it with real user data. Compare plans on the pricing page →

To enable backend workflows in your app, go to the settings tab and navigate to the API subtab. Check Enable Workflow API and backend workflows.

You can then open the backend workflows page from the editor’s left-hand navigation. The workflows in this tutorial are triggered from inside your app, so they don’t need to be exposed as public endpoints.

The backend workflows page works differently from the workflow tab, because backend workflows run independently of any page.

You’ll program two workflows: one that sends emails to a list of users, and another that schedules the first to run at a later time.

To start, create a new API workflow and call it “schedule-email.” Then add a parameter.

The parameter tells the workflow that it will need to interact with a data record, which you can assign dynamically later. For now, create a parameter called “email” and change its Type to Email.

Next, create another API workflow and call it “send-email.” Add a parameter called “email” with the type Email.

Now that you’ve set up your two backend workflows, program them.

For “schedule-email,” add an action and select Schedule API workflow. Set API Workflow to “send-email,” and for Scheduled date, use the email parameter’s Send Date.

When you schedule an API workflow, Bubble returns its unique ID. You’ll need that ID to cancel the workflow later, since deleting the email doesn’t cancel it.

Head to the data tab and add a new custom field to the Email data type called “Workflow ID.” Bubble generates this ID as a string of characters, so keep the type as text.

Now, back in backend workflows under “schedule-email,” add a second action: Make changes to an Email. The email to change is the email parameter.

Set the Workflow ID field to equal Result of Step 1. This attaches the record of the scheduling to the email itself.

Now tackle the “send-email” workflow. Find the Send email action, and decide whether the primary recipient should be the shop owner, a verified sender or test address, or the follower list.

For example, set the email so it goes to Current User’s email, with followers BCC’d via Do a search for Follows constrained to the right shop, then :each item’s User’s email. For Subject and Body, pull the email parameter’s subject line and body. Test this behavior in development before relying on it in production.

Your “schedule-email” workflow will fire the “send-email” workflow at the right time. Now you need to fire “schedule-email.”

Go back to the shop-admin page and find the workflow that triggers when a new email is created. Its first action should already be Create a new Email. After that step, add Schedule API workflow and choose “schedule-email.”

For Scheduled date, enter Current date/time, since the send date is handled inside that workflow. For the email, select Result of Step 1.

6. Backend workflows: Canceling an email

You have one more backend workflow to create: canceling a scheduled email. Back on the backend workflows page, create a new API workflow called “cancel-email.”

Like before, it takes in an email parameter.

Your first action will be Cancel a scheduled API workflow. This step needs the ID of the workflow to cancel, and you saved that ID on the email itself. So for Scheduled API ID, use the email’s Workflow ID.

Finally, trigger this “cancel-email” workflow from the frontend of your app. Go back to the shop-admin page and find the delete popup.

Add a step to the cancel email button: Schedule API workflow, set to cancel-email. Set Scheduled date to Current date/time so it runs right away, and pass the popup’s email through as the email parameter.

This workflow already deletes the email entry. Keep that step after the Schedule API workflow action, or move it into the backend workflow instead.

7. Final testing and the logs tab

To test everything, you need some sample users in the database. Create at least two: one as the admin (who’ll send the email) and one as a follower (who’ll receive it).

Once you create and schedule an email:

  • In the data tab > app data: Verify that the email record has been created and stored in the database. Check that its Workflow ID field is filled in, which confirms that the scheduling step ran.
  • In the logs tab > scheduler: Choose the correct Development or Live environment, set a date and time, and click Show to view upcoming scheduled API workflows.

Finally, if you test canceling the email, you should see that it disappears from both your database and the scheduler in the logs tab.

You now have a working frontend and backend for a two-sided marketplace MVP.

Part 3: Adding payments, reviews, and messaging

Your marketplace can now show listings and let sellers reach their followers. Next, you’ll add what makes it a business buyers trust.

1. Set up payments and seller payouts with Stripe Connect

Many marketplaces take a payment from the buyer, keep a commission, and send the rest to the seller, which is what Stripe Connect is built for. Each seller connects a Stripe account, and Stripe handles payouts.

Add an “Order” data type with fields for the Product, buyer (User), Shop, amount (number), and status. Then add an Owner (User) field to Shop so each payment reaches the right seller, plus the seller’s connected Stripe account ID if you use custom API calls.

The official Stripe plugin covers many Connect flows, including seller onboarding (Connect Standard accounts only), charging on a seller’s behalf, and an app fee set as a fixed amount. For anything beyond that, use the API Connector.

If you go the API Connector route, the Agent can help you set up the API calls. Test everything with Stripe’s test mode before you accept a single real payment.

2. Build a review and rating system

New buyers rely on reviews to decide whether to trust a seller they’ve never heard of. In the data tab, create a “Review” data type with these fields:

  • Rating (number): A score from 1–5, stored as a number for calculating averages.
  • Comment (text): The buyer’s written review.
  • Author (User): The buyer who left it, used to show a name and limit reviews to one per order.
  • Product (Product) and Shop (Shop): What’s being reviewed, so reviews appear on product pages and roll up into a shop’s rating.

Add a repeating group to your product listings with the Type of content set to Review and a Data source that searches for Reviews where Product is the current product. To show a seller’s average, use a text element with “Do a search for Reviews” constrained to the shop, followed by :each item’s Rating:average.

To keep reviews honest, only show the review form to buyers who have a completed Order for that product. Add that condition in the form’s When conditional or the workflow’s Only when field.

3. Add messaging between buyers and sellers

Buyers often have a question before they buy, and sellers need a way to answer. Create two data types.

A “Conversation” has fields for the buyer (User) and the Shop. A “Message” has fields for the Conversation, the sender (User), and the body (text). Bubble records each message’s creation date automatically, which you’ll use to sort the thread.

Add a “Message seller” button to each listing. Its workflow should look for an existing conversation between the current user and that shop, and create a new one only if none exists.

On a messages page, use one repeating group to list the user’s conversations and another to show the messages in the selected conversation, sorted by Created Date. Add an input and a send button whose workflow creates a new Message linked to that conversation, then resets the input.

4. Check your privacy rules before you launch

Before you invite your first buyers and sellers, decide exactly who can see each piece of data. Open the privacy subtab in the data tab and add rules for each sensitive data type:

  • Conversations and messages: Only the buyer and the shop’s manager should see them. Write a rule such as “This Conversation’s buyer is Current User” and another for the shop’s manager, and apply the same logic to Message through its Conversation.
  • Orders: Buyers should see only their own purchases, and sellers should see only orders for their shop. Without these rules, a search on any page could expose other buyers’ order history.
  • Users: Limit which fields other users can see. A seller might need a buyer’s name on an order, but not their email address or the shops they follow.

Every rule is visual, so you can read it back later and confirm that it does what you meant. On paid plans, you can run the security dashboard to scan for missing privacy rules and exposed API tokens before you deploy. Revisit your rules each time you add a data type or field, since new data isn’t automatically covered by the rules you’ve already written.

Launch your marketplace and solve the chicken-and-egg problem

Every marketplace starts with the same problem: Buyers won’t come without sellers, and sellers won’t list without buyers. Most founders recruit sellers first, often one by one, and keep the launch narrow, like one city or one category, so the first buyers find enough to choose from.

Once orders start coming in, watch how many listings sell, how many buyers come back, and how many transactions complete without a problem. Those numbers tell you when it’s time to widen your niche.

Your marketplace is ready for its first sellers. Make the design your own, run a few test orders through Stripe, and invite a handful of buyers and sellers to try it.

On Bubble, you build with AI without giving up control, and you can change any part of your marketplace yourself as it grows.

🚀
Describe your marketplace to the Agent, then make it work exactly the way you imagined. Start building for free →

Frequently asked questions about marketplace apps

Do I need to know how to code to build a marketplace app?

You don’t need to code on Bubble, where you design screens, structure your database, set privacy rules, and build workflows visually. The Agent explains what it builds in plain language, and you can understand and change every part of your app yourself.

How long does it take to build a marketplace app?

It depends on scope, since a focused MVP takes far less time than a marketplace with bookings, messaging, and mobile apps. EqualReach launched its MVP in three months, and BuyTicket was built in two.

How do marketplace apps make money?

Most marketplaces earn money through a commission on each transaction, listing fees, seller subscriptions, featured listings, or a mix of these. Commission is a common starting point because sellers pay only when they make a sale.

Can I turn my marketplace into a mobile app?

Yes. With Bubble for native mobile apps, you can build iOS and Android apps from the same editor and database as your web marketplace.

How much does it cost to build a marketplace app?

Building it yourself on a visual platform typically costs a monthly subscription plus payment processing fees on every transaction, while custom development adds developer costs before launch and for every change after. On Bubble, getting started is free, and you can compare paid plans on the pricing page.

What’s the difference between a marketplace and an e-commerce store?

An e-commerce store sells one business’s own products, while a marketplace lets many independent sellers list and sell on a shared platform. The marketplace owner typically earns a fee on each sale and handles search, payments, and trust between buyers and sellers.

Is the marketplace app the same as Facebook Marketplace?

Facebook Marketplace is a specific feature within the Facebook platform for local buying and selling. A standalone marketplace app is an independent platform built for a specific niche, like Airbnb for short-term rentals or Upwork for freelance services.

Start building for free

Build for as long as you want on the Free plan. Only upgrade when you're ready to launch.

Join Bubble

LATEST STORIES

Mobile app dashboard UI with bar chart and text Weekly Vertical 42,500 ft, bell notification badge, and hand cursor on purple gradient

What Is a Native Mobile App?

Native mobile apps are developed specifically for a given mobile platform — typically iOS or Android — and are optimized to run as seamlessly as possible within that platform. Here's what you should know about them and how they compare to other types of mobile apps.

Bubble
October 13, 2026 • 16 minute read
What Is a Web App? (And Why They Matter for Your Business)

What Is a Web App? (And Why They Matter for Your Business)

Learn the difference between web apps and websites and determine which is right for your business.

Bubble
October 13, 2026 • 15 minute read
How to Answer a Vendor Security Questionnaire: A 2026 Guide

How to Answer a Vendor Security Questionnaire: A 2026 Guide

Learn what a vendor security questionnaire asks and how to answer it with the evidence reviewers expect, from either side of the review.

Bubble
October 07, 2026 • 12 minute read
How to Make a Directory Website: A Complete 2026 Guide

How to Make a Directory Website: A Complete 2026 Guide

Learn how to make a directory website people use and pay for, from choosing a niche and platform to building listings, search filters, submissions, and revenue.

Bubble
October 07, 2026 • 12 minute read

How to Build an Uber Clone Without Code

June 17, 2026 • 13 minute read

How to Build a ChatGPT Clone Without Code

April 03, 2026 • 5 minute read

How to Build a To-Do List App in 10 Minutes, With Bubble Co-founder Josh Haas

March 21, 2024 • 8 minute read

How to Build an AI-Generated Recipe App With No Code

March 21, 2024 • 13 minute read

Build the next big thing with Bubble

Start building for free