GA4 to Adobe Analytics metric translation reference

last verified · against GA4 and Adobe Analytics official documentation as of 2026-07

Map Adobe Analytics visits, unique visitors, eVars, props, and success events to GA4 sessions, users, custom dimensions, and key events, with limits and gotchas.

What this is

A lookup card that maps Adobe Analytics dimensions, metrics, and session rules to their nearest GA4 equivalents, with each platform’s scope, limit, and persistence behavior stated side by side. Use it when building an Adobe-to-GA4 migration crosswalk or reconciling a dual-tagging period; every value was read from the official page listed under Sources on the date in the header.

Sessions and visits

Adobe closes and splits visits on several hard rules; GA4 has an inactivity timeout only and reports sessions as a statistical estimate. They do not reconcile exactly.

Rule Adobe Analytics Visit GA4 Session
Inactivity timeout New visit when > 30 min lapse between hits Session ends after 30 min inactivity (default)
Timeout config Fixed Admin > Data Streams > Configure tag settings > Adjust session timeout (hours/minutes); apps use setSessionTimeoutDuration or extend_session
Maximum duration Force-split after 12 continuous hours of hits without a 30-min gap No maximum duration
Hit-count split New visit after 2,500 hits without a new session No hit-count cap
Bot-defense split Visit ends if > 100 hits occur in the first 100 seconds No equivalent
Midnight boundary Visit continues into the next day Not restarted at midnight
New campaign params Not applicable Not restarted on new campaign parameters (unlike UA)
Counting method Exact HyperLogLog++ (HLL++) estimate of unique session IDs

GA4 auto-collects a session_start event when a session begins, generating ga_session_id (timestamp in seconds at session start) and ga_session_number (count of that user’s total sessions).

What starts a new Adobe visit versus what does not (when hits stay under the 30-minute gap):

Starts a NEW Adobe visit Does NOT start a new visit
Deleting cookies mid-session Closing the browser
Resuming after a 30+ minute idle tab Restarting the computer
Switching browsers Changing networks
Using a different device

Users and visitors

Metric Definition
Adobe Unique Visitors The number of unique visitor IDs for a given dimension item. A visitor visiting every day for a month still counts once; report totals are deduplicated across the table’s date range.
GA4 Total Users The number of unique users who triggered any event in the date range.
GA4 Active Users The number of unique users who engaged in the date range. In GA4 reports the metric labeled “Users” defaults to Active Users, not Total Users.

A user becomes active via an engaged session, or collection of first_visit / engagement_time_msec (web), first_open / engagement_time_msec (Android), or first_open / user_engagement (iOS). GA4 emphasizes Active Users as its primary metric where Universal Analytics emphasized Total Users, which makes the default GA4 “Users” number lower than a raw visitor count.

Variable crosswalk: eVars, props, events to GA4

Adobe variable Scope / persistence Adobe limit Closest GA4 mapping GA4 scope
prop (c1c75) Hit-scoped; does not persist beyond the hit it is set on 75 props, 100-byte limit Event-scoped custom dimension Event
eVar Persists beyond the set hit; last (most-recent) allocation and customizable expiry by default (default visit-level) 250 eVars (contract-dependent), 255-byte limit User-scoped custom dimension or event parameter User / Event
success event (event1event1000) Counter (integers only), Numeric (decimals, no currency conversion), or Currency (monetary, auto-converts) 1000 custom events on most non-legacy contracts Key event and/or custom metric

Notes:

  • Props support pathing and can be enabled as list props (multiple values in one hit). Enabling pathing makes Entry and Exit dimensions available.
  • Props appear in real-time reporting; eVars have a roughly 30-minute reporting delay.
  • GA4 user properties persist but are not retroactive and have no eVar-style allocation or expiry model. Reproduce eVar persistence at collection time (see Quick recipes).
  • Adobe event serialization enables deduplication via eventx.id in XDM, or a serialization text field in the Adobe Analytics extension.
  • Prebuilt Adobe events include purchase (Orders), prodView (Product Views), and cart events scOpen / scAdd / scRemove / scView / scCheckout.

GA4 custom definitions and collection limits

GA4’s registration slots are far smaller than Adobe’s variable inventory, so not every eVar, prop, or event can become a registered custom definition.

Custom definition Standard 360
Event-scoped custom dimensions 50 125
User-scoped custom dimensions 25 100
Item-scoped custom dimensions 10 25
Custom metrics 50 125
Calculated metrics 5 50
  • Scopes: event-scoped reports on event parameters; user-scoped reports on user properties; item-scoped covers ecommerce product-array data such as color or size. Custom metrics analyze numerical event-parameter values.
  • After deleting custom dimensions you must wait 48 hours before adding new ones.

Collection limits (enforced at collection, not by the interface):

Limit Value
Parameters per event 25
User properties per property 25
Event name length 40 characters
Parameter name length 40 characters
Parameter value length 100 characters (page_location 1,000, page_title 300)
User property name / value 24 / 36 characters
Distinct event names Web: unlimited; app streams: 500 per app user

Events, key events, and conversions

Concept Adobe GA4
Action count Success event (event1event1000) Event with parameters (up to 25 per event)
Business-critical action Marked success event Key event: any collected event can be marked; the foundation for Google Ads conversions
“Conversions” Refers only to Google Ads campaign-optimization actions after the rename; reports now show “Key events”
Model Event -> Key Event -> Conversion (key events marked in Analytics; conversions created in Google Ads from a key event)

GA4’s “Is key event” dimension populates the text true when an event was marked as a key event; “Event name” populates with the event’s name (for example purchase).

Engagement and bounce

GA4 bounce is the inverse of engagement, which is directionally opposite to the Adobe/UA single-hit definition.

Concept GA4 Adobe / UA
Engaged session Lasts > 10 sec, OR has a key event, OR has 2 or more screen/page views
Engagement rate Percentage of engaged sessions
Bounce rate Percentage of sessions that were NOT engaged, i.e. 1 − engagement rate Single-hit / single-event visits

GA4 excludes first_visit, first_open, and session_start from engaged-session calculations even if they are marked as key events. The CJA default bounce counts sessions with only a single event/hit recorded (see the CJA note below).

Adobe counting metrics: instances, occurrences, page views

Metric Definition
Instances The number of times a dimension was explicitly defined in an image request (counted only when the value is actively set).
Occurrences Count of hits where a dimension item was set OR persisted.
Page Views All page-view tracking calls t() in a report suite; excludes link-tracking tl() calls and Data Sources data.

Example: an internal search that sets eVar1 on the search page and persists across 5 subsequent pages records 1 Instance versus 6 Occurrences.

Segments and audiences

Adobe segment container GA4 audience scope
Visitor (broadest, across all activity) Across all sessions (user lifetime)
Visit (single session) Within the same session
Hit (most granular; covers link-tracking and mobile track-action calls) Within the same event
  • Adobe sequential segmentation uses the THEN operator to enforce navigation order.
  • GA4 audiences are forward-looking, not retroactive: they accumulate users from creation onward. Exception: Google Ads audiences backfill the last 30 days.
  • GA4 audience maximum membership duration is 540 days / 18 months (14 months if “Reset on new activity” is enabled).
  • Adobe segments apply retroactively to historical data; GA4 audiences do not.

Attribution and analysis tooling

Concept Adobe GA4
Default attribution CJA applies no attribution model by default (configured per component/data view) Data-driven attribution at the property level
Deep analysis Analysis Workspace Explorations: Free-form, Cohort, Funnel, Segment overlap, User exploration, Path exploration, User lifetime
Pathing Flow visualization / classic pathing Path exploration
High cardinality Own unique-value ceilings Any dimension over 500 values is high-cardinality (guidance); over a report’s row limit, low-frequency values collapse into an (other) row. Row limits vary by property type (360 higher), report, and query complexity.
Data model Classic AA: eVars, props, success events. CJA: XDM-schema based, with no eVars, props, or success events, and no limit on unique dimension values. Event-based: every interaction is a named event with up to 25 parameters.

CJA note: the “no eVars/props/success events”, “no attribution by default”, and single-event bounce behaviors describe Adobe Customer Journey Analytics (CJA), not classic Adobe Analytics. Classic Adobe Analytics behavior can differ; the classic rows above were confirmed from the component pages.

Gotchas

  1. Adobe Visits and GA4 Sessions never reconcile exactly. Cause: Adobe splits a visit at 12 hours, 2,500 hits, or 100 hits in the first 100 seconds, while GA4 has no max duration and reports sessions as an HLL++ estimate. Fix: treat parity as directional only; for exact GA4 session counts use the BigQuery export.
  2. GA4 “Users” comes in lower than Adobe Unique Visitors. Cause: the default GA4 “Users” is Active Users (engagement-gated), whereas Adobe counts every distinct visitor ID. Fix: compare Adobe Unique Visitors against GA4 Total Users explicitly, and still expect identity/cookie gaps.
  3. Migrated eVar values only show on the event where they were sent. Cause: eVars persist with allocation and expiry; GA4 event parameters are hit-scoped with no persistence. Fix: reproduce persistence at collection time by populating the parameter on every relevant event.
  4. Bounce rate looks inverted across platforms. Cause: GA4 bounce is 1 − engagement rate, while Adobe/UA bounce counts single-hit visits. Fix: never compare bounce at face value; rebuild the target platform’s definition as a custom segment.
  5. Itemized Adobe values collapse into (other) in GA4. Cause: GA4 groups low-frequency values into (other) once a report exceeds its row limit, and treats dimensions over 500 values as high-cardinality. Fix: use the BigQuery export or bucket values to reduce cardinality.
  6. Stakeholders cannot find “Conversions” in GA4. Cause: the March 2024 rename shows “Key events” in reports; “Conversions” now means Google Ads actions only. Fix: map Adobe success events to GA4 key events and reserve “conversions” for the Google Ads context.
  7. Not every Adobe variable fits GA4’s registration slots. Cause: GA4 standard caps at 50 event-scoped + 25 user-scoped + 10 item-scoped dimensions and 50 custom metrics, well below Adobe’s 250 eVars / 75 props / 1000 events. Fix: register business-critical variables; leave the rest as raw parameters, and batch-plan around the 48-hour re-add wait.
  8. eVar/prop values truncate or fail to register in GA4. Cause: GA4 caps parameter values at 100 characters and names at 40 (names over 40 do not report as key events), against Adobe’s 255-byte eVar payloads. Fix: audit long payloads before migration; shorten names to <= 40 chars and split oversized values.

Quick recipes

Exact GA4 session count from the BigQuery export, bypassing the UI’s HLL++ estimate:

exact-sessions.sql
-- One session = one distinct (user, ga_session_id) pair.
SELECT COUNT(DISTINCT CONCAT(
user_pseudo_id, '-',
CAST((SELECT value.int_value FROM UNNEST(event_params)
WHERE key = 'ga_session_id') AS STRING)
)) AS sessions
FROM `project.analytics_123456.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260701' AND '20260731';

Compare Adobe Unique Visitors against GA4 Total Users (not the default Active Users):

total-users.sql
-- Total Users = every user who triggered any event in the range.
SELECT COUNT(DISTINCT user_pseudo_id) AS total_users
FROM `project.analytics_123456.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260701' AND '20260731';

Reproduce eVar last-touch persistence at collection time, because GA4 parameters are hit-scoped:

evar-persistence.js
// Carry the value on every relevant event, not just where it was first set.
let lastCampaign = null;
function trackWithPersisted(name, params = {}) {
if (params.campaign) lastCampaign = params.campaign; // "set" like an eVar
gtag('event', name, {
...params,
campaign: params.campaign ?? lastCampaign,
});
}

Rebuild GA4’s engaged-session rule for cross-platform bounce parity:

engaged-sessions.sql
-- Engaged if the session runs > 10s OR has 2+ page/screen views.
-- (The key-event branch is omitted here for brevity; add it if used.)
WITH per_session AS (
SELECT
CONCAT(user_pseudo_id, CAST((SELECT value.int_value FROM UNNEST(event_params)
WHERE key = 'ga_session_id') AS STRING)) AS sess,
COUNTIF(event_name IN ('page_view', 'screen_view')) AS views,
SUM((SELECT value.int_value FROM UNNEST(event_params)
WHERE key = 'engagement_time_msec')) AS engaged_ms
FROM `project.analytics_123456.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260701' AND '20260731'
GROUP BY sess
)
SELECT
1 - SAFE_DIVIDE(COUNTIF(engaged_ms > 10000 OR views >= 2), COUNT(*))
AS bounce_rate
FROM per_session;

Clamp migrated Adobe payloads to GA4’s collection limits before they truncate:

payload-length-audit.js
// Adobe eVars allow 255 bytes; GA4 values cap at 100 chars, names at 40.
// Names over 40 chars will not report as key events.
const GA4_VALUE_MAX = 100;
const GA4_NAME_MAX = 40;
function toGa4Param(name, value) {
const key = name.slice(0, GA4_NAME_MAX);
const val = String(value).slice(0, GA4_VALUE_MAX);
return { [key]: val };
}

Sources

Official pages these values were read from (read 2026-07-20):

Scope notes: the compare-data and processing-differences pages describe GA4 versus Customer Journey Analytics (CJA), so the CJA-specific rows are flagged as such rather than attributed to classic Adobe Analytics. GA4 standard-report table row limits and Adobe unique-value processing ceilings are left unstated where the fetched pages did not give a hard number.

Changelog

  • — Initial version, verified against official documentation.

dataLayer

0 events · 0 sent

    • home /
      writing /writing
      guides /guides
      work /#work
      about /about
      colophon /colophon
      toggle analyst mode ctrl+.
      print session receipt /#receipt