In short. is_active_user is a daily-table Boolean flag for user activity in GA4 event export data.
Definition:
is_active_useris a Boolean field in the GA4 event export. Google defines it as whether the user was active at any point in the calendar day and documents it as populated only in dailyevents_YYYYMMDDtables.
Key facts
- Google creates an
events_YYYYMMDDtable each day when the Daily export option is enabled, according to its BigQuery Export schema. - A streaming export creates
events_intraday_YYYYMMDD, which is populated continuously and deleted at the end of the day after the daily table is complete. is_active_userhas the Boolean type.Truemeans active andFalsemeans inactive at some point in the calendar day; the field is populated only in daily tables.- Google defines Active users as the number of people who engaged with a site or app in the specified date range in Understand user metrics.
- Google's developer documentation says to select active users by limiting the event query to rows where
is_active_useris true in Bridge the gap between the Google Analytics UI and BigQuery export.
Why is the field missing from intraday tables?
The export has two table patterns with different roles. The daily table is named events_YYYYMMDD. The optional intraday table is named events_intraday_YYYYMMDD, receives events continuously during the day, and is deleted after the daily table is complete. Google's schema lists is_active_user under the user fields and states that it is populated only in the daily tables. An intraday table therefore has no usable is_active_user column to select.
The distinction matters when a query uses a broad table wildcard. A query that reaches an intraday table while asking for is_active_user can fail because that table does not contain the field. For an active-user calculation, select completed daily tables or a table pattern that resolves only to events_YYYYMMDD tables.
What does is_active_user mean?
The value describes the user's active status for the calendar day associated with the event row. Google's user-metrics documentation defines an active user as someone with an engaged session or one of the activity signals that Analytics collects. For a website, the documented signals are the first_visit event or the engagement_time_msec parameter. For an Android app, they are first_open or engagement_time_msec; for an iOS app, they are first_open or user_engagement.
Analytics considers the user active as soon as it detects the user_engagement event within a second. The same documentation defines an engaged session as one lasting 10 seconds or longer, or one with 1 or more conversion events or 2 or more page or screen views. The field is therefore a daily activity flag attached to exported event data, while Active users in a report is a unique-user metric for the selected date range.
How should a daily export query count active users?
Google's developer article explains that counting all distinct users who logged an event produces Total Users, while comparable Active Users calculations filter for active rows. It gives this query pattern:
WITH
ActiveUsers AS (
SELECT
user_pseudo_id
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE _TABLE_SUFFIX BETWEEN 'start_date' AND 'end_date'
AND is_active_user
GROUP BY 1
)
SELECT
COUNT(DISTINCT user_pseudo_id) AS exact_active_user_count,
APPROX_COUNT_DISTINCT(user_pseudo_id) AS approx_active_user_count
FROM ActiveUsers;
The query groups by user_pseudo_id before counting, so repeated event rows for one pseudonymous user contribute one user to the result. Its table pattern is intended for daily event export data. If the requested suffix range can include an intraday table, use daily table selection that excludes that table before referencing is_active_user.
Why can a BigQuery count differ from a GA4 report?
Google says the primary user metric used for GA4 reporting is Active Users. The developer article also says that the calculation method varies with the selected Reporting Identity. A raw distinct-user count and a filtered active-user count answer different questions, so the field choice affects comparisons with the interface.
Daily tables can also change after their table date. Google's schema says Analytics updates daily tables with late events for up to three days after the event date, and events arriving after that window are not recorded. A comparison made before that update period has a different data state from a later query.
Related terms
- Why can a GA4 daily BigQuery table change after export?
- How do I query AI referral sessions in the GA4 BigQuery export?
FAQ
Why does a query work on a daily table but fail on an intraday table?
is_active_user is populated only in events_YYYYMMDD. The intraday table is a separate streaming table with a different available field set.
Does is_active_user count users or events?
The field is stored on exported event data as a Boolean. Count distinct user identifiers after filtering the field when the result is intended to represent Active users.
Why can a daily active-user result change later?
Analytics can update a daily table with late events for up to three days after the event date. A later query can therefore read a more complete daily table.
Sources
- Google Analytics Help, "BigQuery Export schema", undated
- Google Analytics Help, "[GA4] Understand user metrics", undated
- Google for Developers, "Bridge the gap between the Google Analytics UI and BigQuery export", 15 June 2026
Check how a page reads to answer engines. Open the GEO score analyzer