Filter Applied
Also known as: filter_apply, Facet Selection, Refinement Applied, Faceted Navigation Filter, Product Filter Usage
Filter Applied is the filter_apply event, recorded when a shopper commits a facet or refinement (category, brand, size, colour, price band, rating, availability, fulfillment option) on a product listing, category or search results page, and it carries the filter dimension, the selected value, the resulting product count and the item_list_id of the list being refined. It is the behavioural basis for the Filter Applications metric and for every analysis of how faceted navigation narrows an assortment, exposes zero-result dead ends and shapes the path from list view to product view, cart and order.
Event Serialization
always
Business Use Case
["1️⃣ The Onsite Merchandising Manager reviews filter usage by filter_type and item_list_name every Monday, promotes the most-used facets to the top of the filter panel on each category, and removes facets that receive under 1% of refinements before the next assortment load.","2️⃣ The Search & Discovery Product Owner monitors filter_apply events returning search_results_count = 0 daily, and when a category and filter_value combination crosses the alert threshold raises a catalog attribution fix (missing size, colour or brand values in the product feed) with the Catalog team.","3️⃣ The UX Research team compares list-to-product-view and list-to-cart rates for sessions with and without a filter application after each filter panel redesign, and rolls back a mobile drawer variant when refinement volume or post-filter conversion falls against control.","4️⃣ The Category Buying team reads the price, size and brand filter_value distribution per category each quarter and uses the demand signal to adjust range depth, size curves and opening price points in the next buy."]
Business Criticality
High
Journey / Navigation Area
Discovery
Owning Function
Merchandising
Calculation Notes
["1️⃣ Fires when a refinement is committed and the listing has re-rendered with the new result set: on the checkbox, swatch or chip selection for instant-apply facets, and on the Apply or Show results button for drawer or modal filter panels (the default on mobile). Opening a facet group, expanding a More link, dragging a price slider without releasing it or typing in a facet search box never fires the event.","2️⃣ Serialization is always, one event per committed filter state change, not per click. Multi-select facets are debounced (300–500 ms) so that three sizes ticked in quick succession produce one event with filter_value as a pipe-delimited list; filters restored from the URL on page load, back/forward navigation, pagination and sort changes must not re-fire, and removing a filter is a separate interaction that does not reuse filter_apply.","3️⃣ Required parameters: filter_type (the facet dimension, e.g. brand, size, price), filter_value (the selected value or range), item_list_id and item_list_name (identical to the values sent on view_item_list and select_item for the same list, so the refined list stitches to the sibling Product List View and Product List Click events), page_type and search_results_count (products returned after the filter). Optional: search_term when the refinement is applied on a search results page, filter_count (active refinements after this one), filters (the full active filter state) and sort_order.","4️⃣ Values are sent as stable, normalised keys (brand_nike, size_uk_9, price_50_100), never as localised display labels or counts such as \"Nike (124)\"; price ranges are sent in the store currency as lower_upper bounds so bands aggregate across locales and merchandising copy changes.","5️⃣ Consent and PII: the event is analytics-storage gated and contains no personal data by design. Free-text inputs (a postcode typed into a store-availability or delivery filter, a text search inside a facet) must be truncated to outward code or dropped before collection, and filter_value must never carry a customer, loyalty or account identifier.","6️⃣ Common instrumentation mistakes: firing on every checkbox toggle, which inflates filter volume; firing on SEO landing pages whose URLs pre-apply facets, which counts navigation as refinement; sending search_results_count from the pre-filter list; and dropping item_list_id on the refined list, which breaks attribution of downstream select_item and add_to_cart events to the filtered context."]
Platform Events
| Platform | Event |
|---|---|
| Google Analytics 4 | filter_apply |
| Adobe | filterApply |
Data Mappings
W3 Data Layer
{
"event": [
{
"eventInfo": {
"eventName": "filter_apply",
"type": "filter_apply"
},
"filter": {
"filter_type": "brand",
"filter_value": "brand_nike",
"filter_count": 2,
"filters": "brand:brand_nike;price:price_50_100",
"sort_order": "relevance"
},
"listItem": {
"item_list_id": "category_running_shoes",
"item_list_name": "Category: Running Shoes"
},
"page": {
"pageInfo": {
"page_type": "category"
}
},
"search": {
"search_term": null,
"search_results_count": 42
}
}
]
}GA4 Data Layer
{
"event": "filter_apply",
"filter_type": "brand",
"filter_value": "brand_nike",
"item_list_id": "category_running_shoes",
"item_list_name": "Category: Running Shoes",
"page_type": "category",
"search_results_count": 42,
"search_term": null,
"filter_count": 2,
"filters": "brand:brand_nike;price:price_50_100",
"sort_order": "relevance"
}Adobe Client Data Layer
{
"event": "filterApply",
"filter_type": "brand",
"filter_value": "brand_nike",
"item_list_id": "category_running_shoes",
"item_list_name": "Category: Running Shoes",
"page_type": "category",
"search_results_count": 42,
"search_term": null,
"filter_count": 2,
"filters": "brand:brand_nike;price:price_50_100",
"sort_order": "relevance"
}XDM Mapping
{
"eventType": "web.webinteraction.linkClicks",
"web": {
"webPageDetails": {
"pageType": "category"
},
"webInteraction": {
"name": "filterApply",
"type": "other",
"linkClicks": {
"value": 1
}
}
},
"_experience": {
"analytics": {
"customDimensions": {
"eVars": {
"eVar1": "category_running_shoes",
"eVar2": "Category: Running Shoes",
"eVar3": "category",
"eVar10": "brand",
"eVar11": "brand_nike",
"eVar12": "brand:brand_nike;price:price_50_100",
"eVar13": "relevance",
"eVar14": null
}
},
"event1to100": {
"event10": {
"value": 1
}
}
}
},
"_tenant": {
"filter": {
"filterCount": 2,
"searchResultsCount": 42
}
}
}Source Data
Digital Analytics (GA4)
Dependencies
Prerequisite: List the dependencies required for this Event
Events:
Dimensions:
Report Attributes
filter_type filter_value item_list_name page_type search_term search_results_count device_category
Segment Eligibility
true
Governance
Dimensions
Related Dimensions
Derived Dimensions
Derived Entities
Derived Metrics
Derived KPIs
Governance & Metadata
GitHub
catalog/events/filter-applied.yml