In GA4 Explore, you have both segments and filters — and they appear to do similar things. But segments and filters operate at fundamentally different levels, and using the wrong one for your analysis leads to misleading results. A filter on “purchased = yes” and a segment of “purchasers” will return different user counts from the same dataset. This guide explains exactly how they differ and when to use each.
The Core Difference: Scope
- Filters: Restrict which rows of data are included. They filter at the event or session level.
- Segments: Identify groups of users matching criteria, then show ALL events for those users — even events that don’t match the segment condition.
Practical Example
Scenario: You want to understand what purchasers browse before they buy. With a filter (event_name = purchase): you see only the purchase events — no browsing data. With a segment (Users who purchased): you see ALL events for purchasers — including their pre-purchase browsing. The segment gives you what you actually want.
// How segments work conceptually: // 100 users, 10 purchased // FILTER (event_name = 'purchase'): Only 10 purchase events // You lose ALL other events for purchasers // SEGMENT (users who purchased): All ~500 events for the 10 purchasers // You see EVERYTHING these users did, including pre-purchase behavior
Types of Segments
- User Segments: Users matching criteria across all their sessions. “Users who ever purchased” includes all sessions for those users including before and after purchase.
- Session Segments: Sessions matching criteria. “Sessions with a purchase” shows only sessions where a purchase occurred.
- Event Segments: Events matching criteria. Similar to a filter but combinable with other segment logic.

When to Use Filters
- Restricting to a specific page, country, or device that applies to all your analysis
- Excluding internal traffic or bots from all metrics
- Setting a date range or event type restriction that applies globally
When to Use Segments
- Comparing behavior of two groups (purchasers vs non-purchasers)
- Understanding the full journey of a defined user group
- Cohort analysis (users who first visited in January)
- Any time you want ALL data for a group, not just data matching a specific event
BigQuery Equivalent
-- GA4 Segment logic in BigQuery: all events for purchasers
WITH purchasers AS (
SELECT DISTINCT user_pseudo_id
FROM `project.dataset.events_*`
WHERE event_name = 'purchase'
AND _TABLE_SUFFIX >= FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAYS))
)
SELECT
e.event_name,
COUNT(*) as event_count,
COUNT(DISTINCT e.user_pseudo_id) as users
FROM `project.dataset.events_*` e
INNER JOIN purchasers p ON e.user_pseudo_id = p.user_pseudo_id
WHERE e._TABLE_SUFFIX >= FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAYS))
GROUP BY event_name
ORDER BY event_count DESC;
-- Shows full behavior profile: page_view, scroll, view_item, add_to_cart, purchase
The most common analysis mistake is using a filter when you should be using a segment — resulting in event-level data when you need user-level behavioral context.
Related guides: GA4 Predictive Audiences, GA4 Reporting Identity, BigQuery Cohort Analysis.
