← Back to Dimensions

Filter Value

Also known as: Facet Value, Refinement Value, Filter Selection, Selected Facet

EngagementdimensionE-commerce: Product Discovery & Merchandising (Search/Filters/PDP)E-commerce

Facet value a shopper selects in product-list faceted navigation (Nike, Red, UK 10, 4 stars & up), always read with its filter_type. Captured as filter_value on the filter_apply event.

Business Use Case

1️⃣ Merchandising: when a heavily used filter value returns few products, extends that range or fixes missing attributes. 2️⃣ UX team ranks filter values by conversion monthly and moves the top values to the first facet positions. 3️⃣ Product data team: when shoppers filter on values missing from many SKUs, enriches those attributes in the PIM.

Business Criticality

Medium

Journey / Navigation Area

Discovery

Owning Function

Merchandising

Scope

Event

Calculation Notes

1️⃣ Source: filter_value on the filter_apply event, reported with filter_type; the same value (e.g. black) can sit under colour and under brand. 2️⃣ Multi-select: values arrive pipe-delimited in one filter_value ('8|8.5'); each is split into its own row, so one hit counts once per value. 3️⃣ Values are the event's normalised keys (brand_nike, size_uk_9), not display labels; reports trim and lowercase them, empty = (not set). 4️⃣ Capture rule: the event fires on selection only; deselection, Clear all and price-slider drags do not fire, so they never reach this dimension. 5️⃣ Only shopper-initiated selections count; filters restored from URL parameters on page load or back navigation do not fire. 6️⃣ Synonyms (grey/gray) are mapped to one key in the data layer before the push; reports show the key as sent and apply no mapping. 7️⃣ High cardinality: GA4 standard reports roll rare values into (other); use the BigQuery export for long-tail values.

Technical Details

Data Typestring
Lookback WindowEvent, Session, Daily, Weekly, Monthly

Events

PlatformEvent
Google Analytics 4filter_apply
AdobefilterApply

Data Mappings

W3 Data Layer
{
  "event": [
    {
      "eventInfo": {
        "eventName": "filter_apply"
      },
      "attributes": {
        "filter_type": "color",
        "filter_value": "red"
      }
    }
  ]
}
GA4 Data Layer
{
  "event": "filter_apply",
  "filter_type": "size",
  "filter_value": "8|8.5"
}
Adobe Client Data Layer
{
  "event": "filterApply",
  "eventInfo": {
    "filter_type": "size",
    "filter_value": "8|8.5"
  }
}
XDM Mapping
{
  "eventType": "web.webinteraction.linkClicks",
  "web": {
    "webInteraction": {
      "name": "filterApply",
      "type": "other",
      "linkClicks": {
        "value": 1
      }
    }
  },
  "_<tenantId>": {
    "filterType": "size",
    "filterValue": "8|8.5"
  }
}

SQL Queries

Google Analytics 4 (BigQuery)
-- ==========================================
-- 1. GOOGLE BIGQUERY SQL
-- ==========================================
DECLARE start_date DATE DEFAULT DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY);
DECLARE end_date DATE DEFAULT DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY);
-- filter_apply hits with filter_type and filter_value pivoted from event_params
WITH filter_hits AS (
  SELECT
    (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'filter_type') AS filter_type,
    (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'filter_value') AS filter_value
  FROM `your-project.analytics_123456789.events_*`
  WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', start_date) AND FORMAT_DATE('%Y%m%d', end_date)
    AND event_name = 'filter_apply'
)
-- One row per selected value (multi-select split on '|'), trimmed and lowercased, empty as (not set), paired with its filter_type
SELECT DISTINCT
  COALESCE(NULLIF(LOWER(TRIM(filter_type)), ''), '(not set)') AS filter_type,
  COALESCE(NULLIF(LOWER(TRIM(selected_value)), ''), '(not set)') AS filter_value
FROM filter_hits
LEFT JOIN UNNEST(SPLIT(filter_value, '|')) AS selected_value;
Adobe Experience Platform (AEP Query Service)
-- ==========================================
-- 2. ADOBE AEP QUERY SERVICE SQL
-- ==========================================
-- filterApply hits from the last 90 days to yesterday, one row per selected value (multi-select split on '|')
WITH filter_hits AS (
  SELECT
    _tenantId.filterType AS filter_type,
    explode_outer(split(_tenantId.filterValue, '[|]')) AS selected_value
  FROM aep_web_events_dataset
  WHERE CAST(timestamp AS DATE) BETWEEN DATE_SUB(CURRENT_DATE, 90) AND DATE_SUB(CURRENT_DATE, 1)
    AND eventType = 'web.webinteraction.linkClicks'
    AND web.webInteraction.name = 'filterApply'
)
-- Selected values trimmed and lowercased, empty as (not set), paired with their filter_type
SELECT DISTINCT
  COALESCE(NULLIF(LOWER(TRIM(filter_type)), ''), '(not set)') AS filter_type,
  COALESCE(NULLIF(LOWER(TRIM(selected_value)), ''), '(not set)') AS filter_value
FROM filter_hits;

Source Data

Digital Analytics (GA4)

Dependencies

Prerequisite: List the dependencies required for this Dimension

Events:

filter-applied

Report Attributes

filter_type item-category page-type device-category sort-option

Segment Eligibility

true

Governance

Data SensitivityInternal

Governance

Created bydevyendarm
Created on9/30/2026
Last modified bydevyendarm
Last modified on9/30/2026
Version1.0.0
Validation stateqa passed
StatusPUBLISHED

GitHub

View related Pull Requestcatalog/dimensions/filter-value.yml

Community Discussion