Academy Store
The Academy Store lets you sell merchandise, gear, and supplements to your members. Products are synced with Stripe for seamless payment processing, and members can purchase items directly from the mobile app.
Stripe required
The store requires a connected Stripe account. If you haven't set up Stripe yet, see Payments & Stripe Setup first.
Adding Products
Navigate to Store in the sidebar and click Add Product.
Product Fields
Image Upload
The product image upload supports three methods:
- Drag and drop an image file onto the upload area
- Paste an image directly from your clipboard
- Click the upload area to open a file picker
Images are stored securely and served publicly so members can see product photos in the mobile app.
Behind the Scenes
When you create a product, the platform:
- Creates a Stripe Product on your connected account
- Creates a Stripe Price (one-time, not recurring) with your specified amount
- Saves the product to your database with Stripe references
- Uploads the image to storage (if provided)
Managing Products
Products Tab
The Products tab shows a grid of product cards with:
- Product image (or a placeholder)
- Name and price
- Category badge
- Stock status (in stock, low stock, or out of stock)
- Active/Inactive indicator
Stats Cards
Three summary cards at the top of the Products tab:
- Active Products — Number of products currently available
- Total Revenue — Sum of all paid and fulfilled orders
- Pending Fulfillment — Orders that have been paid but not yet picked up
Editing a Product
Click any product card to open the edit dialog. You can modify all fields. If you change the price or currency, a new Stripe Price is created (Stripe Prices are immutable).
Deactivating a Product
Toggle a product to inactive to hide it from members without deleting it. The product remains in your catalog for record-keeping. Inactive products appear dimmed with an opacity overlay.
Stock Management
- Products with a stock count show the remaining quantity
- When stock reaches 5 or fewer, a "Low Stock" warning appears on the mobile app
- When stock reaches 0, the product shows as "Out of Stock" and the purchase button is disabled
- Stock is decremented automatically when a purchase is confirmed
- Set stock to blank/empty for unlimited inventory (e.g., digital items or made-to-order products)
Order Management
Orders Tab
The Orders tab shows all customer orders with two sections:
Ready for Pickup queue — Paid orders waiting to be fulfilled, shown in chronological order (oldest first). Each entry shows the customer name, item count, total, and a Mark Fulfilled button.
All Orders list — A complete list of orders filterable by status (Pending, Paid, Fulfilled, Cancelled, Refunded). Click any order to view the full detail.
Order Statuses
| Status | Meaning | |--------|---------| | Pending | Order created, payment not yet confirmed | | Paid | Payment successful, awaiting pickup/fulfillment | | Fulfilled | Item handed to member, order complete | | Cancelled | Order was cancelled before fulfillment | | Refunded | Payment was refunded |
Order Detail
Click any order to see:
- Customer information
- Itemized breakdown (product name, quantity, subtotal per item)
- Order total
- Available actions based on status
Fulfillment Workflow
Member purchases item
The member buys a product through the mobile app (or an admin charges them directly). The order is created with "Paid" status.
Order appears in Ready for Pickup
The order appears in the Ready for Pickup queue at the top of the Orders tab.
Hand the item to the member
When the member comes to pick up their purchase, locate their order in the queue.
Mark as Fulfilled
Click Mark Fulfilled to complete the order. It moves out of the pickup queue and into the completed orders list.
Charging Members Directly
Admins can charge members directly for in-person purchases without the member needing to use the mobile app.
Click 'Charge Member'
Click the Charge Member button on the Store page.
Select the member
Choose a member from the dropdown. The member must have an active subscription with a payment method on file.
Select products and quantities
Browse the product list and set quantities for each item the member is purchasing.
Process the charge
Submit the charge. The member's card on file is charged immediately (no checkout flow needed). The order is created with "Paid" status, ready for fulfillment.
Saved card required
Direct charges require the member to have a saved payment method from an active subscription. Members without a subscription must use the self-service checkout flow on the mobile app instead.
Mobile Shopping Experience
Store Browsing
Members access the store from their Profile tab. The store screen shows:
- Category filter — Horizontal scrolling pills to filter by Apparel, Equipment, etc.
- Product grid — Two-column responsive grid with product images, names, prices, and stock indicators
- Awaiting Pickup banner — If the member has paid orders awaiting fulfillment, a banner appears at the top with a link to view their orders
- Pull-to-refresh for updated inventory
Product Detail
Tapping a product card opens the detail screen:
- Full-screen product image
- Category badge and stock warning (if low)
- Product name, price, and description
- Quantity selector (constrained by available stock)
- Buy Now button with total price
Purchase Flow
There are two purchase paths depending on whether the member has a saved payment method:
With saved card (from an active subscription):
- Tapping Buy Now shows a confirmation dialog: "Your card on file will be charged $X.XX"
- Confirming charges the card immediately
- Success alert shown, order created as "Paid"
Without saved card:
- Tapping Buy Now opens Stripe Checkout in the system browser
- Member enters payment details
- After completing checkout, they're redirected back to the app
- The webhook updates the order status to "Paid"
Order History
Members can view their purchase history from their profile, showing all orders with status, date, items, and totals.
Permissions
| Feature | Owner | Admin | Instructor | Student |
|---|---|---|---|---|
| Browse store | Yes | Yes | Yes | Yes |
| Purchase items | Yes | Yes | Yes | Yes |
| Add/edit products | Yes | Yes | No | No |
| Manage orders | Yes | Yes | No | No |
| Charge members directly | Yes | Yes | No | No |
| View all orders | Yes | Yes | No | Own only |