3.9 KiB
Umami Admin Pages Exclusion
Changes Made
Updated the Umami tracking hook to completely exclude all admin pages from tracking.
What's Excluded
The following routes are excluded from Umami tracking:
/admin- Admin dashboard/admin/*- All admin sub-pages (articles, matches, settings, analytics, etc.)/login- Login page/setup- Initial setup page
Implementation
File: frontend/src/hooks/useUmami.ts
Added isAdminRoute() helper function:
const isAdminRoute = (pathname: string) => {
return pathname.startsWith('/admin') ||
pathname === '/login' ||
pathname === '/setup';
};
Three levels of exclusion:
-
Script Loading - Umami script is not loaded on admin pages
// Don't load Umami for admin pages if (isAdminRoute(location.pathname)) { console.log('Umami tracking disabled for admin pages'); return; } -
Page View Tracking - Admin page views are not sent to Umami
if (location.pathname && !isAdminRoute(location.pathname)) { trackAnalyticsEvent({ ... }); } -
Custom Events - Events triggered on admin pages are not sent to Umami
if (isAdminRoute(location.pathname)) { return; // Skip tracking }
Why This Matters
Benefits:
- ✅ Clean analytics - Only public-facing pages in Umami dashboard
- ✅ Better performance - No tracking overhead in admin panel
- ✅ Privacy - Admin activity not tracked
- ✅ Accurate metrics - Real visitor data without admin noise
What still tracks admin pages:
- Local analytics database (powers
/admindashboard widgets) - This is intentional - you want to see which admins are active
Testing
Before (admin pages were tracked):
Umami Dashboard:
/admin - 5 views
/admin/articles - 3 views
/admin/settings - 2 views
/ - 10 views
After (only public pages tracked):
Umami Dashboard:
/ - 10 views
/articles - 8 views
/zapasy - 6 views
(no /admin routes)
How to Verify
-
Open browser console
-
Visit a public page (e.g.,
/)- Console shows:
Umami tracking loaded - Script tag exists:
<script data-website-id="..."></script>
- Console shows:
-
Visit admin page (e.g.,
/admin)- Console shows:
Umami tracking disabled for admin pages - No Umami script in
<head> - No tracking requests to Umami server
- Console shows:
-
Check Umami dashboard
- No
/adminroutes in "Top Pages" - Only public pages visible
- No
Local Analytics Still Work
The local analytics database (visitor_events table) continues to track all pages including admin:
- Powers the widgets on
/admindashboard - Used for internal monitoring
- Not sent to Umami
This is intentional! You have:
- Public analytics → Umami (for website visitors)
- Internal analytics → Local DB (for admin monitoring)
Console Output
Public page (/):
Umami tracking loaded
Admin page (/admin):
Umami tracking disabled for admin pages
Switching from admin to public:
// On /admin
Umami tracking disabled for admin pages
// Navigate to /
Umami tracking loaded
Edge Cases Handled
- Direct navigation to admin - Script never loads
- Navigation from public to admin - Tracking stops
- Navigation from admin to public - Script loads on public page
- Custom events in admin - Silently ignored (not sent to Umami)
Production Deployment
No special configuration needed! The exclusion works automatically based on URL paths.
With Cloudflare Tunnel:
https://fotbalklub.cz/→ Tracked ✅https://fotbalklub.cz/admin→ Not tracked ❌https://fotbalklub.cz/zapasy→ Tracked ✅
Perfect! 🎉
Summary
Admin pages are now completely excluded from Umami tracking at all levels:
- No script loading
- No page view tracking
- No event tracking
Your Umami analytics will show only real visitor activity on public pages!