Back to Top

Laravel eCommerce Multi Tenant SaaS PreOrder

Let every store on your Bagisto SaaS platform sell out-of-stock products. PreOrder SaaS adds per-tenant preorders, deposits, stock mails and isolated data.

The Laravel eCommerce PreOrder SaaS module lets every store on your Bagisto SaaS platform sell out-of-stock or unreleased products.

It allows customers to reserve these products in advance through a preorder, so they never miss items they want.

The admin of each company can offer the preorder as a Partial Payment or a Complete Payment.

Buyers either pay a percentage now and the rest later, or they pay the full amount up front.

Moreover, the module emails the customer as soon as the preordered product returns to stock.

They can then come back and complete the remaining payment for their order.

Being a true multi-tenant (SaaS) extension, every company gets its own preorder attributes and its own preorder records.

Therefore all data stays completely isolated from the other tenants on the platform.

Please Note – To use this extension, you must have the Bagisto SaaS (Multi-Tenant) platform installed first.

This module builds on the base Laravel PreOrder module, which ships and installs together with it.

This release targets Bagisto v2.4.9, Bagisto SaaS v2.4.9 and PreOrder v2.4.9.

Feature List of Laravel eCommerce PreOrder SaaS 

  • Allows the preorder feature for out-of-stock Simple and Configurable products.
  • Each tenant (company) can enable or disable preorder independently from its own admin panel.
  • Two preorder types set by the admin – Partial Payment and Complete Payment.
  • Admin can set the preorder percentage that the customer must pay in advance for Partial Payment.
  • Admin can add a custom preorder message (channel and locale based) shown to customers on the product page.
  • Per-product settings – Allow Preorder, Preorder Qty and Product Availability date.
  • Maximum Preorder Quantity caps how many units a product without its own Preorder Qty can take.
  • Accept Preorders Until closes reservations on a chosen date, after which the product is simply out of stock.
  • Cancel Unpaid Balance After (Days) cancels a reservation whose balance stays unpaid for too long.
  • The storefront automatically shows a “Preorder” button in place of “Add To Cart” when a product is out of stock and preorderable.
  • Product page shows the amount to pay now and the expected availability date.
  • A confirmation email reaches the customer the moment they place the preorder.
  • The store emails customers automatically when the product comes back in stock (if enabled).
  • Reminder emails go out daily to customers whose item has arrived while the balance is still unpaid.
  • Admin can also manually notify customers from the preorder listing using the “Notify Customer” mass action.
  • The admin order page shows payment type, status, amount paid, amount remaining and a link to the balance order.
  • Shipment and refund stay blocked while a reservation still owes money.
  • Multi-tenant ready – preorder attributes are auto-provisioned per company and all preorder data is company-scoped.
  • A read-only super-admin panel reports the installed package, its version and how the platform separates tenant data.

Installation of Laravel eCommerce PreOrder SaaS

  • Unzip the extension package and merge the “packages” folder into your project root directory.
  • Goto composer.json file and add the following lines under ‘psr-4’
"Webkul\\PreOrder\\": "packages/Webkul/PreOrder/src",
"Webkul\\PreOrderSaas\\": "packages/Webkul/PreOrderSaas/src"
  • Run the following command
composer dump-autoload
  • Goto bootstrap/providers.php file and add following lines under ‘providers’
Webkul\PreOrder\Providers\PreOrderServiceProvider::class,
Webkul\PreOrderSaas\Providers\PreOrderSaasServiceProvider::class,
  • Run the following commands to complete the setup
php artisan pre-order-saas:install
php artisan optimize:clear

The pre-order-saas:install command installs the base PreOrder module first, then runs this package’s own migration.

Next it seeds the preorder attributes and settings for every company, and finally clears the cache.

That’s it, now just execute the project on your specified domain.

Note:  This module is an add-on of the Bagisto SaaS (Multi-Tenant) platform.You must install the main platform before using this module.

Step-by-Step: Install the Module

  1. Merge the packages folder from the extension zip into your project root.
  2. Next, add both PSR-4 namespaces to composer.json and run composer dump-autoload.
  3. Then register both service providers in bootstrap/providers.php.
  4. Run php artisan pre-order-saas:install to migrate and seed every company.
  5. Then run php artisan optimize:clear so the new configuration node loads.
  6. Finally, open any tenant admin panel and confirm the Preorder menu appears.

Admin Configuration of Laravel eCommerce PreOrder SaaS

After the successful installation of the module, the admin of each company can navigate to Configure>>Preorder>>Settings>>General.

Each admin enables or disables preorder for their own store on the Bagisto SaaS platform.

Once enabled, they can set the following options from the general settings:-

Laravel eCommerce PreOrder SaaS module tenant admin configuration showing preorder type, percent and limits
  • Enable PreOrder – Turn the preorder feature on or off for the store.
  • Preorder Type – Choose between Partial Payment and Complete Payment (channel based).
  • Preorder Percent – The percentage the customer pays in advance; it applies only to Partial Payment and accepts 0.01 to 99.9.
  • Message – A custom message (max 150 characters, channel and locale based) displayed to the customer on the product page.
  • Enable Automatic Mail – Send the stock-notification email automatically when the product returns to stock.
  • Maximum Preorder Quantity – The cap applied to any product that carries no Preorder Qty of its own.
  • Accept Preorders Until – The last day the store takes reservations, written as YYYY-MM-DD.
  • Cancel Unpaid Balance After (Days) – The grace period before the scheduled job cancels an unpaid balance.

Every value above belongs to that company alone. Consequently one store can run a 50% deposit while its neighbour asks for the full amount.

Step-by-Step: Configure Preorder for a Tenant

  1. Log in to the tenant admin panel and open Configure.
  2. Next, choose Preorder and then Settings.
  3. Switch Enable PreOrder on.
  4. Then pick a Preorder Type, and set Preorder Percent for a partial payment.
  5. Write the storefront Message customers read on the product page.
  6. Optionally set the three limits – quantity cap, closing date and auto-cancel window.
  7. Finally, click Save Configuration.

Preorder Type in Laravel eCommerce PreOrder SaaS

The admin selects how the customer pays for a preordered product using the Preorder Type option.

Partial Payment

In Partial Payment, the customer pays only the configured percentage of the product price to reserve it.

They pay the remaining amount later, once the product is available in stock.

Now brief explanation with example.

Product PricePreorder PercentPaid Now (Advance)Remaining Amount
$10020%$20$80
$50030%$150$350
$100050%$500$500

The customer pays the advance while placing the preorder. Afterwards they settle the balance once the product returns to stock.

Complete Payment

In Complete Payment, the customer pays the full amount up front while placing the preorder.

The customer owes nothing later. Therefore the store simply fulfils the order as soon as stock arrives.

Product Preorder Settings in Laravel eCommerce PreOrder SaaS

Once a store enables preorder, three extra attributes appear on the product edit page for Simple and Configurable products.

These attributes sit in the General group and belong to the preorder module.

Laravel eCommerce PreOrder SaaS module product edit page showing Allow Preorder, Preorder Qty and Product Availability
  • Allow Preorder – Enables the preorder option for that particular product.
  • Preorder Qty – The maximum quantity a customer may preorder for the product.
  • Product Availability – The date the product should reach stock, which the storefront then shows to customers.

Note – These attributes only appear when the store enables preorder and the product type is Simple or Configurable.

In the SaaS setup, the platform creates these attributes for each company and attaches them to the General group of every family.

As a result they are ready to use the moment a merchant registers a store.

Step-by-Step: Make a Product Preorderable

  1. Open Catalog and then Products in the tenant admin.
  2. Create or edit a Simple or Configurable product.
  3. Set its inventory to 0, because preorder applies to out-of-stock items.
  4. Then switch Allow Preorder on in the General group.
  5. Enter a Preorder Qty such as 25.
  6. Pick a future Product Availability date.
  7. Finally, click Save Product.

Front-end view of Laravel eCommerce PreOrder SaaS:-

When a preorderable product is out of stock, the storefront replaces the “Add To Cart” button with a “Preorder” button.

Customers reserve the product in advance and complete the purchase when it becomes available.

Laravel eCommerce PreOrder SaaS module storefront product page showing the Preorder button and preorder information box

Along with the Preorder button, an information box appears on the product page which includes:-

  • How much of the price the customer pays now, for a Partial Payment.
  • A custom preorder message written by the admin.
  • An expected availability date for the product.

Customers then add the preordered product to the cart and check out like a normal order.

Meanwhile the cart checks the quantity against the Preorder Qty of the product, or the store-wide cap.

Notably, a preorder payment never shares a cart with other products.

Step-by-Step: Place a Preorder as a Customer

  1. Open the storefront of the tenant and search for the preorderable product.
  2. Then read the preorder box showing the percentage, the message and the availability date.
  3. Next, set the quantity, keeping it within the allowed preorder limit.
  4. Click Preorder to reserve the item.
  5. Open the cart and click Continue to Checkout.
  6. Finally, fill in the address, choose a shipping and payment method, then place the order.

Stock Notification in Laravel eCommerce PreOrder SaaS

A confirmation email reaches the buyer as soon as the reservation is placed, showing the amount paid and the amount still due.

Once the preordered product arrives back in stock, the module tells the customer by email so they can return and finish the job.

If Enable Automatic Mail is on, that stock-notification email goes out on its own.

Alternatively the admin sends it from the preorder listing using the Notify Customer mass action.

Furthermore, a daily reminder reaches customers whose item has arrived while the balance is still unpaid.

Each email carries a direct link that takes the customer straight to the remaining payment.

Logged-in customers land on the order view, while guests reach a secure token-based complete-preorder page.

Notably, both scheduled jobs run once inside every tenant, against that store’s own settings, stock and domain.

Step-by-Step: Notify Customers Manually

  1. Open the Preorder menu in the tenant admin.
  2. Tick the reservations whose customers you want to reach.
  3. Then choose Notify Customer from the mass-action list.
  4. Finally, confirm the action and watch the Email Sent column turn to Yes.

Completing the Preorder in Laravel eCommerce PreOrder SaaS

The customer views and completes their preorder from My Account>>Orders.

Specifically, the order view shows a “Preorder Information” panel and the item-wise remaining amount.

Laravel eCommerce PreOrder SaaS module customer order view showing the Preorder Information panel and remaining amount

The Preorder Information panel displays:-

  • Type – Partial or Complete payment.
  • Status – Pending, Processing, Completed or Canceled.
  • Reservation – The original order that took the deposit, with the amount paid.
  • Balance – What is still owed, and the order that settled it once one exists.
  • Remaining – The item-wise amount still owed, which the page shows straight away.

When the product is in stock, a Complete Preorder button appears carrying the exact amount still due.

If the product has not arrived, an Available soon note takes its place instead.

After the customer pays the balance, the status becomes Completed and the remaining amount drops to zero.

Step-by-Step: Pay the Remaining Amount

  1. Sign in to the storefront and open My Account.
  2. Next, choose Orders and open the order holding the reservation.
  3. Read the Preorder Information panel to see what is still owed.
  4. Click Complete Preorder once the item is back in stock.
  5. Finally, check out the balance order to finish the purchase.

Admin Order View for Laravel eCommerce PreOrder SaaS

On the admin order view, the module injects the same Preorder Information panel the customer sees.

Laravel eCommerce PreOrder SaaS module admin order view showing the injected preorder panel with reservation and balance rows

Therefore the merchant reads the same story: payment type, status, amount paid and amount still owed.

The Reservation row links to the order that took the deposit, and the Balance row links to the order that settled it.

To keep the flow consistent, shipment and refund stay unavailable while a reservation still owes money.

Once the customer pays the balance, both actions return and the order behaves like any other.

Step-by-Step: Review a Preorder from the Admin Order Page

  1. Open Sales and then Orders in the tenant admin.
  2. Open the order that contains the reserved item.
  3. Then read the Preorder Information panel below the order items.
  4. Follow the Balance row link to reach the settling order when it exists.
  5. Finally, invoice the deposit so the customer can pay the balance.

Manage Preorders in Laravel eCommerce PreOrder SaaS

The admin manages every reservation from the dedicated Preorder menu in the admin panel.

In addition, the listing provides a datagrid with search, filter and export options.

Laravel eCommerce PreOrder SaaS module admin preorder datagrid listing reservations with status and amounts

The preorder datagrid shows the following columns:-

ColumnDescription
IdThe preorder item id.
Order IdThe original order in which the preorder was placed.
Payment Order IdThe order created for the remaining payment (N/A if not applicable).
Product NameThe name of the preordered product.
Customer NameThe name of the customer.
Customer EmailThe email of the customer.
Paid AmountThe amount already paid by the customer.
RemainingThe amount still to be paid (0 once completed).
Preorder TypePartial Payment or Complete Payment.
StatusPending, Processing, Completed or Canceled.
Email SentWhether the stock-notification email has been sent.
DateWhen the reservation was placed.

Admins filter and search the grid by these columns. Moreover the Notify Customer mass action emails the selected buyers.

ACL controls access to the preorder listing and the notify action, so you can restrict a role to either one.

Step-by-Step: Work the Preorder Datagrid

  1. Open the Preorder menu in the tenant admin.
  2. Next, search by product, customer name or customer email.
  3. Next, use Filter to narrow the list by status or date.
  4. Open the linked Order Id to inspect the originating order.
  5. Finally, click Export to download the grid for reporting.

Multi-Tenant Capabilities of Laravel eCommerce PreOrder SaaS

The Laravel eCommerce PreOrder SaaS module extends the base preorder feature across every tenant on your Bagisto SaaS platform.

  • Automatic attribute provisioning – When a company registers, the platform creates the Allow Preorder, Preorder Qty and Product Availability attributes for that company and attaches them to the General group of each of its attribute families.
  • Seeded settings – A new store opens with preorder already enabled, a 50% deposit and a storefront message in its own language, so nobody faces an empty configuration screen.
  • Per-tenant configuration – Every store sets its own preorder type, percentage, message and limits independently.
  • Company-scoped data – The module tags all preorder records with the company and scopes every query to the current tenant, so a store only ever sees its own reservations.
  • Tenant-aware scheduled jobs – The reminder and auto-cancel jobs run once inside each company, against that store’s own settings, stock and domain.
  • Tenant isolation – One company can never reach another company’s preorder attributes or records, while the super admin keeps a full view across the platform.

The super admin also gets a read-only panel under Configure>>Pre-Order>>Settings.

Laravel eCommerce PreOrder SaaS module super admin panel showing package, version and tenant data scope

It reports the installed package, its version and how the platform separates preorder data between tenants.

Additionally it points operators to the tenant screen where the real settings live.

Assign the extension to a subscription plan, and only the stores on that plan can offer preorders.

Step-by-Step: Check the Module from the Super Admin

  1. Sign in to the super admin on your primary domain.
  2. Open Configure and find the Pre-Order group.
  3. Then click Settings to read the module information panel.
  4. Finally, open Subscription and assign the extension to the plans that should include it.

Support for Laravel eCommerce PreOrder SaaS

That’s all about the Laravel eCommerce PreOrder SaaS module for Bagisto.

For developer details on extending the platform, visit the Bagisto developer docs.

If you have any issues please feel free to add a ticket and also let us know your views to make the module better https://bagisto.uvdesk.com/en/

Thanks for reading the blog.

Current Product Version - v2.4.9

Supported Framework Version - v2.4.9

Blog Version - v2.4.9
  • Version v2.4.9
  • Version v2.4.8
. . .

Leave a Comment

Your email address will not be published. Required fields are marked*


Be the first to comment.

Back to Top

Message Sent!

If you have more details or questions, you can reply to the received confirmation email.

Back to Home
On this page

Table of Content

Back to top