Overview
Total Users
—
+— today
Active Subscriptions
—
Revenue This Month
—
New Users (Month)
—
New Users
Revenue
Users
Delete Account is permanent for app access. It revokes login and hides the user and all dogs; anonymized history remains in Admin.
| User | Subscription | Status | Push | Last activity | Daily limit | Joined | Actions |
|---|
Disposable Test Accounts
Environment-isolated QA users with forced config, experiment, and subscription state
Test environment · Accounts are marked
is_test_user, excluded from matching and campaign audiences, and permanently purged at expiry or when deleted here.
One-time login code ready — copy it now; it will not be shown again.
Create one-time account
Only
@test.traini.app addresses are acceptedActive disposable accounts
| Account | Onboarding | Expires | Subscription | Config | Experiments | Actions |
|---|
Payments
| Order ID | User | Recipient | Address | Amount | Status | Date |
|---|
Subscriptions
| User | Tier | Status | Period | Expires | Source |
|---|
Send Email
Required SES variables are loaded automatically. You can edit only the values you need.
Only change a URL when that button should open a different page.
Footer links — managed automatically
Unsubscribe: unique secure link for each recipient
Privacy Policy: https://traini.app/privacy-policy
You do not need to enter or edit these links.
Footer links — managed automatically
Unsubscribe: unique secure link for each recipient
Privacy Policy: https://traini.app/privacy-policy
Footer links — managed automatically
Unsubscribe: unique secure link for each recipient
Privacy Policy: https://traini.app/privacy-policy
Sends directly to this address — it doesn't need to be a registered user. Handy for a test send.
Uses your browser's local timezone. Leave empty to send now.
Preview
Pick a template and click Preview
Email Campaigns
Durable progress, retries, and restart-safe delivery
| Campaign | Target | Progress | Status | Created | |
|---|---|---|---|---|---|
| Loading… | |||||
Send System Message / Push Notification
The System message button opens this page. Push notifications first open Messages → System,
where the user can tap the button. Only routes supported by Traini RN are listed.
Uses your browser's local timezone. Leave empty to send now.
Push notification preview
T
Traininow
Notification title
Notification body
Messages → System preview
✦
Announcements
Today, just now
✦
System message title
System message body
Analytics
This is a narrow slice of backend-authoritative events (credit_earned, merch_viewed, voucher_redeemed, ...)
that also get written here alongside being forwarded to GA4. Most client-side GA4 events (screen views,
taps) never reach this table — this is not a GA4 replacement.
Events Per Day
Events
| Event Type | User | Properties | Date |
|---|
API Latency
Request counts and latency for matched Traini business APIs
Business API category
Unmatched requests and scanner probes such as
/config.php or /.idea/ are excluded.
All business APIs summary
Requests
—
Average
—
P50
—
P95
—
P99 / Max
—
gRPC union P95
—
Backend extra P95
—
Error / timeout / cancel
—
Business endpoints
Sorted by average duration
| Category | Method | Path | Requests | Average | P95 | gRPC P95 | Backend P95 | E / T / C | Max |
|---|---|---|---|---|---|---|---|---|---|
| Open this tab to load latency data | |||||||||
Slow endpoints
Requests above the threshold, grouped by API; select a row for samples
| Category | Method | Path | Slow requests | Average | P95 | Max | Last seen | |
|---|---|---|---|---|---|---|---|---|
| Open this tab to load latency data | ||||||||
Slow request samples
| Time | Status / outcome | Total | gRPC union | Backend extra | Request / Trace | Path variables |
|---|
PetGPT sessions
Conversations grouped by session; open one to inspect each turn
| Last turn | Conversation | API | Turns | Average | Max | |
|---|---|---|---|---|---|---|
| Open this tab to load latency data | ||||||
Backend → gRPC
Downstream wall time; overlapping calls are counted once in each request's gRPC union
0 calls · Avg — · P95 —
| Service | Method | Calls | Average | P50 | P95 | P99 | Max | E / T / C |
|---|---|---|---|---|---|---|---|---|
| Open this tab to load gRPC data | ||||||||
Client → API
Browser and App time through response parsing; matched rows show backend time for the same request ID
0 requests · Avg — · P95 —
| Client | Method | API route | Requests | Client avg | P95 | Backend avg | Difference |
|---|---|---|---|---|---|---|---|
| Open this tab to load client data | |||||||
AI answers
From request start to first visible text, and through answer completion. Text-free answers have no first-text time.
| Client | AI flow | Attempts | First text samples | First text avg | First text P95 | Completed | Complete avg | Complete P95 |
|---|---|---|---|---|---|---|---|---|
| Open this tab to load AI timings | ||||||||
Backend → AWS
Synchronous AWS SDK call time, including retries; background calls are included
0 calls · Avg — · P95 —
| AWS service | Operation | Calls | Average | P95 | Max |
|---|---|---|---|---|---|
| Open this tab to load AWS data | |||||
Request Errors
Request exceptions, business errors, HTTP failures, and AI / AWS errors. Open a record for safe request/response metadata, correlation IDs, and the available stack trace. Bodies and sensitive headers are never collected.
Errors by API
| Source | API / operation | Occurrences | Error types | Last seen |
|---|
Error details
| Time | Source | API / operation | HTTP | Error and request/response trace | Request / Trace IDs |
|---|
Experiments
Experiment registry and current user assignments
Experiment workflow
- PM creates the definition: enter a stable Experiment Key, Feature Key, hypothesis and treatment percentage. Create only registers it in Admin.
- Engineering connects the same key: RN can use it for UI/copy/layout tests; Backend can use it for limits, algorithms or API behaviour; a combined test may use the same assignment on both sides.
- First evaluation assigns the user: the runtime uses a stable hash of User ID + Experiment Key and pins CONTROL or TREATMENT in
user_experiments. The user must not switch variants between sessions. - Report exposure: only report
experiment_exposurewhen the user actually sees or uses the tested feature—not when config is merely downloaded. - Report conversion: connect goal events such as
purchase_complete,trial_startortranslation_completebefore comparing results.
Current MVP: Create, Admin Enabled switch, assignment counts and User UUID search are available.
The switch is control-plane metadata only and does not change B/C traffic yet. A developer must connect the runtime key before an experiment can affect users.
Create experiment definition
Stable lowercase key; cannot be renamed.
%
Assignments
Pinned variant per user
| User ID | Name | Variant | Assigned |
|---|
Localization
Loading languages…
Language
Translated
— / —
Missing
—
Draft changes
—
Published version
—
| Namespace / Key | English master | Translation | Status |
|---|
Runtime Config UNKNOWN
Feature flags, percentage rollouts, and emergency kill switches for this environment only
How to add a switch: first ship backend/app code that consumes a stable key with a safe default, then add the same key here in the intended environment.
Keep it disabled at 0%, add User ID overrides for QA, enable it, then raise rollout gradually (for example 1% → 10% → 50% → 100%).
User overrides take priority and can force V1 or V2. Only rollout-aware code uses the percentage; ordinary boolean consumers still use ON/OFF. Changes normally propagate within 15–30 seconds. Turning a flag off stops future operations; it cannot undo an irreversible operation already completed.
Always verify the DEV / STAGING / PROD badge before saving.
Add runtime flag
Stable lowercase key; code must consume this exact value.
Audit Log
| Admin | Action | Target | Detail | Date |
|---|
Server Health
Loading…
Feedback
| Name | Message | Source | Date |
|---|