
Set Aside: Pre-Orders & Holds is a free Shopify app by FlexiLay for selling things you don't have yet, and for making sure nothing ships before it's paid for. Mark a product as a pre-order with a release date, or give it a pay-by date, and the app does the rest: the storefront shows a pre-order button and the dates, every order that contains the product is tagged in Shopify and put on a fulfilment hold, and the hold comes off when the order is paid in full and the release date has arrived. If your store also runs FlexiLay Payments, a pay-by date becomes the end date of the customer's lay-by plan.
| Tab | What you do there |
|---|---|
| Overview | Today's numbers (releasable, overdue, on hold, released), sold-out products with stock on the way, the orders waiting on you, recent activity and the setup checklist. |
| Pre-Orders | Products customers can buy before release: status, release date, pay-by, campaign window, units pre-sold, stock and incoming stock. Add by product, collection or tag. |
| Deadlines | Products that must be paid for by a date (or held until paid), with the same tools. |
| Held & Released | Every order that contains one of your products: hold state, payment, dates, Release and Open order. Filters, search, sort and CSV export. |
| LayBy / Lay-A-Way | What FlexiLay Payments adds (lay-by at checkout with the pay-by date built in), with install and setup status. |
| Settings | Defaults for new products, Storefront Widgets (button, badge, messages, cart notice, LayBy line, live preview), Notifications, Advanced selectors. |
Install Set Aside from its Shopify App Store listing and approve the permissions. The app reads and writes products and purchase options (that's how it makes a product a pre-order), reads and writes orders and fulfilment orders (tags and holds), and reads inventory (stock and incoming stock). It never touches payments.
On first open you land on the Overview with a setup checklist. There's no plan to approve and nothing to pay: Set Aside is free.

Grant Inventory Access banner? Stores that installed before incoming stock existed see it once. Click it, approve the extra permission, and the banner goes. Everything else works without it.
Open Pre-Orders and click Add Pre-Order Product. Shopify's product picker opens; search and choose one product. Then:

Saving a pre-order rule changes the product in Shopify, and the app tells you so before you save:
Everything is put back the way it was when the rule ends, is paused or is removed, including each variant's original out-of-stock setting.
Already sold out with stock on the way? The Overview lists active products at zero stock with no rule yet, with their incoming units. Make Pre-Order opens the form with the product chosen, the cap set from what's on order and release-on-arrival ticked. You add the release date.
Moving a release date moves every held order for that product to the new date, and offers to send those customers the Shipping Delay email in one click.
Open Deadlines and click Add Product. Leave This Is a Pre-Order Product unticked. Choose the deadline: a fixed date, a number of days after the order, or none at all, which means “hold until paid”. Orders for the product are tagged and held until they're paid in full, and released the moment they are.
With FlexiLay Payments on the store, the pay-by date also becomes the end date of the customer's lay-by plan: their instalments are compressed so the last one lands before it (a date that's already close means pay in full at checkout).

On either tab, Add by Collection or Tag applies one rule to every product in a collection (chosen with Shopify's picker) or carrying a tag you type. The products appear in the table marked “via collection / tag”. Products added to the collection or tag later are picked up on Sync now and every night; products that leave it have their rule removed.
A product's own rule always wins over a collection or tag rule, so you can set a release date for a whole drop and still give one product its own.
The widget is a theme app embed. Turn it on once: Online Store → Themes → Customize, open App embeds (the puzzle-piece icon), switch on Set Aside and Save. Load any product page once and the Overview's badge turns to Storefront Widget Active.
On a product with a rule, the widget:

Wording, badge colours and positions live under Settings → Storefront Widgets, with a live
preview. Messages accept {release_date}, {payby_date} and {shop_name}; the
LayBy line accepts {label}, {instalment}, {frequency}, {deposit}
and {payments}. Changes reach the storefront within a minute.
The widget finds the product form and Add to Cart button on its own in every current Shopify theme. If a
custom theme hides them, Settings → Advanced takes CSS selectors for the form, the button, the
price and the badge container. For themes that render their own buttons, the widget also sets
data-flexilay-preorder, data-release-date, data-payby-date and
data-layby-from on the product form and fires a flexilay:preorder event, so your
developer can draw whatever they like.
When you create a purchase order or a transfer in Shopify and mark it as ordered, the units show as incoming on the product. Set Aside shows that number beside each pre-order (refreshed when you save or re-sync, nightly, and whenever Shopify's inventory changes), and uses it in two ways:
Stock and incoming are summed across every variant and location. Untracked inventory never triggers a release.
The moment an order containing one of your products is placed, by any payment method, Set Aside:
FlexiLay:Deadline, Pre-order (if any line is a pre-order), Pay-by YYYY-MM-DD and FlexiLay:OnHold, and writes the dates as order attributes;
An order is released, the hold lifted and the tag changed to FlexiLay:Released, when it is
paid in full and the release date has arrived (or there is none). That happens automatically
within ten minutes of either condition being met, the day stock lands if you chose that, or when you press
Release in the app to ship early. If you'd rather paid pre-orders ship as soon as they're paid
without waiting for the date, turn off Hold Fully Paid Pre-Orders Until Their Release Date in Settings;
anything already paid is released at once.

Set Aside never changes an order's payment status. Shopify shows an order as paid when the payment provider says so; the hold and the tags are how “don't ship yet” is carried. Warehouses and 3PLs that respect Shopify fulfilment holds respect this.
Set Aside works on its own. Add FlexiLay Payments and customers can also choose Lay-By / Lay-A-Way at checkout: a deposit now, the balance in scheduled instalments into your own Stripe account, and the order held until the plan is paid in full. The LayBy / Lay-A-Way tab explains it with one of your own products, shows your setup status, and links to install, finish setup or open the FlexiLay dashboard.

Together the two apps do what neither can alone:
Shopify gives apps no way to see whether a payment method is switched on in Settings → Payments, so the last step of “What You Need” is confirmed by you with I've Already Activated It, and verified automatically at the first checkout.
Four emails to buyers and one to you, under Settings → Notifications. Each has an editable
subject and message with variables ({order_name}, {customer_first_name},
{release_date}, {payby_date}, {products}, {total} and more),
a Live / Draft switch, and Send Test to Me.

Customers paying by FlexiLay lay-by are not emailed by Set Aside. FlexiLay's own plan emails cover them, so nobody is emailed twice.

Stuck? support@flexilay.com.