Single-binary self-hosted website analytics on Rust axum: collector API, dashboards, world map, and PDF reports.
analyticsaxumdockerrustself-hostedsqliteviteweb-analytics
1# {{ property.name }}
2
3**Property ID:** `{{ property.id }}`
4**Operator:** operator
5**Date range:** {{ date_start }} → {{ date_end }} ({{ date_range }} days){% if filter_url %}
6**Filter · url:** `{{ filter_url }}`{% endif %}
7**Generated:** {{ generated_at }}
8**Live users (last 30m):** {{ total_live_users }}
9
10---
11
12## Metrics · period vs previous
13
14| Metric | Value | Change |
15|---|---|---|
16{% for card in event_cards %}| {{ card.name }} | `{{ card.value }}` | {% if card.percent_change > 0 %}+{% endif %}{{ card.percent_change }}% |
17{% endfor %}
18
19## Events over time
20
21| Date | Count |
22|---|---|
23{% for point in total_events_graph %}| {{ point.label }} | {{ point.count }} |
24{% endfor %}
25
26{% if total_page_views_by_page_url %}## Top pages · page views
27
28| URL | Views |
29|---|---|
30{% for item in total_page_views_by_page_url %}| `{{ item.label }}` | {{ item.count }} |
31{% endfor %}
32{% endif %}
33{% if total_events_by_page_url %}## Top pages · all events
34
35| URL | Events |
36|---|---|
37{% for item in total_events_by_page_url %}| `{{ item.label }}` | {{ item.count }} |
38{% endfor %}
39{% endif %}
40{% if total_session_starts_by_referrer %}## Top referrers
41
42| Referrer | Sessions |
43|---|---|
44{% for item in total_session_starts_by_referrer %}| `{{ item.label }}` | {{ item.count }} |
45{% endfor %}
46{% endif %}
47{% if total_events_by_custom_event %}## Top custom events
48
49| Event | Count |
50|---|---|
51{% for item in total_events_by_custom_event %}| `{{ item.label }}` | {{ item.count }} |
52{% endfor %}
53{% endif %}
54{% if total_events_by_device %}## Device
55
56| Device | Events |
57|---|---|
58{% for item in total_events_by_device %}| {{ item.label }} | {{ item.count }} |
59{% endfor %}
60{% endif %}
61{% if total_events_by_browser %}## Browser
62
63| Browser | Events |
64|---|---|
65{% for item in total_events_by_browser %}| {{ item.label }} | {{ item.count }} |
66{% endfor %}
67{% endif %}
68{% if total_events_by_platform %}## Platform
69
70| Platform | Events |
71|---|---|
72{% for item in total_events_by_platform %}| {{ item.label }} | {{ item.count }} |
73{% endfor %}
74{% endif %}
75{% if total_events_by_screen_size %}## Screen size
76
77| Size | Events |
78|---|---|
79{% for item in total_events_by_screen_size %}| {{ item.label }} | {{ item.count }} |
80{% endfor %}
81{% endif %}
82{% if total_session_starts_by_region %}## Sessions by region
83
84| Region | Sessions |
85|---|---|
86{% for item in total_session_starts_by_region %}| {{ item.label }} | {{ item.count }} |
87{% endfor %}
88{% endif %}
89{% if total_page_views_by_utm_source %}## UTM source
90
91| Source | Views |
92|---|---|
93{% for item in total_page_views_by_utm_source %}| `{{ item.label }}` | {{ item.count }} |
94{% endfor %}
95{% endif %}
96{% if total_page_views_by_utm_medium %}## UTM medium
97
98| Medium | Views |
99|---|---|
100{% for item in total_page_views_by_utm_medium %}| `{{ item.label }}` | {{ item.count }} |
101{% endfor %}
102{% endif %}
103{% if total_page_views_by_utm_campaign %}## UTM campaign
104
105| Campaign | Views |
106|---|---|
107{% for item in total_page_views_by_utm_campaign %}| `{{ item.label }}` | {{ item.count }} |
108{% endfor %}
109{% endif %}
110{% if bot_traffic.total %}## Bot traffic (excluded from metrics above)
111
112**Total bot events:** {{ bot_traffic.total }}
113{% if bot_traffic.top_bots %}
114| Bot | Events |
115|---|---|
116{% for item in bot_traffic.top_bots %}| {{ item.label }} | {{ item.count }} |
117{% endfor %}
118{% endif %}
119{% if bot_traffic.top_pages %}
120### Top pages hit by bots
121
122| URL | Events |
123|---|---|
124{% for item in bot_traffic.top_pages %}| `{{ item.label }}` | {{ item.count }} |
125{% endfor %}
126{% endif %}
127{% endif %}
128---
129
130_Report generated by Analytics, self-hosted website analytics._