E-Commerce
The platform includes a full e-commerce system with products, cart, checkout, orders, coupons, inventory management, and Stripe payment processing. All e-commerce data is managed from the Admin section.
Products
Products are managed from Admin > Products. Each product has a type, pricing, optional variants, inventory tracking, and category assignments.
Product Types
Every product has a type that determines its behavior at checkout:
| Type | Shipping Address | Shipping Cost | Tax |
|---|
physical | Required | Yes | Yes |
digital | Not required | No | Yes |
service | Not required | No | Yes |
Pricing
- Base price - The default price for simple (non-variant) products.
- Compare-at price - Optional original price displayed alongside the sale price.
- Zero state - How $0 products display:
hidden (no price shown), zero (shows $0.00), or free (shows "Free"). Free products skip the payment step at checkout.
Variants
Products support up to 3 variant types (e.g., Size, Color, Material). The system automatically generates all possible combinations.
Variant Types
Each variant type defines:
- Name - The variant category (e.g., "Size").
- Layout - How options display: dropdown, buttons, or color swatches.
- Options - The available choices (e.g., "Small", "Medium", "Large"), each with an optional sub-SKU, hex color, swatch image, and size chart measurements.
Variant Combinations
Auto-generated from the variant types. Each combination can have:
- Price - An absolute price that overrides the base price entirely.
- Price modifier - An adjustment added to the base price (e.g., +$5.00 or -$2.50).
- Active toggle - Disable specific combinations (e.g., "XL in Red" out of stock).
- Per-variant stock - Each combination tracks its own inventory independently.
- SKU - Auto-generated from the base SKU + option sub-SKUs (e.g., SHIRT-LG-RED).
Inventory
Stock tracking is configurable per product:
| Mode | Behavior |
|---|
track | Enforces stock limits. Items can't be purchased when stock reaches zero. |
unlimited | No stock limits. Skips all inventory checks. |
backorder | Allows overselling. Customers can purchase even when stock is negative. |
Additional inventory settings:
- Stock display - What customers see:
exact (shows numbers), approximate ("In stock", "Last one left!"), or none (hidden). - Low stock alert - A threshold that triggers an admin email notification when stock drops below it.
- Cart reservations - When a customer adds an item to their cart, the quantity is reserved for 30 minutes to prevent overselling.
Purchase Limits
Up to 8 limit rules per product, each defining a restriction on purchasing behavior. Useful for limited-edition drops, preventing abuse, or compliance requirements.
Each rule has:
- Threshold - A max or min value (e.g., "max 2").
- Scope - Per-user (across all their orders) or per-order (within a single checkout).
- Period - Time window: forever, day, week, month, quarter, or year. Can be rolling (last 30 days) or calendar-based (this month).
Examples: "Max 2 per user per month", "Max 5 per order", "Min $10 per order."
Product Flags
- Available - Override availability regardless of inventory mode.
- Subscription - Enable Stripe subscription checkout. Requires a variant with a billing interval (month/year).
- Direct link only - Hide from listings and search results. Only accessible via direct URL.
Categories, Tags & Images
- Categories - Assign to one or more categories. The first category determines the product URL.
- Tags - Free-form labels for additional filtering.
- Images - A primary image and additional gallery images. Variant options can have their own images.
Status Workflow
- Draft - Being prepared. Not visible to customers, cannot be purchased.
- Live - Published and available for purchase.
- Archived - Hidden from the storefront. Existing orders referencing it are unaffected.
Orders
Orders are created when customers complete checkout and are managed from Admin > Orders. Each order is an immutable snapshot of the purchase — prices, customer info, and product data are frozen at the time of creation.
Order Contents
Every order includes:
- Order number - A human-readable identifier for customer communication.
- Line items - Each item records the product, variant, SKU, quantity, unit price, and a full product snapshot.
- Customer snapshot - Name, email, and phone captured at checkout time.
- Addresses - Shipping and billing addresses (billing can be same as shipping).
Order Financials
| Field | Description |
|---|
| Subtotal | Sum of all line item totals before adjustments. |
| Discount | Coupon discount applied (if any). |
| Account balance | Amount paid from the customer's account balance (if applicable). |
| Tax | Tax calculated based on the shipping address and configured tax provider. |
| Shipping | Shipping cost (only for orders with physical products). |
| Total | Final amount: subtotal - discount - account balance + tax + shipping. |
All financial totals are calculated server-side at order creation to prevent tampering.
Payment
Payment is processed through Stripe. Each order tracks:
- Payment status - pending, paid, failed, or refunded.
- Payment method - Card type, last 4 digits, and brand (Visa, Mastercard, etc.).
- Stripe IDs - PaymentIntent ID, Customer ID, and Subscription ID (for recurring orders).
- Failure reason - If payment fails, the error message is captured for admin review.
Free orders ($0 total) skip payment entirely and are marked as completed immediately.
Order Status Lifecycle
| Status | Description |
|---|
pending | Order created, awaiting payment confirmation. |
confirmed | Payment successful. Ready to fulfill. |
shipped | Order shipped. Tracking info available. |
delivered | Order delivered to customer. |
cancelled | Order cancelled. Inventory released, payment refunded if applicable. |
refunded | Payment refunded via Stripe. |
Tracking
For shipped orders, admins can add:
- Tracking number - The carrier tracking code.
- Carrier - UPS, FedEx, USPS, DHL, Amazon, or Other.
- Shipped date - When the order was shipped.
- Estimated delivery - Expected delivery date.
Customers can view their order status and tracking information from their dashboard.
Admin Notes
A rich-text notes field is available for internal admin communication. Notes are not visible to customers.
High-Concurrency Mode
For flash sales or high-traffic scenarios, the platform supports an order queue that processes orders asynchronously. This prevents timeouts and overselling during traffic spikes (100+ orders/second). The queue is configurable in Site Config:
auto - Activates automatically when traffic exceeds 10 orders/2 minutes or 20 orders/5 minutes.on - Always queue orders (useful before an anticipated sale).off - Process orders synchronously (normal operation).
When queued, customers see a "processing" status and the order confirms within 5-30 seconds.
Coupons
Coupons are managed from Admin > Coupons. They support percentage discounts, fixed-amount discounts, and guest site access grants.
Coupon Types
| Type | Discount | Access | Use Case |
|---|
discount_percentage | % of subtotal | No | 20% off sale |
discount_fixed | Fixed amount | No | $10 off coupon |
guest_access | None | Yes | Invite-only site access code |
guest_access_discount | % of subtotal | Yes | VIP access + discount |
Discount Rules
- Value - The discount amount. For percentage types, this is the percent (e.g., 20 = 20%). For fixed types, this is the dollar amount.
- Min order amount - Minimum cart subtotal required to apply the coupon. The coupon is rejected if the subtotal is below this threshold.
- Max discount amount - Caps the discount for percentage coupons. For example, "20% off, max $50 discount." Ignored for fixed-amount coupons.
- The discount can never exceed the cart subtotal (orders can't go negative).
Usage Controls
- Usage limit - Maximum number of times the coupon can be used across all customers. Leave empty for unlimited uses.
- Usage count - Tracks how many times the coupon has been redeemed (read-only).
- Exhausted - Automatically set when usage reaches the limit. The coupon stops working.
Scheduling
- Starts at - Optional activation date. The coupon is invalid before this time.
- Expires at - Optional expiration date. The coupon is invalid after this time.
- If neither is set, the coupon is valid immediately and indefinitely (until manually deactivated or exhausted).
Guest Access Coupons
When the site is password-protected (via Site Config > Security), guest access coupons allow specific people to bypass the gate. The coupon code doubles as the access code. Combine with a discount to offer VIP pricing to invited guests.
Applying Coupons
Customers enter a coupon code during checkout. The system validates the code in real time and displays the discount before the order is placed. Only one coupon can be applied per order.
Checkout Flow
The checkout process adapts dynamically based on what's in the cart.
Standard Flow (4 Steps)
- Cart Review - Review items, adjust quantities, apply coupons.
- Details - Customer info, shipping address (for physical products), and billing address.
- Payment - Stripe payment form, account balance application, and real-time tax calculation.
- Review & Place - Final summary and order placement.
Condensed Flow
When condensed checkout is enabled in Site Config, steps are dynamically reduced based on cart contents:
- Digital/service + free - Skips to Review only (1 step).
- Physical + free - Details + Review (2 steps, needs shipping address).
- Digital/service + paid - Payment + Review (2 steps).
- Physical + paid - Details + Payment + Review (3 steps).
Cart Behavior
- 30-minute expiration - Carts expire after 30 minutes of inactivity. Each action (add, remove, update, apply coupon) resets the timer.
- Auto-validation - When a cart is loaded, the system checks for price changes, stock issues, and unavailable items. Customers are notified of any changes.
- Subscription rules - Subscription and one-time products can't be mixed in the same cart. Only one subscription product is allowed per cart, with quantity locked to 1.
- Cart reactivation - Logged-in users can recover abandoned carts. Out-of-stock items are automatically removed.
Shipping & Tax
Shipping and tax are configured in Site Config and calculated automatically at checkout. See the Site Config docs for detailed configuration options.
Shipping
- Only applies to physical products. Digital and service products have zero shipping cost.
- Flat-rate pricing with separate domestic and international rates.
- Optional free shipping threshold (e.g., free shipping over $75).
- Country restrictions configurable per domestic and international lists.
Tax
- Three providers: static (estimated), TaxJar (real-time), or Avalara (enterprise).
- Calculated based on the shipping address (or billing address for digital products).
- Optional fallback to static rates if an API provider fails.
- Business type setting (physical goods, digital services, or mixed) affects tax categorization.