Skip to content

Grokem · https://www.grokem.com/data/data-analytics/web-analytics/ga4-vs-adobe-analytics-out-of-the-box-tracking

Web AnalyticsComparison

GA4 vs Adobe Analytics: what each tracks out of the box and what you must build

GA4's base tag sends page views, sessions and engagement on its own, and Enhanced Measurement adds clicks, downloads, search, scroll, forms and video. Adobe sends nothing until a rule or sendEvent fires. Every layer side by side, with a worked shop example.

Grokem Editorial

Editorial desk

Published
  • 18 min read

GA4 and Adobe Analytics start from opposite ends. Put the Google tag on a page and GA4 records page views, sessions and engagement straight away; switch on Enhanced Measurement and it adds outbound clicks, file downloads, site search, scroll depth, form interactions and YouTube video events. Install Adobe Experience Platform Tags with the Adobe Analytics extension, or with the Web SDK, and nothing reaches a report suite until a rule sends a beacon or calls sendEvent. Once that first page view arrives, Adobe fills in a long list of dimensions and metrics by itself, and a few settings add link tracking.

This guide sorts what each tool collects into three layers:

  1. Base script – what arrives with the standard install and nothing else.
  2. Setting or extension – what a switch in the admin, a checkbox in an extension or a datastream option turns on.
  3. Custom implementation – what needs events, rules, a data layer or JavaScript, in Google Tag Manager or in Adobe Tags.

For each item it says where the data appears in reports and how soon. A side-by-side table and a worked shop example close the guide.

A grid comparing GA4, Adobe Analytics with AppMeasurement and Adobe Analytics with the Web SDK across three layers: what the base script sends alone, what a setting or extension adds, and what has to be built. GA4 sends page views and sessions alone; both Adobe setups wait for a rule or sendEvent.A grid comparing GA4, Adobe Analytics with AppMeasurement and Adobe Analytics with the Web SDK across three layers: what the base script sends alone, what a setting or extension adds, and what has to be built. GA4 sends page views and sessions alone; both Adobe setups wait for a rule or sendEvent.
The three layers of tracking in each setup.

What "only the base script" means in each tool

Setup The base install What sends the first hit
GA4 The Google tag (gtag.js), or a Google tag in Google Tag Manager, with the measurement ID of a web data stream The tag itself: it sends page_view when the page loads
Adobe Analytics with AppMeasurement The Tags embed code and the Adobe Analytics extension, which loads AppMeasurement and names a report suite per environment A Tags rule with the Set Variables and Send Beacon actions: s.t() counts a page view, s.tl() sends a link call that does not
Adobe Analytics with the Web SDK The Tags embed code and the Web SDK extension, plus a datastream that has the Adobe Analytics service and a report suite ID A sendEvent call, usually the Send event action of a Tags rule

For Adobe, "base script" in this guide therefore means the extension plus the one page-view rule (or sendEvent) that every implementation starts with. Without it, AppMeasurement loads and sends nothing. The Web SDK is the one exception in Adobe's stack: with click collection on, which is its default, link clicks are collected without any rule.

Three rows showing how a hit travels: the Google tag sends events to a GA4 property; a Tags rule sends an AppMeasurement image request to a report suite; the Web SDK sends XDM to an Edge Network datastream, which applies geo and device lookups and forwards the hit to the report suite.Three rows showing how a hit travels: the Google tag sends events to a GA4 property; a Tags rule sends an AppMeasurement image request to a report suite; the Web SDK sends XDM to an Edge Network datastream, which applies geo and device lookups and forwards the hit to the report suite.
How a hit reaches the reports in GA4, Adobe with AppMeasurement and Adobe with the Web SDK.

GA4

Layer 1: what the Google tag sends by itself

Event When it fires Main parameters
page_view Each page load, and each browser-history change made by the site (single-page apps) page_location, page_referrer, engagement_time_msec
first_visit The first time a user visits the site client_id, ga_session_id, ga_session_number, page_location, page_referrer, page_title
session_start When a user engages with the site the same session parameters as first_visit
user_engagement When the page has been in focus for at least one second engagement_time_msec

Google lists page_view among the Enhanced Measurement events, but its collection cannot be turned off; only the history-change part has its own switch. Every event also carries five parameters: language, page_location, page_referrer, page_title and screen_resolution.

From these events GA4 fills, with no further setup:

  • Geography – country, region and city, from the IP address.
  • Platform and device – device category, browser and operating system.
  • Page – page location, page title and landing page.
  • Time – date, hour, month and year.
  • Traffic source – source and medium from the referrer, or from utm_ parameters on the landing URL when they are present.
  • Users and sessions – users, new users, sessions, engaged sessions, engagement rate, bounce rate, views and engagement time.

An engaged session lasts longer than 10 seconds, has a key event, or has two or more page views. Bounce rate in GA4 is simply the share of sessions that were not engaged, which is a different measure from Adobe's single-hit bounce described below.

Layer 2: settings that switch more on

Enhanced Measurement lives under Admin > Data streams > your web stream. Turning on its main switch turns on all of its options; each one can then be switched off on its own.

Option Event Fires when Parameters Watch out for
Scrolls scroll 90 % of the page height first becomes visible, once per page engagement_time_msec One threshold only; 25 %, 50 % or 75 % need a custom trigger
Outbound clicks click A link leads to another domain link_classes, link_domain, link_id, link_url, outbound Domains in your cross-domain setup do not count as outbound
Site search view_search_results A page loads with a search query parameter search_term Looks for q, s, search, query and keyword; add your own in advanced settings
Form interactions form_start, form_submit First interaction with a form in a session; a submit form_id, form_name, form_destination, form_submit_text The parameters appear in reports only after you register them as custom dimensions; test that form_submit matches real submissions
Video engagement video_start, video_progress, video_complete An embedded YouTube video starts, passes 10, 25, 50 and 75 %, ends video_current_time, video_duration, video_percent, video_provider, video_title, video_url, visible Only YouTube embeds with JavaScript API support (enablejsapi=1 on the embed)
File downloads file_download A link points to a file with a common extension (pdf, xlsx, docx, zip, mp4, mp3 and others) file_extension, file_name, link_text, link_url Files served without an extension in the URL are missed

Other settings that add data without code:

  • Google signals populates the demographics dimensions (age, gender, interests). Google applies data thresholds to reports that use them, so small segments can be withheld.
  • Google Ads link fills the Google Ads campaign, ad group and customer dimensions.
  • Search Console link adds two reports, Google organic search queries and Google organic search traffic. Their report collection is unpublished by default: publish it from the Library.
  • Session timeout and engaged-session timer default to 30 minutes and 10 seconds; both are adjustable in the Google tag settings.
  • Data retention is 2 or 14 months for standard properties. It affects explorations and funnel reports only, not the standard reports.

Layer 3: what you have to build

  • Ecommerce. GA4 defines the events but you send them: view_item_list, select_item, view_item, add_to_cart, add_to_wishlist, view_cart, remove_from_cart, begin_checkout, add_shipping_info, add_payment_info, purchase, refund, view_promotion and select_promotion. A purchase needs a transaction_id; each item needs an item_id or an item_name; send currency whenever you send value.
  • Leads and accounts. Recommended events such as sign_up, login and generate_lead are sent by your code or by Tag Manager triggers.
  • Signed-in users. user_id is set in the tag configuration, or with gtag('set', {user_id: …}) after a login; send null when the user signs out.
  • Anything else – button clicks that are not outbound links, internal promotions, error messages, product attributes – is a custom event with custom parameters. A parameter shows in reports only once registered as a custom dimension or metric (standard properties: 50 event-scoped and 25 user-scoped dimensions, 10 item-scoped dimensions, 50 custom metrics), and data appears 24–48 hours after you create it.

Adobe Analytics

Layer 1: what the page-view call gives you

With AppMeasurement, the first s.t() call fills, with no variables set:

  • Page – the page name, which falls back to the page URL when pageName is not set (truncated to 100 bytes either way), and Page URL.
  • Referrer and Referring domain.
  • Geography – derived server-side from the visitor's IP address.
  • Technology – browser and operating system, derived server-side from the user agent; monitor resolution and browser width and height.
  • Visits, unique visitors, page views, entries, exits, time spent and bounces. A bounce in Adobe is a visit with exactly one hit, so a page view followed by an automatic exit-link call is not a bounce.

Visitors are identified by the first identifier available: a custom visitorID, the legacy s_vi cookie, the Experience Cloud ID (ECID, set by the Experience Cloud ID Service or by the Web SDK), a fallback ID AppMeasurement generates, and finally IP address plus user agent. Adobe recommends ECID wherever possible.

With the Web SDK, every sendEvent carries context fields collected automatically:

Context XDM fields Appears in Analytics as
web web.webPageDetails.URL, web.webReferrer.URL Page URL, Referrer
device device.screenWidth, device.screenHeight, device.screenOrientation Monitor resolution
environment environment.browserDetails.viewportWidth, viewportHeight Browser width, Browser height
placeContext placeContext.localTime, localTimezoneOffset, ianaTimezone Local time (in data feeds)
timestamp timestamp Hit time (always sent)

Adobe counts a Web SDK event as a page view when it carries a page name or URL and no web.webInteraction.type; with webInteraction.type it is a link call; with neither, the Edge Network drops it. Set web.webPageDetails.name yourself, because that field is the Page dimension.

Click collection is on by default in the Web SDK. It records clicks on <a> and <area> elements as internal, exit or download links and fills the Custom link, Exit link and Download link dimensions.

Layer 2: extension, admin and datastream settings

  • Link tracking in the Analytics extension. Track download links (with the list of file extensions it watches), Track outbound links (exit links, judged against your internal-domain filters) and Keep URL parameters. Adobe's documentation does not state their defaults, so open the extension and check them.
  • Activity Map reports link clicks by page region, with an overlay on the page. Enable it in the report suite settings – once enabled it cannot be turned off – then use the Activity Map setting of the Analytics extension (version 1.9.0 or later) or the click data collection of the Web SDK extension (2.23 or later). It adds the Activity Map Link, Region, Page and Link By Region dimensions.
  • Marketing channels are not filled until you create channels and their processing rules. If none exist yet, an automatic setup offers pre-configured channels with rules to start from. Rules apply to data processed after they are saved.
  • Real-time reports must be configured in the report suite: up to three reports, each with one metric and up to three dimensions.
  • Datastream (Web SDK only). Add the Adobe Analytics service with your report suite ID. Adobe's dimension documentation says to enable Geo Lookup and Device Lookup in the datastream for the geography and browser dimensions to be filled from Web SDK data; with no Geo Lookup option selected, geolocation lookups are off, and the default device setting keeps the user-agent and client-hint headers instead of running the lookup.
  • Click collection options (Web SDK). Internal, exit and download links can each be switched off; eventGroupingEnabled (off by default) holds internal-link data until the next page view to send fewer events; filterClickDetails can change or drop link data before it is sent.
  • More context (Web SDK). High-entropy user-agent hints and the one-time Analytics referrer are collected only if you add them to the context setting.

Layer 3: what you have to build

  • Custom variables. eVars (conversion variables) and props (traffic variables) must be enabled in the report suite – eVars with an allocation and an expiration – and success events configured, before a rule sets them. In the Web SDK, eVars map from _experience.analytics.customDimensions.eVars.eVar1 to eVar250, or from your own XDM fields through a mapping.
  • Commerce. Set events (prodView, scAdd, scCheckout, purchase) with the products string – category;product;quantity;price, where price is the total for the quantity – and a purchaseID of up to 20 letters and digits. In the Web SDK the same data goes in commerce (productViews, productListAdds, checkouts, purchases), commerce.order.purchaseID, commerce.order.currencyCode and productListItems (SKU, name, quantity, priceTotal).
  • Page names, site sections and campaign codes. pageName (or web.webPageDetails.name), channel (web.webPageDetails.siteSection) and the tracking code (campaign, or marketing.trackingCode) come from your data layer or a query-string data element. Adobe does not read utm_ parameters into Tracking Code by itself.
  • Internal search, form steps and errors – an eVar for the value and a success event to count it, set by a rule.
  • Scroll depth. The getPercentPageViewed plugin (Common Analytics Plugins extension) records how far a visitor scrolled the previous page; you copy its values into an eVar or prop on the next page. Adobe states the plugin is not yet supported with the Web SDK.
  • Video. Adobe measures video with Adobe Streaming Media, a separate product with its own implementation; there is no automatic YouTube tracking.
  • Signed-in users. A custom visitorID with AppMeasurement, or your own identifier in identityMap with the Web SDK.

When the data shows up in reports

GA4 Adobe Analytics
First look Realtime report, typically within a few minutes Real-time reports, once configured
Standard reports Intraday tables in 2–6 hours; daily tables in about 12 hours for normal-sized properties, later for large ones Hourly batches: about 30–90 minutes, complete typically 2 hours after collection
New custom field 24–48 hours after you register the custom dimension or metric Once the eVar, prop or event is enabled and a rule sets it
Restrictions Data thresholds on demographics and Google signals data; retention setting limits explorations Rules (processing, marketing channels) apply to data processed after they are saved

Side by side

Base = with the standard install only (for Adobe: plus the page-view call). Setting = a switch, checkbox or datastream option. Custom = events, rules or code you write.

Data point GA4 Adobe with AppMeasurement Adobe with Web SDK
Page views Base: page_view, including history changes Base: the page-view rule's s.t() Base: sendEvent with a page name or URL
Page name Base: page title Custom: pageName (falls back to the URL) Custom: web.webPageDetails.name
Page URL and referrer Base Base Base (web context)
Sessions or visits Base: session_start Base: Visits Base: Visits
Users or visitors Base: client ID Base: visitor ID (ECID recommended) Base: ECID
Engagement and bounce Base: engaged sessions; bounce = not engaged Base: time spent; bounce = single-hit visit Base: same as AppMeasurement
Country, region, city Base Base Setting: Geo Lookup in the datastream
Browser, OS, device Base Base Setting: Device Lookup in the datastream
Screen and viewport Base: screen_resolution Base: monitor resolution, browser size Base: device and environment context
Source and medium Base: referrer and utm_ tags Base: referrer and referring domain Base: referrer and referring domain
Marketing channels Base: default channel groups Setting: channels and processing rules Setting: channels and processing rules
Campaign tracking codes Base: utm_ parameters Custom: campaign from the URL Custom: marketing.trackingCode
Exit (outbound) link clicks Setting: Enhanced Measurement Setting: Track outbound links Base: click collection
File downloads Setting: Enhanced Measurement Setting: Track download links Base: click collection
Internal link clicks Custom Setting: Activity Map Base: click collection; Setting: Activity Map
Click map on the page Not available Setting: Activity Map Setting: Activity Map
Site search Setting: Enhanced Measurement (query parameter) Custom: eVar and event Custom: XDM field and mapping
Scroll depth Setting: 90 % only Custom: getPercentPageViewed plugin Custom (the plugin is not supported)
Form interactions Setting: form_start, form_submit Custom Custom
Video Setting: YouTube with JS API Custom: Adobe Streaming Media Custom: Adobe Streaming Media
Ecommerce Custom: recommended events and items Custom: events and products Custom: commerce and productListItems
Sign-ups, logins, leads Custom: recommended events Custom: success events Custom: XDM and mapping
Signed-in user ID Custom: user_id Custom: visitorID Custom: identityMap
Your own attributes Custom: parameters plus custom dimensions Custom: eVars and props enabled in the suite Custom: XDM fields mapped to eVars
Demographics Setting: Google signals No built-in equivalent No built-in equivalent
Google Ads and Search Console data Setting: product links Not built in Not built in
Real-time view Base: Realtime report Setting: real-time reports Setting: real-time reports

Worked example: a small online shop

The site has product pages and a checkout, a blog, a help centre whose search results live at /help/search?q=…, a PDF price list, YouTube how-to videos embedded on product pages and a contact form.

Day one, standard install only.

  • GA4: page views on every page, sessions, users, engagement, country and device, source and medium for every visit. With Enhanced Measurement on, it also records the price-list downloads, help-centre searches (the q parameter is in the default list), clicks to the shop's social profiles, 90 % scrolls on blog posts and contact-form starts and submits. The YouTube videos are tracked only if their embed code includes enablejsapi=1.
  • Adobe with AppMeasurement: after the page-view rule, page views, visits, unique visitors, entries, exits, time spent, bounces, country and browser. Pages appear under their URLs until a page name is set.
  • Adobe with the Web SDK: the same visit and page metrics once sendEvent runs on each page, plus every link click, download and exit through click collection. Country and browser stay empty until Geo Lookup and Device Lookup are enabled in the datastream.

One hour of settings.

  • GA4: register form_id and form_name as custom dimensions so the contact form shows by name (the search term needs no registering: Search term is a built-in dimension), link Search Console and publish its reports, add the help centre's own search parameter if it is not q, and decide on Google signals.
  • Adobe: tick download and exit link tracking (AppMeasurement), enable Activity Map, run the marketing channels automatic setup and review its rules, configure a real-time report, and enable Geo and Device Lookup (Web SDK).

What still needs building in both tools. The checkout funnel and the purchase, the help-centre search in Adobe, the contact form in Adobe, scroll depth beyond 90 % in GA4 (and at all in Adobe), video in Adobe, and a user ID for signed-in customers. The purchase of two bottles at 24.00 each looks like this.

GA4, sent on the confirmation page (or by a Tag Manager tag reading the same values from the data layer):

javascript
gtag("event", "purchase", {
  transaction_id: "ORD88213",
  value: 48.00,
  currency: "EUR",
  items: [
    { item_id: "SKU-1042", item_name: "Steel water bottle", price: 24.00, quantity: 2 }
  ]
});

Adobe with AppMeasurement, set in the confirmation-page rule before its Send Beacon (s.t()):

javascript
s.pageName = "checkout:confirmation";
s.events = "purchase";
s.products = ";SKU-1042;2;48.00";
s.purchaseID = "ORD88213";
s.currencyCode = "EUR";

Adobe with the Web SDK, the XDM object of the Send event action (shown here as the equivalent library call):

javascript
alloy("sendEvent", {
  xdm: {
    web: { webPageDetails: { name: "checkout:confirmation" } },
    commerce: {
      purchases: { value: 1 },
      order: { purchaseID: "ORD88213", currencyCode: "EUR" }
    },
    productListItems: [
      { SKU: "SKU-1042", name: "Steel water bottle", quantity: 2, priceTotal: 48.00 }
    ]
  }
});

Note the difference in price: GA4's price is per item, while Adobe's products price and the Web SDK's priceTotal are the total for the quantity. Getting that wrong doubles or halves revenue in one tool and not the other, and it is an easy reason for the two to report different totals for the same orders.

Checked against Google's and Adobe's documentation on 2 November 2026.

Google Analytics is a trademark of Google LLC. Adobe, Adobe Analytics and Adobe Experience Platform are either registered trademarks or trademarks of Adobe in the United States and/or other countries. Grokem is not affiliated with or endorsed by Google or Adobe.


What we compared

  • What the base script sends by itself
  • What a setting, extension or datastream option adds
  • What needs custom implementation
  • When the data reaches reports

Recommendation

Choose GA4 when you need useful numbers on day one with no engineering time: the base tag and Enhanced Measurement cover page views, engagement, outbound clicks, downloads, site search, 90 % scroll, forms and YouTube video without a single custom event. Choose Adobe Analytics when you are ready to design the data you collect: almost every business-specific value is an eVar, prop or event you plan, enable and set by rule, and its reports (attribution, Activity Map, classifications) reward that design. Whichever you run, plan ecommerce, sign-ups and user IDs as custom work in both, and keep one rule in mind when you compare their totals: GA4 item prices are per unit, Adobe product prices are per line.

Caveats

  • Both tools change their defaults; this comparison was checked against the documentation on 2 November 2026.
  • Adobe does not document the defaults of the Analytics extension's download and outbound link checkboxes: open the extension and check them.
  • Test that GA4's form_submit matches real submissions before you treat it as a conversion.
  • Demographics in GA4 depend on Google signals and are subject to data thresholds.
  • The getPercentPageViewed scroll plug-in does not support the Web SDK.

Frequently asked questions

Does GA4 track button clicks automatically?

Only two kinds of click: links to another domain (the outbound click event) and links to files with a common extension (file_download), both through Enhanced Measurement. Clicks on buttons, tabs or internal links need a custom event, sent by your code or by a Google Tag Manager click trigger.

Does Adobe Analytics count page views without a rule?

No. AppMeasurement sends a hit only when a rule or your code calls s.t() (a page view) or s.tl() (a link call), and the Web SDK only when sendEvent runs. The one thing the Web SDK sends without a rule is link clicks, through click collection, which is on by default.

Why are country and browser empty in my Web SDK data?

Adobe derives them on its servers, and for Web SDK data that happens in the datastream. Adobe's dimension documentation says to enable Geo Lookup and Device Lookup in the datastream; with no Geo Lookup option selected, geolocation lookups are off. AppMeasurement data needs no setting for these dimensions.

Why can't I see form_id or other parameters in GA4 reports?

GA4 collects custom and many Enhanced Measurement parameters but shows them in reports only after you register them as custom dimensions or metrics (Admin > Custom definitions). Data appears 24 to 48 hours after you create the dimension, so register the ones you need before you need them.

Is Enhanced Measurement the same as Adobe Activity Map?

No. Enhanced Measurement sends a handful of events (scroll, outbound click, site search, forms, YouTube video, downloads) into GA4's normal reports. Activity Map reports link clicks by page region and overlays them on the page itself, and needs to be enabled in the report suite. GA4 has no on-page click overlay.

References

From Grokem: https://www.grokem.com/data/data-analytics/web-analytics/ga4-vs-adobe-analytics-out-of-the-box-tracking

How did this strike you?

Be the first to react – it is anonymous.

Community

Questions about this?

Ask in Questions and help and get help from other readers.

Ask a questionBrowse Questions and help

Comments

No comments yet. Share what worked for you, or ask a question.

Keep learning

Picked for this article

Related reading, discussions and learning paths on the same subject.

All in Web Analytics

From the community

Learning paths

Learning pathBeginner

Measurement that stands up to questions

Plan what to measure, tag campaigns consistently, hand data to your tags properly, find out why events go missing, understand attribution and know what privacy law asks of analytics.

6 lessonsStart

Learning pathIntermediate

Data pipelines you can trust

How data gets from source to report without surprises: the ETL and ELT choice, a first pipeline, cleaning, quality checks, safe re-runs and scheduling.

7 lessonsabout 75 minStart

Choose what we may use. You can change this at any time with “Privacy choices” at the foot of every page. Details are in the Cookie policy and the Privacy policy.

Strictly necessary

Remembers your theme, the lessons you marked as done and this choice. It stays on your device, tracks nothing and cannot be switched off.

Always on
What exactly is collected, and why

Google Analytics

Collects
The pages you view, your device and browser type, your language, how you reached the site and your approximate location (country and city, worked out from your IP address).
Why
To understand which pages and lessons are used, so we can improve them.
Stored
Two cookies, _ga and _ga_<id>, for up to 2 years. Google acts for us; the data is processed by Google, including outside your country.

Grokem’s own counts

Collects
The pages you open and how long you stay, how far you scroll, where you came from, your device type, browser, screen size, language and time zone. Your IP address is turned into a code that changes every day; it is never stored as it is.
Why
To see how long lessons are read and where readers leave. Not shared with anyone.
Stored
A random visitor ID, a visit ID and the time of your last page view in your browser’s storage (gr_vid, gr_sid, gr_last). No name or email is attached.