Complete Guide: Building an Airbnb-Style Marketplace with HivePress

Complete Guide: Building an Airbnb-Style Marketplace with HivePress

Let me walk you through the entire process step-by-step. This is how you build a property rental marketplace like Airbnb.

📋 PHASE 1: UNDERSTAND THE CORE WORKFLOW

The User Journey:

Host (Vendor) → Signs up → Chooses membership plan → Submits property listing → Sets prices & availability
Guest (Customer) → Searches properties → Views listing → Books dates → Pays → Reviews after stay
Admin (You) → Takes commission from each booking → Manages disputes → Approves listings (optional)
⚙️ PHASE 2: INITIAL WORDPRESS SETUP

Step 1: Install Required Plugins

You already have HivePress + all extensions. Now install:

  • WooCommerce (required for payments) - even though you wont sell products, HivePress uses WooCommerce for payment processing
  • Stripe for WooCommerce or PayPal Payments (payment gateways)
  • Loco Translate (optional - for changing any text)

Step 2: Activate These HivePress Extensions:

  • HivePress Bookings
  • HivePress Marketplace
  • HivePress Memberships
  • HivePress Geolocation
  • HivePress Reviews
  • HivePress Messages
  • HivePress Favorites
  • HivePress Search
🏗️ PHASE 3: CONFIGURE HIVEPRESS SETTINGS

Step 3: Listings Settings

Go to HivePress > Settings > Listings

Enable:

  • ☑️ Allow submitting listings
  • ☑️ Allow editing listings
  • ☑️ Allow claiming listings (optional - if you want to import listings and let hosts claim them)
  • ☑️ Moderate listings (if you want to manually approve before they go live)

Disable:

  • Allow purchasing listings (you're using Memberships instead)

Step 4: Bookings Settings CRITICAL

Go to HivePress > Settings > Bookings

This is one of the most important configuration sections for your rental marketplace.

Configure:

Booking Type: Date Range (for multi-day stays like Airbnb)
☑️ Allow multiple places per booking - This lets you set different pricing for 2 guests vs 6 guests (like Airbnb)
Require approval: Choose between:
  • Unchecked = Instant Booking
  • ☑️ Checked = Request-to-Book (host must approve)
Min/Max booking days: Set minimum (e.g., 2 nights) and maximum stay limits
Booking Window: How far in advance can guests book? (e.g., 365 days)
Cancellation Policy: Set default cancellation rules
You can let hosts choose this per listing using an attribute

Step 5: Marketplace Settings 💰 COMMISSIONS

Go to HivePress > Settings > Marketplace

Configure:

Commission Rate: e.g., 15% (you keep 15%, host gets 85%)
Commission Type: Percentage or Fixed amount
☑️ Hold payments - Highly recommended! This holds money in escrow until booking is complete
Payout Method: Stripe Connect (recommended) or manual bank transfer
Minimum Payout: e.g., $50 (hosts can't withdraw until they earn at least this)

Payment Flow:

  1. Guest books and pays $100
  2. You hold $100
  3. After stay completes, you release $85 to host, keep $15
  4. Host can request payout when balance reaches minimum

Step 6: Memberships Settings 🎫 PAY-TO-LIST

Go to HivePress > Settings > Memberships

Enable:

  • ☑️ Require membership - Forces all vendors to choose a plan before listing

Now create your 3 plans:

Go to WordPress Dashboard > Memberships > Add New

Plan 1: Starter (Free)

  • Name: Starter
  • Price: $0
  • Listing Submissions: 2
  • Listing Duration: Unlimited (or 30 days)
  • Description: "Perfect to get started"

Plan 2: Advanced ($18)

  • Name: Advanced
  • Price: $18/month (or one-time)
  • Listing Submissions: 5
  • Listing Duration: Unlimited
  • Description: "Best for small hosts"
  • Featured: ☑️ (shows badge on their listings)

Plan 3: Premium ($36)

  • Name: Premium
  • Price: $36/month
  • Listing Submissions: 10
  • Listing Duration: Unlimited
  • Description: "For professional hosts"
  • Featured: ☑️
How it works: When a vendor registers, they're redirected to choose a plan. After purchasing, they can submit listings up to their limit.

Step 7: Geolocation Settings 📍

Go to HivePress > Settings > Geolocation

Configure:

Map Provider: Google Maps (recommended) or Mapbox
API Key: Get from Google Cloud Console - Enable Maps JavaScript API and Places API
Default Location: Set your default map center (e.g., New York)
Radius Search: Allow guests to search "within 50 miles of..."

This adds the location search field and displays maps on listing pages.

Step 8: Reviews Settings

Go to HivePress > Settings > Reviews

Enable:

  • ☑️ Allow submitting reviews
  • ☑️ Moderate reviews (optional)
Rating Categories: Star rating (1-5)

Guests can leave reviews after their booking is complete (just like Airbnb).

Step 9: Messages Settings 💬

Go to HivePress > Settings > Messages

Enable:

  • ☑️ Allow sending messages

This allows guests and hosts to communicate before/during bookings

🏠 PHASE 4: CREATE LISTING ATTRIBUTES MOST IMPORTANT

This is where you define what information hosts provide about their properties. Think of Airbnb's property details.

Go to Listings > Attributes > Add New

Essential Attributes for Rental Properties:

1. Property Type (Select - Single)

  • Type: Select
  • Options:
    • Entire Home
    • Private Room
    • Shared Room
    • Hotel Room
  • Display Area: Page (Primary)
  • ☑️ Searchable
  • ☑️ Filterable
  • ☑️ Required

2. Bedrooms (Number)

  • Type: Number
  • Min: 0
  • Max: 20
  • Display Area: Page (Primary)
  • ☑️ Searchable
  • ☑️ Filterable
  • ☑️ Required

3. Bathrooms (Number)

  • Type: Number
  • Min: 0
  • Max: 10
  • Display Area: Page (Primary)
  • ☑️ Searchable
  • ☑️ Filterable
  • ☑️ Required

4. Max Guests (Number)

  • Type: Number
  • Min: 1
  • Max: 50
  • Display Area: Page (Primary)
  • ☑️ Searchable
  • ☑️ Filterable
  • ☑️ Required
This is critical for your "Allow multiple places per booking" pricing

5. Beds (Number)

  • Type: Number
  • Min: 0
  • Max: 20
  • Display Area: Page (Primary)
  • ☑️ Searchable

6. Square Footage (Number - Optional)

  • Type: Number
  • Suffix: sq ft
  • Display Area: Page (Primary)

7. Amenities (Select - Multiple) KEY FEATURE

  • Type: Select
  • Multiple: ☑️ (allows selecting multiple)
  • Options:
    • WiFi
    • Kitchen
    • Free Parking
    • Washer
    • Dryer
    • Air Conditioning
    • Heating
    • TV
    • Pool
    • Hot Tub
    • Gym
    • Workspace
    • Fireplace
    • BBQ Grill
    • Outdoor Seating
    • Pet Friendly
    • Smoking Allowed
    • Events Allowed
    • Family Friendly
    • Wheelchair Accessible
  • Display Area: Page (Secondary) - shows as icon list
  • ☑️ Searchable
  • ☑️ Filterable
This creates an Airbnb-style amenities section

8. House Rules (Textarea)

  • Type: Textarea
  • Display Area: Page (Secondary)
  • Example: "No smoking, No parties, Check-in after 3 PM"

9. Cancellation Policy (Select - Single)

  • Type: Select
  • Options:
    • Flexible: Full refund 24 hours before
    • Moderate: Full refund 5 days before
    • Strict: 50% refund 7 days before
  • Display Area: Page (Primary)
  • ☑️ Required

10. Check-in Time (Time)

  • Type: Time
  • Display Area: Page (Secondary)

11. Check-out Time (Time)

  • Type: Time
  • Display Area: Page (Secondary)

12. Instant Booking (Checkbox - Optional)

  • Type: Checkbox
  • Display Area: Page (Primary)
  • Label: "Enable instant booking (guests can book without approval)"
This lets hosts choose per listing

Display Areas Explained:

  • Page (Primary): Shows prominently at top of listing page
  • Page (Secondary): Shows in separate sections (like amenities grid)
  • Search: Shows in search form only
  • View: Shows in listing cards on search results
💰 PHASE 5: WOOCOMMERCE & PAYMENT SETUP

Step 10: Configure WooCommerce

  • Go through WooCommerce setup wizard
  • Set your currency (USD, EUR, etc.)
  • Enable Stripe or PayPal gateway
Go to WooCommerce > Settings > Products > Downloadable Products and uncheck any email options (you don't sell products)

Step 11: Enable Stripe Connect (for Marketplace)

  • Install WooCommerce Stripe Gateway
  • Get Stripe API keys from your Stripe Dashboard
  • Enable Stripe Connect - this allows split payments (you + hosts)
  • Hosts will connect their Stripe accounts to receive payouts
👥 PHASE 6: USER ROLES & REGISTRATION

Step 12: Configure Vendors (Hosts)

Go to Vendors > Settings

Enable:

  • ☑️ Allow registration (anyone can become a host)
  • Moderate vendors (optional - approve hosts manually)
Registration Fields: Name, Email, Profile Photo, Bio

Hosts automatically get a vendor profile page at /vendor/username

📄 PHASE 7: COMPLETE PAGE STRUCTURE GUIDE

Part 1: Pages HivePress Creates AUTOMATICALLY ❌ (Don't Create These)

These are static templates generated by HivePress. They exist automatically at these URLs:

Core Functional Pages:

/submit-listing - Add Listing form (where hosts submit properties)
/listing/property-name - Single Listing view (property detail page)
/listings - Listings archive (search results page)
/vendor/vendor-name - Vendor Profile page (host profile with their listings)
/vendors - All Vendors page (browse all hosts)
/register-vendor - Vendor Registration form (if direct vendor registration is enabled)

User Dashboard Pages (Automatic):

/account/ - Main Dashboard
/account/settings - User Settings (edit profile, password)
/account/listings - Manage My Listings (for hosts)
/account/orders - Bookings/Orders (for both hosts and guests)
/account/messages - Messages Inbox (with Messages extension)
/account/favorites - Saved/Favorited Listings (with Favorites extension)
/account/reviews - Reviews (given/received)
/account/vendor/dashboard - Vendor-specific dashboard (stats, earnings)

Membership Pages (Automatic with Memberships extension):

/select-plan - Choose Membership Plan (before adding listings)

Part 2: Pages YOU Need to Create in WordPress ✅

Go to WordPress Dashboard > Pages > Add New and create these:

Marketing/Static Pages (Design in Bricks):

Page Name Purpose Where to Design
Home Main landing page Bricks Builder
About Us Company info Bricks Builder
How It Works Guide for hosts/guests Bricks Builder
Contact Contact form Bricks Builder
FAQ Questions & answers Bricks Builder
Terms of Service Legal Bricks or WordPress Editor
Privacy Policy Legal Bricks or WordPress Editor
Blog (optional) News/articles Bricks or WordPress Posts

Configuration Pages (Special Purpose):

These pages need to be created and then assigned in HivePress settings:

Page Name Create? Assign Where Notes
Listings ✅ Yes HivePress > Settings > Listings > "Listings Page" Leave blank (HivePress fills it with listings archive)
Vendors ✅ Yes HivePress > Settings > Vendors > "Vendors Page" Leave blank (HivePress fills it with vendor profiles)

How to assign:

  1. Create a blank page called "Listings"
  2. Go to HivePress > Settings > Listings
  3. In the "Listings Page" dropdown, select "Listings"
  4. Save
  5. Repeat for Vendors page

Part 3: What About the Dashboard, Messages, Vendor Listing View?

User Dashboard 🏠

  • URL: /account/
  • Status: Automatically generated by HivePress
  • Accessible: After user logs in
  • Contains:
    • Dashboard overview
    • Links to Settings, Listings, Orders, Messages, etc.
    • For vendors (hosts): Shows earnings, bookings, stats
    • For customers (guests): Shows bookings, messages, favorites
You dont create this! It exists automatically once a user registers.

Messages 💬

  • Extension: Messages extension
  • URL: /account/messages
  • Status: Automatically generated
  • How it works:
    • Users click "Send Message" on a listing
    • Modal form opens
    • Message appears in /account/messages
    • Email notifications sent
You dont create this! The Messages extension handles everything.

Vendor Listing View (Hosts Properties) 🏡

  • What users see: /vendor/host-name - Public profile showing all properties by that host
  • What vendors see: /account/listings - Private dashboard to manage their listings
Both automatic! No creation needed.

Part 4: Template Customization (Advanced)

If you want to customize the design of automatic pages:

  1. Go to HivePress > Templates
  2. Click Add New
  3. Choose template type:
    • Listing View - Single property page
    • Listing Search - Search results page
    • Vendor View - Host profile page
    • User Account - Dashboard pages
    • Add Listing - Submit form
    • etc.
  4. Customize using WordPress blocks (not Bricks!)
  5. Save
This is block-based customization, not Bricks Builder.

Part 5: Your Menu Structure

🎨 PHASE 8: DESIGN WITH BRICKS BUILDER

Understanding HivePress Integration

Option A: Use HivePress Templates (Recommended)

  • Go to HivePress > Templates
  • Customize these templates using WordPress blocks:
    • Listing Single Page
    • Listing Search Page
    • Vendor Single Page
  • Use CSS to style them to match your Bricks design

Option B: Custom Bricks Integration

Since HivePress uses blocks (not shortcodes), youll need a developer to:

  • Create custom Bricks templates
  • Query HivePress post types (listing, vendor)
  • Build dynamic data bindings
Recommendation: Use HivePress templates for functionality pages, use Bricks only for:
  • Homepage
  • About page
  • Contact page
  • Custom landing pages
  • Header and Footer
✅ QUICK SETUP CHECKLIST

Follow These Steps in Order:

1 Create "Listings" page (blank) → Assign in HivePress > Settings > Listings
2 Create "Vendors" page (blank) → Assign in HivePress > Settings > Vendors
3 Create marketing pages (Home, About, etc.) → Design in Bricks
4 Configure Memberships → HivePress > Settings > Memberships
5 Configure Commissions → HivePress > Settings > Marketplace
6 Test user flow: Register → Choose Plan → Add Listing → View Dashboard

🎉 Congratulations!

You now have a complete understanding of how to build an Airbnb-style marketplace with HivePress. Follow each phase carefully, and youll have a fully functional rental platform.

Remember: Test everything thoroughly before launching, and always keep backups of your site!

🔍 BONUS: CREATING AN AIRBNB-STYLE HOMEPAGE SEARCH

YES! This is 100% possible and exactly what HivePress Bookings + Geolocation are designed for! ✅

You can create an Airbnb-style search on your homepage with:

  • Location search (city, address, region)
  • Check-in / Check-out dates (calendar picker)
  • Search button → redirects to /listings with filters applied

Step-by-Step Setup:

Step 1: Enable Geolocation (Location Search)

  1. Install the Geolocation extension (you have it in your bundle)
  2. Go to HivePress > Settings > Geolocation
  3. Choose your provider:
    • Mapbox (recommended - generous free tier)
    • Google Maps (requires API key + billing)
  4. Add your API key
  5. Enable "Add search field"
  6. In Content Types, select Listings
  7. Save
Result: A location autocomplete field will be added to your search bar.

Step 2: Enable Date Availability Search

  1. Go to HivePress > Settings > Bookings
  2. DISABLE these features (important!):
    • "Allow multiple bookings per time period" (uncheck)
    • "Enable time slots" (uncheck)
  3. Save
  4. Go to HivePress > Settings > Listings > Default Fields
  5. Find "Search Fields" section
  6. Add "Dates" field
  7. Optional: Remove "Keywords" field (you dont need keyword search if you have location + dates)
  8. Save
Result: Users will see a date range picker (check-in to check-out) in the search bar.

Step 3: Add Search Bar to Your Homepage (in Bricks)

Now you need to display the search form on your homepage. Heres how:

Option A: Use HivePress Block (Recommended)

  1. Edit your homepage in WordPress Block Editor (not Bricks initially)
  2. Add the "Listing Search Form" block (from HivePress blocks)
  3. The search bar will now show:
    • Location field (from Geolocation)
    • Dates field (Check-in/Check-out)
    • Search button
  4. Save

To use in Bricks:

Since Bricks may not natively support HivePress blocks, you have two approaches:

  • Approach 1: Create a WordPress page with the search block, then embed it in Bricks using a shortcode/iframe
  • Approach 2: Use Bricks on the homepage BUT leave a section for the WordPress Block Editor to insert the HivePress search block

Option B: Link to Listings Page

If you want full Bricks design control:

  1. Design your homepage completely in Bricks
  2. Add a button/link: "Search Properties" → links to /listings
  3. Users will use the search bar on the /listings page instead
This is simpler for Bricks integration.

Step 4: How the Search Works

When a user:

  • Enters location: "Los Angeles"
  • Selects dates: June 1 - June 5
  • Clicks "Search"

They are redirected to:

/listings?location=los-angeles&dates=2026-06-01,2026-06-05

The listings page shows:

  • Only properties available for those dates
  • Only properties near that location (radius-based or region-based)

Additional Filter Options:

You can add more filters to the search bar in HivePress > Settings > Listings > Default Fields:

Field What It Does When Available
Dates Check-in/Check-out calendar Bookings extension enabled
Guests Number of guests Enable "Allow multiple places per booking" in Bookings settings
Location City/address search Geolocation extension enabled
Price Price range slider Marketplace extension enabled
Categories Property type (Villa, Apartment) Always available
Custom Attributes Bedrooms, Bathrooms, Amenities Create in Listings > Attributes

Example: Advanced Search Bar

To create a search like this:

[Location] [Check-in] [Check-out] [Guests] [Search Button]

Configuration:

  1. Geolocation: Enabled → adds Location
  2. Bookings Settings:
    • Enable "Allow multiple places per booking"
    • Disable "Allow multiple bookings per time period"
  3. HivePress > Settings > Listings > Default Fields > Search Fields:
    • Add: Location (if not auto-added)
    • Add: Dates
    • Add: Guests
    • Remove: Keywords (optional)

Sidebar Filters (On Listings Page)

The search bar handles primary filters (location, dates).

For additional filters (bedrooms, amenities, price), use the sidebar filter form on /listings:

  1. Go to Listings > Attributes
  2. Create custom attributes (e.g., "Bedrooms", "Pool")
  3. Check "Filterable" (displays in sidebar, not main search bar)
  4. Users will see these filters on the left side of the listings page

Important Notes:

For date-based bookings:
  • Disable "multiple bookings per time period" (this is for hourly/time-slot bookings)
  • Disable "time slots"
  • Otherwise, the Dates field wont appear in search
Geolocation requires API setup:
Bricks integration:
  • Since HivePress uses blocks, not shortcodes, you may need to use a hybrid approach (WordPress blocks for search, Bricks for layout)

Recommended Homepage Design Flow:

Hero Section (Bricks):
  • Large background image
  • Headline: "Find your perfect vacation rental"
  • Search bar (HivePress block or link to /listings)
Features Section (Bricks):
  • "How it works" steps
  • Trust badges
  • Featured properties (use HivePress "Listings" block)
CTA Section (Bricks):
  • "Become a Host" button → links to /select-plan

🎯 Summary

With the proper configuration of HivePress Bookings and Geolocation extensions, you can create a fully functional Airbnb-style search experience. The key is properly configuring the date availability settings and integrating the search form into your homepage design.

💻 RETRIEVING LISTING DATA WITH PHP CODE

Yes, absolutely! You can retrieve listing information using PHP code. HivePress stores all data in the WordPress database and provides methods to access it.

How to Get Listing Information:

1. Get Current Listing Object:

// On a listing page
$listing = hivepress()->request->get_context('listing');

// Or get by ID
$listing = \HivePress\Models\Listing::query()->get_by_id(123);

2. Get Listing Properties:

// Basic info
$listing_id = $listing->get_id();
$title = $listing->get_title();
$description = $listing->get_description();
$price = $listing->get_price();

// Images
$image_url = $listing->get_image__url('large');
$images = $listing->get_images();

// Location
$latitude = $listing->get_latitude();
$longitude = $listing->get_longitude();

// Dates (if using Bookings)
$created_date = $listing->get_created_date();

3. Get Categories:

// Get category IDs
$category_ids = $listing->get_categories__id();

// Get category objects
$categories = $listing->get_categories();

// Loop through categories
foreach ($categories as $category) {
    echo $category->get_name();
    echo $category->get_image__url();
}

4. Get Attributes (Amenities, Custom Fields):

// Replace 'amenities' with your attribute name
$amenities = $listing->get_amenities();

// For multi-select attributes
$amenity_values = $listing->get_amenities__name(); // Array of names

// Example: Get bedrooms, bathrooms, etc.
$bedrooms = $listing->get_bedrooms();
$bathrooms = $listing->get_bathrooms();
$pool = $listing->get_pool(); // Yes/No checkbox
$wifi = $listing->get_wifi();

5. Get Vendor Information:

$vendor_id = $listing->get_vendor_id();
$vendor = $listing->get_vendor();

if ($vendor) {
    echo $vendor->get_name();
    echo $vendor->get_email();
    echo $vendor->get_phone();
    echo $vendor->get_image__url();
}

Complete Example:

<?php
// Get listing by ID
$listing = \HivePress\Models\Listing::query()->get_by_id(123);

if ($listing) {
    // Basic info
    echo '<h2>' . $listing->get_title() . '</h2>';
    echo '<p>Price: $' . $listing->get_price() . '/night</p>';
    
    // Categories
    echo '<h3>Property Type:</h3>';
    foreach ($listing->get_categories() as $category) {
        echo '<span>' . $category->get_name() . '</span>';
    }
    
    // Custom attributes
    echo '<h3>Details:</h3>';
    echo '<ul>';
    echo '<li>Bedrooms: ' . $listing->get_bedrooms() . '</li>';
    echo '<li>Bathrooms: ' . $listing->get_bathrooms() . '</li>';
    echo '<li>Max Guests: ' . $listing->get_max_guests() . '</li>';
    echo '</ul>';
    
    // Amenities (multi-select)
    $amenities = $listing->get_amenities__name();
    if ($amenities) {
        echo '<h3>Amenities:</h3>';
        echo '<ul>';
        foreach ($amenities as $amenity) {
            echo '<li>' . $amenity . '</li>';
        }
        echo '</ul>';
    }
    
    // Vendor info
    $vendor = $listing->get_vendor();
    if ($vendor) {
        echo '<h3>Hosted by:</h3>';
        echo '<p>' . $vendor->get_name() . '</p>';
    }
}
?>

📍 Where to Add This Code:

  • Child theme templates (override HivePress template parts)
  • functions.php (with hooks/filters)
  • Custom plugin
  • Bricks Builder (using PHP element or custom shortcode)

🔧 Pro Tips:

  • Replace get_amenities() with your actual attribute name (lowercase, underscores)
  • Use get_attribute_name__name() for multi-select values
  • Use get_attribute_name() for single values
  • Always check if $listing exists before calling methods

⚠️ Common Attribute Names to Use:

These depend on what you created in Listings > Attributes:

  • $listing->get_bedrooms()
  • $listing->get_bathrooms()
  • $listing->get_amenities__name() (array)
  • $listing->get_property_type()
  • $listing->get_square_feet()
  • $listing->get_year_built()

Check your exact attribute slugs in HivePress > Listings > Attributes

🎯 Example Use Cases:

  • Custom search filters in Bricks: Display listings with specific attributes
  • Featured properties widget: Show top-rated or newest listings
  • Custom listing cards: Design your own property grid layout
  • Comparison tool: Compare multiple properties side-by-side
  • Custom email templates: Include listing details in notifications

Sign In

Register

Reset Password

Please enter your username or email address, you will receive a link to create a new password via email.