Customer account
Customers manage their pre-orders at My Account → My Pre-orders.
Layout
Added to the customer account sidebar via view/frontend/layout/customer_account.xml. The page itself lives at customer/account/preorders and renders through Block/Customer/PreorderList.php + view/frontend/templates/customer/preorder/list.phtml.
What the customer sees
Per pre-order:
| Column | Content |
|---|---|
| Pre-order # | Increment ID |
| Order # | Source order link |
| Status | Colour-coded enum |
| Product | Name + image |
| Deposit paid | Currency-formatted |
| Balance owed | Currency-formatted, prominent if > 0 |
| Available from | Stock availability date |
| Actions | Cancel / Pay balance / View order |
The actions
Cancel
Available when the pre-order status is pending or awaiting_stock.
Controller/Customer/Preorders.php handles the action:
- Cancels the pre-order entity, status moves to
cancelled. - Reverts the MSI reservation via
Model/Inventory/ReservationManager.php. - Refunds the deposit through Magento's standard refund flow if configured.
- Logs the cancellation in
byte8_preorder_notification.
Pay balance
Visible when the pre-order is ready with an outstanding balance — covers all three paths:
- Vault capture is disabled and stock has arrived (the tokenised email flow).
- Stored vault token failed all retries (status
vault_capture_failed). - Admin manually triggered Mark Ready.
Controller/Order/Complete.php handles it:
- Accepts either a tokenised URL parameter (from the Pay Remaining Balance email; validated via
hash_equalsso it works for logged-out customers) or a customer-session ownership check (for logged-in customers paying from the My Pre-Orders page). - Adds the completion product (provisioned by
Setup/Patch/Data/CreateCompletionProduct.php) to the cart, priced at the outstanding balance. - Routes the customer through standard checkout to pay with whatever payment method they choose.
Observer/ProcessCompletionOrder.phpfires when the completion order is placed, records the payment, marks the pre-order ascomplete, and links the completion order back to the original. The token is cleared on success.
The same controller works for guests (via the emailed link) and logged-in customers (via My pre-orders → Pay balance). One code path, two entry points.
View order
Standard Magento link to the source order page, where the customer sees the original deposit invoice and any subsequent invoices generated by vault capture.
Empty state
When the customer has never placed a pre-order, the list shows a friendly empty state with a CTA back to category browse. No "Sign up for newsletter" upsell — this is a transactional page.
Permissions
The page is gated by the standard customer_logged_in requirement. Guest pre-orders (yes, supported) don't appear here — guests instead receive email links with signed tokens for the same actions, see Email configuration.
Theme overrides
The phtml template uses the module's CSS variables (declared in view/frontend/web/css/source/_module.less) so retheming for your design system is a single LESS override. No deep template surgery required.
Related
- Luma & catalog — the front-of-funnel UI before they bought.
- Checkout & totals — how the deposit vs. balance is rendered at purchase time.
- Vault capture — what triggers the "Pay balance" link to appear.