Operations tools

MintJams Commerce provides the visibility, monitoring, notifications, reconciliation and reporting you need to run it day to day. Configure via /etc/commerce/config/*.yml, or from the Webtop Commerce apps.

Dashboard

The read-only Commerce Dashboard app shows KPI cards for sales trend, inventory, stockout forecast, reorders, locations, backorders, customers, tasks, health, event ingestion, reconciliation and outbound sync. It has a 7d / 30d / 90d window selector and drill-downs into the consoles.

GET …/endpoints/dashboard.groovy?days=7&salesDays=30

It updates via a content SSE subscription plus a 60-second poll and a manual refresh.

Health monitor

Webhook, route and Admin API success/error and latency are recorded to /content/commerce/health/metrics/{yyyy}/{MM}/{date}.json, and alerts fire when health.yml thresholds are exceeded.

Rule Fires when
hmacFailures today's HMAC failures ≥ threshold
apiErrorRate API error rate ≥ threshold (after minSample)
routeErrorRate processing error rate ≥ threshold (after minSample)
processingLatency a single webhook exceeds maxMs

Cooldown is cooldownMinutes (state in state.json). Read: GET …/endpoints/health.groovy?days=7.

Notification channels

Slack / Discord / Teams / LINE / generic webhook / Email (SMTP) are supported. Configure in /etc/commerce/config/notifications.yml or in the Webtop Commerce → Notifications app. A channel is on unless enabled: false; delivery is best-effort (failures are logged only and never break the business process).

Reconciliation

Detects and reports drift in product status, variant price and inventory between the CMS mirror and Shopify's current truth, and optionally heals it.

  • a timer (hourly by default) checks round-robin (maxPerRun)
  • sourceOfTruth.{status,price,inventory} = cms / shopify; autoHeal.{...} enables healing per field (inventory is never auto-healed)
  • reports: /content/commerce/reconciliation/{yyyy}/{MM}/recon_*.json, cursor in state.json
  • config: /etc/commerce/config/reconcile.yml. UI: Commerce Operations → Reconcile

Reports & audit

GET …/endpoints/reports.groovy?type=sales&days=30[&format=csv]
GET …/endpoints/reports.groovy?type=operations&days=30[&status=ok|failed|dryrun][&format=csv]

sales (daily orders, revenue per currency, top products) and operations (an audit of CMS → Shopify writes) export as JSON / CSV.

Task SLA

Open human tasks are scanned periodically (every 15 min by default), and breaches of the sla.yml rules (overdue / unclaimed / open) are escalated (raise priority, add a candidate group, notify). State lives in /content/commerce/tasks/sla-state.json. Read: GET …/endpoints/tasks.groovy.

CRM

Customers are aggregated from order history and classified (new / repeat / vip / at_risk / dormant) and stored at /content/commerce/crm/customers/{key}.json. Behaviour changes (newly VIP/at-risk/dormant) are notified, and abandoned carts are detected and followed up (optional email plus an operator summary). Config: /etc/commerce/config/crm.yml. Read: GET …/endpoints/crm.groovy?view=segments.