Introduction: The New Standard for Agile Marketing
In today’s hyper-personalized digital landscape, marketers are expected to deliver relevant, timely, and consistent content across multiple channels. But managing this at scale—especially with real-time updates—can be daunting.
Enter the powerful integration of Adobe Experience Manager as a Cloud Service (AEM) Content Fragments with Adobe Journey Optimizer (AJ... This duo empowers marketers to:
- Create structured, reusable content
- Personalize it dynamically using customer data
- Update it in real time across all campaigns
Let’s explore how this works, and then dive into a detailed, real-world use case to bring it all to life.
What Are AEM Content Fragments?
AEM Content Fragments are channel-neutral, structured content blocks stored in JSON format. They allow marketers to manage content independently of design, making them ideal for omnichannel delivery.
Why They Matter to Marketers
- Efficiency: Author once, reuse everywhere.
- Personalization: Dynamically insert content using profile or contextual data with the help of placeholders.
- Governance: Centralized control over content and offers.
- Real-Time Updates: Instantly reflect changes across all journeys.
Real-World Use Case: Personalized Flash Sale Campaign in Retail
Let’s walk through a detailed example of how a fashion retailer like LUMORA Collective can use AEM and AJO to run a personalized flash sale campaign.
LUMORA Collective is a global fashion powerhouse known for its diverse portfolio of clothing brands, each catering to a unique audience and style.
Brands under LUMORA Collective:
VYNA
- Style: Urban streetwear
- Target: Gen Z and young millennials
- Tagline: “Own the moment.”
Elaré
- Style: Modern minimalism and elevated basics
- Target: Professionals and fashion-forward adults
- Tagline: “Effortless elegance.”
WildLoom
- Style: Boho-chic and festival-inspired fashion
- Target: Free-spirited creatives and travelers
- Tagline: “Wear your wild.”
Objective
LUMORA plans ahead of the year for two types of Flash sales:
- End of Season Flash sales (EOS)
- Black Friday Flash sales
The marketer goal is to send personalized flash sale alerts to customers based on their preferred product category and browsing history during both of these planned flash sales campaign.
Step-by-Step Implementation
Step 1: Create a Content Fragment in AEM

- Access AEM and go to Tools > Content Fragment Model
- Create a new Content Fragment Model with fields like:
fragment_name
description
brand
title
body1
body2
cta
- Navigate to AEM home and under 'Navigation' access 'Content Fragments'

4. Click 'Create' button to create Content Fragment by selecting the previously created Content Fragment model

5. Author content fragments for each brand and as shown below
Brand: VYNNA, EOS Flash sales Content Fragment
{ fragment_name: "VYNA_EOS_flash_sales" description: "JSON content for Flash sale alerts" brand: "VYNA" banner_image: "imagelink" title: "Hey {{customerName}},your street style just got hotter. " body1: " Flash Sale: Get {{discount}} off on {{productCategory}} at VYNA " body2: "Shop {{productName}} now" cta: {{ctaLink}} } |
Brand: Elaire, EOS Flash sales Content Fragment
{ fragment_name: "Elaire_EOS_flash_sales" description: "JSON content fro Flash sale alerts" brand: "Elaire" banner_image: "imagelink" title: "Hi {{customerName}},elevate your wardrobe with timeless pieces from Elaré. " body1: " Enjoy {{discount}} off on our curated {{productCategory}} collection" body2: "Featured for you: {{productName}}. Explore the Collection" cta: {{ctaLink}} } |
Brand: WildLoom, EOS Flash sales Content Fragment
{ fragment_name: "WildLoom_EOS_flash_sales" description: "JSON content fro Flash sale alerts" brand: "Elaire" banner_image: "imagelink" title: "Hey {{customerName}},your next adventure deserves a new look " body1: " Flash Sale: {{discount}} off on {{productCategory}} at WildLoom " body2: "We picked this just for you: {{productName}} Ends soon – don’t miss it! Shop the Vibe" cta: {{ctaLink}} } |
Step 2: Tag the Fragment for AJO (In order to allow listing of AEM Content Fragments within the AJO editing experience)
- Go to Tools > Tagging.
- Create a tag using the format:
ajo-enabled:{AJO-OrgId}/{AJO-SandboxName} - Assign this tag to your Content Fragment.

Step 3: Access and Use the Fragment in AJO
- In AJO, create a new Campaign or Journey.
- Add action node to a journey, click 'Edit Content' / Add channel to a campaign action and click 'Edit Content'
- Open the AJO WYSIWIG editor, drag and drop a structure and add text component
- In any text field, click the Personalization icon or open the HTML editor.

5. Use the AEM Content Fragment selector to browse and select your tagged fragment.

6. Use filters to find only approved fragments.

7. Select the required Content Fragment and click select to include into AJO editor
8. Use the preview icon to view the content inside selected AEM Content fragment

Step 4: Add AEM CF and Map Placeholders to Data
- Access the AEM Content Fragment attributes and plug in to the HTML content. LUMORA plans to send out the flash sales campaign at a personalized level based on the preferredCategory of each profile.

if profile.preferredCategory = "VYNA" {{fragment id='aem:391418cd-0da1-4568-a5ac-8c02a38cee91?repoId=author-p22655-e59471.adobeaemcloud.com' result='cf'}} ------------ fragment: VYNA_EOS_flash_sales else if profile.preferredCategory = "Elaire" {{fragment id='aem:391419cd-0da1-4009-a5ac-8c02a38cfd22?repoId=author-p22655-e59471.adobeaemcloud.com' result='cf'}} ------------ fragment: Elaire_EOS_flash_sales else if profile.preferredCategory = "Wildoom" {{fragment id='aem:391419cd-0da1-4009-a5ac-8c02a38cfd22?repoId=author-p22655-e59471.adobeaemcloud.com' result='cf'}} ------------ fragment: WildLoom_EOS_flash_sales <html> <css> ... </css> {{{cf.banner_image}}} {{{cf.title}}} {{{cf.body1}}} {{{cf.body2}}} {{{cf.cta}}} </html> |
2. Map each placeholder to a data source, within the fragment helper.

Mapping of placeholders with string/profile/contextual attributes can be done using an intuitive form based UI experience. Follow the steps below:
- Enable 'Pills' from the bottom right corner of the editor
- Click on the 'Pill' AEM content fragment in the editor
- Right rail opens up listing a form view with all placeholder labels which can be mapped to any value
Updated content with placeholder mappings:
if profile.preferredCategory = "VYNA" {{fragment id='aem:391418cd-0da1-4568-a5ac-8c02a38cee91?repoId=author-p22655-e59471.adobeaemcloud.com' result='cf' customerName = profile.person.name.firstName productCategory = profile.interests.category productName = profile.lastViewedProduct.name discount = "30%" ctaLink = " https://brand.com/sale"}} ------------ fragment: VYNA_EOS_flash_sales else if profile.preferredCategory = "Elaire" {{fragment id='aem:391419cd-0da1-4009-a5ac-8c02a38cfd22?repoId=author-p22655-e59471.adobeaemcloud.com' result='cf' customerName = profile.person.name.firstName productCategory = profile.interests.category productName = profile.lastViewedProduct.name discount = "30%" ctaLink = " https://brand.com/sale"}} ------------ fragment: Elaire_EOS_flash_sales else if profile.preferredCategory = "Wildoom" {{fragment id='aem:391419cd-0da1-4009-a5ac-8c02a38cfd22?repoId=author-p22655-e59471.adobeaemcloud.com' result='cf' customerName = profile.person.name.firstName productCategory = profile.interests.category productName = profile.lastViewedProduct.name discount = "30%" ctaLink = " https://brand.com/sale"}} ------------ fragment: WildLoom_EOS_flash_sales <html> <css> ... </css> {{{cf.banner_image}}} {{{cf.title}}} {{{cf.body1}}} {{{cf.body2}}} {{{cf.cta}}} </html> |
Step 5: Preview and Test
- Use AJO’s preview tools to test how the message renders for different profiles.
- Make sure all mappings resolve correctly.
- The above content will render as below.
Previews show the different variations applied based on the profile.preferredCategory



Step 6: Publish and Monitor
- Once validated, publish the journey.
- Any updates made to the Content Fragment in AEM (e.g., changing the discount or product name) will reflect instantly across all campaigns using it.
Step 7: Real-time updates to live journey
- In order to make any modifications to the content accessed from AEM Content Fragments in the live journey, follow the below steps
- Navigate to Adobe Experience Manager and open the AEM CF to be modified
- Make necessary modifications to the text or image in the AEM CF and publish again
- The modifications will be automatically percolated to all AJO journeys/campaigns accessing the AEM CF

Extended Use cases:
Use case 1:
LUMORA Collective runs Flash sales campaigns not only for End of Season sales, but also Black Friday sales. In order to curate their Black Friday sales, they can easily swap the older EOS fragments with BlackFriday fragments with no further changes needed at the authoring.
Additional to the End Of Season Flash Sales Content Fragment, LUMORA also have created a Black Friday Flash Sales Content Fragment (both of the AEM Content Fragments belonging to the same fragment model)
Brand: VYNNA, Black Friday Flash sales Content Fragment
{ fragment_name: "VYNA_Black_Friday_flash_sales" description: "JSON content for Flash sale alerts" brand: "VYNA" banner_image: "imagelink" title: "Hey {{customerName}},your street style just got hotter this season " body1: "Flash Sale: This Black Friday get {{discount}} off on {{productCategory}} at VYNA " body2: "Shop {{productName}} now" cta: {{ctaLink}} } |
Use case 2:
LUMORA Collective plans to curate and run campaigns for their new Summer Linen collection based on user location and language.
Locations: New York, Toronto, Dubai, Barcelona, Tokyo
Languages: English, French, Spanish, Japaneese
Total variants: 5 (locations) X 4 (languages) = 20 variants
In order to cater to the above use case, LUMORA can create unique AEM Content Fragments which can be accessed, utilized and re-used in AJO content authoring editor based on conditional logic.
For example, there are 4 different AEM Content Fragments created with unique content: Lumora_Summer_English, Lumora_Summer_French, Lumora_Summer_Spanish, Lumora_Summer_Japaneese
Conditional logic based on location and language can be added within AJO content editor to choose from the unique variants for each combinations. Some of the combinations could be defined as below:
{ if ((profile.location=="New York" AND profile.preferredLanguage="English") OR (profile.location=="Dubai" AND profile.preferredLanguage="English") OR profile.location="New York" OR profile.preferredLanguage="English") --------- fragment 'Lumora_Summer_English' else if ((profile.location=="Toronto" AND profile.preferredLanguage="French") OR profile.preferredLanguage="French") --------- fragment 'Lumora_Summer_French' else if ((profile.location=="Barcelona" AND profile.preferredLanguage="Spanish") OR profile.preferredLanguage="Spanish") --------- fragment 'Lumora_Summer_Spanish' else if ((profile.location=="Tokyo" AND profile.preferredLanguage="Japaneese") OR profile.preferredLanguage="Japaneese") } |
Step 7: Swap the existing AEM Content Fragment to a new one
- Click the menu option shown on the selected AEM CF from the middle panel and click swap AEM Content Fragment
- Select the fragment to be added from the listing (in this case VYNA_Black_Friday_flash_sales)
- No further modifications required to render the content as expected

Real-Time Updates: Why They Matter
With AEM + AJO, marketers can:
- Update offers or content centrally in AEM
- Avoid re-authoring content in every campaign
- Respond instantly to inventory changes, market trends, or customer behavior
This is especially powerful for:
- Flash sales
- Crisis communications
- Seasonal promotions
- Regulatory updates (e.g., in healthcare or finance)
Industry Use Cases: Beyond Retail
Travel: Pre-Trip Upsells
Scenario: A travel agency wants to upsell hotel upgrades before departure.
- Create a fragment with destination, travel dates, and add-ons.
- Personalize based on booking data.
- Update offers in real time as availability changes.
The fragment could include placeholder such as name, destination to be added to the content for personalization.
Hi {{name}}, enhance your trip to {{destination}} with a luxury hotel upgrade or a guided city tour!
Hospitality: Loyalty-Based Offers
Scenario: A hotel chain sends tier-based loyalty offers.
- Use AEM to manage loyalty-tier content fragments.
- Personalize offers in AJO based on loyalty status.
- Update seasonal promotions centrally.
The fragment could include placeholder such as name, destination to be added to the content for personalization.
Hi {{name}}, as a {{loyaltyTier}} member, enjoy 20% off your next stay at any of our resorts!
Healthcare: Post-Visit Follow-Ups
Scenario: A provider sends post-visit care instructions.
- Create a fragment with care plan and appointment details.
- Map to patient profiles in AJO.
- Update care instructions centrally as protocols evolve.
The fragment could include placeholder such as name, destination to be added to the content for personalization.
Hi {{name}}, your care plan includes {{carePlan}}. Your next appointment is on {{appointmentDate}}.
Cross-Industry: Offer Personalization at Scale
Scenario: A brand wants to insert dynamic offers into campaigns.
- Use AEM to manage all offers as fragments.
- Map placeholders to user behavior or segmentation data.
- Update offers instantly across all journeys.
The fragment could include placeholder such as name, destination to be added to the content for personalization.
Special offer just for you: {{offerTitle}} – Save {{discount}} on {{product}} until {{expiryDate}}!
Best Practices for Marketers
- Standardize Fragment Models: Align with your brand’s content strategy.
- Use Tags for Governance: Helps in organizing and filtering.
- Test Thoroughly: Always preview before publishing.
- Collaborate with Developers: For advanced personalization logic.
- Leverage Real-Time Updates: Keep content fresh and relevant.
Conclusion: From Fragment to Fortune
The integration of AEM Content Fragments with Adobe Journey Optimizer is a game-changer for marketers. It enables:
- Personalized, omnichannel experiences
- Centralized content and offer management
- Real-time agility and responsiveness
Whether you're in retail, travel, hospitality, or healthcare, this integration empowers you to deliver the right message to the right person—at the right time.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.