Client Journey
- Client visits
/store. - Browses product groups and product cards.
- Clicks a product → product detail / order page.
- Selects a billing cycle.
- Configures any configurable options.
- Enters a promo code (optional).
- Clicks Order → order review page.
- Accepts terms and submits → invoice generated → redirected to payment page.
The Store Page (/store)
- Products are grouped by product group.
- Only
activeproducts invisiblegroups are shown. - Prices display in the client's preferred currency (default currency if not logged in).
- The cheapest per-month billing cycle is highlighted as "Best value".
Billing Cycle Selection
The order page lists all enabled billing cycles for the selected product with their prices. The client selects one cycle before proceeding.
[!TIP] Offering Annual alongside Monthly with a clear per-month saving nudges clients toward longer commitments and lower churn.
Configurable Options
If the product has option groups linked, they are shown below the cycle selector. Each option type renders appropriately:
| Type | Rendered as |
|---|---|
dropdown |
<select> dropdown |
radio |
Radio button group |
checkbox |
Checkbox with inline price |
quantity |
Number input with per-unit price label |
Prices update in real time as the client changes selections.
Promo Code Field
The promo code field is on the order form below the options section. Behaviour:
- Validated via AJAX on blur (when client leaves the field).
- Valid code: discount shown in the order summary immediately, code locked in.
- Invalid code: inline error message (expired / not found / not applicable to this product).
- Only one promo code per order.
Domain Products
For domain type products, the order form additionally shows:
- Domain field — client enters the domain name they want to register.
- Availability check — checked against the registrar API.
- WHOIS registrant contact form — name, organisation, address, email, phone.
- Registration period selector — pulled from the TLD configuration.
Cart Behaviour
The cart is session-based. If the client leaves and comes back, the cart persists for the duration of the browser session. There is no saved/persistent cart across sessions.
[!WARNING] If a client's session expires mid-order, they will need to start the order again. The order is only committed when they submit the final form.
Order Review Page
Before submitting, the client sees a full breakdown:
Starter Hosting Plan — Annual
Base price $99.99
Disk Space: 50 GB +$48.00
Setup fee +$0.00
Promo SAVE20 (20% off) -$29.60
─────────────────────────────────
Total $118.39
Tax is applied if configured. A Terms & Conditions checkbox must be ticked before submitting.
After Submission
On form submission:
- Order record created (
pending). - Invoice generated and linked to the order.
- Client redirected to the invoice payment page.
See Order Lifecycle for what happens after payment.