Give an item turnaround time between bookings, and put the fields staff fill in at handover on the order. Plus why buffer time alone does not stop a customer booking too soon.
Inventory > Stock Items > [Item] > Fulfilment
Open in TWICE Admin
inventory/stock-items
The Fulfilment tab on a stock item holds two settings that meet at the moment an item is handed over.Buffer time keeps a gap around each booking, so a wetsuit gets rinsed and a bike gets serviced before it goes out again. A fulfillment field is something staff fill in on the order while fulfilling it: a fitting number, a lock code, a meter reading.Read the two sections below before you set a buffer. It does less than most people assume.
inventory:attribute:create and inventory:attribute:manage to define a fulfillment field
inventory:stock_item_fulfilment:manage for buffer time and fulfillment fields on a stock item
inventory:sku_general:manage for the same on a SKU, where they act as the default
orders:order_summary:manage to enter a value on an order
catalog:listing_limits:manage for the listing’s Limits tab, which you need for the storefront half
All four system roles hold all of these.
Before you start, decide:
SKU default or item override? Buffer time set on the SKU applies to every linked item that has not overridden it. Set it on the SKU unless one particular unit needs longer.
Before, after, or both. They are separate settings and they mean different things.
Which fields staff actually need at handover. Every field you add is a field someone reads past on every order.
Whether customers must be stopped from booking too soon. If so, buffer time is not enough on its own, as the next section explains.
Preparation time. The unit must be free for this long before a booking starts.
After each booking
Turnaround time. The unit cannot be booked again until this long after a booking ends.
Enter both as an amount plus a unit: minutes, hours, days, and so on.Read both as padding around every existing booking. A new booking conflicts with an existing one if it would land inside that padding, and the gap between two consecutive bookings on the same unit has to hold the earlier one’s trailing pad plus the later one’s leading pad. The two pads do not overlap or double-count.This part works on the storefront. The availability your customers see already accounts for buffers around existing bookings, so a slot too close to another booking is not offered.
Buffer time does not stop a customer from booking a start that is too soon from now.A one-hour “before each booking” buffer does not remove the next hour from the storefront’s selectable times. The customer can pick a start ten minutes away, and the calendar will show it as valid. The booking is then rejected, either when the selection is validated, or at checkout, where the pay button stays disabled.
Treat the two cases as genuinely different:
Buffer against an existing booking is a property of that booking, so it can be drawn on the calendar in advance.
Buffer as lead time from now is a moving target measured against the current moment. TWICE Commerce deliberately does not fold it into the item’s stored availability, so nothing in the rendered calendar marks those starts as unbookable. It is checked when a selection is validated and again when the order is created.
Expect the shape merchants report: a time that looks bookable, a customer who picks it, and a failure at the end of the flow rather than the start.
The storefront-side control lives on the listing, not the stock item. Open the listing, go to its Limits tab, and set Orders must be placed at latest.Unlike buffer time, the order deadline is compiled into the availability the storefront renders: a booking cannot start inside the deadline window, so those times stop being offered in the first place.
Set the order deadline to at least your longest “before each booking” buffer for that item. The buffer keeps your operation honest; the order deadline is what the customer’s calendar obeys.
Set the three other rules on the listing’s Limits tab deliberately alongside a buffer:
Setting
What it constrains
Minimum booking duration
The shortest rental a customer can select
Maximum booking duration
The longest
Booking duration increment
The step between selectable durations
Orders must be placed at latest
How far ahead of the start an order must be placed
Catalog > Listings > [Listing] > Limits
Read more: Listing Limits covers each one in full, including the order deadline’s two modes: a fixed offset before the start, or a wall-clock cutoff on an earlier day.
Testing this in the admin will not reproduce it. The lead-time check applies only to anonymous storefront shoppers. Staff, API keys, and signed-in tokens are exempt by design, so an order you create yourself in the admin will go through on a start time a customer would be refused. Test it on the storefront, in a private window.
Open Inventory → SKUs, pick the SKU, and use its Fulfilment tab if the buffer is a property of the product, which covers most cases. Use an individual item’s Fulfilment tab only when one unit genuinely differs.
2
Set the buffer
Set Before each booking and After each booking in the Buffer time card.Expect the pickers to start disabled on a stock item linked to a SKU, showing the inherited values. Choose to override to edit them, or Use the SKU default to go back to inheriting. An inherited value is marked Inherited from SKU.
3
Clear any bookings the new buffer would not fit
Note that widening a buffer can overlap bookings already on the calendar. TWICE Commerce checks before saving and, if it finds any, opens a dialog headed Increasing buffer time would overlap booking, listing each one with a View order link.Choose Save anyway to apply the new buffer while leaving those bookings on their current buffer, or cancel and adjust the dates first.
4
Define the fulfillment fields
Go to Settings → Attributes & Tags, open Fulfillment fields, and add one field per thing staff record at handover. Name it as a picker would read it, pick the format, and tick Required where it is meant to be filled in.Tick Save as global attribute for a field that applies to every stock item, such as a handover signature. A global field needs no attaching, so skip the next step for it.
5
Attach each field where it applies
Open the SKU’s Fulfilment tab and press Add fields to attach a field to every stock item under that SKU. Attach it on a single item’s Fulfilment tab instead when only that unit needs it.Enter a value here to give the field a starting value that the order inherits. Leave it empty for something staff record per order.
6
Set the matching listing limits
If customers book this item online, open the listing in Catalog → Listings, go to Limits, and set Orders must be placed at latest to cover your preparation buffer. Review the duration limits while you are there.
Buffer time: open the item’s Events tab and look at the timeline around an existing booking. Check the storefront next: dates immediately after that booking should no longer be selectable.Order deadline: on the storefront, try to select a start inside the deadline window. It should not be offered at all. If it is offered and only fails later, the deadline is not set on that listing, and the buffer alone cannot do this.Fulfillment fields: open an order with the item assigned. Check the Fulfillment details column beside the stock item: every field you attached is listed, carrying the value you set on the SKU or item. Type over one and reopen the order, and the new value is there, with the value it replaced shown on hover.
A customer picked a time that then failed at checkout
Cause: the item’s preparation buffer was the only rule in place. It rejects a too-soon start but does not remove it from the calendar.What to do: set Orders must be placed at latest on the listing’s Limits tab, at least as long as the buffer. That is the setting the storefront calendar obeys.
It works when I place the order, so I cannot reproduce it
Cause: the lead-time check runs only for anonymous public storefront requests. Staff sessions, API keys and tokens skip it deliberately, so that a member of staff can always take a last-minute booking over the counter.What to do: reproduce it on the public storefront in a private window, not in the admin.
I set a buffer on the item and nothing changed
Cause: the item is still inheriting from its SKU, or you set it on the SKU while the item carries its own override. An item-level value always wins.What to do: check the card for Inherited from SKU. Use Use the SKU default to drop an override and let the SKU govern.
"Increasing buffer time would overlap N bookings"
When this happens: the new buffer will not fit around bookings already on the calendar.What to do:Save anyway applies the buffer going forward and leaves those bookings on their existing buffer, which is usually what you want. Use View order on each to check them if the turnaround genuinely cannot be met, and move the dates instead.
A fulfillment field is missing from the order
Cause: the field is attached to neither the assigned stock item nor its SKU, and it is not global. Only attached fields reach an order, and a line item with no unit assigned yet shows none of them.What to do: attach it on the SKU’s Fulfilment tab so every linked item carries it, or mark it as a global field in Settings → Attributes & Tags. Assign a unit to the line item first if it has none.
I cannot filter stock by a fulfillment field
When this happens: a fulfillment field is not an inventory attribute. It has no column in the Stock Items table, so there is nothing to filter, sort or bulk-edit by.What to do: use an attribute for anything you need to work through stock by, such as a storage area. Attributes do become filterable, sortable columns.
I cannot set buffer time while editing several items
Cause: buffer time is excluded from bulk editing. The card reads Buffer time cannot be edited for multiple items.What to do: set it on the shared SKU, which reaches every linked item at once.Read more: How to bulk-edit stock items