diff --git a/app/admin/filtered-traffic/page.tsx b/app/admin/filtered-traffic/page.tsx
new file mode 100644
index 0000000..488f829
--- /dev/null
+++ b/app/admin/filtered-traffic/page.tsx
@@ -0,0 +1,91 @@
+'use client'
+
+import { useEffect, useState } from 'react'
+import { LoadingOverlay } from '@ciphera-net/ui'
+import { getFilteredReferrers, FilteredReferrer } from '@/lib/api/admin'
+
+export default function FilteredTrafficPage() {
+ const [referrers, setReferrers] = useState
+ {totalBlocked.toLocaleString()} spam referrers blocked in the last {days} days
+ Filtered Traffic
+
+
+
+ )}
+
+
+
+
+ {referrers.map((r) => (
+ Domain
+ Reason
+ Blocked
+
+
+ ))}
+
+ {r.domain}
+
+
+ {r.reason}
+
+
+
+ {r.count.toLocaleString()}
+
+
Monitor blocked referrer spam
++ View domains blocked by the spam filter and check for false positives. +
+ ) } diff --git a/lib/api/admin.ts b/lib/api/admin.ts index 01c009f..f9ab143 100644 --- a/lib/api/admin.ts +++ b/lib/api/admin.ts @@ -60,3 +60,18 @@ export async function grantPlan(orgId: string, params: GrantPlanParams): Promise body: JSON.stringify(params), }) } + +export interface FilteredReferrer { + domain: string + reason: string + count: number +} + +export async function getFilteredReferrers(startDate?: string, endDate?: string): Promise