1. Installation
Install and activate the plugin under Extensions.
2. Enable pre-order for a product
Go to Catalogues - Products (open a product) - Specifications - Custom fields. There you will find the switch "Product can be pre-ordered". Turn it ON.
What this does exactly: as soon as this product's stock drops below 1, the normal "Buy" button on the storefront is automatically replaced with a "Preorder" button. If the stock goes back to 1 or more, the button automatically switches back to a normal "Buy" button — you don't have to do anything manually when stock changes. If the switch is OFF, this plugin does nothing at all for that product; it behaves exactly like standard Shopware (including normal Closeout/sell-off behavior if you use that).
3. Plugin configuration page
Go to Extensions - Pre-order if stock < 1 and checkbox set - Configuration. There you will find:
Sales Channel — choose whether this configuration applies to all sales channels or only to one specific sales channel.
Allow pre-order for new products (toggle) — this only affects products that are created AFTER you turn this ON. Every time a brand-new product is created in Shopware, the plugin will automatically turn ON the "Product can be pre-ordered" switch for that new product. It does not retroactively change any product that already exists.
Allow pre-order for all products (button "Set pre-order") — this is a one-time bulk action. Clicking it immediately turns ON the "Product can be pre-ordered" switch for every existing product in your shop, in one click, so you don't have to open every product individually.
Set the text color inside the cart — sets the text color of the pre-order message shown in the shopping cart (see snippets below). After changing the color, clear your Shopware cache so the new color is applied.
"Do you want to use the release date or the creation date?" — this decides how the plugin recognizes whether a product counts as "new" or "old" for the purpose of choosing which cart text to display (see the two snippets below). Both options are measured against the same setting under Settings - Storefront - "Mark products as new for X days" — this plugin does not have its own separate day counter, it reuses that exact Shopware setting:
Release date: the product counts as "new" if its release date is within the last X days (X = the "Mark as new" setting above). If no release date is set on the product, it is treated as "old".
Creation date: the product counts as "new" if it was created in Shopware within the last X days (same X). This is the default option.
4. Set your own text per product (optional)
Go to Catalogues - Products (open a product) - Specifications - Custom fields. There you will also find "Custom pre-order delivery text". If you fill this in, this exact text is shown on this product's page instead of the delivery time, for as long as the product is out of stock and pre-orderable — and it always wins over the global snippet text below. Leave it empty to use the global default text instead.
5. Global default texts (Settings - Snippets)
Go to Settings - Snippets, search for "fishnProductPreorder". You will find:
preorderDeliveryText — shown on the product page (instead of the delivery time) for every pre-orderable, out-of-stock product that does NOT have its own custom text set in step 4. If this snippet is also empty, the product page simply shows the normal delivery time as usual.
deliveryTextForNewProducts / deliveryTextForOldProducts — these two are shown in the shopping cart (not on the product page) for pre-ordered line items. The plugin automatically picks ONE of the two, based on whether the product is "new" or "old" as determined by the setting in step 3. If the corresponding text is empty, nothing extra is shown in the cart for that line item.
snippetsHelp — this entry is not displayed anywhere on the storefront. It's a short reminder text, purely so you can find this explanation again quickly by searching "fishnProductPreorder".
In all three texts above (preorderDeliveryText, deliveryTextForNewProducts, deliveryTextForOldProducts) and also in the custom field from step 4, you can type the placeholder {{deliveryTime}} anywhere in your text. The plugin automatically replaces it with the delivery time already set on that exact product (Products - your product - General - Delivery time), for example "3-4 days". If a product has no delivery time configured at all, the placeholder is simply replaced with nothing (empty).
6. Summary — what is shown where
Product page, when out of stock and pre-orderable: Custom field text (step 4) → if empty, global snippet "preorderDeliveryText" → if that is also empty, the normal Shopware delivery time.
Shopping cart, for a pre-ordered item: "deliveryTextForNewProducts" or "deliveryTextForOldProducts" (whichever applies) → if empty, nothing extra is shown.