AppMeasurement AEP Web SDK alloy.js · XDM Edge Network Datastream routing Adobe Analytics AEP · Target · AAM Adobe Analytics via AEP Web SDK THE FUTURE-READY IMPLEMENTATION

Key takeaways

  • The AEP Web SDK (alloy.js) is Adobe's modern implementation method — one tag replaces AppMeasurement, AT.js, and DIL
  • Data is structured using XDM (Experience Data Model) schemas, not legacy eVars and props — though Analytics mapping handles the translation
  • The Edge Network routes a single request to multiple Adobe products simultaneously, reducing page load impact
  • Datastream configuration in AEP controls which services receive data — Analytics, Target, Audience Manager, AEP itself
  • Migration from AppMeasurement to Web SDK requires careful event parity validation — do not cut over without a parallel tracking period

The AEP Web SDK — also known as alloy.js — is Adobe's modern implementation method for the entire Experience Cloud. One tag, one network request, multiple Adobe products. If you are still running AppMeasurement, you are running on infrastructure that Adobe has effectively deprecated for new implementations.

I have led several AppMeasurement to Web SDK migrations at enterprise scale. This guide covers the full implementation — from datastream setup to XDM schema design to Adobe Launch configuration — along with the migration considerations that most guides skip.

Why Web SDK? The case for migrating

The business case for migrating to the AEP Web SDK is not just about keeping up with Adobe's roadmap. There are concrete technical advantages:

Capability AppMeasurement AEP Web SDK
Network requests per page One per product (AA + AT + AAM = 3+ requests) Single request to Edge Network for all products
Server-side personalisation Not supported Supported via Edge decisioning
Real-time CDP activation Requires separate AEP SDK Native — same tag feeds RTCDP
First-party data collection Limited Full first-party via Edge Network
Cookie handling Third-party cookies (s_vi) First-party FPID — more resilient to ITP
Future Adobe features Limited — legacy path All new features ship here first
Important

Adobe has not announced an end-of-life date for AppMeasurement, but all new Experience Cloud capabilities are being built exclusively on the Web SDK path. Starting any new implementation on AppMeasurement today means planning a migration in the near future.

How the Web SDK architecture works

Understanding the architecture before touching any configuration prevents a category of mistakes that are very expensive to fix later.

AEP Web SDK — Full Architecture BROWSER Data Layer XDM-ready Adobe Launch Web SDK ext. alloy.js sendEvent() Edge Network DATASTREAM — routes to: Adobe Analytics Adobe Target AEP / RTCDP Audience Manager XDM SCHEMA web.webInteraction _experience.analytics ANALYTICS MAPPING XDM field → eVar/prop Configured in Report Suite One sendEvent() call reaches all configured destinations
Fig 1. — The AEP Web SDK sends a single request from alloy.js to Adobe's Edge Network, which routes data to multiple products simultaneously based on your Datastream configuration.

Understanding XDM and its role in Analytics

XDM — Experience Data Model — is a standardized JSON schema system that defines how data is structured when sent through the Web SDK. Instead of assigning values directly to eVar1 or prop5, you send structured objects that map to predefined field groups.

Adobe Analytics still uses eVars and props internally. The translation happens in two ways:

  • Automatic mapping — certain XDM fields (like web.webPageDetails.name) automatically populate standard Analytics dimensions (Page Name)
  • Manual mapping — custom XDM fields in the _experience.analytics namespace map directly to specific eVars and props, configured in the Analytics report suite settings
Pro Tip

Use the _experience.analytics.customDimensions.eVars and props field groups for your custom variables. This gives you direct eVar/prop mapping without ambiguity and keeps your XDM schema organized by Analytics variable rather than by generic field name.

Prerequisites before implementation

  • An AEP sandbox (production or development) with Data Collection permissions
  • An Adobe Analytics report suite — separate ones for development and production
  • Adobe Launch property with appropriate permissions
  • A defined XDM schema — do not start implementation without this
  • A measurement plan mapping your business KPIs to XDM fields and Analytics variables
Critical

Your XDM schema is your data contract. Changes to a published schema require versioning and can break downstream consumers. Design it thoroughly before publishing — this is the most important pre-implementation decision you will make.

Step 1 — Configure your Datastream

The Datastream is the server-side configuration that tells the Edge Network where to route your data. Think of it as the routing table for your Web SDK implementation.

1

Create a new Datastream in AEP

Navigate to Data Collection → Datastreams in experience.adobe.com. Create one for Development and one for Production. Never share a single Datastream across environments.

2

Enable Adobe Analytics service

Click Add Service → Adobe Analytics. Enter your Report Suite ID. This is what connects your Web SDK events to Adobe Analytics. Use your development report suite here.

3

Enable other services as needed

If you are also using Adobe Target, AEP, or Audience Manager, enable those services here. This is the power of the Web SDK — one tag feeds all of them from a single Datastream configuration.

4

Note your Datastream ID

You will need this when configuring the Web SDK extension in Adobe Launch. Copy it now.

Step 2 — Design your XDM schema

In AEP, navigate to Schemas → Create Schema → XDM ExperienceEvent. This is the schema type for web behavioral data. Add the following field groups as a starting point:

  • AEP Web SDK ExperienceEvent — required, adds web interaction fields
  • Web Details — page URL, referrer, page name
  • Environment Details — browser, device, operating system
  • Adobe Analytics ExperienceEvent Full Extension — adds the _experience.analytics namespace for direct eVar/prop mapping
XDM Object Structure — sendEvent payload
{
  xdm: {
    // Standard web fields — auto-mapped to Analytics
    web: {
      webPageDetails: {
        name: "Home:Hero",         // → Page Name
        URL: window.location.href,
        isHomePage: true
      },
      webReferrer: {
        URL: document.referrer
      }
    },
    // Custom Analytics variables via _experience namespace
    _experience: {
      analytics: {
        customDimensions: {
          eVars: {
            eVar1: "Home:Hero",      // Page Name
            eVar2: "homepage",        // Page Type
            eVar3: "marketing",       // Page Section
            eVar10: "logged-out"     // Login Status
          },
          props: {
            prop1: "Home:Hero"
          }
        },
        event1to100: {
          event1: { value: 1 }     // Page View event
        }
      }
    }
  }
}

Step 3 — Install the Web SDK extension in Adobe Launch

In your Launch property, go to Extensions → Catalog → search for "Adobe Experience Platform Web SDK". Install it and configure:

  • Instance name: alloy (keep the default unless you have a specific reason to change it)
  • Datastream ID: paste the ID from Step 1. Set up environment overrides for dev, staging, and production using their respective Datastream IDs
  • Identity namespace: configure ECID handling here — leave defaults unless you are implementing a custom identity strategy
  • Privacy: configure consent defaults — "in" for all, "pending" if you have a consent management platform, or "out" if you are in a strict consent regime
Pro Tip

Use the Datastream ID override feature to point your Development Launch environment to your Development Datastream and your Production environment to your Production Datastream. This prevents test data from reaching your production report suite without needing separate Launch properties.

Step 4 — Create XDM data elements

In Launch, create a data element of type "XDM Object". This is where you build the XDM payload that will be sent with each event.

Launch Data Element — XDM Object (Page View)
Name:   XDM - Page View
Type:   XDM Object
Schema: [your XDM schema]

// Map each field to a data element or value:
web.webPageDetails.name      = %DL - Page Name%
web.webPageDetails.URL       = %Page URL%   (built-in variable)

_experience.analytics
  .customDimensions.eVars
  .eVar1                     = %DL - Page Name%
  .eVar2                     = %DL - Page Type%
  .eVar3                     = %DL - Page Section%
  .eVar10                    = %DL - Login Status%

Step 5 — Create page view and event rules

The Web SDK uses

sendEvent
instead of
s.t()
and
s.tl()
. The distinction between page views and link events is handled differently:

AppMeasurement vs Web SDK — Event Sending AppMeasurement Page view → s.t() Link tracking → s.tl() Two separate methods Multiple HTTP requests AEP Web SDK Page view → sendEvent() Interaction → sendEvent() Same method, different type Single optimised request
Fig 2. — The Web SDK uses a single sendEvent method for all event types. The event type field determines how Analytics processes it.

Your page load rule in Launch:

Launch Rule — Page View
Name:    Page Load — Send Web SDK Event
Event:   Core → Library Loaded (Page Top)
Order:   50

Actions:
  1. Adobe Experience Platform Web SDK → Send Event
     Type:       web.webpagedetails.pageViews
     XDM Data:   %XDM - Page View%

An interaction tracking rule:

Launch Rule — Interaction Event (e.g. CTA Click)
Name:    Click — CTA Button
Event:   Core → Click
         Element: .btn-primary
Order:   50

Actions:
  1. Adobe Experience Platform Web SDK → Send Event
     Type:       web.webInteraction.linkClicks
     XDM Data:   %XDM - CTA Click%

Migrating from AppMeasurement — what to know

If you are migrating an existing AppMeasurement implementation rather than starting fresh, the migration requires careful planning. The most important principle: run both implementations in parallel before cutting over.

1

Audit your existing AppMeasurement implementation

Document every eVar, prop, event, and plugin currently in use. Create a migration mapping: old variable → new XDM field. Every variable needs to be accounted for before you start.

2

Run parallel tracking for at least 4 weeks

Send data to separate report suites — one via AppMeasurement, one via Web SDK — and validate that key metrics match. Expect some variance due to timing differences and cookie changes. Document what is acceptable.

3

Validate event parity

Every custom event tracked in AppMeasurement must be tracked equivalently via Web SDK before cutover. Use the AEP Debugger and Adobe Analytics DebugView to compare event payloads side by side.

4

Communicate the cutover to stakeholders

Historical data in your Analytics reports will show a transition point when the implementation method changes. Prepare your stakeholders — especially finance and product — for potential metric shifts due to the new first-party cookie (FPID) replacing the legacy s_vi.

Warning

The FPID cookie (first-party device ID) introduced by the Web SDK counts visitors differently than the legacy s_vi cookie used by AppMeasurement. Expect a difference in Unique Visitors counts during and after migration. This is expected behaviour, not a bug — brief your stakeholders before the cutover date.

Validation and debugging

Use these tools to validate your Web SDK implementation before promoting to production:

  • AEP Debugger Chrome extension — inspect every sendEvent call, view the XDM payload, and see the Edge Network response in real time
  • Network tab (Chrome DevTools) — filter by "adobedc.net" to see raw Edge Network requests and responses
  • Adobe Analytics DebugView — validates that events are reaching your report suite with correct variable values
  • AEP Assurance (Griffon) — enterprise-grade debugging tool that captures every SDK event in a session for detailed inspection

Common mistakes

  • Publishing XDM schema changes without versioning. Breaking changes to a schema affect all consumers. Always create a new schema version for breaking changes.
  • Using the same Datastream across environments. Development events will appear in your production Analytics reports. Always use environment-specific Datastreams.
  • Skipping the parallel tracking period. Every migration I have seen that skipped parallel tracking had metric discrepancies discovered after the cutover — when they were much harder to explain and fix.
  • Not accounting for FPID changes. The visitor count methodology change is the most common surprise in Web SDK migrations. Always brief stakeholders before cutover.
  • Mixing Web SDK and AppMeasurement on the same page. Both SDKs will fire, sending duplicate data. Remove AppMeasurement completely once Web SDK is validated.
AB
Abhinav Bhargav
Founder, MetricByte Consulting · Adobe Certified Master — Analytics Architect

8 years implementing and auditing analytics programs across Adobe Analytics, AEP, GA4, and GTM for enterprise organizations. Founder of MetricByte Consulting. Connect on LinkedIn →