Merit · E-Commerce Solution · Product explainer

Storefront, explained

Two products: the store a member shops in, and the portal a client runs it from. This page shows who does what, how a product reaches a store, and every feature with the rules to test it by.

Owner: Brian Arfi Faridhi, Product Director · Audience: engineers and product people working on the E-Commerce Solution

01Three surfaces

Who works where. Merit and the client never share a screen.

Merit onlyLiveOpsMerit commercial: set up the client, decide whichproducts it may sell, top up floatSeller Portal admin consoleMerit Ops: work physical orders across every clientThe clientStorefront Admin Portalone control plane per client: collections, content,promotions, orders, members and fraud views, floatbalance, staff and roles. Merit can run it for theclientThe memberStorefrontthe client store, white label, one per client: browse,search, cart, checkout with points and card, orders,gift card revealallow listpublishServices underneath, not built in either surfaceE-commerce Coreallocation, offers,collectionsPIMproduct dataOMSorder stateIdentity, Merit IDstaff and member sign-inPaymentpoints and cardPromo Enginecampaigns and codesFraud enginerules and scores

Three surfaces, three audiences. Merit decides what a client may sell, the client decides what its store actually sells and how it looks, and the member shops. The engines stay separate services: the portal shows fraud scores and runs campaigns, it does not hold the rules.

02How a product reaches the store

Allowed by Merit, put on sale by the client.

In PIMthe product exists. Not sellable anywhere yetAllowedMerit puts the variant on the client allow listin LiveOps. Still not buyableIn a collectionthe client adds it to a collection in theStorefront Admin PortalOn salethe collection is published. The variant isbuyable in the storeNo approval step, and no reject actionA variant in no published collection is invisible: not listed, not searchable, and its product page returns 404. To take it off sale, remove it from every collection. De-allocation in LiveOps removes itwithin 60 seconds and keeps its collection places for later.

A collection is the only route a product has onto a store. Membership is per variant, and the client only ever sees the final client price in SAR and Miles, never the supplier price, tax or margin.

03How a member checks out

From the first page to an order.

Memberin the client storeStorefrontthe client storeIdentityclient sign-inE-commerce Coreoffers and basketPaymentpoints and cardOMSthe orderBrowsecollections, search, product pageonly variants in a published collectionprice and stock of the winning offerCheckoutsign in, if not yetno guest checkout. The cart survives the sign-inchoose points, card, or a splitthe slider is hidden when the balance is zeropaycard is tokenised. No card data touches Meritcreate the orderAfterorder history, detail, trackingstatus loads on demand

A member from browse to order. The address comes from the member profile, and the delivery address, not the browse city, decides fulfilment. The order state explainer continues from the last lane.

04Roles in the Storefront Admin Portal

Seven roles. Merit roles carry the actions a client should not take alone.

RoleWhoWhat it can do
super_adminMeritEvery client
merit_operatorMeritOne client, elevated. A banner shows it is acting for the client
tenant_adminClientEverything in its own store
tenant_editorClientContent, catalogue and campaigns. No publish, domain or billing
tenant_ordersClientOrders: review marker, resend confirmation, tax invoice. No cancel
tenant_financeClientRead orders, exports, analytics and reconciliation
tenant_viewerClientRead only

05Feature map

Every feature and the services it crosses. Features 1 to 11 are the portal, 12 to 17 the store.

06Storefront Admin Portal features

What the client and Merit Ops do in the portal. Design: Figma.

F01

Staff access and roles

Client adminMerit Ops

As a client admin, I invite my finance team and they see money, not content.

Staff sign in with Merit ID. Access is by invitation, with one of the seven roles in section 04.

  • An account that was not invited is refused before sign-in.
  • An invitation link expires.
  • One person can hold roles in several clients with one account.
  • Password reset by email link.
Storefront Admin PortalIdentity
Spec: PRD Storefront Admin Portal, access and roles
F02

Client set-up and branding

Merit OpsClient admin

As Merit Ops, I stand up a new client store without an engineer.

A client workspace with a name, a unique subdomain and a region. Logo, favicon, colours and an Arabic-capable font.

  • A new workspace is ready in under 60 seconds and starts in DRAFT.
  • Lifecycle: DRAFT, STAGING, LIVE, SUSPENDED.
  • A custom domain goes through Pending DNS, DNS Verified, SSL Provisioning, Live.
  • Tiers gate what a client can use: Small, Medium, Large, Enterprise.
LiveOpsStorefront Admin PortalStorefront
Spec: PRD Storefront Admin Portal, provisioning
F03

Product allocation

Merit Ops

As Merit commercial, I decide which products a client may choose from.

LiveOps holds an allow list per client, per variant. It never puts a product on sale by itself.

  • Merit allocates or removes single variants or a whole category in one action.
  • The client sees the allowed pool, filtered by in a collection or in none.
  • Removing a variant takes it off the store within 60 seconds.
  • Merit reads an unused-allocation report. There is no rejected list, because there is no reject.
LiveOpsE-commerce CoreStorefront Admin Portal
Spec: PRD Storefront Admin Portal, product allocation
F04

Collections

Client admin

As a client admin, I build the store navigation and put products on sale by adding them to collections.

Two types: standard collections for merchandising, and category collections that form the store category tree. Merit sets the type. A brand is an ordinary collection.

  • Category collections nest one level, with English and Arabic names.
  • Manual sort order from 1 to 999. Default 999. It overrides any computed order.
  • Inside a collection a product is Visible, Hidden or Featured. Up to six featured per collection.
  • Products are ordered by the automated ranking, plus featured, plus the collection sort. No manual product rank.
  • The store owns no category tree of its own. PIM keeps the product structure.
Storefront Admin PortalE-commerce CorePIMStorefront
Spec: PRD Storefront Admin Portal, catalogue structure
F05

Product presentation

Client admin

As a client admin, I name a product the way my members know it, without touching the master record.

Per-client display names, thumbnails and descriptions, in both languages. Special terms per product.

  • The PIM master is never changed.
  • Special terms are audited and capped at 3,000 characters.
  • Variant-level images come from PIM.
Storefront Admin PortalPIMStorefront
Spec: PRD Storefront Admin Portal, product presentation
F06

Content

Client admin

As a client admin, I change a banner or a policy page without an engineering ticket.

Home and module banners, FAQ, a knowledge base, static pages, deals, maintenance windows and a site-wide notification bar.

  • Static pages keep a version history and publish on their own.
  • An FAQ can be placed on Home, Order History, Order Details or Product Details.
  • A maintenance window has a start and an end time.
Storefront Admin PortalStorefront
F07

Promotions

Client adminFinance

As a client marketer, I launch a promo code campaign and finance sees what it cost.

The portal is the screen for the Promo Engine: campaigns, codes, redemptions, and a reconciliation statement.

  • A campaign is locked after the first redemption, except its limits.
  • Bulk single-use codes with an export trail.
  • Scope by tier, category or module: gift cards, merchandise, or both.
Storefront Admin PortalPromo EngineStorefront
Spec: PRD Storefront Admin Portal, promotions
F08

Orders, client view

Client staffMerit Ops

As client customer care, I find an order, resend the confirmation, and download the tax invoice.

Orders of this client only, searchable by order id and member id, with transaction, notification, audit and fraud tabs. A review queue holds orders waiting for a check.

  • Cancel and reprocess are Merit operator actions only.
  • Client staff mark an item reviewed, resend confirmations and download tax invoices.
  • Login as customer is Merit operator only, and every session is logged.
  • Test orders are excluded from every count. The portal never disagrees with the order record.
Storefront Admin PortalOMS
F09

Members and fraud view

Client fraud team

As the client fraud team, I look up a member and block them with a reason.

Find a member by exact id, see their orders and live points balance, fraud evaluations and order risk level.

  • A masked personal field is revealed one at a time, and each reveal is logged.
  • Allow or deny a member id, with a mandatory reason.
  • Fraud rules and model tuning stay outside the portal.
Storefront Admin PortalIdentity
Spec: PRD Storefront Admin Portal, members and fraud
F10

Float view

Finance

As client finance, I can see the float balance.

A read-only float balance. Top-ups happen in LiveOps only.

  • The portal never writes float.
  • Al Fursan runs the invoice model: Merit bills converted Miles at period end, so it has no low-float warning.
Storefront Admin PortalLiveOps
F11

Languages and publishing

Client admin

As a client admin, my Arabic store is laid out for Arabic, not mirrored.

Every configurable field has an English and an Arabic input. Changes can be drafted, previewed on a private link, published and rolled back.

  • Arabic renders right to left natively. A broken Arabic layout is a P0.
  • Missing Arabic falls back to English, with a warning.
  • Every change to collections, publishing and content is in an audit log that cannot be edited.
Storefront Admin PortalStorefront
Spec: PRD Storefront Admin Portal, preview, publish and language

07Store features

What the member does in the store.

F12

Member sign-in

Member

As a member, I use my airline login, and my cart is still there after I sign in.

The member signs in through the client own login. Profile and live points balance come with it.

  • No guest checkout. Sign-in is asked for at checkout, and the cart is kept.
  • A member id allow list can gate the store, which is also how canary cohorts are routed.
StorefrontIdentity
F13

Browse and search

Member

As a member, I find the product and see how many points it costs.

Home, mega menu, collections, product lists with sort and filters, search, and product pages.

  • The variant selector disables combinations that are out of stock.
  • The product page shows the points needed to pay in full.
  • Only variants in a published collection appear anywhere.
StorefrontE-commerce CorePIM
F14

Cart and checkout

Member

As a member without quite enough points, I pay the rest by card.

A persistent cart. Pay with points only, card and Apple Pay, or a split on a slider.

  • The slider is hidden when the points balance is zero.
  • Pay with points is disabled when the balance is too low, and the balance is shown.
  • The address is filled from the profile. A new address is saved only if the member asks.
  • A variant removed from sale while in the cart shows as unavailable. The rest of the cart stays.
StorefrontPaymentIdentityE-commerce Core
F15

Orders and gift card reveal

Member

As a member, I track my parcel and reveal my gift card code safely.

Order history, order detail with the payment split, tracking for shipped orders, and cancel of an order or a single item.

  • A gift card code is revealed only after an OTP.
  • During a cooling-off delay the member sees a message, not a code.
StorefrontOMS
Spec: Al Fursan consumer storefront parity epic. order state explainer
F16

Apple Store by city

Member

As a member in Jeddah, I see only the iPhones that can reach me.

First, availability is resolved for Riyadh only. Then a city selector at the Apple Store entry filters what is shown.

  • The city is a browse filter. The delivery address still decides fulfilment.
  • Supplier order: STC, then Aleph, then Almanea. The price the member saw holds.
  • the city selector waits for client approval.OPEN
StorefrontE-commerce Core
F17

Wishlist

Member

As a member, I save the exact colour and size I want for later.

A wishlist per member, at variant level.

StorefrontE-commerce Core
Spec: Al Fursan consumer storefront parity epic

08Glossary

The storefront words, used the same way every time.

Open the glossary, 10 terms
Storefront
The client store the member shops in. White label, one per client.
Storefront Admin Portal
The client control plane. Formerly called Storefront Builder.
LiveOps
The Merit console: sets up clients, holds the allow list, tops up float.
Allow list
The variants Merit lets a client choose from. Not on sale by itself.
Collection
The only route a variant has onto a store. Standard or category type.
On sale
In at least one published collection, so buyable.
Managed by Merit
Merit runs the portal for the client, with an elevated role and a banner.
Invoice model
Merit bills the client for converted Miles at period end. No float held per order.
Review queue
Orders waiting for a check before or after fulfilment.
Cooling-off delay
A fraud hold before a gift card is fulfilled. The member sees a message.