What does user_pseudo_id identify in a GA4 export?

The Citead team, updated

In short. user_pseudo_id groups GA4 export events by a pseudonymous user value and pairs with ga_session_id for session analysis.

Definition: In a Google Analytics 4 (GA4) BigQuery export, user_pseudo_id is the STRING field for the pseudonymous identifier associated with a user and an event. For website data, Google says it is assigned when the user visits the site, so rows sharing the value can be grouped for pseudonymous user-level analysis.

Key facts

  • Google's BigQuery Export schema places user_pseudo_id in the user fields and gives its data type as STRING.
  • The same schema describes it as a pseudonymous ID, with an app instance ID as its example, assigned when a user first opens the app or visits the site.
  • Google documents user_id separately as the unique ID assigned to a user.
  • The schema creates a daily events_YYYYMMDD table when the Daily export option is enabled.
  • Google's Analytics sessions documentation recommends joining user_pseudo_id with a session ID to obtain a unique identifier for each session outside Analytics.

What does the field identify?

As of October 2026, Google's schema places user_pseudo_id under the user fields, which contain information that uniquely identifies the user associated with the event. It defines the field as a pseudonymous ID for the user and says that the identifier is assigned when the user first opens the app or visits the site. For a website export, the value is therefore the pseudonymous identifier attached to the exported event record.

The field has a different role from user_id. Google defines user_id as the unique ID assigned to a user, while user_pseudo_id is the pseudonymous ID. Keep those columns separate when a query needs to distinguish an implementation's signed-in identifier from the exported pseudonymous value.

How does it group website events?

The schema says that event fields uniquely identify an event and that user fields identify the user associated with that event. A query can use user_pseudo_id as a grouping key to place exported rows with the same pseudonymous value in one result group. This counts events associated with each value, without turning the value into a name or account identifier.

The daily export uses a dataset named analytics_<property_id> and daily tables named events_YYYYMMDD. An adapted query for one daily table is:

SELECT
  user_pseudo_id,
  COUNT(*) AS event_count
FROM `PROJECT_ID.analytics_PROPERTY_ID.events_YYYYMMDD`
WHERE user_pseudo_id IS NOT NULL
GROUP BY user_pseudo_id;

The schema also says that event_params is repeated for each key associated with an event. That repeated structure is separate from user_pseudo_id, which is a top-level user field in the exported event record.

How is a session distinguished from a user?

Google defines a session as a period during which a user interacts with a website or app. When a session starts, Analytics generates a session_start event, a ga_session_id, and a ga_session_number. The session ID is generated from the session start timestamp in seconds.

For session analysis outside Analytics, Google's sessions documentation recommends joining user_id or user_pseudo_id with session_id to form a unique identifier for each session. In practice, user_pseudo_id groups the pseudonymous user value, while the pair with ga_session_id separates that user's sessions.

What should be checked in the export?

Google says that daily tables can receive events for their dates for up to three days after the event date because devices may send data late. Events arriving after that window are not recorded. A report that groups recent events by user_pseudo_id should therefore account for this documented update window.

FAQ

Is user_pseudo_id the same as user_id?

No. Google's schema defines user_id as the unique ID assigned to a user and user_pseudo_id as the pseudonymous ID associated with the user and event.

Does user_pseudo_id identify one person across devices?

Google's schema calls the field pseudonymous and gives an app instance ID as an example. It documents assignment when a user first opens an app or visits a site, while the page does not describe a universal person-level mapping across devices.

How do I create a session key from the export?

Join user_pseudo_id with ga_session_id. Google says that this combination gives a unique identifier for each session when analyzing sessions outside Analytics.

Sources

  1. Google Analytics Help, "BigQuery Export schema", undated
  2. Google Analytics Help, "About Analytics sessions", undated

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark