What are GA4 user properties?
GA4 user properties are attributes attached to a user (device) rather than to a specific event or session. Unlike event parameters (which describe what happened in a particular event), user properties describe the user themselves — their account status, customer tier, geographic region preference, language, or any CRM attribute you choose to pass.
User properties persist across sessions: once set, they remain attached to the user's user_pseudo_id until overwritten. The 25 custom user property limit per property is the most important constraint. With 25 slots, you must prioritise which user attributes are analytically and commercially valuable enough to warrant permanent tracking.
The five highest-value user properties for most businesses: customer tier, login status, subscription plan, lifetime purchase count, and first-purchase channel.
Event parameters vs user properties: the right choice
| Use event parameters for | Use user properties for |
|---|---|
| What happened in this event | Who the user is |
| Product ID, page type, form ID | Customer tier, subscription status |
| Values that change per event | Values that are stable across visits |
| Transaction amounts | Account type (free/paid/enterprise) |
| Campaign UTMs (set automatically) | CRM segment membership |
Rule of thumb: If the value changes event-to-event, it's an event parameter. If it describes the user across all their sessions, it's a user property.
Where user properties are especially powerful: Audiences and Explorations. A user property like customer_tier = gold can be used to build a Gold Customer audience in GA4 that feeds directly into Google Ads for tier-specific campaigns — without requiring the user to trigger a specific event.
The 25-property limit: how to allocate wisely
With only 25 custom user property slots, every slot should answer a question your analytics team or marketing team consistently asks:
High-value allocations (use these):
login_status— logged_in / not_logged_in (affects engagement metrics interpretation)customer_tier— bronze / silver / gold / platinum (for CRM-aligned targeting)account_age_days— number of days since account creation (cohort proxy)lifetime_purchase_count— 0 / 1 / 2–5 / 6+ (loyalty segmentation)subscription_plan— free / starter / pro / enterprise (for SaaS)first_touch_channel— the channel that originally acquired the user (persists across all sessions)country_preference— user's preferred country/locale (for multi-market sites)has_email_consent— true / false (for email re-targeting eligibility)
Low-value allocations (avoid these):
- Highly specific internal IDs that aren't used in reporting
- Attributes that change so frequently they're unreliable by the time they're reported (e.g., current_cart_total — use an event parameter instead)
- Duplicate information already captured by standard GA4 user dimensions
Implementation: how to set user properties
Via gtag.js (client-side)
Call this after authentication, when you have access to the user's account data. The properties persist on the device's GA4 cookie until overwritten.
Via GTM (recommended for most implementations)
Want to see whether attribution loss is already distorting your channel data?
Create a Custom HTML tag in GTM that fires on the login or account page load event:
Fire this tag from a trigger that fires when the user's account data is available in the dataLayer (after login, on authenticated page loads).
Via GA4 Measurement Protocol (server-side, most reliable)
For properties where user attributes come from your backend (CRM data, order history), use the Measurement Protocol to set user properties server-side:
Server-side setting is the most reliable because it doesn't depend on the user having cookies enabled or JavaScript executing correctly.
Registering user properties as custom dimensions
User properties are tracked but not reportable until registered as custom dimensions in GA4 Admin:
Admin → Custom Definitions → Custom Dimensions → Create custom dimension
For each user property:
- Dimension name: Human-readable name (e.g., "Customer Tier")
- Scope: User
- User property name: Exact key name used in
gtag('set', 'user_properties', {...})(e.g.,customer_tier) - Description: What this property represents
After registration, the dimension appears in reports and Explorations within 24 hours. It is visible only for data collected after the custom dimension was created — not retroactively.
The five user properties that improve audience quality
1. login_status Separates logged-in users (with known intent and account history) from anonymous visitors. Logged-in user audiences convert at significantly higher rates for remarketing.
2. customer_tier Enables tier-based campaigns: suppress ads to Gold customers who are already loyal, increase bids on Silver customers who are near the Gold threshold, and run win-back campaigns specifically for Bronze customers who haven't purchased recently.
3. lifetime_purchase_count Bucket into 0 (never purchased), 1 (one-time buyer), 2–5 (repeat buyer), 6+ (loyal customer). Each bucket deserves different messaging and bid strategies.
4. subscription_plan For SaaS: free users vs paid users. Suppress Google Ads from showing to paying customers for acquisition campaigns. Run upgrade-focused campaigns specifically targeting free users.
5. has_email_consent Know which users have opted in to email marketing. For paid campaigns: suppress email-subscribed users from Display (they'll be reached more efficiently via email). Focus paid budget on users you can't reach by email.
FAQ: GA4 User Properties: Enriching Behavioural Data With First-Party Attributes
What should a team validate first when ga4 user properties: enriching behavioural data with first-party attributes appears?
How do I know whether the fix actually worked?
When should this become a full GA4 audit instead of a quick fix?
Related guides for GA4 User Properties: Enriching Behavioural Data With First-Party Attributes
ChatGPT, Atlas, Perplexity, Comet, Claude: How Each Shows Up in GA4 (2026 Reference)
In 2026, AI traffic in GA4 splits into three buckets. Browsers and assistants that pass clean referrers (Perplexity web, Perplexity Comet, Claude.ai, Copilot, Gemini standalone) appear with a recognisable source / medium like perplexity.ai / referral. Surfaces that strip the referrer (ChatGPT Atlas…
Perplexity Sources Report: How to Influence What It Cites in 2026
Perplexity citations correlate strongly with five factors: (1) ranking in Bing's top 10 for the underlying query (Perplexity uses Bing's index as fallback alongside its own ~5 billion-URL custom crawler), (2) a clear direct answer in the first 50 words of the relevant page…
Check GA4 User Properties: Enriching Behavioural Data With First-Party Attributes before campaign reporting gets blamed for the wrong issue
Run a free GA4 audit to spot attribution breaks, UTM governance issues, self-referrals, and source/medium loss fast.