Fullstory × Adobe CJA

CJA shows the drop-off.
Fullstory shows the cause.

Adobe Customer Journey Analytics tells you where users abandon. Fullstory tells you why — and sends that signal back to CJA as a dimension you can actually act on.

Adobe CJA Session Replay Ask StoryAI StoryAI Opportunities Fullstory Data Layer XDM Schema
← Back to Value Stories

Executive Summary

The funnel shows what. Fullstory adds the why.

Every CJA funnel report ends at a number. Fullstory starts there — embedding session replay URLs directly in CJA tables so analysts can step into the experience, ask AI what went wrong, and push a structured friction signal back as an XDM field. The funnel stops being a dead end.

62%
Drop-off at checkout step 3

The funnel identifies the leak — but can't explain why users don't complete.

0→1
CJA row to session context

One click from a CJA data row lands an analyst inside the user's session.

5,300+
Affected interactions caught

StoryAI Opportunities surfaces the "No Cars Found" error affecting thousands of users — before product hears about it.

1 field
Data Layer → XDM

One computed property in the Fullstory Data Layer becomes a CJA dimension — no engineering sprint required.

The Gap

CJA is built to spot patterns.
It wasn't built to explain them.

Without Fullstory

Analytics stops at the number

  • CJA funnel shows a 62% drop-off at checkout step 3 — no explanation attached
  • Analysts file tickets to engineering based on guesses about what broke
  • Product hypotheses take weeks to validate — requires watching dozens of sessions manually
  • Friction signals stay siloed in Fullstory; CJA never learns what caused the drop
  • No way to segment "users who hit a specific error" vs. "users who didn't"
With Fullstory Signal Streams

The funnel tells the whole story

  • CJA tables include Fullstory session URLs — one click to step into any user's experience
  • Ask StoryAI delivers structured analysis in seconds — no scrubbing required
  • StoryAI Opportunities auto-surfaces aggregate trends across all sessions
  • Fullstory Data Layer publishes friction signals as XDM-mapped CJA dimensions
  • Funnel reports gain a "root cause" dimension — not just where, but why

How It Works

Four steps from funnel anomaly
to actioned signal

🔁

CJA → Fullstory → CJA Signal Loop

The closed-loop integration: CJA surfaces where, Fullstory explains why, the signal returns to CJA as a structured dimension

Step 1
CJA Funnel
Step 2
FS Session
Step 3
Ask StoryAI
Step 4
Data Layer → XDM
Closed
CJA Dimension
1
Spot the anomaly in CJA Jeff opens the checkout fallout report and sees a 62% drop after "Summary Page." The CJA table includes Fullstory session replay URLs in the segment-level data.
2
Step into the session One click opens Sophia Lewis's Fullstory session. Before watching a frame of replay, Jeff sees the AI-generated session summary — a 404 network error and "No Cars Found" modal that killed a near-complete conversion.
3
Scale the hypothesis with StoryAI Jeff uses Ask StoryAI to analyze Sophia's session, then opens StoryAI Opportunities. The same "No Cars Found" error is already flagged as FS-2929 — Critical Severity, 5,300+ affected interactions. It's not a one-off.
4
Close the loop — push signal to CJA Jeff creates a computed property in the Fullstory Data Layer tracking "No Cars Found" occurrences per session. It maps to an XDM schema field, becoming a native CJA dimension. The funnel report now segments by root cause.

See It In Action

The four screens that tell the story

Adobe CJA Checkout Fallout Chart
Step 1 — CJA Funnel
CJA Checkout Fallout — 62% drop-off at Summary Page
The funnel identifies the leak precisely, but offers no explanation. Jeff needs to know why users aren't reaching checkout.
CJA session table with Fullstory replay URLs
Step 1 — The Bridge
CJA session-level table with embedded Fullstory replay URLs
One click from any CJA row opens the user's full Fullstory session — no copy-paste, no context switching.
Ask StoryAI session analysis
Step 3 — Ask StoryAI
Ask StoryAI — "What was the most frustrating part of this session?"
In seconds, StoryAI surfaces the structured behavioral breakdown — not just what happened, but the signals that explain why the user gave up.
StoryAI Opportunities — Critical and High Severity
Step 3 — Scale the Diagnosis
StoryAI Opportunities — spiking issues filtered to Critical & High Severity
FS-2929 was already there before Jeff filed a ticket. The "No Cars Found" error is a systemic pattern, not a one-off session.
Create computed property — No Cars Found
Step 4 — Data Layer Property
Fullstory Data Layer — "No Cars Found" computed property
A Meta/Count property tracking 5,300+ interactions across 6 pages. One config — no code deploy required.
Cargo Data Layer overview — computed properties
Step 4 — Published Signal
Cargo Data Layer Version 7 — "No Cars Found" alongside other derived signals
Once published, this field maps to an XDM schema field and becomes a native CJA dimension — ready for funnel segmentation.

Use Case Scenarios

Where the loop closes fastest

🚨

Backend Error Diagnosis

CJA Signal
62% drop-off at checkout step 3 — no error dimension available
Fullstory Finding
404 network error on search, "No Cars Found" modal — 5,300+ interactions affected
Data Layer Field
no_cars_found_count
CJA Dimension
_fullstory.errorEncountered
Outcome Engineers fix the correct backend issue — no guesswork sprint required
🔍

UX Friction Quantification

CJA Signal
Form page has high exit rate — no behavioral context
Fullstory Finding
Dead click heatmap reveals users clicking a non-interactive element expecting navigation
Data Layer Field
dead_click_count
CJA Dimension
_fullstory.frictionSignal
Outcome Product team ships a targeted UI fix with measurable CJA before/after
📊

Segment Enrichment

CJA Signal
High-value users converting at lower rate than mid-tier — no explanation
Fullstory Finding
Ask StoryAI reveals high-value users are hitting a premium feature paywall on a step that used to be free
Data Layer Field
paywall_encountered
CJA Dimension
_fullstory.paywallHit
Outcome Pricing team reverses gating decision — conversion recovers in 2 weeks

Proactive Issue Detection

CJA Signal
Login conversion rate dips 8% on Tuesday — flagged in CJA anomaly detection
Fullstory Finding
StoryAI Opportunities already has FS-4627 open — "Failed to Fetch" error on login button, High Severity
Data Layer Field
login_error_type
CJA Dimension
_fullstory.loginErrorType
Outcome Engineering gets a structured bug report with session evidence before a ticket is filed

Data Model

From Fullstory computed property
to CJA dimension

The Fullstory Data Layer publishes behavioral signals as computed properties. A single XDM schema mapping sends them to the AEP dataset that CJA reads — no custom pipeline, no ETL.

Fullstory Data Layer
no_cars_found_count number
dead_click_count number
rage_click_count number
error_message string
session_replay_url string
frustration_signal enum
pages_with_errors array
XDM
Mapping
AEP
Dataset
CJA
Dimension
CJA Dimensions
_fullstory.noCarsFound integer
_fullstory.deadClickCount integer
_fullstory.rageClickCount integer
_fullstory.errorMessage string
_fullstory.sessionReplayUrl string
_fullstory.frustrationSignal enum
_fullstory.errorPages array

Technical Integration

The integration surface

Component Method Endpoint / Config Purpose
Fullstory Tag (AEP) INIT FS('init', { orgId }) Instrument the site — session capture begins immediately
Session Replay URL GET FS('getSession') Returns current session URL — embed in XDM as a dimension for CJA drill-through
Data Layer Property CONFIG Fullstory UI → Data Layer Define computed properties (count, boolean, string) from behavioral signals — no code deploy
XDM Schema SCHEMA AEP → Schemas → _fullstory Add a custom field group under _fullstory namespace; map each Data Layer property
AEP Web SDK SEND alloy('sendEvent', { xdm }) Include Fullstory Data Layer values in the XDM payload on each event — flows into the dataset
AEP Dataset INGEST AEP → Datasets → Streaming XDM events land here; CJA connects to this dataset as its data source
CJA Data View CONFIG CJA → Data Views → Add Component Expose the _fullstory.* XDM fields as dimensions and metrics in Workspace
CJA Workspace ANALYZE Freeform Table / Fallout Segment any funnel or journey by Fullstory friction dimension — _fullstory.noCarsFound > 0
Ask StoryAI AI Fullstory UI → Session → Ask StoryAI Natural-language session analysis — "What was the most frustrating part of this session?"
StoryAI Opportunities AI Fullstory UI → StoryAI → Opportunities Aggregate anomaly detection — surfaces spiking issues before they appear in CJA trend data

Recommendation

Three phases to close the loop

From CJA insight to actioned signal

Start with the session URL — it's one configuration change. The full signal loop follows naturally.

Phase 1 — Connect
Embed Fullstory in CJA
  • Install Fullstory tag via Adobe Tags (AEP Launch)
  • Add session_replay_url to XDM schema
  • Map FS('getSession') to the field on every event
  • Expose _fullstory.sessionReplayUrl as a CJA dimension
  • Analysts can now click from any CJA row into the user's session
Phase 2 — Diagnose
Surface friction signals
  • Configure the Fullstory Data Layer with computed properties
  • Start with error counts: no_cars_found_count, dead_click_count
  • Map each property to an XDM field in the _fullstory namespace
  • Expose as CJA dimensions — now segment funnels by root cause
  • Use StoryAI Opportunities to discover which signals matter most
Phase 3 — Close the Loop
Make every funnel diagnostic
  • Set up StoryAI Opportunities alerts for Critical/High severity spikes
  • Build a standard "friction signal library" in the Data Layer
  • Establish CJA Workspace templates with Fullstory dimensions baked in
  • Train analysts to use Ask StoryAI as the first step after any funnel anomaly
  • Connect Fullstory signals to CJA Anomaly Detection alerts
← Back to Value Stories