Online marketplaces like Amazon, eBay, and Etsy have reshaped how people buy and sell.
Instead of a single store selling its own stock, many independent sellers trade under one platform.
Building one of these is a very different problem from building a normal online store.
Most teams don't have the time or budget to build that machinery from zero - and they shouldn't have to.
The vendor, order, and commission workflows are well-understood problems that already have proven, off-the-shelf solutions.
In this series, we'll build a working multi-vendor marketplace on top of Bagisto, the open-source Laravel e-commerce platform.
Rather than reimplement every marketplace workflow from scratch, we'll set up the e-commerce foundation and configure the core marketplace structure.
Next, we'll handle vendor, product, order, and commission workflows through Bagisto's marketplace admin and vendor panels.
By the end of this first part, you'll have a running Bagisto store with the marketplace layer installed.
You'll also understand the core components every marketplace needs and create your first seller account live on the storefront.
The series roadmap
This is a 5-part marketplace development journey:
- Part 1 - Laravel Marketplace Setup (this post): marketplace fundamentals, Bagisto architecture, installation, marketplace extension setup, configuration, and your first seller.
- Part 2 - Vendor Management Workflow: seller registration, the approval workflow, vendor profile management, and the vendor dashboard.
- Part 3 - Product & Inventory Management: vendor product creation, product approval, vendor inventory, and product variations.
- Part 4 - Orders, Commissions & Seller Payouts: multi-vendor checkout, order splitting, commission management, and seller payouts.
- Part 5 - Shipping, Taxes & Advanced Settings: shipping, taxes, reviews, and dispute handling.
Each part builds step by step, helping you create and manage a complete marketplace with all essential workflows.
What features should a marketplace have.
What are the basic features any type of marketplace may contain?
Every marketplace works differently — service, digital, and physical product marketplaces each require unique workflows.
Regardless of the marketplace model, most platforms share a common foundation of features required to operate successfully:
- Vendor management - registration, approval, suspension, and seller profiles.
- Product ownership - every product must belong to a seller, and permissions follow from that ownership.
- Vendor permissions - fine-grained control over what each seller can and can't do.
- Order separation - a single customer cart can contain items from several sellers, and each seller should only see and act on their own portion.
- Commission management - the platform's cut per sale, which can vary from one seller to the next.
- Seller dashboards - each vendor needs their own view of orders, earnings, and inventory.
To make this concrete, think about the marketplaces you already use. On Amazon, most listings come from third-party sellers, not Amazon itself.
eBay is almost entirely seller-to-buyer, and Etsy is a collection of independent shops sharing one storefront.
The platform doesn't own inventory — it connects sellers and buyers while handling the essential marketplace operations behind the scenes.
Building all of that reliably is a significant project on its own.
We'll use Bagisto's Multi-Vendor Marketplace extension to explore these workflows without rebuilding every component from scratch.
Marketplace architecture
Before installing anything, it helps to have a mental model of how the layers stack up.
Bagisto gives you a complete single-vendor e-commerce platform, and the marketplace extension adds a vendor layer on top of it.
flowchart TD
A[Customer Storefront] --> B[Bagisto Core]
B --> C[Marketplace Extension]
C --> D[Multiple Sellers]
Bagisto Core
The core is a full Laravel e-commerce application. It owns the foundations that any store needs:
- The e-commerce data model (products, categories, attributes)
- Customers and authentication
- Cart and checkout
- Orders, invoices, and shipments
Everything the marketplace adds is built on top of these core concepts rather than replacing them.
A seller's product is still a Bagisto product; it also has an owner.
Marketplace Extension
The extension introduces the vendor dimension:
- A seller/vendor system - accounts, profiles, and public shop pages
- Seller products - every product can be attributed to a seller
- Seller order management - sellers can view and act on the orders for their own items
- Commission handling - a percentage of each sale is retained by the platform
Admin Panel
The platform operator works from the Bagisto admin panel, where the marketplace adds controls for:
- Approving and managing sellers
- Marketplace-wide settings (commission %, approval rules, landing page)
- Approving seller products and handling flags, refunds, and payouts
Vendor Panel
Each approved seller gets a separate dashboard where they can:
- Manage their shop profile
- Add and manage their own products
- Process their own orders, invoices, and shipments
How an order flows
The interesting part of any marketplace is what happens at checkout, because a single order can span multiple sellers. At a high level:
flowchart TD
A[Customer buys products] --> B[System identifies the seller of each item]
B --> C[Order is split / assigned per seller]
C --> D[Each seller fulfills their portion]
D --> E[Commission is calculated per sale]
E --> F[Admin settles payouts to sellers]
We'll cover order splitting, commissions, and payouts in Part 4.
For now, remember that Bagisto core manages checkout, while the marketplace extension connects each order item to the right seller.
Install Bagisto
Let's set up Bagisto. These steps follow the official installation guide, which should be checked for the latest requirements.
System requirements
Bagisto is a Laravel application, so you need a standard PHP stack:
- PHP 8.3 or higher - the language runtime.
- Composer 2.5 or higher - PHP's dependency manager, used to pull in Bagisto and its packages.
- MySQL 8.0.32 or higher - the database that stores your store's data.
- A web server (Apache or Nginx) for anything beyond local development.
Verify what you have installed before starting:
php -v
composer --version
mysql --version
Check and update missing dependencies before installation, as version mismatches are a common cause of setup failures.
Create the project
Use Composer to scaffold a new Bagisto project. This downloads Bagisto and all of its dependencies into a fresh directory:
composer create-project bagisto/bagisto my-marketplace
Move into the new project directory:
cd my-marketplace
Run the installer
Bagisto ships with an interactive installer that walks you through application settings, database configuration, and creating your admin account:
php artisan bagisto:install
Follow the prompts. This is also where you'll enter your database credentials, so have your MySQL database name, username, and password ready.
Under the hood, this command runs the migrations and seeds the demo data, so you don't need to run migrate separately.
Start the development server
For local work, Laravel's built-in server is enough:
php artisan serve
Your store is now running.
Access your store
-
Storefront:
http://localhost:8000 -
Admin panel:
http://localhost:8000/admin
The default admin credentials created during install are:
-
Email:
admin@example.com -
Password:
admin123
⚠️ Change the default admin password immediately - these credentials are public knowledge.
In production, serve Bagisto through the public/ directory using a web server. For testing your marketplace locally, php artisan serve is enough.
Install the Marketplace extension
A quick but important note on licensing: Bagisto core is open-source and free, but the Multi-Vendor Marketplace is an extension.
There is no composer require for it - you purchase it, download a zip, and merge it into your project.
That's worth being clear about up front so you're not hunting for a public package that doesn't exist.
You can see it running on the live demo and find it on the Webkul store.
At the time of writing, the current version is v2.4.4, built for Bagisto 2.4.4.
Once installed, the extension adds:
- Seller/vendor accounts and public shop pages
- A dedicated vendor dashboard
- Seller-owned products and order management
- Marketplace configuration (commission, approvals, landing page)
Installation steps
After purchase, you'll receive a zip. The official process is:
1. Merge the package into your project. Unzip the extension and copy its packages folder into your Bagisto project root, so the extension lives under packages/Webkul/Marketplace/.
2. Register the package for autoloading. Open composer.json in your project root and add the extension's namespace under the psr-4 block.
This tells Composer where to find the extension's classes:
"Webkul\\Marketplace\\": "packages/Webkul/Marketplace/src"
3. Register the service provider. In bootstrap/providers.php, add the marketplace service provider to the returned array.
This is what actually boots the extension inside the Laravel application:
Webkul\Marketplace\Providers\MarketplaceServiceProvider::class,
4. Rebuild the autoloader. Because you added a new PSR-4 mapping, Composer needs to regenerate its class map so it can find the new classes:
composer dump-autoload
5. Run the marketplace installer. This publishes the extension's assets and runs its migrations, creating the marketplace's database tables:
php artisan marketplace:install
6. Clear cached config, routes, and views. Bagisto caches a lot for performance; clearing it ensures the new routes, config, and views from the extension are picked up:
php artisan optimize:clear
If everything worked, you'll see a new Marketplace icon in the left-hand menu of the admin panel. That's your signal the vendor layer is live.
Configure the database
If you ran php artisan bagisto:install in the above Section, you already entered your database details interactively and the migrations have run.
This section is a reference for what's happening behind that prompt, and for anyone doing a manual install or troubleshooting a connection.
Bagisto reads its database connection from the .env file in your project root:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=database_name
DB_USERNAME=username
DB_PASSWORD=password
Create the database in MySQL first (e.g. CREATE DATABASE my_marketplace;), then set DB_DATABASE to that name and fill in your MySQL username and password.
This single database ends up holding everything the marketplace runs on:
- Customers
- Sellers
- Products
- Orders
- Marketplace data (commissions, payouts, seller profiles)
If you're setting up manually rather than through the interactive installer, run the migrations to build the schema:
php artisan migrate:fresh --seed
php artisan storage:link
php artisan optimize:clear
Troubleshooting
-
Database connection errors (
SQLSTATE[HY000] [1045]/[2002]): the credentials or host in.envdon't match your MySQL setup, or the database doesn't exist yet. Re-checkDB_HOST,DB_DATABASE,DB_USERNAME, andDB_PASSWORD, and confirm MySQL is actually running. -
Broken images / assets: make sure
APP_URLin.envexactly matches the URL you're browsing (including the port, e.g.http://localhost:8000), and runphp artisan storage:linkso uploaded files are served correctly. -
Stale config after editing
.env: Laravel caches configuration. After any.envchange, runphp artisan optimize:clearso the new values take effect.
Marketplace configuration
With the extension installed, it's worth a quick tour of where the marketplace's behaviour is controlled before we bring a seller on board.
From the admin dashboard, click Configure in the left-hand menu and open the Marketplace settings. This page also shows the installed module version.
Settings are scoped by channel and locale, so you can tune the marketplace differently per store channel and language.
The options are grouped into a few areas:
- General
Controls the basic marketplace behavior. Includes:
- Status - enable or disable the Marketplace module.
- Seller address formatting - configure seller profile address display.
- Admin Commission Percentage - set the default commission applied to all sellers.
Example: if the global commission is set to 10%, the marketplace receives 10% from each seller order. Individual sellers can still have custom commission rates.
- Product
Controls how seller products behave inside the marketplace. Includes:
- Product approval before publishing.
- Allowing sellers to create and assign products.
- Seller profile completion progress.
- Product flagging/reporting by customers.
These settings help maintain product quality and marketplace standards.
- Seller
Manages seller-related permissions and workflows. Includes:
- Seller shop visibility.
- Customer information access.
- New seller approval process.
- Seller actions like creating invoices, shipments, and cancelling orders.
- Minimum order amount configuration.
- Seller flag/report settings.
This controls what sellers can access and manage inside their dashboard.
- Featured Sellers
Controls which sellers appear on the marketplace landing page. Configure:
- Number of featured sellers.
- Seller ranking criteria.
Ranking can be based on orders, ratings, products, and sales.
- Landing Page
Controls the public "Sell with Us" page used for attracting sellers. Configure:
- Banner title and description.
- Call-to-action button.
- Images.
- Community statistics.
- Business information.
- Seller journey sections.
You don't need to configure everything now — the defaults are enough to start. Return here anytime you want to adjust marketplace behavior.
Create your first seller
The foundation is ready - Bagisto is running and the marketplace layer is installed. Now let's get a seller onto the platform.
In Bagisto's marketplace, sellers register from the storefront and the admin approves them, so this is mostly a GUI flow rather than a code exercise.
Step 1 - Open the marketplace on the storefront. On the storefront, use the Sell / Open Store entry point.
Step 2 - Register as a seller. Fill in the shop details.
The key fields are the Shop Title and the Shop URL (the slug your public shop will live at), plus contact and address information. On submit, a seller account is created.
Step 3 - Approve the seller from the admin panel. Log in to the admin panel and open Marketplace → Sellers.
New registrations appear here with their status. If seller approval is required (a marketplace configuration setting), the account starts as unapproved.
Approve it either by selecting the row and using the mass-update dropdown, or via the individual approve/disapprove action.
Step 4 - Configure and review the seller profile. Edit seller details, set custom commission rates, manage allowed product types, and update profile settings.
Step 5 - Log in to the seller dashboard. After approval, the seller gets a dedicated dashboard to manage marketplace activities like products and orders.
Once a seller is created and approved, three things are true:
- A vendor profile exists, with a public shop page at the URL they chose.
- The seller has marketplace access through their own dashboard.
- The seller can manage their own products and orders, within the permissions the admin granted.
That's a functioning seller on your marketplace. In the next part, we'll slow down and look at this whole lifecycle properly.
Wrapping up Part 1
In this first part, we built the foundation of our marketplace. We:
- Understood the marketplace model and how it differs from single-vendor e-commerce
- Mapped the architecture - Bagisto core, the marketplace extension, and the admin/vendor panels
- Installed Bagisto and verified the environment
- Installed and enabled the marketplace extension
- Created and approved our first seller
In Part 2, we'll explore Vendor Management and understand how sellers register, configure profiles, and manage their marketplace operations.






Top comments (0)