Adobe Analytics implementation QA checklist

last verified · against Adobe Analytics implementation & Web SDK validation docs as of 2026-07

Adobe Analytics implementation QA reference: decode the b/ss image request, c/v/events params, s.t vs s.tl, response codes, and Web SDK /ee validation.

What this is

Adobe Analytics implementation QA is the practice of confirming that every beacon carries the right variables to the right report suite, both before release and after. This reference decodes the /b/ss/ image request and the Web SDK /ee interact call, lists the query parameters, expected response codes, and validation tools, and flags the configuration settings that silently drop hits.

Image request URL anatomy (the /b/ss/ beacon)

Path structure: https://[trackingServer]/b/ss/[reportSuiteID]/[hitSource]/s[randomNumber]?[query]

Segment Example Meaning
[trackingServer] example.data.adobedc.net Data-collection host. Verify per environment (see note below).
/b/ss/ /b/ss/ File-structure segment for images on Adobe data-collection servers; present in every Analytics request. Filter for b/ss in a packet analyzer.
[reportSuiteID] examplersid Report suite receiving the hit; comma-separated for multi-suite tagging.
[hitSource] 1 Controls the order that cookies and other methods use to identify visitors.
s[randomNumber] s234234238479 Cache-buster; prevents the browser caching the image request.
?[query] AQB=1…AQE=1 The variable payload (see below).

The tracking-server host varies by implementation: *.data.adobedc.net, the legacy *.sc.omtrdc.net, or a first-party CNAME. Only the adobedc.net example is confirmed on the source page, so QA should verify the configured tracking server per environment rather than assume a fixed host.

Query-string boundary markers

Param Value Meaning
AQB AQB=1 Marks the beginning of the image-request query string.
AQE AQE=1 Marks the end; presence indicates the request was not truncated.

A hit showing AQB but no AQE was truncated and dropped variables.

Core query parameters

Param Populates / meaning
pageName Page dimension.
g Current page URL, up to 255 bytes.
-g Extended page URL used when the URL is longer than 255 bytes.
r Referrer, for traffic-source dimensions.
mid Experience Cloud Visitor ID (ECID).
v0 Tracking code (campaign) dimension.
events Comma-separated list of events on the page; used by most metrics.
ts Custom timestamp set with the hit, typically for offline tracking.

ts format: dd/mm/yyyy hh:mm:ss w o — month is zero-based, w is the day of week (0 = Sunday), o is the negative GMT offset in minutes.

Variable ranges

Variable Query param Range
Props (custom traffic variables) c1c75 c1–c75
eVars (custom conversion variables) v1v250 v1–v250
Context data variables c. prefix, .c suffix e.g. c.mychannel.c
Param Value Meaning
pe lnk_o Custom (other) link.
pe lnk_d Download link.
pe lnk_e Exit link.
pe tnt Analytics for Target hit.
pev1 linkURL The link URL.
pev2 link name The custom link name for s.tl() calls.

A page view carries no pe parameter; its presence marks a link-tracking hit.

s.t() s.tl()
Hit type Page view Link tracking
pe param None lnk_o / lnk_d / lnk_e
Increments page views Yes No
Returns Transparent 1x1 gif image Image request (no page-view increment)
Signature s.t() s.tl(linkObject, linkType, linkName, overrideVars)

s.t() takes all Analytics variables defined on the page, compiles them into an image request, and sends it to Adobe data-collection servers. For s.tl(): the linkObject value this waits up to 500ms for the image request, true navigates with no delay; linkType is a single character o / d / e. When trackDownloadLinks or trackExternalLinks are enabled, AppMeasurement automatically invokes s.tl() for those links.

Expected response codes

Code Meaning QA verdict
200 OK Successful data collection (most common). Healthy
302 FOUND Normal for first-time visitors or comScore integrations. Healthy
404 NOT FOUND Data did not reach the servers. True failure
NS_BINDING_ABORTED Browser advanced to the next page before waiting for a response. Not necessarily an error; expected-but-risky

Validation tooling

Tool Use Notes
Packet analyzer (Charles, Fiddler, Wireshark, Observepoint, browser dev tools) Filter b/ss (AppMeasurement) or /ee (Web SDK). Ground-truth network validation.
AEP Debugger (Chrome extension) Tags / Adobe Target / Adobe Analytics / Web SDK-Edge / Auditor tabs. Analytics tab shows active report suites. Works on any public page; non-public data requires Experience Cloud sign-in in an active tab.
AEP Debugger — Auditor tab Weighted audit tests (0–5 scale), pass/fail, no partial credit. Level 4 failures risk unreliable data; Level 5 failures may cause data loss.
Assurance — Adobe Analytics view Post-processed mapping of revars, eVars, props, plus report suite ID and SDK versions; Edge Network + Mobile SDK events. Shows downstream acceptance the client-side debugger cannot.
Legacy bookmarklet debugger URL-decode, auto-refresh, labeled vs raw query-string views. Discontinued; replaced by the AEP Debugger.

The Auditor overview documents the weighting scheme and general categories only; it does not enumerate which individual tests apply to Adobe Analytics versus Web SDK, so specific per-check pass/fail criteria are unverified.

Assurance processing statuses

The status column reports one of: Queued, Processed, Delayed, Error, Unauthorized, Unavailable, No Debug Flag, Expired. Processed means the hit was accepted downstream; Error, Unauthorized, and No Debug Flag indicate it was not cleanly accepted. The source lists the statuses but does not define each individually.

Web SDK / Edge Network validation

Aspect AppMeasurement Web SDK
Network filter b/ss (s.gif image request) /ee (interact POST)
Transport Image GET, returns 1x1 gif POST, returns 200 OK with Handle objects
Endpoint [trackingServer]/b/ss/… edge.adobedc.net/ee/v2/interact?datastreamId={DATASTREAM_ID} (authenticated: server.adobedc.net/ee/v2/interact)
Analytics variables live in Query string c / v / events data.__adobe.analytics
Report-suite routing /b/ss/[rsid]/ path Datastream → Add Service → Adobe Analytics → report suite ID
ECID mid parameter In the response Preview, NOT in the request identityMap

Interact request body: { xdm{…}, data{…} }xdm carries identityMap, eventType, web details, and timestamp; data carries custom properties. Query: datastreamId required, requestId optional (external tracing ID). Use the collect endpoint to batch multiple events.

Web SDK Analytics is configured to look for any properties in the data.__adobe.analytics object and use them for eVars, props, and events; processing-rule / XDM-schema mapping is no longer recommended (as of May 2024). In the AEP Debugger, view mapped variables by expanding the events row: events → 0 → data → __adobe → analytics.

XDM fields that auto-map to Analytics

XDM field / eventType Maps to
web.webPageDetails.name s.pageName
commerce.purchases.value Purchase event
eventType web.webPageDetails.pageView Page-view event type

Report-suite timestamp configuration

Setting Behavior s.visitorID
Timestamps not allowed Any hit carrying ts is permanently dropped. Supported
Timestamps required Any hit missing ts is permanently dropped. Not supported
Timestamps optional Mixes timestamped and non-timestamped hits; default for new report suites. Do not set s.visitorID on timestamped hits

Pre-publish QA flow

Install the Experience Platform (CX Enterprise) Debugger → open the dev site → confirm Adobe Analytics data, Tags information, and Experience Cloud Visitor ID (ECID) all appear → then publish the tag library Dev → Staging → Production. Read the report suite ID from the /b/ss/[rsid]/ path (or the datastream’s Analytics service) to confirm data is going to the correct dev vs prod suite.

Gotchas

  1. Beacon fires with ts but never appears in reports → the target suite is Timestamps not allowed (or Timestamps required drops any hit missing ts) → match the suite’s Timestamps setting to the implementation; use Timestamps optional when mixing offline/mobile and standard hits, and verify it in Admin before QA sign-off.
  2. Out-of-order data, broken time-on-page / visit counts / pathing after enabling timestamped hits → s.visitorID is set on already-timestamped hits under Timestamps optional → do not set s.visitorID on timestamped data; let ECID and the timestamp handle identity and ordering.
  3. Debugger shows the request but reports show no data → ad blockers or privacy extensions block the /b/ss/ request, or JS errors stop the library loading → disable ad blockers during QA, clear console JS errors, confirm the AppMeasurement file contains real code and is referenced in <head>, then re-check the request returns 200.
  4. s.tl hits intermittently missing on exit/download links → the browser advanced to the next page before the beacon completed (NS_BINDING_ABORTED); passing true skips the delay → pass this (not true) so AppMeasurement waits up to 500ms, and treat NS_BINDING_ABORTED as expected-but-risky, confirming the hit server-side.
  5. First hit of a session returns 302 and QA flags a failure → 302 FOUND is normal for first-time visitors and comScore integrations → only 404 is a true failure; accept 200 and 302 as healthy.
  6. After Web SDK migration QA cannot find the s.gif / b/ss request → Web SDK POSTs to the Edge Network interact endpoint, and variables live under data.__adobe.analytics, not query-string params → filter for /ee, inspect the xdm and data.__adobe.analytics payload, and validate in the AEP Debugger (events → 0 → data → __adobe → analytics) or the Assurance Analytics view.
  7. ECID appears missing in the Web SDK request payload → the ECID is returned in the response, not carried in the outgoing identityMap → verify the ECID in the response Preview (or the Identity view), not the request identityMap.
  8. AEP Debugger shows tags/property data but no solution details, or non-public data is blank → you are not authenticated into Experience Cloud in an active browser tab → sign into Experience Cloud with your Adobe ID in the debugger.
  9. Page URL truncated around 255 characters → g caps the page URL at 255 bytes; longer URLs overflow into -g → confirm the beacon carries -g for long URLs and validate the full Page URL dimension, not only the g value.

Quick recipes

Decode a captured beacon URL into labeled parameters and flag truncation:

decode-beacon.js
// Paste an Analytics image-request URL to inspect it
const url = "https://example.data.adobedc.net/b/ss/examplersid/1/s234234238479?AQB=1&pageName=home&g=https%3A%2F%2Fexample.com&c1=nav&v0=email_promo&events=event1&AQE=1";
const u = new URL(url);
const q = u.searchParams;
console.log("report suite:", u.pathname.split("/")[3]); // examplersid
console.log("hit source:", u.pathname.split("/")[4]); // 1
console.log("truncated?", q.has("AQB") && !q.has("AQE") ? "YES - dropped vars" : "no");
for (const [k, v] of q) console.log(k, "=", decodeURIComponent(v));

List the Analytics beacons already fired on the current page (both stacks):

find-beacons.js
// Run in the browser console after the page loads
performance.getEntriesByType("resource")
.filter(e => e.name.includes("/b/ss/") || e.name.includes("/ee/v2/interact"))
.forEach(e => console.log(e.name.includes("/ee/") ? "WebSDK" : "AppMeasurement", e.name));

Fix the exit/download link race — pass this, not true:

link-track.js
// linkType: "o" other, "d" download, "e" exit
// "this" makes AppMeasurement wait up to 500ms for the beacon
s.tl(this, "e", "Example exit link");

Smoke-test the Edge Network interact endpoint (expect 200 OK with Handle objects):

interact-smoke-test.sh
curl -s "https://edge.adobedc.net/ee/v2/interact?datastreamId=$DATASTREAM_ID" \
-H "Content-Type: application/json" \
-d '{
"xdm": {
"eventType": "web.webPageDetails.pageView",
"web": { "webPageDetails": { "name": "home" } }
},
"data": {
"__adobe": { "analytics": { "events": "event1" } }
}
}'

Hardcoded page-view image request (no AppMeasurement library):

hardcoded-pageview.html
<img
src="https://example.data.adobedc.net/b/ss/examplersid/1/s1234567890?AQB=1&pageName=home&g=https%3A%2F%2Fexample.com%2F&c1=nav&events=event1&AQE=1"
width="1" height="1" alt="" />

Sources

Adobe Experience League and Adobe Developer pages these values were read from:

Flagged rather than guessed: the tracking-server host varies by implementation (data.adobedc.net, legacy sc.omtrdc.net, or a first-party CNAME) and must be verified per environment; the standalone validate/overview landing page returned HTTP 404 and appears to have been restructured, so individual validate sub-pages were confirmed instead; the Auditor’s per-check test list for Analytics vs Web SDK is not enumerated in the docs; and the exact byte threshold that switches g to -g and the precise 500ms s.tl delay across browsers are documented but version-sensitive.

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