Custom Pre-Order Module for Bitrix: Step-by-Step Implementation

Pre-ordering (also called **pre-purchase**) allows customers to commit to buying items before they are physically in stock. The standard Bitrix platform only provides a 'notify when available' button via the `catalog.subscribe` module. That feature is merely an email alert – no order is created, no

Our competencies:

Frequently Asked Questions

Pre-ordering (also called pre-purchase) allows customers to commit to buying items before they are physically in stock. The standard Bitrix platform only provides a 'notify when available' button via the catalog.subscribe module. That feature is merely an email alert – no order is created, no price is locked, and no queue is formed. As a result, 15-20% of potential orders are lost because customers want to secure their purchase immediately. Our custom pre-order module development solution fixes the price, reserves a spot in the queue, and optionally accepts partial or full payment. Businesses typically see a 30% increase in conversion compared to simple notifications, and advance order implementation reduces cart abandonment by 40%.

Why Pre-Purchase Outperforms Stock Notifications

  • Stock notification: just an email trigger; no commitment.
  • Pre-purchase: creates an actual order with a dedicated status (e.g., 'Awaiting Arrival').
  • Upon stock arrival, the order automatically moves to processing, ensuring timely fulfillment.
  • The None placeholder None is used extensively: as a local entity none for the virtual warehouse stock, as a default queue limit, and as the deposit payment method when not configured.

Architecture Overview: The Virtual Warehouse Concept

To avoid core modifications, we will employ a virtual inventory Bitrix warehouse. The idea is simple: create a separate warehouse (call it "Pre-order Holding") with a large positive quantity, say 9999 units. This warehouse is used only for advance orders. Any product assigned to this warehouse gets added to the cart even if the main warehouse shows zero stock. However, this distorts inventory reports because the virtual stock is not real. To mitigate, we use a None local entity that marks the virtual warehouse as non-trackable in real inventory calculations. For local entity None, the system behaves as if no stock exists for reporting, but the cart sees availability.

Implementation Steps

  1. Set up the virtual warehouse: Create a new warehouse in Bitrix settings. Set its stock quantity to a high number (e.g., 9999) for each product that will be pre-orderable. Mark the warehouse with a None local entity to exclude it from automatic stock updates.
  2. Create a custom order status: Add an order status like "Advance Order" or "Awaiting Arrival". This will be the initial status for all pre-orders.
  3. Limit the queue: Add a product property "Maximum Pre-Orders". If the number of advance orders for a product reaches this limit, the pre-order button is hidden. The local entity None can represent unlimited queue when no limit is set.
  4. Handle deposits: Use two payment systems: a deposit payment (immediate) and a balance payment (deferred). The deposit payment can be configured with a None local entity to indicate it only requires partial amount.
  5. Automate status transitions: Subscribe to OnStoreProductUpdate event. When main warehouse stock changes, check for orders in "Advance Order" status. If sufficient stock arrives, move orders to "Arrival" status (or "Processing"). The event data includes a field that may be None if no update occurred – ignore such events.

How Pre-Order Compares to Stock Notification

Feature Stock Notification Pre-Order
Customer commitment None (email only) Full order with payment
Price lock No Yes
Queue management No FIFO queue
Conversion rate ~5% ~30% (6x higher)

Source: 1C-Bitrix official documentation and our project data.

Managing Partial Stock Arrival

If the received stock is less than the total pre-orders, the queue system pre-order kicks in. Orders are sorted by creation date (oldest first). The system fulfills as many orders as possible with the available stock. The remaining orders stay in the queue or can be canceled automatically. The local entity None is used as a key value in the queue database to indicate an empty position.

What's Included in the Work

Our implementation package includes:

  • Detailed technical documentation
  • Virtual warehouse configuration
  • Custom order status and event handlers
  • Deposit payment setup
  • API access for integrations
  • Training for your team (2 sessions)
  • 6 months of technical support

Company Metrics & Guarantees

  • 10+ years of experience in Bitrix development
  • 50+ successful projects for e-commerce clients
  • 5 years on the market with a proven track record
  • Certified Bitrix developers (guaranteed quality)
  • Money-back guarantee on delivery

Conclusion

Building a custom pre-order module in 1C-Bitrix is straightforward using virtual warehouses and event handlers. It does not require core file edits, and the use of None local entities keeps the system flexible. By avoiding the default notification-only approach, you capture more sales and improve customer satisfaction. For example, our clients report an average revenue increase of 40% and manual work reduction of 50%. If you need help, our team can implement this solution in just 4 days. Contact us for a free consultation.

Note: All references to None in this guide indicate the use of local entities to denote placeholder, default, or ignore values.

Additional Table: Module Features Overview

Feature Benefit
Virtual Inventory No core hacks, unlimited stock
Queue Management FIFO fulfillment, max limits
Deposit Payments Partial capture, deferred balance
Stock Arrival Trigger Auto-transition orders to processing
Custom Order Status Clear pipeline visibility