Online storefront
A public shop for each store at /shop/{slug}. Shoppers browse your active POS products, build a cart, and place a delivery order (COD or online pay). Staff use the same Delivery orders queue — there is no separate storefront console.
Overview
The online storefront is a sales channel, not a second inventory system. Prices, stock, tax, and service charges come from the same services as delivery portal orders. When a guest or customer checks out, Meta POS creates a delivery order with channel storefront so riders and managers fulfill it like any other door-to-door job.
The kiosk is an in-store self-order station. The customer portal is for accounts you enable. The storefront is the public website shop for online delivery orders.
Enable the shop on a store
-
Open the store
Go to Stores → edit the location. Enable Door-to-door delivery (fulfillment) and Online storefront.
-
Set shop details
Slug (URL segment), public title, tagline, guest checkout, self-registration, minimum order, and whether out-of-stock items are shown. Leave the slug blank to use the store code.
-
Open the shop URL
When the store is live (active + storefront on + delivery on), use Open shop on the store form or menu. Public URL pattern:
/shop/{slug}. Store list:/shop.
What products appear online
- Active products from the POS catalog (same stock and pricing as delivery).
- Optional Available online flag on each product (Products list or edit form). Off = hidden on the shop only; cashiers still see the product.
- Featured products are highlighted on the storefront home page.
Use the product list filters and bulk actions to show or hide many items from the shop at once.
How customers check out
-
Browse and cart
Shoppers open
/shop/{slug}, browse categories, open product pages, and add lines to a cart (guest token or logged-in customer). -
Checkout
Guest checkout (if enabled) needs name, email/phone and address. Registered buyers can sign in or self-register when that is enabled. Payment: Cash on delivery (creates sale + stock immediately, delivery fee included) or Pay online when payment gateways are enabled under Settings.
-
Online pay return
After the provider checkout, shoppers return to
/shop/{slug}/orders/{token}/pay/return. Unpaid online orders stay open with a Pay now button. Demo/mock mode uses an on-site confirm page instead of real card capture. Failed pay does not create a second order if they retry pay from the same cart fingerprint within 30 minutes. -
Thank-you / track
They keep a public order link with a token so guests can track status without a portal login. Accepted delivery work still requires online payments to be paid (same rules as the customer portal).
Managing storefront orders
Open Sales → Delivery orders. Use the Channel filter Online storefront to list only web shop orders. Orders show an Online storefront badge (guest badge when applicable). Accept, assign riders, print, cancel, COD, and maps work the same as portal delivery orders — no second backlog. Use Export CSV / Excel on the list (includes a Channel column) for ops and reports.
SEO & public URLs
- Pretty product URLs use a unique product slug:
/shop/{store}/p/{product-slug}. Old numeric links still work and redirect to the slug when one exists. - Edit each product’s Storefront SEO block (slug, meta title, meta description). Empty meta fields fall back to the product name and short description.
- Product pages emit Open Graph / Twitter tags and product schema from the title, description, and primary image.
- Sitemaps: overall index at
/shop/sitemap.xml; per-store product list at/shop/{slug}/sitemap.xml.robots.txtpoints crawlers at the index. - Cart, checkout, login, register, and private order tokens are
noindexso they stay out of search.
Reporting & stock
- Dashboard — Online orders today for the current store (links to storefront-filtered delivery orders).
- Reports → Orders by channel — POS vs kiosk vs storefront vs portal mix for any date range (export included).
- Stock races — checkout locks on-hand stock and re-prices server-side; two shoppers cannot complete paid sales for the last unit. Online pay re-checks stock before confirming payment.
API & Flutter app
The same storefront rules power mobile. Base path: /api/storefront.
GET /api/storefront— list live shops (picker)./api/storefront/{slug}/catalog, cart, auth, checkout — full parity with the web shop.- Guest cart identity: request/response header
X-Storefront-Cart-Token(also returned in cart JSON astoken). - Optional Sanctum customer
Authorization: Bearermerges guest cart on login/register. - Public track:
GET /api/storefront/{slug}/orders/track/{token}and…/trackingfor the map payload. - Deep links match the web:
/shop/{slug}/p/{product-slug}(legacy numeric IDs still resolve). App scheme:metapos://shop/{slug}/p/{product-slug}.
The Flutter companion in mobile/ adds an Online shop role that uses these endpoints without requiring a staff-provisioned portal login. Customer portal and rider modes are unchanged.
Tips & best practices
- Hide internal SKUs from the shop with Available online, rather than deactivating them for POS.
- Keep delivery service charge filled on the store — storefront carts use it like other delivery channels.
- Share one URL per branch (or
/shopfor a picker). No custom domains in this version. - POS and kiosk stay unchanged — storefront never replaces the till.
Notes & warnings
Storefront is not “live” until delivery is on. Enable door-to-door on the same store so stock and rider workflows succeed.
Public registration creates portal-capable customers for that store. Use the guest and self-register toggles if you want a locked-down shop.
Related: Stores & terminals · Door-to-door delivery · Products · Customers