N
Naveenr.dev
Chapter 20
13 min read2026-08-12

Experience Fragment Architecture — Reusable Experiences Across Channels

Understand how Experience Fragments help AEM teams create reusable, presentation-driven experiences across pages and channels, how they differ from Content Fragments, and where they fit in a real project architecture.

Content Objective

We've spent the last few chapters looking at Content Fragments.

We started with structured content, then looked at models, references, reuse, and finally how that content should be organized and governed.

Now there is another AEM concept that often creates confusion:

Experience Fragments.

The confusion is understandable.

Both Content Fragments and Experience Fragments are reusable. Both can be used across different parts of an AEM implementation. And both can help reduce duplication.

But they solve a different problem.

Imagine a marketing team is running a summer campaign.

The same promotional experience needs to appear on:

  • The homepage
  • Product category pages
  • Landing pages
  • A campaign microsite

At first, an author can build the banner directly on each page.

That works until the campaign changes.

The headline changes from:

"20% OFF"

to:

"30% OFF"

Now someone has to find every page where the banner was created and update it.

The problem isn't really the banner.

The problem is that the same authored experience has been copied in multiple places.

This is where Experience Fragments become useful.

Instead of rebuilding the same experience on every page, we can create it once and reuse it where needed.

But before we get into how Experience Fragments work, we need to answer one basic question:

What are we actually trying to reuse — content or an experience?

That distinction is the key to understanding when to use a Content Fragment and when an Experience Fragment makes more sense.

Why Experience Fragments Exist

Let's continue with the campaign example.

The marketing team doesn't just want to reuse the words "Summer Sale."

They want to reuse the complete experience:

text
┌─────────────────────────────────┐
│        SUMMER SALE              │
│                                 │
│     [ Promotional Image ]       │
│                                 │
│     Save 30% on selected        │
│     products                    │
│                                 │
│          [ Shop Now ]           │
└─────────────────────────────────┘

That experience has more than content.

It has components.

It has layout.

It has authoring configuration.

It may also have styling and other presentation-related decisions.

If we store only the text and image as structured data, the consuming page still has to decide how those pieces should be assembled.

That's exactly what we want with a Content Fragment.

But in this case, the marketing team has already created the experience they want to reuse.

They don't want every page to rebuild it.

They want to author it once and reuse the same authored experience.

This is where Experience Fragments fit into the architecture.

An Experience Fragment gives that group of components its own place in AEM so it can be authored independently and then referenced from other pages.

So the relationship becomes:

text
Content Fragment
        │
        └── "Here is the business content."

Experience Fragment
        │
        └── "Here is the authored experience."

Page
        │
        └── "Place this experience here."

This distinction is important.

A Content Fragment helps us separate content from presentation.

An Experience Fragment lets us reuse a presentation-driven experience.

That doesn't mean an Experience Fragment should replace normal component development.

If the requirement is simply a reusable button, card, or image component, creating an Experience Fragment for it would add unnecessary complexity.

The value of an Experience Fragment appears when the thing being reused is a meaningful editorial experience made up of multiple components.

Where the Experience Fragment Lives

Now that we know why we need an Experience Fragment, let's look at where AEM actually stores it.

This is one of those things that becomes useful when you're debugging an implementation.

If an author creates a normal page, we expect the content somewhere under:

text
/content/<project>/

A Content Fragment is different. It is stored as an asset under:

text
/content/dam/

An Experience Fragment has its own location:

text
/content/experience-fragments/

For example:

text
/content/experience-fragments/
└── my-project/
    └── en/
        ├── promotions/
        │   └── summer-sale/
        └── footer/
            └── global-footer/

That separation tells us something about how AEM treats these three types of content.

text
Page
/content/<project>/
        │
        └── Complete page experience

Content Fragment
/content/dam/
        │
        └── Structured content

Experience Fragment
/content/experience-fragments/
        │
        └── Reusable authored experience

If you open an Experience Fragment in the repository, you're not going to find a simple set of fields like you would expect from a Content Fragment.

Instead, you'll find a component structure.

For example:

text
summer-sale
└── jcr:content
    └── root
        ├── title
        ├── image
        ├── text
        └── button

The exact node structure depends on the project and component implementation, but the important point is that the fragment contains an authored AEM component tree.

That is why an Experience Fragment feels much closer to a small page than to a structured content object.

This also explains why the repository location matters when debugging.

If an author says:

  • "The campaign banner is wrong on every page."

You don't necessarily start by opening each page.

You can trace the page's Experience Fragment reference back to:

text
/content/experience-fragments/...

and inspect the fragment itself.

The page is using the experience.

The Experience Fragment owns the reusable experience.

That separation is what allows one authored experience to be used in multiple places without copying the component structure onto every page.

How Experience Fragments Are Used on a Page

Now we have the Experience Fragment stored separately from the page.

The next question is simple:

How does a page actually use it?

Let's go back to the summer campaign.

The marketing team has created the Experience Fragment:

text
/content/experience-fragments/
└── my-project/
    └── en/
        └── promotions/
            └── summer-sale/
XF Repository + Page Reference
XF Repository + Page Reference

The homepage doesn't need to recreate the banner.

Instead, the page contains an Experience Fragment component that points to the reusable experience.

Conceptually, the page looks like:

text
Homepage
│
├── Header
├── Hero
├── Product List
├── Experience Fragment Component
│       │
│       └── Summer Sale XF
│
└── Footer

The important part here is the relationship.

The page owns the location where the experience appears.

The Experience Fragment owns the experience itself.

So if the same campaign is required on several pages:

text
                         Summer Sale XF
                              │
                ┌─────────────┼─────────────┐
                ↓             ↓             ↓
             Homepage     Category Page   Landing Page

Each page references the same reusable experience.

This is different from copying the components onto every page.

With copying:

text
Homepage
└── Banner copy

Category Page
└── Banner copy

Landing Page
└── Banner copy

Now there are three separate pieces of content to maintain.

With an Experience Fragment:

text
Summer Sale XF
      │
      ├── Homepage
      ├── Category Page
      └── Landing Page

There is one authored experience being reused.

That becomes especially useful when the experience changes.

If the marketing team changes the headline or image in the Experience Fragment and publishes it, pages referencing that fragment can consume the updated experience without an author having to edit each page individually, subject to the publish and caching flow.

This is the main architectural benefit:

The page decides where the experience is used; the Experience Fragment owns the reusable experience.

And this is where Experience Fragments start becoming more than just a convenient authoring feature.

They give the content architecture a way to separate page composition from reusable, presentation-driven experiences.

Variations: When the Same Experience Needs to Change

The campaign example works well when the same experience is used everywhere.

But real projects are rarely that simple.

The same campaign may need to look different depending on where it is being delivered.

For example, the website might use:

text
Summer Sale
[Large promotional image]
Save 30% on selected products
[Shop Now]

But an email may need a different structure.

A social channel may need a different image ratio and shorter copy.

An AMP experience may have its own technical restrictions.

We could create completely separate experiences for each case.

But then we're back to maintaining multiple versions of the same campaign.

This is where Experience Fragment variations become useful.

A single Experience Fragment can have different variations for different delivery requirements:

text
Summer Sale
│
├── master
├── email
├── social
└── amp

The variations represent the same underlying experience, but they can be adapted for their specific context.

For example:

text
Master
  → Full website experience

Email
  → Email-compatible structure

Social
  → Social-friendly layout and content

AMP
  → AMP-specific constraints

The important point is that a variation isn't simply another copy with a different name.

It exists because the delivery context has different requirements.

That distinction matters when designing the architecture.

If two versions are completely unrelated, they probably shouldn't be forced into variations of the same Experience Fragment.

But if they represent the same campaign or business experience and only the delivery requirements differ, variations can give the team a cleaner way to manage them.

A Practical Example

Suppose the marketing team changes the campaign message from:

text
20% OFF

to:

text
30% OFF

The website version and email version may both need that business change.

At the same time, their layouts may remain different.

So we can think about the relationship like this:

text
              Summer Sale
                   │
        ┌──────────┼──────────┐
        ↓          ↓          ↓
      Web        Email      Social
        │          │          │
     Layout A    Layout B   Layout C

The business experience is related.

The presentation requirements are different.

That is the real reason variations are useful.

They allow the architecture to acknowledge that reuse does not always mean identical output.

A common mistake is to assume that every variation should remain identical to the master variation.

In practice, variations may need their own content or presentation adjustments depending on the channel.

The architectural decision is therefore not:

  • "How can we make every channel look exactly the same?"

It is:

  • "What should remain consistent across channels, and what genuinely needs to vary?"

That is where Experience Fragment design starts becoming an architectural decision rather than just an authoring feature.

Experience Fragment Templates

There is another decision that becomes important once Experience Fragments are used across a larger project.

If authors can create any combination of components inside an Experience Fragment, the team can quickly end up with inconsistent experiences.

For example, an email Experience Fragment shouldn't allow authors to drop components that depend on JavaScript or modern browser-only layouts.

Similarly, a promotional Experience Fragment may need a specific structure so that every campaign follows the same design rules.

This is where templates come into the picture.

Instead of giving authors a completely open canvas, the project can define Experience Fragment templates that provide the starting structure and allowed components.

Conceptually:

text
Experience Fragment Templates
│
├── Web Experience
│     ├── Container
│     ├── Title
│     ├── Image
│     └── Button
│
├── Email Experience
│     ├── Email Container
│     ├── Text
│     ├── Image
│     └── CTA
│
└── Campaign Experience
      ├── Hero
      ├── Promotional Content
      └── CTA

The exact templates will depend on the project.

The important architectural idea is that the template provides guardrails for the experience.

Without those guardrails, authors may build something that looks correct in the author environment but doesn't work correctly in its intended delivery context.

For example, an email Experience Fragment may contain a component that depends on external CSS or JavaScript.

That might work perfectly on a website.

It doesn't necessarily make sense in an email.

So the template and its policies become part of the governance model.

The author gets enough freedom to build the experience, while the project controls the boundaries of what can be created.

This is similar to the way we discussed editable templates and policies earlier in the series.

The difference is what we're governing.

With page templates, we're governing the structure and authoring capabilities of pages.

With Experience Fragment templates, we're governing the structure and capabilities of reusable experiences.

That distinction becomes useful when the same AEM implementation supports several delivery contexts.

How the Experience Fragment Is Rendered

So far, we've looked at how an Experience Fragment is created and how a page references it.

Now let's look at what happens when the page is actually rendered.

Suppose the homepage contains an Experience Fragment component that references:

text
/content/experience-fragments/
└── my-project/
    └── en/
        └── promotions/
            └── summer-sale

When a visitor requests the homepage, AEM doesn't copy the Experience Fragment into the page's repository structure.

The page still has its own component structure.

The Experience Fragment component resolves the referenced fragment and renders that experience as part of the page.

Conceptually:

text
Browser Request
      ↓
AEM Page
      ↓
Experience Fragment Component
      ↓
Referenced Experience Fragment
      ↓
XF Component Tree
      ↓
Rendered HTML
      ↓
Browser

This is important when debugging because the content being displayed may not actually be stored under the page where you're seeing it.

For example:

text
/content/my-project/us/en/home
        │
        └── Experience Fragment Component
                    │
                    ↓
        /content/experience-fragments/
        my-project/en/promotions/summer-sale

So if an author says:

"I changed the banner on the homepage, but the same banner is wrong on three other pages."

you should first ask whether those pages are referencing the same Experience Fragment.

If they are, the problem may be inside the XF rather than inside any of the individual pages.

This is one of the practical differences between copying a component and referencing an Experience Fragment.

With copied components:

text
Page A
└── Banner

Page B
└── Banner

Page C
└── Banner

Each page owns its own copy.

With an Experience Fragment:

text
             Summer Sale XF
                    │
          ┌─────────┼─────────┐
          ↓         ↓         ↓
       Page A     Page B     Page C

The pages reference the same reusable experience.

That relationship is what gives Experience Fragments their value in larger AEM implementations.

It also means that caching and publishing need to be considered carefully.

A change to an Experience Fragment can affect multiple pages, so the team needs to understand how that change moves through the publish and caching layers.

We'll come back to that when we look at production issues.

XF Rendering / Reuse Flow
XF Rendering / Reuse Flow

Multi-Channel Delivery

The website is usually where Experience Fragments are first introduced, but enterprise projects often need to reuse the same campaign experience beyond the website.

Think about the summer campaign again.

The marketing team may need the campaign in:

text
Website
   ↓
Email
   ↓
Social Media
   ↓
Marketing Platforms

Creating each version independently creates another content maintenance problem.

The message may start as:

Summer Sale Save 30% on selected products

If the marketing team later changes the campaign message, every channel needs to be checked.

Experience Fragment variations can help when the same business experience needs different presentation or delivery requirements.

For example:

text
Summer Sale
│
├── Web
│
├── Email
│
└── Social

The important point is that these are not necessarily identical outputs.

The web version may have a full layout and interactive components.

The email version may need email-compatible HTML and styling.

The social version may focus more heavily on imagery and shorter copy. So the architecture becomes:

text
                    Campaign
                       │
                       ↓
              Experience Fragment
                       │
          ┌────────────┼────────────┐
          ↓            ↓            ↓
        Web          Email        Social
          │            │            │
      Web layout   Email rules   Social format

This gives the marketing team a common place to manage the campaign while still allowing each delivery context to have its own requirements.

In real projects, the exact integrations depend on the AEM version, Adobe products being used, and the organization's marketing stack.

For example, an implementation may integrate AEM with platforms such as Adobe Campaign, Adobe Journey Optimizer, Marketo, or other marketing systems.

The important architectural idea is not the specific integration.

It is the separation between:

the reusable experience and the channel that consumes it.

That separation becomes especially useful when the organization has many channels and wants to avoid maintaining completely independent versions of the same campaign.

Real-World Use Cases

The value of Experience Fragments becomes much clearer when we look at the kinds of problems they solve in real projects.

Imagine an organization with multiple country websites.

The footer contains:

  • Legal information
  • Navigation links
  • Copyright information
  • Regulatory text

The legal team updates the disclaimer twice a year.

If every site has its own copy of the footer, the content team has to find and update each one.

With an Experience Fragment, the footer can be maintained as a reusable experience.

Conceptually:

text
Global Footer XF
       │
       ├── US Site
       ├── UK Site
       ├── Germany Site
       └── India Site

The important part is that the team is no longer managing the same authored experience independently on every page.

However, regional differences still need to be modeled carefully.

If the legal text is genuinely different for each region, the architecture should provide the appropriate variations or separate experiences rather than forcing all regions to share identical content.

The goal is not simply "one fragment everywhere."

The goal is to reuse what is genuinely common while allowing required differences.

Use Case 2: Promotional Campaign

Consider an e-commerce site running a major seasonal promotion.

The campaign needs to appear on: Homepage Category Pages Landing Pages Campaign Pages

The marketing team creates the campaign experience once.

The relevant pages reference the appropriate Experience Fragment.

If the campaign artwork or CTA changes, the team updates the reusable experience instead of manually rebuilding the same component structure across dozens of pages.

The architecture might look like:

text
Black Friday Campaign XF
          │
    ┌─────┼─────┐
    ↓     ↓     ↓
  Home  Category Landing

If the campaign also requires email or social delivery, appropriate variations can be created where the delivery requirements are genuinely different.

Another common enterprise use case is reusable legal content.

For example, a financial services website may have a regulatory notice that needs to appear in several experiences.

The notice may contain more than plain text.

It might include:

  • Heading
  • Supporting text
  • Links
  • Disclaimer
  • Call-to-action

If that complete authored block needs to be reused in multiple locations, an Experience Fragment can provide a central place to manage it.

The advantage is not simply saving an author a few clicks.

The bigger advantage is reducing the number of places where a regulated experience can become inconsistent.

That is where Experience Fragments become valuable from an architecture perspective.

We are not just reusing a banner.

We are controlling a reusable piece of the digital experience.

Experience Fragment vs Content Fragment

By this point, the difference should be easier to see.

The important question is not:

"Which one is better?"

The better question is:

"What are we actually trying to reuse?"

If the requirement is structured business content that may be consumed by different applications, a Content Fragment is usually the better fit.

If the requirement is a reusable, authored experience made up of AEM components and layout, an Experience Fragment is usually a better fit.

A practical comparison looks like this:

QuestionContent FragmentExperience Fragment
Primarily represents structured content?YesNo
Contains authored AEM components?NoYes
Has presentation/layout?NoYes
Stored under /content/dam?YesNo
Stored under /content/experience-fragments?NoYes
Commonly consumed through GraphQL?YesNot the primary use case
Can be reused across pages?Yes, through the consuming experienceYes, directly as a reusable experience
Supports variations for different delivery contexts?Content is shaped by the consuming applicationYes, through Experience Fragment variations
Content Fragment vs Experience Fragment
Content Fragment vs Experience Fragment

A simple decision rule is:

text
Need reusable structured business content?
                ↓
        Content Fragment

Need reusable authored experience
with components and presentation?
                ↓
        Experience Fragment

The distinction becomes particularly important in headless projects.

Suppose a mobile application needs product information.

The application doesn't need AEM's page layout.

It needs structured data that it can render using its own UI.

A Content Fragment makes sense.

Now suppose the marketing team wants the same fully authored promotional block to appear across several AEM pages.

The page needs the components, layout, and authoring decisions that were created in AEM.

An Experience Fragment makes more sense.

So the decision is not really about choosing between two competing AEM features.

They solve different architectural problems.

text
Content Fragment
        ↓
"What is the business content?"

Experience Fragment
        ↓
"What is the reusable authored experience?"

Once that distinction is clear, it becomes much easier to decide where each belongs in an AEM architecture.

Production Troubleshooting

Experience Fragments look simple when everything is working.

The problems usually appear when the fragment is shared across many pages, channels, or environments.

A few issues are worth knowing before using XFs heavily in production.

Problem: XF Changes Are Not Showing on Pages

Imagine an author updates the summer campaign Experience Fragment and publishes it.

The author opens the page expecting to see the new version.

But the old content is still being displayed.

The first thing to understand is that the page and the Experience Fragment are separate pieces of content.

So debugging should start by checking the complete path:

text
Experience Fragment
        ↓
Published?
        ↓
Page references the correct XF?
        ↓
Publish environment has the latest version?
        ↓
Cache serving an older response?

If the Experience Fragment itself has not been published, the page cannot display the expected published version.

If it has been published, the next thing to investigate is caching and invalidation.

This is especially important when the same XF is referenced by many pages.

A change to one Experience Fragment can affect many rendered pages, so the caching strategy needs to account for that dependency.

The key lesson is:

  • Don't debug only the page when the content being rendered is owned by an Experience Fragment.

Trace the reference back to the fragment and then follow the publish and caching flow.

Problem: Authors Cannot Find the Experience Fragment Template

Another common issue appears before the fragment is even created.

An author goes to create an Experience Fragment but cannot find the expected template.

Instead of assuming the template is broken, check the configuration around the project.

The investigation should include:

text
Project Configuration
        ↓
Experience Fragment Template Configuration
        ↓
Template Availability
        ↓
Author Permissions

The exact configuration depends on the AEM project setup.

The important point is that Experience Fragment templates are governed by configuration and permissions just like other authoring capabilities.

If the template is not available for the expected content path, authors may not see it even though the template exists.

Problem: The Experience Looks Correct on the Website but Not in Another Channel

This is particularly common when variations are involved.

For example:

text
Web Variation
      ↓
Looks correct

Email Variation
      ↓
Rendering problems

The mistake is assuming that because the web variation works, the email variation should work automatically.

Different channels have different technical constraints.

Email clients, for example, do not support the same HTML and CSS capabilities as modern browsers.

So the variation needs to be designed for its actual delivery environment.

The debugging process should therefore start with the target channel:

text
Which variation?
       ↓
Which delivery channel?
       ↓
What does that channel support?
       ↓
Which components are being used?
       ↓
Does the template enforce the required constraints?

This is why template governance matters.

A good Experience Fragment template can prevent authors from building experiences that are technically unsuitable for their target channel.

A Better Way to Debug XFs

When an Experience Fragment doesn't behave as expected, avoid immediately changing the page.

Start with the relationship:

text
Page
  ↓
Experience Fragment Component
  ↓
Referenced XF
  ↓
Variation
  ↓
Published Content
  ↓
Cache / Delivery Layer

This gives the team a much clearer debugging path.

The more widely an Experience Fragment is reused, the more important this becomes.

One incorrect XF can affect many pages.

That's one of the benefits of reuse, but it is also one of the operational responsibilities that comes with it.

Why Architects Care

At first, an Experience Fragment looks like a convenient way to reuse a banner.

At an enterprise level, the architectural value is much bigger.

The real problem is where the responsibility for a reusable experience should live.

Without an Experience Fragment, the same experience can end up being authored independently across many pages:

text
Homepage
   └── Campaign Experience

Category Page
   └── Campaign Experience

Landing Page
   └── Campaign Experience

Product Page
   └── Campaign Experience

Now every copy has its own lifecycle.

A change to the campaign means finding every location where that experience was created.

With an Experience Fragment:

text
              Campaign Experience
                       │
          ┌────────────┼────────────┐
          ↓            ↓            ↓
      Homepage     Category      Landing

The reusable experience has its own lifecycle.

That gives architects a few things to think about.

Reuse vs Coupling

Reuse is valuable, but not everything should become an Experience Fragment.

If a small piece of UI can be handled cleanly by a reusable component, creating an XF for it may introduce unnecessary dependency and authoring complexity.

The question should be:

  • Is this a meaningful authored experience that needs to be managed independently?

If the answer is yes, an Experience Fragment may be a good fit.

##Governance

Once an XF is referenced by many pages, changing it can have a much larger impact than changing content on one page.

That means teams need to understand:

text
Who owns the XF?
       ↓
Where is it used?
       ↓
Who can modify it?
       ↓
How is it reviewed?
       ↓
How is it published?

A reusable experience should therefore have clear ownership and lifecycle rules.

Channel Strategy

Architects also need to think about whether the organization genuinely needs different variations.

Creating variations simply because the feature supports them can make the content model harder to maintain.

The better approach is to identify the actual delivery requirements:

text
Same experience?
       ↓
Reuse directly

Same business experience,
different delivery requirements?
       ↓
Consider variations

Completely different experience?
       ↓
Keep it separate

The Architectural Trade-Off

Experience Fragments reduce duplication, but they also create dependencies.

One XF can be used by many pages.

That is the benefit.

But it also means one change can affect many pages.

So the architectural decision is not simply:

  • "Can we reuse this?"

It is:

  • "Should this experience have a shared lifecycle?"

That is the question that matters when deciding whether something belongs in an Experience Fragment.

Summary

Experience Fragments solve a different problem from Content Fragments.

A Content Fragment gives us structured business content that can be consumed and presented by different experiences.

An Experience Fragment gives us a way to create and reuse a complete authored experience made from AEM components.

The main things to remember are:

  1. Reuse the experience, not just the content

    If the reusable item includes components, layout, and authoring decisions, an Experience Fragment may be a better fit than copying that structure across pages.

  2. The page and the experience have different responsibilities

    The page decides where the experience appears.

    The Experience Fragment owns the reusable experience.

  3. Variations are useful when the delivery context is different

    Web, email, or another channel may need different presentation or technical constraints. Variations allow those differences to be managed without treating every version as an unrelated experience.

  4. Repository location matters

    Experience Fragments live under:

    text
    /content/experience-fragments/
    
code
This is different from Content Fragments, which are managed under the DAM.

5. **Reuse also creates dependencies**

A single Experience Fragment can affect many pages.

That is one of its biggest benefits, but it also means teams need to think about ownership, publishing, caching, and change impact.

6. **Not everything should become an Experience Fragment**

A small reusable UI element may be better implemented as a component.

An Experience Fragment makes more sense when the team needs to manage a meaningful, presentation-driven experience independently.

The important architectural question is therefore not:

- "Can we reuse this?"

It is:

**"Does this experience need its own lifecycle and need to be reused across multiple experiences?"**


## What's Next?

We've now seen where Experience Fragments fit into the content architecture.

Content Fragments help us manage structured business content.

Experience Fragments help us manage reusable authored experiences.

But there is another problem when an organization operates multiple sites and regions.

The same business may have:

```text
Global Website
   ↓
US Website
   ↓
UK Website
   ↓
Germany Website
   ↓
India Website

The sites may share a large amount of content, but they may also need their own language, branding, navigation, legal information, or regional content.

Copying everything into separate sites creates another maintenance problem.

So the next architectural question becomes:

How do we manage multiple sites and languages while still reusing content and keeping regional differences under control?

That leads us to Multi Site Manager (MSM).

In the next chapter, we'll look at how MSM works, how it relates to site structure and content inheritance, and where architects need to be careful when designing multi-site AEM implementations.

Enjoyed this chapter?

Get an email when I publish the next chapter. No spam — just new technical deep-dives.

Comments

Share feedback or questions about this blog post.

No comments yet. Be the first to share your thoughts.