Skip to content
Skip to main content
← Back to Documentation

Filtering & Segmentation

Narrow down your analytics data to answer specific questions. Filters apply across all dashboard widgets simultaneously.


Date Range

Every dashboard view is scoped to a date range. Use the date selector in the header to choose:

  • Presets: Today, Last 7 Days, Last 30 Days, Last 90 Days, Last 12 Months.
  • Custom Range: Pick an exact start and end date using the calendar picker.

All widgets, exports, and API responses respect the selected range.

Available Filters

Click on any data point in a widget to apply it as a filter, or add filters manually. The following filter dimensions are supported:

Filter Description Example
PageFilter to a specific URL path. Supports wildcards (/blog/*)./pricing
ReferrerFilter by referring domain.google.com
CountryFilter by visitor country (ISO code).US
BrowserFilter by browser name.Chrome
DeviceFilter by device type.mobile
OSFilter by operating system.Windows

Active filters appear as chips below the header. Click the × on any chip to remove it, or use Clear All to reset.

UTM Campaign Filters

The Campaign Performance widget supports filtering by UTM parameters:

  • utm_source: the traffic source (e.g., google, newsletter)
  • utm_medium: the marketing medium (e.g., cpc, email)
  • utm_campaign: the campaign name (e.g., spring_sale)
  • utm_term: the paid search keyword
  • utm_content: used for A/B testing or distinguishing ad creatives

Paid ad click IDs are detected and mapped to a source even when UTM parameters are absent: gclid, gbraid and wbraid (Google Ads, the last two sent instead of gclid on iOS), msclkid (Microsoft), twclid (X), yclid (Yandex) and li_fat_id (LinkedIn). A tag you set yourself always wins: a click ID fills in a source or medium you left blank, it never replaces one.

The medium needs the referrer to agree. A click ID is only recorded as cpc when the visit also arrived from that network, because a gclid stays on the URL when somebody copies the link into an email, a chat or a bookmark, and every later click on it would otherwise be counted as ad traffic you paid for. When nothing corroborates the click, the medium records the parameter itself: (gclid), (msclkid), and so on. Those visits keep their source, so they still appear under Google or Microsoft in Campaigns, but they are not counted as paid on the Ads Breakdown card.

fbclid is the exception to the paid part. Facebook and Instagram add it to every outbound link, organic posts included, so a corroborated fbclid records medium=social rather than counting the visit as paid.

Tagging internal links

A campaign tag records a touch. VeritaMetrics reads utm_source, or its aliases source, ref and src, from every page of a visit, and it also remembers the tag the visit started on. A tag you put on a link between two of your own pages is therefore kept on that later page, and the visit still carries the source it arrived with.

What that does to your numbers depends on the attribution model. First Touch, the default, credits the campaign the visit started on, so a visitor who arrived from your newsletter and then clicked a pricing button is still counted as arriving from the newsletter. Last Touch and Last Non-Direct Click read the tag on the later page, so an internal link tagged this way can appear in those two models as a source of its own. If you tag internal links, check which model you are reading.

To measure which internal link or CTA someone clicked, send a custom event instead. Events are stored per interaction, so first-touch attribution never rewrites them:

window.verita('trackEvent', 'cta_click', { cta: 'pricing_footer' });

The event appears in your event reports and can be turned into a goal. See Custom Events & Definitions.

A third option needs no event code at all. A parameter that is not one of the aliases above and not on the list of parameters we always remove from a stored URL survives there instead, so you can read it back out of Top Pages. Our own landing page tags its buttons this way: ?cta=hero and ?cta=closing-banner show up unchanged in that report. The trade-off against a custom event: the tag lives on one pageview and carries a single value, while an event carries whatever properties you pass and is not tied to a particular page load.

Custom Dimensions (Segmentation)

Custom dimensions let you segment analytics data by properties you define. For example, you might segment by pricing plan, user role, or A/B test variant.

  1. Navigate to Site Settings and create a custom definition with a parameter name (e.g., plan_tier).
  2. Pass the property in your tracking events:
    window.verita('trackEvent', 'signup', { plan_tier: 'pro' });
  3. Use the segmentBy parameter in the dashboard or API to group data by your custom dimension.

Segmentation is available for a single site at a time and groups event data (not pageviews) by the custom property values.

Attribution Models

The Campaign Performance widget offers three attribution models in a dropdown. All three work inside a single visit, which ends after 30 minutes of inactivity. Visitors are counted with a salt that rotates daily, so no model here can follow somebody from one day to the next.

  • First Touch credits the campaign the visit started on. This is the default.
  • Last Touch credits the most recent tagged campaign in the visit.
  • Last Non-Direct Click credits the last tagged campaign in the visit that arrived from somewhere: a search engine, a social network, an email, or any other site. It skips touches that arrived with no referrer, so a visitor who clicks your ad, leaves, and later types your address in is still credited to the ad. A visit whose every touch arrived directly gets no row under this model.

Switching model changes which touch inside the visit gets the credit. It does not tell you whether the campaign caused the conversion: each model divides credit among the touches we observed, and only a holdout test can answer what would have happened without the campaign.

Explore the documentation

Jump to another guide.