# How to Build a Classifieds Ads Platform in Bubble

- Tool: Bubble
- Difficulty: Beginner
- Time required: 30-35 min
- Compatibility: All Bubble plans
- Last updated: March 2026

## TL;DR

A classifieds platform in Bubble uses Data Types for listings and categories, search functionality with location and category filters, a listing creation flow for sellers, and a contact system for buyers. You build category-based navigation, implement location-based search using Bubble's geographic features, add featured listing promotion, and create a messaging flow between buyers and sellers.

## Overview: Building a Classifieds Platform in Bubble

This tutorial guides you through building a classifieds marketplace similar to Craigslist or Facebook Marketplace. You will create the data model, build listing and search interfaces, implement location-based features, and add contact and promotion systems.

## Before you start

- A Bubble app with user authentication
- Google Maps API key for location features
- Understanding of Repeating Groups, searches, and workflows

## Step-by-step guide

### 1. Create the data model for listings and categories

In the Data tab, create 'Category' as an Option Set with options like Vehicles, Electronics, Furniture, Housing, Jobs, Services. Add attributes: 'icon' (text — emoji or icon name), 'subcategories' (text — comma-separated). Create a 'Listing' Data Type with: 'title' (text), 'description' (text), 'price' (number), 'category' (Category option), 'images' (list of images), 'location' (geographic address), 'seller' (User), 'status' (text: active/sold/expired), 'is_featured' (yes/no), 'created_date' (date), 'views' (number).

**Expected result:** Data Types for categories and listings are created with all fields needed for a classifieds platform.

### 2. Build the listing creation form

Create a 'post-ad' page with input fields for title, description, price, category dropdown (from Option Set), multi-image uploader, and a Search Box for location (with geographic places enabled). Add a 'Post Listing' button with a workflow that creates a new Listing with all field values, seller = Current User, status = 'active', and created_date = Current date/time. Add validation to require at least a title, category, and one image.

**Expected result:** Sellers can create classified ads with details, photos, and location through a complete posting form.

### 3. Build the browse and search interface

Create an 'index' or 'browse' page. Add category buttons or a grid at the top showing all Category options from the Option Set. Add search inputs: text search for keywords, category dropdown, location Search Box, price range (min/max), and a sort dropdown. Below, add a Repeating Group of Listings with constraints matching the search filters. Sort by featured first (is_featured descending), then by created_date descending. Each cell shows the listing image, title, price, location, and time since posting.

> Pro tip: Use 'Ignore empty constraints' on each search constraint so empty filters do not restrict results unnecessarily.

**Expected result:** A browsable listing page with category navigation, text search, location filter, and price range filtering.

### 4. Create the listing detail page

Create a 'listing' page that receives a Listing via URL type parameter. Display all listing details: image gallery (Repeating Group of images with a large preview), title, price, description, location on a mini map, seller name and join date, and creation date. Add a 'Contact Seller' button and a 'Report Listing' button. Increment the listing's views count when the page loads (Make changes to the Listing, views + 1).

**Expected result:** A detailed listing page shows all information with photos, location map, and contact options.

### 5. Implement the contact seller flow

When 'Contact Seller' is clicked, show a popup with a text area for the buyer's message. The workflow creates a Message record (or uses your existing chat system) with the buyer, seller, listing reference, and message text. Send an email notification to the seller with the buyer's message and a link back to the listing. Add a 'My Messages' page where users can see all conversations about their listings.

**Expected result:** Buyers can message sellers about specific listings, and sellers receive email notifications with the inquiry.

### 6. Add featured listing promotion

Add a 'Promote Listing' button on the seller's listing management page. When clicked, show pricing for featured placement (e.g., $5 for 7 days). If using Stripe, charge the seller and set is_featured to yes and a 'featured_until' date. In the browse page search, sort featured listings first. Add a visual badge ('Featured') on featured listing cards. Create a scheduled backend workflow that resets is_featured to no when featured_until passes.

**Expected result:** Sellers can pay to promote listings to the top of search results with a featured badge.

## Complete code example

File: `Workflow summary`

```text
CLASSIFIEDS PLATFORM — WORKFLOW SUMMARY
=========================================

OPTION SET: Category
  Vehicles, Electronics, Furniture, Housing, Jobs, Services

DATA TYPE: Listing
  title, description, price, category, images (list),
  location (geographic), seller (User), status, is_featured,
  featured_until, created_date, views

POST LISTING:
  Create Listing from form inputs
  seller = Current User, status = 'active'

BROWSE/SEARCH:
  Constraints: category, keyword (contains), price range
  Location: within radius of search location
  Sort: is_featured desc, then created_date desc
  Ignore empty constraints on all filters

CONTACT SELLER:
  Popup → text message → Create Message
  Email notification to seller

FEATURED LISTINGS:
  Promote → Stripe charge → is_featured = yes
  featured_until = now + 7 days
  Backend cleanup: reset when featured_until < now

LISTING MANAGEMENT:
  My Listings page: seller's active/sold/expired
  Mark as Sold, Edit, Delete actions
```

## Common mistakes

- **Not filtering out expired or sold listings from search results** — Users see unavailable items, leading to frustration and wasted contact attempts Fix: Add status = 'active' as a constraint on all public-facing listing searches
- **Allowing listings without location data** — Location-based search breaks for listings without geographic data, and they never appear in proximity results Fix: Make location a required field in the listing creation form with validation before saving
- **Not moderating listings before they go live** — Spam, inappropriate content, or scam listings damage platform trust Fix: Add a 'pending' status for new listings and an admin moderation queue before setting status to 'active'

## Best practices

- Use Option Sets for categories for instant loading and zero WU cost
- Add 'Ignore empty constraints' on search filters for flexible searching
- Require at least one image per listing for visual appeal
- Implement a moderation queue for new listings before they go live
- Add listing expiry (e.g., 30 days) with auto-archive via backend workflow
- Track views per listing to help sellers understand engagement
- Sort featured listings first to monetize premium placement

## Frequently asked questions

### How do I prevent scam listings?

Implement listing moderation (admin review before publishing), require phone verification for sellers, add user reporting, and use keyword filters to flag suspicious content.

### Can I add location-based search radius filtering?

Yes. Use Bubble's geographic search constraint 'within X miles/km of [location]' on the Listing's location field. Add a radius slider or dropdown for users to set their preferred distance.

### How do I handle listings that never sell?

Add auto-expiry by setting an expires_at date 30 days after creation. A daily backend workflow archives expired listings. Optionally notify sellers before expiry to renew.

### Can I add bidding or 'Make an Offer' on listings?

Yes. Create an Offer Data Type with amount, buyer, listing reference, and status. Build an offer submission and acceptance workflow similar to the auction system.

### Can RapidDev build a complete classifieds marketplace in Bubble?

Yes. RapidDev can build full classifieds platforms with search, messaging, payments, moderation, analytics, and mobile-responsive design in Bubble.

---

Source: https://www.rapidevelopers.com/bubble-tutorial/create-a-classifieds-ads-platform-in-bubble
© RapidDev — https://www.rapidevelopers.com/bubble-tutorial/create-a-classifieds-ads-platform-in-bubble
