{% extends "admin/layouts/base.html" %} {% block title %}Platform Analytics{% endblock %} {% block content %}

Platform Analytics

{% set kpis = [ ('Total Tenants', stats.total_tenants, 'building', 'primary'), ('Active', stats.active_count, 'check-circle', 'success'), ('Trial', stats.trial_count, 'hourglass-split', 'info'), ('Suspended/Cancelled', stats.suspended_count + stats.cancelled_count, 'x-circle', 'danger'), ('MRR', '$' ~ "%.2f"|format(stats.mrr), 'currency-dollar', 'success'), ('Revenue (30d)', '$' ~ "%.2f"|format(stats.revenue_30d), 'graph-up', 'primary'), ('New Tenants (30d)', stats.new_tenants_30d, 'person-plus', 'secondary'), ('Conversions (30d)', stats.converted_30d, 'arrow-up-circle', 'success'), ('Churn (30d)', stats.churned_30d, 'arrow-down-circle', 'danger'), ] %} {% for label, value, icon, color in kpis %}
{{ value }}
{{ label }}
{% endfor %}
Active Tenants by Plan
{% for plan_name, count in stats.plan_counts %}
{{ plan_name }} {{ count }}
{% else %}

No data yet.

{% endfor %}
Trials Expiring in 3 Days
{% if expiring_soon %}
{% for t in expiring_soon %} {% endfor %}
TenantPlanTrial Ends
{{ t.name }} {{ t.plan.name if t.plan else '—' }} {{ t.trial_ends_at.strftime('%Y-%m-%d %H:%M') }} Convert
{% else %}
No trials expiring in the next 3 days.
{% endif %}
{% endblock %}