Set up Adobe Analytics and Customer Journey Analytics analytics-setup

IMPORTANT
Adobe LLM Apps is currently in Beta.
Features, workflows, and UI shown here do not necessarily represent the final state of the product. To join the Beta, send an email to llm-apps-beta@adobe.com.

Send your app’s events to Adobe Analytics, Customer Journey Analytics, or both. LLM Apps forwards the events to the Adobe Experience Platform Edge Network through a datastream that you own. The datastream routes the events to each service that you add to it.

  • Adobe Analytics reports which actions the LLM platform calls, which widget links people select, and the intent behind each call.
  • Customer Journey Analytics analyzes the same events by person, in the data views you build on Experience Platform data.

This setup is separate from the built-in analytics in LLM Apps.

In this guide: Learn which settings LLM Apps requires in Experience Platform, Adobe Analytics, and Customer Journey Analytics, with links to the Experience League procedure for each product screen. Then enable Analytics in your app, deploy to Stage, and verify the data before you deploy to Production.

Setup checklist setup-checklist

Complete every step marked Required for the services you use. A skipped step rarely shows an error. Instead, the data does not arrive.

Step
Adobe Analytics
Customer Journey Analytics
1. Create the identity namespace
Required
Required
2. Create the schema
Required
Required
3. Create the dataset
Not needed
Required
4. Prepare the report suite
Required
Not needed
5. Create the datastream
Required
Required
6. Enable Analytics and deploy to Stage
Required
Required
7. Create the connection and data view
Not needed
Required
8. Verify the data and deploy to Production
Required
Required

Create the namespace, schema, dataset, and datastream in the same Experience Platform sandbox. Use the sandbox and datastream that you plan to report from in Production. After you save the datastream in your app, contact the LLM Apps team to change it.

Before you begin before-you-begin

You need:

  • A supported runtime and SDK. Your handler repository must use @adobe/llm-apps-runtime 1.2.0 or later. For EDS widgets, use the LLM Apps SDK 0.1.13 or later. To update an older app to the latest runtime and SDK before enabling Analytics, follow Upgrade an existing app. Apps that meet these requirements do not need an upgrade.
  • The agentic field groups. Your organization must be enabled for the Agentic Information and Conversation Event field groups. If these field groups do not appear when you add field groups to a schema, contact your Adobe account team. See Implement Conversation Insights. Action calls are recorded in the agenticExperience.tools field of Agentic Information, which is in Beta in Experience Platform.
  • Experience Platform permissions to create identity namespaces, schemas, datasets, and datastreams in your sandbox.
  • For Adobe Analytics: permission to manage report suites and processing rules. Product admins have both by default.
  • For Customer Journey Analytics: product admin access to create connections and data views.

What your app sends what-your-app-sends

After you enable Analytics and deploy, your app sends two kinds of events:

Event
eventType
Sent when
Includes
Action call
mcp.tool_call
The LLM platform calls one of your app’s actions, including calls that fail or return a sign-in prompt.
The action’s code identifier and whether the call failed. The user intent, when the action collects it and the platform supplies one. When the platform provides them: the platform name, the conversation ID, the platform’s user ID, locale, and organization, and the user’s approximate location.
Widget interaction
web.webinteraction.linkClicks
Someone selects a link or button in an Edge Delivery Services widget.
The link or button label, up to 100 characters. When supplied by the action call, its conversation ID and turn ID. The Adobe Web SDK also adds the widget frame URL, the screen and browser window size, the local time and time zone, and its own version.

In Adobe Analytics, each action call counts as a page view of a page named mcp:<code identifier>, and each widget interaction counts as a link click. See Edge Network event types in Adobe Analytics.

Every action call and every widget interaction is one Adobe Analytics hit and one event in your Experience Platform dataset. On a high-traffic app, check that your contract covers this volume before you enable Analytics.

Keep these details in mind when you read the reports:

  • Failed calls include sign-in prompts. If some actions require sign-in, expect a higher failure rate for them.
  • Some rejected calls are not recorded. A call is rejected before the action runs, and sends no event, when a platform other than ChatGPT calls an action that requires sign-in without a valid sign-in or the required scope. On apps where every action requires sign-in, any call without a sign-in is rejected the same way.
  • User intent is often missing. The platform decides whether to supply it, so many calls have none and appear as Unspecified.
  • Platform details vary. Currently, ChatGPT provides all of them. For Claude, only the platform name is recorded.
  • Widget labels come from the page. To set a stable label, add a data-analytics attribute to the link or button. Otherwise, its visible text is used.

To choose which actions collect user intent, see Configure analytics.

NOTE
The events can include a platform user ID and approximate location. Review your privacy policy and data governance settings before you enable Analytics.

How the events identify people identities

Event
Primary identity
Namespace
Action call
The user ID from the LLM platform, when the platform provides one
MCPHOSTUSER
Widget interaction
An Experience Cloud ID (ECID) that the Edge Network issues during the action call. The MCPHOSTUSER ID is included as a secondary identity when available.
ECID

Some platforms, such as Claude, do not provide a user ID. Action calls from those platforms carry no identity, so Customer Journey Analytics skips them.

NOTE
Each action call gets a new ECID, and a widget interaction uses the ECID of the action call that showed the widget. As a result:
  • Customer Journey Analytics counts a user’s action calls as one person, but counts their widget interactions as a different person for each action call.
  • Adobe Analytics may count each action call as a new visitor.

Step 1: Create the identity namespace identity-namespace

Required for: Adobe Analytics and Customer Journey Analytics.

Action calls identify people in the MCPHOSTUSER namespace, so the namespace must exist in your sandbox. Create a custom namespace with these settings:

Setting
Value
Display name
MCP host user, or another name you choose
Identity symbol
MCPHOSTUSER, exactly as shown
Identity type
Individual cross-device ID

For the procedure, see Create custom namespaces.

Step 2: Create the schema schema

Required for: Adobe Analytics and Customer Journey Analytics.

The datastream and the dataset both use this schema. Create a schema with these settings:

Setting
Value
Schema type
Standard, created with the Manual option
Base class
Experience Event
Field groups
Agentic Information, Conversation Event, Web Details, Environment Details, and Implementation Details
Display name
Any name, for example AEM LLM Apps
IMPORTANT
Add all five field groups. LLM Apps requires Agentic Information and Conversation Event for action calls. The other three hold the page, link, device, environment, and implementation fields that the events also include. If a field group is missing, Experience Platform may drop those fields or reject the event.

You do not need the Adobe Analytics ExperienceEvent field group. User intent reaches Adobe Analytics through a processing rule instead. See Step 4.

For the procedure, see Create a new schema and Add field groups.

Step 3: Create the dataset dataset

Required for: Customer Journey Analytics.

The dataset stores your app’s events in Experience Platform. Create a dataset with these settings:

Setting
Value
Creation method
Create dataset from schema
Schema
The schema from Step 2
Name
Any name, for example AEM LLM Apps

For the procedure, see Create a dataset.

Step 4: Prepare the report suite report-suite

Required for: Adobe Analytics.

Adobe Analytics maps the page name and link fields automatically, so the mcp:<code identifier> pages and the widget link clicks need no extra setup. User intent needs an eVar and a processing rule.

Create or choose a report suite create-report-suite

Create a report suite, or choose an existing one. Note the full report suite ID, including the prefix that Adobe Analytics adds. You need the ID in Step 5.

For the procedure, see Create a report suite.

Enable the User Intent eVar user-intent-evar

In the report suite’s conversion variables, enable an eVar with these settings:

Setting
Value
eVar
eVar3
Name
User Intent
Type
Text String
Allocation
Most Recent (Last)
Expire After
Visit
Status
Enabled

If the report suite already uses eVar3, choose another unused eVar, and use that eVar in the processing rule.

For the procedure, see Add or edit conversion variables.

Create the processing rule processing-rule

Adobe Analytics receives the user intent as a context data variable, not as an eVar. To learn why, see Implicit mapping. Create a processing rule that copies the user intent into the eVar:

  • Condition: the context data variable a.x.conversation.prompt.raw.0.purpose equals intents.
  • Action: overwrite the value of User Intent (eVar3) with the context data variable a.x.conversation.prompt.raw.0.text.

Without this rule, the User Intent dimension stays empty. The rule applies only to data collected after you save it. Widget interactions carry no user intent, so the rule does not change them.

Other fields, such as whether the call failed or the platform name, also arrive as context data variables. To report on them in Adobe Analytics, create more processing rules the same way.

For the procedure, see Processing rules overview and Processing rules use cases.

Step 5: Create the datastream datastream

Required for: Adobe Analytics and Customer Journey Analytics.

The datastream receives your app’s events and forwards them to each service you add.

Create the datastream create-datastream

Create a datastream with these settings:

Setting
Value
Name
Any name, for example AEM LLM Apps
Mapping Schema
The schema from Step 2

Create the datastream in the same sandbox as the schema. You cannot change the sandbox of a datastream after you create it.

For the procedure, see Create a datastream.

Add the services add-services

Add a service for each destination:

Service
Settings
Required for
Adobe Analytics
Enabled. In Report Suite ID, enter the ID from Step 4.
Adobe Analytics
Adobe Experience Platform
Enabled. In Event Dataset, select the dataset from Step 3. Leave the other options cleared.
Customer Journey Analytics

Add Service - Adobe Analytics enabled with an example report suite ID

Adobe Experience Platform service - the event dataset selected and the other options cleared

For the procedure, see Add services to a datastream, Adobe Analytics settings, and Adobe Experience Platform settings.

Then copy the Datastream ID from the datastream details. You need it in Step 6.

Datastream details - Adobe Analytics and Adobe Experience Platform services enabled, with the example Datastream ID and the mapping schema in the side panel

Step 6: Enable Analytics and deploy to Stage enable-analytics

Required for: Adobe Analytics and Customer Journey Analytics.

IMPORTANT
After you save, the datastream is read-only in App Settings. Contact the LLM Apps team to change it or to turn Analytics off. Check the datastream ID before you save. You can still change the report suite and the dataset in the datastream itself.
  1. Open your app and select Settings in the left navigation.

  2. Select the Analytics tab.

  3. Turn on Enable Analytics.

  4. In Datastream ID, paste the ID from Step 5.

  5. Under Requirements, select View details and confirm that your app meets each requirement.

    App settings, Analytics tab - Enable Analytics turned on, an empty Datastream ID field, and the expanded Requirements list

  6. Select Save changes.

  7. Deploy your app to Stage. The setting takes effect on the next deployment to each environment.

NOTE
The datastream applies to the whole app. Stage and Production send events to the same datastream, and the events do not record which environment sent them. Your test calls on Stage appear in the same reports as Production traffic.

Step 7: Create the connection and data view cja

Required for: Customer Journey Analytics.

Create the connection connection

Create a connection and add the dataset from Step 3 with these settings:

Setting
Value
Sandbox
The sandbox that contains your dataset
Average number of daily events
The range that matches your expected volume
Dataset
The dataset from Step 3
Person ID
Identity Map
Use primary identity namespace
Selected
Timestamp
Timestamp
Data source type
Other
Data source description
Any description, for example LLM Apps events
Import new data
Import all new data turned on
Dataset backfill
Backfill all existing data turned on, if the dataset already contains events you want to analyze
IMPORTANT
Turn on Import all new data. This setting creates an ongoing connection, so new events become available in Workspace automatically.

With this Person ID, Customer Journey Analytics uses the primary identity of each event as the person, and skips events that have no primary identity. See How the events identify people.

For the procedure, see Create a connection, Event dataset settings, and Use Identity Map as a Person ID.

Create the data view data-view

Create a data view on the connection with these settings:

Setting
Value
Connection
The connection you just created
Name
Any name, for example LLM Apps
Components
The dimensions and metrics you want to report on. See the table below.

Add these schema fields as components:

Report on
Schema field
Add as
Action
agenticExperience.tools.name
Dimension
Failed action calls
agenticExperience.tools.failed
Dimension
Failure reason
agenticExperience.tools.errorReason
Dimension
Platform
agenticExperience.agents.name
Dimension
User intent
conversation.prompt.raw.text
Dimension
Conversation
conversation.conversationID
Dimension
Widget label
web.webInteraction.name
Dimension

Add text fields, such as user intent, as dimensions. A text field added as a metric can only be counted, and breaking it down by its values shows Invalid.

For the procedure, see Configure a data view and Components.

Step 8: Verify the data and deploy to Production verify

Required for: Adobe Analytics and Customer Journey Analytics.

Call an action in your Stage app from a supported LLM platform, and select a link in its widget. See Test in ChatGPT or Test in Claude. Then check each service you set up:

Service
Where to check
What to expect
Experience Platform
Dataset activity for the dataset from Step 3
New ingested batches and no failed batches
Adobe Analytics
A Workspace project that uses the report suite from Step 4, with a Freeform table
Page rows named mcp:<code identifier>, Custom Link rows for widget interactions, and intent text in the User Intent dimension
Customer Journey Analytics
A Workspace project that uses the data view from Step 7
Events for your action calls and widget interactions

Each service processes data with some delay, so new events do not appear immediately.

To build the reports, see Create projects in Adobe Analytics, Freeform table overview, and Create projects in Customer Journey Analytics.

When the data looks right, deploy your app to Production.

Limitations limitations

  • Widget interactions split into many people. Each action call gets a new ECID, so Customer Journey Analytics counts widget interactions from different action calls as different people. See How the events identify people.
  • No link to your website. When someone follows a widget link to your website, the website visit is not linked to the conversation.
  • Stage and Production share reports. Both environments send to the same datastream, and the events do not record which environment sent them.
  • Some platforms send no identity. Action calls from platforms that do not provide a user ID, such as Claude, are skipped in Customer Journey Analytics.
  • One turn per action call. Each action call is recorded as its own conversation turn, so a prompt that triggers several actions counts as several turns.

Troubleshooting troubleshooting

What you see
What to check
The dataset receives no batches
You deployed the app after you saved the Analytics settings, to the environment you are testing. The datastream ID is correct. The datastream has the Adobe Experience Platform service with your dataset.
Batches fail
The schema includes all five field groups from Step 2.
Adobe Analytics has no data
The datastream has the Adobe Analytics service enabled with the correct report suite ID.
Page shows mcp:<code identifier>, but User Intent and the action fields are empty
Your handler repository uses @adobe/llm-apps-runtime 1.2.0 or later, and you deployed after upgrading. See Before you begin.
User Intent is empty for some actions
The processing rule from Step 4 uses the context data variables exactly as shown, in lowercase, and the correct eVar. The action has Collect user intent turned on. The rule applies only to data collected after you saved it.
Customer Journey Analytics shows fewer events than the dataset
Import all new data is on. Events without a primary identity are skipped, for example action calls from platforms that do not provide a user ID.
You cannot change the datastream ID or turn off Analytics
These settings are read-only in App Settings after activation. Contact the LLM Apps team for help. To route data elsewhere, change the report suite or dataset in the datastream itself.

What’s next whats-next

recommendation-more-help
llm-apps-help-main-toc