Configure what matters

Vanity filters

Vanity filters tell SignalGuide which pages are noise. A “what is X” blog post with 800 monthly views sounds good until you realize it never converts and never will. Filter it out and briefings focus on what actually drives your business.

What vanity filters suppress

A page matching a vanity filter pattern is skipped entirely in red-flag detection. The logic is in _detect_red_flags() in api/services/analysis.py:

PYTHON
is_vanity = any(_path_matches(path, pat) for pat in vanity_patterns)
is_conversion = path in conversion_paths

# Skip vanity pages entirely unless they're actually converting
if is_vanity and not is_conversion:
    continue

A bounce rate spike on a filtered page won't become a P1 alert. A 30% traffic drop won't trigger a finding. The page is invisible to the anomaly detector.

What vanity filters do not suppress

Vanity filters affect red-flag generation only. They do not affect:

  • Raw snapshot data — pages are still stored in SnapshotPage with full metrics. The data is there if you need it via MCP or the dashboard.
  • Cluster aggregation — if a vanity page matches a cluster pattern, it still contributes to that cluster's totals.
  • Site-level totals — total users, total sessions, total page views are pulled as aggregate metrics from GA4 and are unaffected by filters.
  • Conversion pages — if a path is marked as a conversion page, the conversion status overrides vanity suppression. That page still gets red-flag checks.

Pattern syntax

Vanity filter patterns use the same syntax as cluster URL patterns: the* wildcard matches any sequence of characters, and patterns are anchored to the full path.

TEXT
/blog/what-is-*         suppresses /blog/what-is-seo, /blog/what-is-ga4, etc.
/blog/*                 suppresses all blog posts
/glossary/*             suppresses every glossary entry
/tag/*                  suppresses all tag archive pages
/author/*               suppresses author profile pages
/page/*                 suppresses pagination URLs like /page/2

The wildcard is converted to a regex: /blog/what-is-* becomes ^/blog/what\-is\-.*$. It matches from the start to the end of the path — there is no partial match.

Adding and removing filters

Open Settings and find the Vanity filters section. Type a pattern and save. The request hits POST /{site_id}/vanity-filters in api/routes/site_config.py.

To delete a filter, click the delete icon next to it. The request hits DELETE /{site_id}/vanity-filters/{filter_id}. Deleting a filter takes effect on the next analysis run — it doesn't retroactively add red flags to past snapshots.

Start broad, tighten if needed
Begin with a pattern like /blog/* and check your next briefing. If you're missing real signals on blog posts that do drive conversions, narrow it to /blog/what-is-* or remove the filter entirely for those pages.

Why they exist

Red-flag priority scoring is calibrated to your site's actual traffic distribution. The “high-traffic” threshold is the top decile of views across all pages in a snapshot — which means a site with heavy informational blog traffic will set a very high bar for P1 alerts on pages that actually matter. Filtering out the blog entirely sharpens the threshold for the remaining pages.

Without filters, a bounce-rate alert on a ten-thousand-view “what is analytics” post looks identical to one on your pricing page. Filters eliminate the noise so the signal gets through.

Vanity filters and the briefing
The AI report writer in api/services/report_generator.py works from red flags and top pages after they've been scored. Filtering out vanity pages means the writer won't mention them in findings — it will focus on the pages left in the picture.

Related: Content clusters and Conversion pages.