Commerce Operations
Prepare catalog, customer, order, fulfillment, shipping, and support ownership.
Commerce Operations
Use this page when the workspace will sell products, manage customers, or support orders after launch.
Commerce Setup
Prepare catalog
Create real products, options, categories, and images before inviting teams to operate the workspace.
Assign order ownership
Name who handles order review, fulfillment, returns, refunds, and customer support.
Confirm shipping and discounts
Review shipping policy ownership and decide who can create or retire discounts.
Connect support habits
Make sure customer account, order, and return questions have a clear support path.
Operating Ownership
| Workflow | Owner | Before launch |
|---|---|---|
| catalog | merchandising owner | products and sellable options exist |
| orders | operations owner | order review and fulfillment path is assigned |
| shipping | logistics owner | default shipping policy is confirmed |
| discounts | commerce owner | promotion approval is clear |
| customers | support owner | account recovery and service expectations are assigned |
Return Requests
In the Console Admin Panel, create return requests from an eligible delivered or confirmed order. Operators select the return lines explicitly, review ordered, already-returned, and remaining quantities, enter per-line restocking fees and a return shipping fee, then submit the net refund amount shown by the breakdown.
The return request records the selected line quantities, returnShippingFee, restockingFee, initialShippingRefundAmount, and refundAmount. initialShippingRefundAmount is the initial outbound shipping refunded to the customer. returnShippingFee is a return-shipping deduction charged to the customer. The net refund is:
refundAmount = sum(lineRefund) + initialShippingRefundAmount - sum(restockingFee) - returnShippingFeeThe initial shipping refund suggestion uses the order-time return shipping refund policy snapshot. Across non-rejected returns, the cumulative initial shipping refund is capped by the order shipping amount. Legacy orders without that snapshot use the order shipping amount as a manual cap and require an audit note for any positive initial shipping refund.
Launch Checklist
- ecommerce is effective on the current plan
- at least one product is ready for sale
- shipping and discount ownership are clear
- customer support owns account and order questions
- payment and webhook responsibilities are assigned before customer launch
Keep commerce launch small. A complete first product and order support path is better than a broad catalog with unclear ownership.
Commerce helpers (SDK)
The @01.software/sdk exposes shaped commerce helpers as the recommended path for common consumer flows. Helpers fold the underlying Payload queries, access policy, and response shaping into a single call.
| Helper | Use case |
|---|---|
commerce.product.detail({ slug | id }) | Product detail page: returns { found: true, product } with variants, options, brand, categories, tags, images, videos, and listing rollup. Product-detail 404s return { found: false, reason } for missing, unpublished, or feature disabled. |
commerce.product.listingPage() / listingGroupsCatalog({ productIds }) | Listing/grid pages: public-safe, card-ready grouped data without stock quantities. |
commerce.product.stockCheck({ items }) | Pre-cart validation: point-in-time stock availability for variants. |
commerce.cart.* | Cart lifecycle: get / addItem / updateItem / removeItem / applyDiscount / clear. |
commerce.discounts.validate({ code, orderAmount }) | Pre-checkout discount validation. |
commerce.shipping.calculate({ postalCode, orderAmount }) | Pre-checkout shipping calculation. |
commerce.orders.checkout | Convert a cart to an order (Client: customer JWT; ServerClient: API key). |
For React, createQueryHooks(client).useProductDetailBySlug(slug) and matching hooks expose the same helpers with React Query caching and automatic invalidation on mutations to related collections.
The raw client.collections.from() query builder remains available as the escape hatch for cases the helpers do not cover (bulk reads, custom filter combinations, fields not in the helper response shape). See the SDK README's "Advanced: direct Payload queries" section.
Next Actions
- Review credentials and webhooks in Integrations & Keys.
- Run commerce blockers through Launch Readiness.
- Return to Feature Planning if ecommerce is plan-blocked.