MRR by currency
Active subscriptions only. Currencies are never summed (INV-5) — one card per currency.
Last 7 days
Server pressure (now)
Subscriptions by status
| Status | Count |
|---|
Signups (recent days)
| Day | Signups |
|---|
This tab is the documented seam for future analytics widgets.
Voucher codes
Operator codes customers redeem on the billing page. Credits & free trial are granted instantly (100% free — no checkout). Discount codes apply at checkout (redeem-at-checkout pending tax sign-off).
| Code | Kind | Value | Redeemed | Per-co | Expires | Status |
|---|
White-label partners
A partner is presentation only — Sigmix stays seller and merchant of record on every transaction, the ZATCA invoice names Sigmix, and transactional email is Sigmix-sent. Creating one here writes the database rows; the host also needs PARTNER_HOSTS and a Caddy vhost before it serves. Each row says what is still outstanding.
| Partner | Primary host | Signups | 30d | Paying | Gross | Rate | Commission | Live? |
|---|
Users
| Name | Status | Companies | Admin | Created |
|---|
Mailing list — website footer subscribers
—
| Status | Lang | Source | Welcomed | Joined |
|---|
Contact requests — website quote/contact form
—
| Name | Company | Phone | Message | Page | Received |
|---|
Events — people captured at events (iPhone app)
—
Send promo campaign
Exactly one message per person. Automatically excluded: people who already joined Sigmix, unsubscribed/bounced addresses, and anyone already messaged for this event — across the iPhone app AND CSV uploads, whatever the number format. Preview first; the send button unlocks after a preview.
| Captured | Event | Company | Mobile | Source |
|---|
Subscriptions
| Company | Plan | Module | Status | Seats | Cur | Unit price | Period end |
|---|
Orders & payments
All purchase orders across tenants. Refund fires the full gateway refund — the webhook then marks the payment refunded, reverses the UNSPENT credits and queues the ZATCA credit note (mig 159). Customers can never self-refund (policy). Partial refunds are manual finance.
| Created | Order | Company | Source | Status | Subtotal | VAT | Total | Cur |
|---|
Bank transfers — pending review
Customers who paid by bank transfer. Confirm a payment to provision the order (licenses + credits) atomically. Nothing provisions until you mark it paid (INV-1). Underpaid stays pending; a re-used bank reference is rejected as a duplicate.
| Company | Order | Reference | Amount | Cur | Created |
|---|
Companies
| Name | Cur | Status | Users | Active subs | Credit balance |
|---|
Audit feed
| When | Actor | Action | Detail |
|---|
Activity
First-party CDP — today, with the 7-day total beneath. GPT = gen-AI queries; anon = pre-signup visitors.
Funnel — current stage distribution
Recomputed hourly by the on-box funnel worker.
Top pages · last 7 days
| Path | Views |
|---|
User tags
Recent signups
| Name | Stage | Score | GPT 7d | Joined |
|---|
Lifecycle automation
Rules are DRY-RUN until flipped live. Email sends from no-reply@sigmix.sa via our SES (all users, incl. white-label). Test sends go to your own admin address.
| Name | Stage | Delay | Cooldown | Max | Sent | Last sent | Live |
|---|
Recent sends
| When | Rule | Status | Detail |
|---|
Add a provider credential
⚙ Advanced — endpoint · region · meta (Azure/Bedrock/OCI)
Stored credentials
| Family | Label | Method | Key | Endpoint | Region |
|---|
Add / edit a model route
One row = one model on one backend, using one stored key. Two or more active rows that match a request are used together (failover + load-balance). Most KSA/dedicated backends (deep.sa, AliCloud, GCP-dedicated, home GPU) speak the OpenAI API → pick that backend and just give the endpoint; the adapter is chosen for you.
⚙ Advanced — region · cost · failover order
Routes
| On | Label | Platform | Family / model | Modules | KSA | Cost in/out | Health | Today / total |
|---|
Modules & readiness
Each module needs a provider key to work. A module goes Live for customers the moment its key is configured under Providers & keys — and is hidden from every customer until then. Nothing to tick: add the key, the module appears.
| Module | Runs on (✓ has key · ✗ missing) | Status |
|---|
Set a price (cost & sell)
Prices for module
| Unit | Cost (µ) | Sell (credits) | Currency |
|---|
Last 7 days
Server pressure (now)
Calls per module
| Module | Calls | Quantity | Companies | Users |
|---|
Activity per module — metered usage in the window
Every recorded module call (from usage_event) — includes flat-access modules that don't consume credits, which is why the spend tables below can be empty while there is real activity here. "≈ value" = quantity × the module's sell price (only when a price is set).
| Module | Calls | Quantity | Companies | ≈ value |
|---|
Spend per module — net credits consumed
Credits actually consumed (reserve − settle refund), attributed to the module via its reservation. "≈ Value" = credits × the credit unit price.
| Module | Credits | ≈ Value | Reservations |
|---|
Daily spend — credits per module per day
| Day | Module | Credits | ≈ Value | Res. |
|---|
Price book — cost / sell / margin per unit
Sell = credits charged per unit; COGS = our provider cost. Margin = (sell value − COGS) ÷ sell value.
| Module | Unit | Sell (credits) | Sell (≈) | COGS | Margin |
|---|