Merchant Dashboard — SanadiqCloud Dashboard
Product version: 1.0.0+1 Last updated: 2026-10-07 Audience: Tenant Owners, Tenant Employees, Platform Staff with support access
Overview
The Merchant Dashboard (/dashboard) is the home screen for one active organization. It answers: how is this organization doing, what is happening, and what needs attention?
Projection: GET /api/dashboard/v1/dashboard/tenant/{tenant_id}
Live overlay: inventory GetLowStockItems, GetExpiringItems, and expiringSoonCount.
Requires dashboard:read and an active organization context. You only see organizations you are a member of. Switching organization reloads the page for the new tenant. Pull down to refresh both the projection and the live overlay.
There is no export report on this page. Detailed management stays in Product, Inventory, Requisitions, Billing, Members, and Audit.
Access for platform staff
Platform admins and staff can open an organization's merchant dashboard only while they hold approved support access to that organization. Without it the request is refused (SUPPORT_ACCESS_REQUIRED). See Support access.
Sections
| Section | What it shows |
|---|---|
| Snapshot time | When the tenant projection was read |
| Tenant briefing | Executive risks only (danger + warning summaries): unhealthy subscription, low stock, expiring lots, pending requisitions, overdue billing invoices, seats ≥ 90%, storage ≥ 75%. Not an activity feed — creating products or editing stock does not appear here unless a rule above fires. In-transit transfers and open customer returns stay in Needs attention only. |
| Needs attention | Full actionable queue (same summary rules + live/projected stock rows + in-transit transfers + open customer returns + open stock counts + recent requisitions), category filters, View all. Open counts appear under the Counts category as stock counts in progress and stock counts awaiting approval; the category total is both added together. See Counts. Owners who decide support access also see each pending Support access request (case number, scope, request deadline) at the top; tapping it opens the case to approve or reject, and the row leaves once decided or expired. See Support access. |
| Tenant KPIs | Products, product items, inventory items (7-day low-stock sparkline when low stock exists), active members vs seats |
| Subscription & usage | Plan, status, amount, next billing, seats, storage (upgrade CTA at ≥ 75%) |
| Stock alerts | Live low stock, then projected alerts (deduped), then expiring lots. Calm empty state when healthy. Overlay errors are not shown as “healthy”. |
| Inventory activity | 30-day transactions vs low-stock trend |
| Inventory health | Healthy vs low-stock composition |
| Business | Sales MTD, gross profit MTD, inventory value, monthly revenue vs profit (up to 12 months). Sales revenue / COGS / GP come from Finance journal projections (not Sales invoice create alone). |
| Recent requisitions | Compact list when any exist |
| Recent activity | Latest ~8 tenant audit events (session / password / token noise dropped) |
| Quick links | Invite, Members, Stock, Billing Hub, Organization Settings (permission-gated) |
Refreshing
Pull to refresh. The dashboard reloads the projection and the live inventory overlay for the current tenant. Month-to-date values reset on the 1st of each month at 00:01 UTC.
Related: Dashboard Overview | KPI Reference | Finance | Billing | Notifications