Dashboard Overview
-
Total Users
-
Enabled Accounts
-
New Today
-
Pending Reports
-
Total Matches
-
AI Actions Today
Work queues
Analytics Dashboard
Refreshes every 30 seconds while visible. Today means UTC; 7d and 30d are rolling windows.
Online: authenticated live connections, expires within 75 seconds. Activity: observed sign-ins and visible member interactions, not idle tabs.
Activity history coverage not loaded.
Active Users
-
Online Now
-
DAU (24h)
-
WAU (7d)
-
MAU (30d)
-
Stickiness (DAU/MAU)
Registrations & Cohort Retention
-
New accounts (last 7 days)
-
New accounts (last 30 days)
-
7-Day Retention
-
30-Day Retention
User Segments
Loading...
Likes
-
Total Likes
-
Likes today (UTC)
-
Likes (last 7 days)
Matches
-
Total Matches
-
Mutual rows created in last 7d
-
Mutual match rows / like rows (proxy)
Messages
-
Total Messages
-
Messages (last 7 days)
-
All message rows / mutual match rows (proxy)
Profile & Messaging Indicators (not happiness)
-
Avg Profile Completion
-
High Completion (80%+)
-
Users with Photos
-
Users with Bio
-
7d member senders / all accounts
-
Logged AI chat actions (7d)
In-app Notifications
Send Test Notification
Send a notification to a member's in-app feed. Connected browsers receive a live update; offline members see it when they return.
Security Dashboard
-
Failed Logins (24h)
-
Suspicious Activity
-
Active Admin Sessions
-
Rate Limit Blocks (1h)
Security Alerts
Loading alerts...
Active Admin Sessions
Loading sessions...
Recent Login Attempts
| IP Address | Status | User Agent | Time | |
|---|---|---|---|---|
| Loading... | ||||
Platform Health
-
Server Status
-
Uptime
-
DB Latency
-
Memory Usage
Database Metrics
-
Avg Latency (1h)
-
Max Latency
API Performance
-
Avg Response Time
-
Success Rate
Recent API Errors
-
Errors (24h)
| Endpoint | Status | Error | Time |
|---|---|---|---|
| Loading... | |||
User Support Tools
Quick User Lookup
User Details
Recovery Actions
Reports Against User
Recent Activity
Admin Audit Log
| Admin | Action | Target | IP Address | Time |
|---|---|---|---|---|
| Loading... | ||||
Backups & Data Export
-
Backups (24h)
-
Last Backup
-
Pending Backups
Backup records are unverifiedEntries listed here are historical log records. They are not proof that a restorable backup exists. Confirm recoverability with your database provider.
Trigger Backup
Checking backup provider status...
GDPR Data Export
Export all data for a specific user (GDPR compliance).
Recent Backups
| ID | Type | Status | Size | Created | Completed |
|---|---|---|---|---|---|
| Loading... | |||||
System Management
Cache Management
Manage server-side caching to optimize performance. Clear caches when you need to force fresh data.
Loading cache status...
System Health
-
Cache Entries
-
Settings Cached
-
Apps Cached
-
Profiles Cached
User Management
| Name | Gender | Status | Created | Actions | |
|---|---|---|---|---|---|
| Loading... | |||||
Reports
| ID | Reporter | Reported User | Type | Reason | AI Detection | Status | Created | Actions |
|---|---|---|---|---|---|---|---|---|
| Loading... | ||||||||
AI Actions Log
| Type | Target | Result / Action | Model | Tokens | Duration | Time | Details |
|---|---|---|---|---|---|---|---|
| Loading... | |||||||
Mini-Apps Moderation
| Name | Creator | Category | Status | Plays | Created | Actions |
|---|---|---|---|---|---|---|
| Loading... | ||||||
Webhook Migration
Migration Status
Webhook URL
Use this URL in your PHP login script to migrate users automatically.
Allowed Domains
Only requests from these domains will be accepted. Enter one domain per line.
API Fields
Send whatever data you have available. Required fields must be included, all others are optional.
| Field | Type | Required | Description |
|---|---|---|---|
name |
string | Yes | User's display name |
email |
string | Yes | User's email address |
password |
string | Yes | Plain text password (will be hashed with bcrypt) |
age |
number | No | User's age |
phone |
string | No | Phone number |
gender |
string | No | "male" or "female" |
nationality |
string | No | User's nationality |
location |
string | No | Location/country |
city |
string | No | City name |
bio |
string | No | User biography/description |
maritalStatus |
string | No | single, married, divorced, widowed |
occupation |
string | No | User's job/profession |
education |
string | No | Education level |
height |
number | No | Height in cm |
religiosity |
string | No | very_religious, religious, moderate, spiritual |
smoking |
string | No | never, occasionally, regularly |
children |
string | No | none, have_children, want_children |
acceptTaaddud |
string | No | yes, no, maybe (accepts polygamy) |
acceptMisyar |
string | No | yes, no, open (accepts misyar marriage) |
hijabPreference |
string | No | niqab, hijab, none, no_preference |
willingToRelocate |
string | No | yes, no, maybe |
marriageTimeline |
string | No | asap, within_6_months, within_year, no_rush |
interests |
array | No | Array of interest tags |
languages |
array | No | Array of languages spoken |
PHP Integration Example
Add this code to your existing login script to migrate users automatically when they log in.
// Add this function to your login handlerfunctionmigrateUserToApp($user,$plainPassword) {$webhookUrl='YOUR_WEBHOOK_URL';// Required fields$data= ['name'=>$user['name'],'email'=>$user['email'],'password'=>$plainPassword,// Plain text - will be bcrypt hashed];// Add optional fields if available in your database$optionalFields= ['age','phone','gender','nationality','location','city','bio','maritalStatus','occupation','education','height','religiosity','smoking','children','interests','languages'];foreach($optionalFieldsas$field) {if(!empty($user[$field])) {$data[$field] =$user[$field]; } }$ch=curl_init($webhookUrl);curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);curl_setopt($ch, CURLOPT_POST,true);curl_setopt($ch, CURLOPT_POSTFIELDS,json_encode($data));curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json','Origin: https://zfafna.com'// Your domain]);$response=curl_exec($ch);$httpCode=curl_getinfo($ch, CURLINFO_HTTP_CODE);curl_close($ch);return$httpCode===200; }// In your login validation (after MD5 password check succeeds):if($loginSuccessful) {// Migrate user with all available datamigrateUserToApp($user,$_POST['password']); }
Recently Migrated Users
| Name | Origin | Migrated At | |
|---|---|---|---|
| Loading... | |||
Media Review
Private record of uploaded photos, videos and voice notes with the moderation outcome as stored. Previews stream only to this session.
| Uploaded | Uploader | Media | Outcome | Storage / publication | Actions |
|---|
Legacy Member Migration
Preview real source records, approve the mapping, then monitor the run. Work continues on the server if this tab closes.
- 01 MAPPINGChoose fields
- 02 PREVIEWRead real samples
- 03 APPROVEAttest and start
- 04 MONITORProgress and exceptions
1. Mapping
Country conversion is automatic for new mappings: 54 nationality labels and 53 current residence countries. Each uses its own source value. Unknown codes and Yugoslavia (208) require review.
Enabled for new mappings. Nationality and residence use standard country codes with readable names in the preview. Cities receive an ID only for a unique exact match within the residence country. Ambiguous or unmatched city text is preserved and flagged. Enable this for an older draft, then generate a new preview.
Fixed: email (trimmed, lowercased) and gender (1 male, 2 female). Unknown age stays unknown. Excluded: phone, credentials, media, visibility, membership and marriage preferences. Ambiguous text is not repaired; unresolved fields remain unset.
Nationality map
Source code to reviewed label. New mappings include 54 labels from zwjate.com with original spellings. Not residence codes. Saved drafts keep their original mapping; Reset to safe defaults loads the list.
Residence map
Source countryLive code to ISO2. Residence is never inferred from nationality.
3. Approve and start
2. Preview samples
Contains real personal data. Do not copy or share.No preview for the current mapping yet.
4. Selected job
Select a job from history.
Held exceptions (latest 50)
Job history
Platform Settings
General Settings
These fields are not yet stored by the server, so they are read-only. Changes here would not take effect.
Messaging Without a Match
Loading saved policy…
Email Verification
Email Service Configuration
Super-admin access required. Loading configuration…
Tests use saved settings only. Save edits first. Provider acceptance does not confirm inbox receipt.
Test Email
Email Validation (SendGrid)
Validate email addresses at registration to prevent fake/invalid emails and protect sender reputation.Test Email Validation
AI Management
-
Total AI Requests
-
Total Tokens Used
-
Estimated Cost (USD)
-
Success Rate
AI Agents Configuration
Loading agents...
Billing
Financial session
LockedAll billing mutations require re-entering your password. The session token is kept in memory only and is never stored.
Loading...
Configuration
Prices (separate SAR / USD fixed terms)
Gateways
Owner readiness attestation
This is your explicit attestation, recorded in the audit log against one immutable credential version. Only tick an item if the real evidence already exists: completed provider sandbox tests, provider approval of the merchant account and category, Apple Pay domain verification, and agreed settlement and refund terms. Ticking boxes does not test anything automatically. Live charging also requires BILLING_LIVE_APPROVED and the approved origin to be provisioned on the server separately. Requires a recently unlocked financial session.
New gateway credential version
Credentials are encrypted and immutable. Secrets are never shown again and inputs are cleared after save. Saving does not mark the account verified; merchant category, Apple Pay domain, recurrence and sandbox tests remain unverified until the server records evidence. Missing evidence blocks charging.