Dashboard
Message Volume (14 days)
Recent Signups
| Username | Role | Joined |
|---|
Active Users
Loading…
Daily Active Users
Orbits
Loading…
| Name | Tier | Adults | Family | Children | Total | Ext. Contacts | Created |
|---|
Text Moderation
On-device text-classifier model + kill switch. Source of truth lives in Squidex; this panel proxies via the BE so flips propagate to clients within ~60 seconds.
Loading…
Image Moderation
On-device image-classifier model + kill switch. Source of truth lives in Squidex; this panel proxies via the BE so flips propagate to clients within ~60 seconds.
Loading…
Appeals
Loading…
Content Upload
Upload authored JSON straight to Squidex, the same way a model is published. Source of truth for these files is git — crisis/countries/ and articles/<section>/. Upload here when you want a change live without running the CLI.
Crisis helplines
One file per country, e.g. gb.json. Select as many as you like.
All-or-nothing validation Every card is checked against the same child-safety rules the app enforces, before anything is written. If any file fails, nothing is written — a half-updated set would leave some countries stale with no record of which. Cards are then written one at a time, so a Squidex failure part-way through stops the import and is reported as a partial write naming exactly which countries landed — re-running the whole batch is safe, it upserts by country.
Disabling a country A card with "disabled": true turns the helpline card for that country off. Clients on ORB-1715 or later then show a generic card with no numbers to ring. Older builds keep the numbers bundled in the app. The file needs a non-blank notes field (outside the card) that says who decided and why. Do not put notes inside the card: the card is served to clients. To turn a country back on, upload a valid card. No confirmation is needed for that.
Type the ISO codes of every country this batch disables, separated by commas. The list must match the batch exactly. If it does not, nothing is written. This field is never filled in for you.
Support articles
Base articles plus their locale overlays (<slug>.<lang>.json).
All-or-nothing validation Every file — base article and locale overlay — is validated, and the overlays are folded into their base article's translations field, before anything is written. If any file fails, nothing is written. Articles are then written one at a time, so a Squidex failure part-way through is reported as a partial write naming exactly which articles landed — re-running the whole batch is safe, it upserts by slug.
Dry run does everything except the write and reports the locale coverage each article would end up with — the way to confirm all seven locales folded in before publishing.
Moderation Feedback
Parent / child verdicts on on-device moderation calls — false-positive triage + retraining signal. The audit log below never carries message text (privacy design, keyed by parent); the training corpus holds the message bodies parents opted in to share (no link back to a user).
Audit log …
Verdict + label trail, keyed by parent. No message text by design.
| Created | Verdict | Model version | Predicted labels | Child | Note |
|---|
Training corpus …
Anonymised rows that carry the shared message text. Deleting a row removes it from the retraining set — permanent, no soft delete.
| Created | Verdict | Model version | Message text | Predicted labels | Note |
|---|
Subscriptions
Loading…
| Orbit | Status | Plan | Renews / Ends | Owner | Price | Created |
|---|
Tier Limits
Caps for each subscription tier. -1 means unlimited. Edits are audited; every change requires a reason.
| Tier | Children | Adults | Family | External | Storage (GB) | Last updated | Edit |
|---|
Mock Data
Spawn test orbits with controlled premium configurations. Generated adults log in via the normal email + password + OTP flow — the mock generator pre-seeds a known OTP per adult so they pass the verify step. Child login codes valid 7 days. Use only on staging.
Remote Config
Per-platform feature flags / values, with an optional minimum app version below which clients see the default instead.
| Key | Value | Description | Platforms | Updated |
|---|
Loading…
Lifecycle Emails
Onboarding & nudge emails sent to orbit owners. Every lifecycle email is listed below with when it fires. The two elapsed-time nudges have an editable day interval; the rest are event-driven and send immediately when their trigger happens. The master switch disables all lifecycle emails at once.
Code TTLs
How long freshly-minted onboarding codes stay valid before they expire. Backed by the server-only app_settings store — changes take effect on the next code minted (within ~30s across replicas), no app update needed. The backend clamps each value; edits outside the shown range are rejected. Platform invite codes are not listed here — they use a per-code expiry chosen at mint time on the Platform Invites page.
Feature Toggles
Server-side on/off brakes for whole product features, backed by the server-only app_settings store. These are NOT the client-facing Remote Config flags — a client never reads these; the backend enforces them, so turning one off closes the routes rather than only hiding the UI.
Blocking Alerts
Server-controlled startup modals (image + title + description + optional CTA). Apps fetch the highest-priority targeted alert and must display it until acknowledged, or explicitly accepted when acceptance is required. Bumping an alert's version re-shows it to everyone.
Loading…
| Version | Title | Platform | Active | Blocking | Acceptance | Priority | Window | Actions |
|---|
Cross-Region DLQ
Cross-region outbox rows that were dead-lettered — permanently undeliverable (or exhausted) replication events pulled out of their FIFO lane so the conversation keeps flowing. Replay re-enters a row into its lane and redelivers once the underlying cause is fixed.
Loading…
| Reason | Peer | Kind | Conversation | Attempts | Dead-lettered | Last error |
|---|
Conversations
Loading…
| Conv ID | Type | Title | Created by | Participants | Messages | Updated | Status | Actions |
|---|
DB Explorer
Read-only SQL over the support views of the database behind this admin panel. Every query is audited with your account before it runs.
Waitlist
Loading…
| Source | Signed up | Launch email |
|---|
Feedback
Loading…
| Submitted | Interest | Age | Pricing | Concerns | Trust | Missing | Source |
|---|
Article feedback
Loading…
| Article | 👍 Up | 👎 Down | Total | % Useful | Last vote |
|---|
Contact
Loading…
| Submitted | Message | Source |
|---|
Support cases
Live support chats from adults. Open cases are sorted oldest-waiting first.
Loading…
| User | Status | Messages | Last message | Waiting |
|---|
Platform invites
Single-use or multi-use codes that gate new orbit creation. Plaintext codes are stored so admins can re-display and copy.
Loading…
| Code | Label | Uses | Status | Expires | Created |
|---|
Crash reports
Client crashes grouped by kind and top in-app frames. Reports hold no user or device identifier. Every value on this page comes from the app and is shown as plain text.
Loading…
| Platform | Kind | Signature | Reports | First seen | Last seen | Latest version | Symbolicated |
|---|