Merit · E-Commerce Solution · Product explainer
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.
Who works where. Merit and the client never share a screen.
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.
Allowed by Merit, put on sale by the client.
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.
From the first page to an order.
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.
Seven roles. Merit roles carry the actions a client should not take alone.
| Role | Who | What it can do |
|---|---|---|
| super_admin | Merit | Every client |
| merit_operator | Merit | One client, elevated. A banner shows it is acting for the client |
| tenant_admin | Client | Everything in its own store |
| tenant_editor | Client | Content, catalogue and campaigns. No publish, domain or billing |
| tenant_orders | Client | Orders: review marker, resend confirmation, tax invoice. No cancel |
| tenant_finance | Client | Read orders, exports, analytics and reconciliation |
| tenant_viewer | Client | Read only |
Every feature and the services it crosses. Features 1 to 11 are the portal, 12 to 17 the store.
| Feature | Storefront | Storefront Admin Portal | LiveOps | E-commerce Core | PIM | OMS | Identity | Payment | Promo Engine |
|---|---|---|---|---|---|---|---|---|---|
| 1. Staff access and roles | ● | ● | |||||||
| 2. Client set-up and branding | ● | ● | ● | ||||||
| 3. Product allocation | ● | ● | ● | ||||||
| 4. Collections | ● | ● | ● | ● | |||||
| 5. Product presentation | ● | ● | ● | ||||||
| 6. Content | ● | ● | |||||||
| 7. Promotions | ● | ● | ● | ||||||
| 8. Orders, client view | ● | ● | |||||||
| 9. Members and fraud view | ● | ● | |||||||
| 10. Float view | ● | ● | |||||||
| 11. Languages and publishing | ● | ● | |||||||
| 12. Member sign-in | ● | ● | |||||||
| 13. Browse and search | ● | ● | ● | ||||||
| 14. Cart and checkout | ● | ● | ● | ● | |||||
| 15. Orders and gift card reveal | ● | ● | |||||||
| 16. Apple Store by city | ● | ● | |||||||
| 17. Wishlist | ● | ● |
What the client and Merit Ops do in the portal. Design: Figma.
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.
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.
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.
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.
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.
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.
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.
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.
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.
As client finance, I can see the float balance.
A read-only float balance. Top-ups happen in LiveOps only.
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.
What the member does in the store.
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.
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.
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.
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.
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.
As a member, I save the exact colour and size I want for later.
A wishlist per member, at variant level.
The storefront words, used the same way every time.