Launch Offer2 free audits with all 229 checks. No credit card required.Start free audit

GA4 User Properties: Enriching Behavioural Data With First-Party Attributes (2026)

Intermediate

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 forUse user properties for
What happened in this eventWho the user is
Product ID, page type, form IDCustomer tier, subscription status
Values that change per eventValues that are stable across visits
Transaction amountsAccount 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?

Reproduce the problem in the live implementation, isolate whether it is scoped to one report or flow, and compare it against at least one secondary source before changing the setup.

How do I know whether the fix actually worked?

You need before-and-after evidence in the browser and in the downstream report. A clean-looking dashboard without validation is not enough.

When should this become a full GA4 audit instead of a quick fix?

If the issue touches attribution, consent, revenue, campaign quality, or data trust for more than one workflow, it is usually safer to audit the surrounding implementation than patch only the visible symptom.

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.

These findings come from auditing thousands of GA4 properties. See how your property compares

GA4 Audits Team

GA4 Audits Team

Analytics Engineering

Specialising in GA4 architecture, consent mode implementation, and multi-layer audit frameworks.

Share