Analytics & Reports¶
Vectis ships a reporting module that backs every admin chart and report from a single aggregation layer. Analytics → Overview in the admin is the index page for every canned report:

Each tile links to a date-ranged, channel-scoped report. Filters are shared across all reports — the date window and channel selector persist as you navigate.
Reports Catalog¶
Revenue¶
Daily revenue, order count, and average order value over time. The default window is 30 days with a per-channel breakdown. Exports as CSV with the raw day-level rows.
Order Status¶
Status breakdown (created, awaiting fulfillment, fulfilled, cancelled, refunded), fulfillment funnel, and order KPIs (unique buyers, repeat rate, fulfillment time p50/p90).
Top Products¶
Best-selling SKUs by revenue, quantity, and order count. Shows both variant-level and product-level rollups. Useful for finding hero SKUs and long-tail performers.
Top Customers¶
Highest-spending accounts and guest customers in the window. For B2B channels, this rolls up by account; for B2C, by customer.
Banner Tracking¶
Storefront banner performance: impressions, clicks, CTR, unique visitors, cart additions, purchases, and attributed revenue. Click a banner row for per-event logs. See Marketing → Banners for setup.
Slider Tracking¶
Same shape as Banner Tracking but grouped by slider with per-slide breakdown. See Marketing → Sliders.
Promotions¶
Cross-promotion performance: total uses, total dispensed spend, attributed revenue, and ROI per rule, plus an attribution breakdown. The Promotions page documents the per-promotion tab in full.
Aging Report¶
Outstanding receivables for B2B accounts on payment terms, bucketed by current / 30 / 60 / 90+ days past due. Feeds the dunning workflow.
Affiliates¶
Affiliate-program performance: top affiliates by attributed revenue, commission accrued vs paid, and pending payout totals. See Affiliates for program setup.
Filters¶
All reports accept the same shared filter bar:
| Filter | Behavior |
|---|---|
From / To | Inclusive date window |
Channel | All channels, or one specific storefront/B2B channel |
Currency | Transacted or base-currency view (multi-currency deployments) |
Export¶
Every report has a top-right Export CSV button that downloads the raw rows currently shown — always day-level detail, never pre-aggregated, so the file is safe to feed into a spreadsheet or warehouse.
Base vs transacted currency
By default totals render in the channel's base currency. Switch to the transacted-currency view for per-buyer breakdowns; switch to base for cross-currency aggregation. Dual amounts are always available on the underlying order records — see Orders → Multi-Currency.
Workflow Faults¶
Analytics → Workflow Faults mirrors the workflow-fault inbox (rows from the vectis.workflow.fault.v1 topic). Use it to spot trends — repeated approval_timeout, cascade_curation_invalid, or refund_execution_failed faults usually point to a misconfigured channel setting or a missing approver.
Cart Rejections¶
Analytics → Cart Rejections reads from the CartRejectionEvent audit table. Surfaces rejection rates by phase (cart approval vs payment approval) and reason (pricing_drift, inventory_blocked, mmoq_exceeded, etc.). Pair with the order-level inventory_risk feed to track post-approval drift.
Inventory Risk¶
Filter the order list with orders(inventoryRiskOnly: true) to surface every order whose inventory_risk_flag is set. The report tile rolls up risk reasons over time so you can see when external pushes are creating oversells.
Developer Reference¶
The reporting module lives at backend/vectis/modules/reporting/ and exposes GraphQL queries matching each report card. Long-running aggregates are computed in Temporal workflows and cached; the admin UI subscribes through Houdini so filter changes re-fetch efficiently. Audit visibility is wired to the same Redpanda topics used for cross-service messaging — see Events.