Adobe Articles / Blogs / Perficient https://blogs.perficient.com/category/partners/adobe/ Expert Digital Insights Tue, 15 Apr 2025 18:16:30 +0000 en-US hourly 1 https://blogs.perficient.com/files/favicon-194x194-1-150x150.png Adobe Articles / Blogs / Perficient https://blogs.perficient.com/category/partners/adobe/ 32 32 30508587 Safely Modifying AEM Cloud Service UIs With App Builder Extension Points https://blogs.perficient.com/2025/04/14/safely-modifying-aem-cloud-service-uis-with-app-builder-extension-points/ https://blogs.perficient.com/2025/04/14/safely-modifying-aem-cloud-service-uis-with-app-builder-extension-points/#respond Mon, 14 Apr 2025 17:18:50 +0000 https://blogs.perficient.com/?p=379951

For many years, overlays have been an often-used method for AEM tools and UI customization. This requires copying system code from /libs to /apps and letting Sling resource merger resolve Adobe’s provided code alongside custom code.

With the introduction of AEMaaCS came the establishment of immutable areas in the repository node tree and therefore limitations to this overlays approach.  Some nodes that may have been used or overlaid in 6.4 were locked down with the mixin “granite:InternalArea” in 6.5 and cloud instances. This change wasn’t meant as a restrictive update, but rather to prevent Adobe-provided updates from breaking customizations.

Many aspects of the out-of-the-box JCR structure can still be overlaid, inherited from, or used directly; however, it’s a game of careful, selective usage. Thankfully, with the maturity of AEMaaCS and the overall Adobe Experience Platform, there is now a more modern option for customizing services used with AEM: App Builder Extensions!

They’re called extensions because they use cloud native extensibility via App Builder to enhance Adobe Experience Cloud apps or build custom tools to work alongside them. Extensions are “a new property of App Builder applications that enables developers to build and to extend specific Adobe products in an integrated fashion across our ecosystem.”

In this post, I’ll detail how to use these extensions to enhance 2 key services, the cloud native Content Fragments Editor and the Universal Editor. Each of these services/tools has an API with several extension points:

https://developer.adobe.com/uix/docs/services/aem-cf-editor/api/

https://developer.adobe.com/uix/docs/services/aem-universal-editor/api/

Please note, the techniques outlined assume you have access to:

  • An AEM cloud service instance (we’ll only be interacting with the author tier)
  • NodeJS and NPM installed
  • The Adobe I/O CLI is installed
  • Developer console
  • Universal Editor

Please refer initially to https://developer.adobe.com/uix/docs/guides/local-environment/ for your local setup.

Creating an extension follows a repeated pattern of first creating a project in the developer console, then creating a project via Adobe I/O, which uses the developer console project.

What makes up an Extension?

Extending AEM Cloud Service UIs takes advantage of the JAM (JavaScript, APIs, and markup) stack.

Extensions are based on React and use the React Spectrum UI library; this is the toolkit now used by Adobe for its cloud native UIs. As a result, local development for UI extensions leans heavily into NodeJS and React.

As for the solution infrastructure, extensions use the serverless Adobe I/O runtime to facilitate event-driven or HTTP request-driven execution of the React apps. In addition, App builder has state storage and storage of static assets in the CDN.

From a development standpoint, extensions are managed as projects in the developer console. Project development is aided by the Adobe I/O Extensible CLI (AIO). This CLI is used to deploy the project code and can also help with scaffolding the application via templates. These templates provide generated code to be used as a starting point. This generates code for the client side and microservices for the backend.

Extension code structure

Two configurations are required in the extension’s App Builder app to define where and how the extension appears: app routing (React routes) and extension registration.

React Route

The extension’s App.js (./src/aem-ui-extension/web-src/src/components/App.js) declares the React router that includes an index route, which registers the extension in the AEM UI.

The index route is invoked when the AEM service’s UI initially loads, and the target of this route defines how the extension is exposed in the console.

Extension Registration

ExtensionRegistration.js must be immediately loaded via the index route of the extension and acts as the registration point of the extension.

Based on the AEM service UI extension template selected when initializing the App Builder app extension (more on this init process below), different extension points are supported.

Enhancing the Content Fragments Editor

For this enhancement, I’ll be adding a toolbar button to the RTE. This button will be used to apply a unique identifier to RTE fields in a content fragment that has a multiline text data type, which itself is a multifield. This is handy for headless situations where you have multiple blocks of text and want a way to uniquely identify each in the JSON provided from AEM Content APIs.

Developer console project creation

To get started, we need to create a project in the developer console. You can access this at https://developer.adobe.com/ and click the console button in the upper right.

Create a new project from a template and select App Builder.

Adobe Developer App Builder Create Project From Template

Note, Project Title is used to identify your project within Adobe Developer Console and in CLI.

App Name will be used as a unique identifier for your application, and this value cannot be changed after project creation.

Give the project a title and give your app a name.

For this example, I’m using the name RTELabeller.

Be sure to click/tap save when done.

We don’t need to do anything else with this project; it just needs to exist here.

Adobe Developer Console Project

Local Development

  1. Per the note above on local setup, make sure you have Node.js version 16.15.1 or higher and npm version 8.11.0 or higher installed. You also should already have AIO installed: https://github.com/adobe/aio-cliIt’s a good idea to make sure it’s up to date:
    npm install -g @adobe/aio-cli
  1. Assuming you are authenticated to the Adobe developer console in your browser, and you have created the project in the developer console, you need to authenticate to the developer console from AIO. You can do this via:
    aio login
  1. We need to initialize our app via:
    aio app init <Name>
    In this case, we’ll align with the App Builder project name we created in the developer console and name it RTELabeller. You will be prompted to select an Org; this should be the org within which you created the App Builder project. Then you’ll be prompted to select a project or create a new one. In this case, we’ll select the RTELabeller App Builder project we set up in the developer console.
  1. You’ll then be prompted to select the templates to search for. These are used to set up code scaffolding/starter code. We’ll select All Extension Points, then using the arrow we’ll move to the “Extensibility template for AEM Content Fragment Editor”, press space to select it and enter to confirm.
  1. Once the template files are downloaded, you’re prompted to provide an extension name, short description, and starting version. We’ll use the following for each:
    RTELabeller
    This extension provides a button to add custom labels and unique identifiers to richtext fields.
    1.0.0
  1. Then we need to select “Add Rich Text Editor (RTE) Toolbar Button.” Note, of course, if we wanted to customize the RTE in some other way, we could select one of the options or none at all and just start coding. You’ll be prompted to create a unique ID and tooltip text. For the ID, I used: rte-labeller. For the tooltip, we’ll use: Add a label to this field.
  1. Then select, “I’m done.”

At this point, the app will finish initialization, and we should be set up with some starter code we can modify.

Writing the code updates

  1. First, we need to modify src/aem-cf-console-admin-1/web-src/src/components/ExtensionRegistration.js. This file registers our extension with the host AEM instance as soon as it loads, so they can share data and communicate with each other. This is where we define button properties such as id, tooltip text, the icon, and click event handler. Notice that some of this has been filled in for us already via the template prompts we went through earlier.
  1. Let’s update the icon from the ‘Airplane’ to ‘Label’
  1. Referring to the state API reference https://developer.adobe.com/uix/docs/services/aem-cf-editor/api/rte-toolbar/, we can refer to markup in the current RTE via the passed-in state objects html field. We need to store this markup in our own variable, and importantly, remove any existing label element that we may have added when this button was previously clicked. We’ll replace the paragraph element surrounding the span element, which contains our target class rte-field-label, with an empty string:
    let stateHtml = state.html.replaceAll(/<p><span (.*) class="rte-field-label hidden" (.*)><\/span><\/p>/g,'');
  2. Then we generate a fresh UUID (universally unique identifier) and store it in the variable genID:
    const genID = generateUUID();

    More on the UUID generation logic in a sec.

  3. Before our return object, we can indicate to the user that their label creation was successful by showing a toast notification. We can refer to this API for toasts: https://developer.adobe.com/uix/docs/services/aem-cf-editor/api/commons/#toasterLet’s add the call to the toast display method below our genID const:
         guestConnection.host.toaster.display({
    
              variant: "positive",
    
              message: "Label created with ID: " + genID + "!",
    
         })

    Now the user will see a message with the ID value, indicating that it worked.

  4. Next, for the onClick function’s return object, we are providing the instruction replaceContent, which should be self-explanatory. We’re also replacing the value property’s contents with:
    "<span data-field-label='' class='rte-field-label hidden' id=" + genID + "></span>" + stateHtml

    What this is doing is adding a span when our icon is clicked and setting the value of the element’s id attribute to that of our freshly generated UUID. We preserve any existing authored markup via “+ stateHtml” appended to the span.

  5. The generateUUID() is a custom function we’ll add to this ExtensionRegistration functional component. We’ll place it below the init function:
    const generateUUID = () => {
    
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { const r = (Math.random() * 16) | 0; const v = c === 'x' ? r : (r & 0x3) | 0x8;
    
    return v.toString(16);});
    
      };

    The function returns a string representing the UUID format, and the replace updates occurrences of x and y to either be a random value between 0 and 15 or the output of a bitwise OR operation. The result is a valid, collision-resistant UUID.

That’s it for our code updates. I know, it’s very light, but the idea here is to make minimal, purposeful changes to add needed enhancements.

Testing

I created a content fragment model in a dev instance.

Testing Adobe Content Fragment Model

My model has a multiline text field, which is rendering as a multifield. And of course, it accepts rich text. I created a test fragment from this model called RTEs-with-labels.

Adobe Test Fragment

You’ll need to create a similar model and content fragment to test with.

Note the before state above, many widgets are available, but our custom button is not yet there.

We can test our app/extension within the context of our content fragment by running:

aio app run

This will deploy the actions to Adobe I/O Runtime while running the UI part on the local machine.

For our app/extension, viewing it directly under localhost doesn’t make sense as we want to see it working in the context of the Content Fragment editor’s RTE. Thankfully, we can test it in the Content Fragment Console by including a set of parameters when requesting the console.

  1. devMode (development mode): devMode=true
  2. ext (extension): ext=https://localhost:9080
  3. repo: repo=<CUSTOMER_AEM_HOST>#/@<CUSTOMER_TENANT_NAME>/aem/cf/admin/

You can obtain the tenant name while pressing ctrl + i while on any Experience Cloud page.

Putting all the parameters together, you should have something similar to:

https://experience.adobe.com/?devMode=true&ext=https://localhost:9080&repo=some.author.domain.com#/@tenantname/aem/cf/admin/

Where some.author.domain.com is your AEM cloud service author and tenantname is your customer tenant name.

(Note the following documentation for building a URI to validate an extension: https://experienceleague.adobe.com/en/docs/experience-manager-learn/cloud-service/developing/extensibility/ui/verify )

Now let’s open our test RTEs-with-labels fragment using the parameterized URL, and there we should see our new icon to invoke our custom functionality!

Adobe Labels Fragment

When we click the label button. A hidden span tag is added to the markup with our generated UUID. A toast notification indicates successful invocation:

Adobe Label Fragement Creation Confirmation

The span tag ID will be available to fragment consumers. You might reference it using the core component’s content fragment component or in a third-party GraphQL call. Below is the JSON representation of our RTE from above:

"rtes": [

"<p><span id=\"78307fd3-c90d-4f1f-ae80-14c1148fbd47 \" class=\"rte-field-label hidden\" data-field-label=\"\"></span></p><p>Some text</p>"

]

The purpose of our label button is to enable the generation of IDs for each multiline RTE in a multifield. You can see below that this works when I add more RTE fields and generate IDs for each:

Adobe Id Generation Example

"rtes": [
"<p><span id=\"78307fd3-c90d-4f1f-ae80-14c1148fbd47 \" class=\"rte-field-label hidden\" data-field-label=\"\"></span></p><p>Some text</p>",
"<p><span id=\"9b70f674-784b-4eea-b118-89f72f5a1e86\" class=\"rte-field-label hidden\" data-field-label=\"\"></span></p><p>Another fragment, maybe this is the second section of a portfolio page?</p>",
"<p><span id=\"f35bbcf4-a004-49e0-a98a-9c0ca1780873\" class=\"rte-field-label hidden\" data-field-label=\"\"></span></p><p>A third fragment, with content distinguished from the others.</p>"
]

This is one of many possible enhancements you can add to the Content Fragment Editor. Take a look at the available extension points here: https://developer.adobe.com/uix/docs/services/aem-cf-console-admin/api/.

Extending the Universal Editor

As our focus is on the editor UI, we can use a sample app for testing: https://github.com/adobe/universal-editor-sample-editable-app

This project requires an older version of NodeJS (16.20.2), however, it’s advised to use a newer version for the extension, so we can make the following changes to allow this to run in NodeJS 18+:

  1. Move into the universal-editor-sample-editable-app project directory and run:
    export NODE_OPTIONS=--openssl-legacy-provider
  2. In package.json, change the engines node version range to support NodeJS version 18+:
    "engines": {
        "node": ">=16.0.0 <=22.7.0"
    },
    
  3. Remove the following line in the package.json (penpal is not used in the project and including it causes a dependency issue).:
    "react-penpal": "^1.0.4",
  4. Run: npm install
  1. Finally, start the server by running: yarn start

Before applying our changes, let’s take a look at the app with the out-of-the-box options by going to the page hosting the Universal Editor: https://experience.adobe.com/#/@programname/aem/editor/canvas

(As you would expect, replace programname with the name of your AEM cloud service program.)

We need to provide the following as the site URL. This is the local app we have running on the yarn dev server. Notice we are also defining parameters for source content via authorHost, pointing to a dev environment:

https://localhost:3000/?authorHost=https://some.author.domain.com

Universal Editor

When you open the site, you should see the sample app render:

Sample App Render

As is the case with the CF editor, the Universal Editor has extension points of its own: https://developer.adobe.com/uix/docs/services/aem-universal-editor/api/

With that in mind, we’ll look at how we can extend the Properties Rail (https://developer.adobe.com/uix/docs/services/aem-universal-editor/api/properties-rails/) to add our own custom tool.

UE Extension App Setup

Okay, now we need to create a project in the developer console, using the create project from template option, and select App Builder. Let’s use project name UEPropertiesExtension and app name UEPropsExtension.

Local Development

  1. We need to initialize a new app via:
    aio app init <Name>

    We align with the App Builder project name we created in the developer console and name the app UEPropertiesExtension. You will be prompted to select an Org; this should be the org in which you created the App Builder project. Then you’ll be prompted to select a project or create a new one. In this case, we’ll select the UEPropertiesExtension App Builder project we set up in the developer console.

  2. You’ll then be prompted to select the templates to search for. These are used to set up code scaffolding/starter code. We’ll select All Extension Points, then using the arrow we’ll move to the Extensibility template for Universal Editor, press space to select it, and enter to confirm.
  1. We’ll name the action HelpView. This will allow us to include some guidance on UE usage right in the editor. Do also provide an initial version number.
  1. Select Add a custom panel to Properties Rail
  1. Provide a tooltip label of “Help”, then select “I’m done”.

Writing the Code Updates

For this, we won’t need to write a lot of code.

In fact, part of the work here is done for us via this sample guide: https://developer.adobe.com/uix/docs/services/aem-universal-editor/api/properties-rails/. Following this, we first need to add our custom component to App.js:

  1. Move into the UEPropertiesExtension directory and open App.js
  1. Add the component import if not provided during app initialization (it may already be there as the published guide above isn’t 100% in sync with the latest extension templates).
      import HelpRail from "./HelpRail";
  2. We also need to add the component route in App.js’ App() function (again if not already present):
    <Route
    
                exact path="help-rail"
    
                element={<HelpRail />}
    
              />

 

  1. In ExtensionRegistration.js we need to add the addRails() function and return the following properties.
              addRails() {
    
                return [
    
                // YOUR ACTION BAR BUTTONS CODE SHOULD BE HERE
    
                  {
    
                    'id': 'help',
    
                    'header': 'Help',
    
                    'icon': 'InfoOutline',
    
                    'url': '/#/help-rail',
    
                    'hotkey': 'h',
    
                  },
    
                ];
    
              },

    The icon was chosen from https://spectrum.adobe.com/page/icons/
    Note, the URL must match the “exact path” value in App.js.
    Hotkey is an optional property, but it’s nice to have for improved accessibility.
    Now to the main part of our extension’s functionality.

  2. In HelpRail.js, we need to replace the contents of the Provider tag in the return statement with the following:
    <div className="youtube-container">
    
              <iframe
    
                width={`100%`}
    
              src={`https://www.youtube.com/embed/ECAZH8u2cOo`}
    
                title="Help on using the Universal Editor"
    
                allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
    
                allowFullScreen
    
              ></iframe>
    
            </div>

    This embeds a YouTube video detailing the usage of the UE.

    The hard-coded values for src and title properties could be replaced with props, however, the purpose of this extension is to add help content, not to allow authoring of any video ID in the properties rail.

    Note, we set the width to fill the properties rail width, so it should adjust dynamically with your screen size.

Testing

  1. With our code changes in place, run aio app run from the root of the project directory. You’ll want to open the https://localhost:9080When first running this, you’ll be prompted to accept/allow usage of a self-signed certificate. When you accept, you should see this message in your browser: “Congrats, you have accepted the certificate and can now use it for development on this machine.
    You can close this window.”
  1. To view our extension in the context of the Universal Editor, we need to generate the URL. Going back to the Universal Editor hosting page: https://experience.adobe.com/#/@programname/aem/editor/canvas, we need to provide the following as the site URL:
    https://localhost:3000/?authorHost=some.author.domain.com&devMode=true&ext=https://localhost:9080
    This is the local app we have running on the yarn dev server, with a parameter for source content via authorHost, devMode set to true, and our running extension. Clicking open takes us here: https://experience.adobe.com/#/@programname/aem/editor/canvas/localhost:3000/?authorHost=https%3A%2F%2Fsome.author.domain.com&devMode=true&ext=https%3A%2F%2Flocalhost%3A9080
    You can see the extension in the properties rail. Clicking it will render our help video content in the properties rail:

Adobe Properties Rail Extension

Deploying to the Developer Console

For the sample extensions above, we tested in a local environment. For an extension to be available on an AEM as a Cloud Service environment, it needs to be deployed to the developer console.

This guide walks through deploying an extension: https://experienceleague.adobe.com/en/docs/experience-manager-learn/cloud-service/developing/extensibility/ui/deploy

Note the following guide on managing your available extensions via the Extension Manager: https://developer.adobe.com/uix/docs/extension-manager/

Enhancing AEM Service UIs With Modern Techniques

These techniques offer a safe, modern approach to extending AEM service UIs or providing enhancements to the Universal Editor. All the while, Adobe’s tools for content authoring and delivery can continue to advance alongside your customizations.

We can realize a solution that has all the power of AEM as a headless CMS combined with the latest, fast methods for composing content.

]]>
https://blogs.perficient.com/2025/04/14/safely-modifying-aem-cloud-service-uis-with-app-builder-extension-points/feed/ 0 379951
My Adobe Summit 2025 Takeaways https://blogs.perficient.com/2025/03/24/my-adobe-summit-2025-takeaways/ https://blogs.perficient.com/2025/03/24/my-adobe-summit-2025-takeaways/#respond Mon, 24 Mar 2025 13:55:52 +0000 https://blogs.perficient.com/?p=379107

Adobe Summit 2025 is officially a wrap, and I have pages and pages of notes to go through with my team to plan out our year! The two terms that appear the most in my notes are Performance and Personalization. Customer expectations continue to rise, and the demand is higher than ever for lightning-fast sites that keep shoppers engaged, with hyper-personalization that lets them know brands care about them, leading to loyalty and customer retention. These themes were consistent throughout the sessions that I attended throughout the week.

ADOBE COMMERCE AS A CLOUD SERVICE

This summer, Adobe Commerce as a Cloud Service will officially be available. This high-speed storefront is a fully SaaS solution that can be provisioned in just a few minutes. It is version-less and maintained by Adobe, eliminating the maintenance costs that come along with patches and upgrades. Catalog Service, Intelligent Merchandising, Payment Services, Product Asset Management, and Developer Tools are added on top of the existing Commerce Foundation.

The results are super-fast experiences delivered from the edge, perfect Lighthouse scores, boosts to search engine rankings, more organic traffic, and higher conversions. Add in generative AI to rapidly build personalized variations of content, alongside analysis of shopper behavior and sales data for that next level personalization that keeps customers coming back.

ADOBE COMMERCE OPTIMIZER

Available at the same time, Adobe Commerce Optimizer offers the same features as Cloud Service but allows customers to keep their existing commerce back-end. The experience layer provides the storefront, catalog and merchandising tools, allowing for quick wins with ROI and modernization. Pre-built APIs and Connectors can be utilized and tweaked as needed, to get to launch as quickly as possible. Then, if desired, the commerce back-end can be migrated later, at the merchant’s pace to realize the full set of benefits that come with Cloud Service. Adobe offers migration tools to make the transition smoother.

KEY FEATURES

The new Storefront is powered by Edge Delivery, resulting in four times faster page loads, fifteen percent or higher increase in organic traffic, improved search engine rankings, and ninety or higher Lighthouse scores. Separating the front-end from Commerce Foundation in a composable fashion, and loading data in, increases stability and security, and decreases total cost of ownership.

Authoring options include drag and drop visual, and document based via SharePoint or Google. Content creation powered by generative AI helps create personalized experiences from content variations, which can then be validated with built-in A/B testing. This helps merchandisers find the right content to display to the right customer at the right time.

With integrated digital asset management powered by AEM Assets, gone are the days of uploading product images and other media directly into Commerce. Through the power of AI and integration with Firefly and Express, product image variations can be generated in bulk and stored in the DAM. The images are easily linked to SKUs making them immediately available for product pages, once they are published. Enhanced experiences are possible with the product variations, 3D models, and augmented reality.

Intelligent Merchandising can increase conversion rates and order values by tailoring search results, category pages, and product recommendations based on customer behavior, account history data, and business goals.

SCALABILITY AND REDUCED TCO

Catalog Service can handle 250 million SKUs with 30K prices each, syndicated across multiple channels and audiences without any duplication. By using a single catalog, 10K products and 50K prices can be ingested per minute from integrated systems.

The cloud-native platform scales dynamically for increased traffic and order volumes. 330 data centers and API orchestration on the edge allow for 99.9% availability and over 10K requests per minute with ease.

Continuous updates managed by Adobe, and instant access to new features turned on via toggle when ready, remove hours and hours of maintenance. Boilerplate themes and drop-in components allow for sites to be built rapidly with less development needed. Starter kits, APIs, events, web-hooks, and marketplace apps speed up integrations and time to launch. This reduction in operating costs allows resources to use the freed-up time for fine tuning strategies for rapid, continued growth.

OMNI-CHANNEL SUPPORT

B2B buyers are expecting the same personalized experiences at work, that they receive through personal interactions with brands in their daily lives. Over 60% of B2B buyers develop selection criteria or finalize a vendor list based solely on content available to them. Adobe makes this achievable by supporting B2C, B2B, and B2B2X all one the same platform. Toggle-able features designed for B2B users include parent-child account model with support for multi-buyer assignments, a storefront context switcher, standing quotes, requisition lists, and contract pricing. All that needs to change is access to them on the storefront, driven by the customer’s account type. The new Storefront has boilerplates for both B2C and B2B.

Experiences on other channels like social media are just as important, providing additional touch points for a brand to interact with customers. Adobe has partnered with Meta (Facebook and Instagram) and TikTok to release apps for seamless integration. Product catalogs, ratings and reviews, and cart rules can be sent from Commerce to the corresponding social platform. Direct integrations with ad accounts allow this data to be used for product promotions. The customer can then use social shops, or link directly to a brand’s website to purchase products, with all orders automatically flowing through Commerce.

The well-known Extension Marketplace is also receiving some updates and becoming the Apps Marketplace. Pre-built apps from third parties can be acquired to enhance native features or provide features that might be specific to only certain industries. These apps are built on API Mesh and App Builder, which can also be used by brands to build their own apps to solve their unique business needs.

ADVANCED ADOBE EXPERIENCE CLOUD FEATURES

Adobe Commerce data, including storefront clicks, back-office fulfillment information, and customer profiles can be shared with AEP for use with other Adobe applications. CDP can be used to analyze data and build audiences for advertisements, merchandising, and abandoned cart campaigns. AJO can be used for personalized journeys and offers. Marketo can be used for automated marketing campaigns, account nurturing, interactive webinars, and dynamic chat. These are just some of the possibilities!

AEM Sites Optimizer uses an AI agent to identify issues and propose resolutions, showing immediate value. The entire funnel is optimized, from acquisition, to brand engagement, and ultimately conversion. The agent identifies issues, projects lost traffic and revenue and suggests resolutions for review and deployment with a few clicks.

It is estimated that 39% of consumers already use AI for online shopping, and over half of Fortune 500 companies will adopt experience agents to match that growing expectation. Adobe Brand Concierge is a virtual assistant, that uses first party data to deliver true personalization. Built on AEM, CJA, AJO and AEP, it is connected to assets, insights, profiles, and campaign orchestration. Customers can interact with Brand Concierge through welcome or purchase confirmation emails, or once they log into their account again after onboarding. Using account history and profile preferences, Brand Concierge interacts with customers using buttons, and text or voice prompts. Curated search results, and product recommendations can be shared, and easily purchased, making it the ultimate shopper assistant.

WHAT’S NEXT?

Adobe remains committed to their customers and will continue supporting the existing on-premises and PaaS versions of Commerce. The nearly 9 million lines of Commerce Foundation code remains unmodified, and the business logic will continue to be available and supported. If you would like to learn more about any of these solutions, or plan out an incremental approach to implementation, Perficient is here to help. Please contact us to set up time to review some of our success stories and discuss your future customer experience and commerce strategy. Talk to you soon!

]]>
https://blogs.perficient.com/2025/03/24/my-adobe-summit-2025-takeaways/feed/ 0 379107
Adobe GenStudio for Marketers in 5 Minutes  https://blogs.perficient.com/2025/03/21/adobe-genstudio-for-marketers-in-5-minutes/ https://blogs.perficient.com/2025/03/21/adobe-genstudio-for-marketers-in-5-minutes/#comments Fri, 21 Mar 2025 11:03:55 +0000 https://blogs.perficient.com/?p=379072

Adobe launched GenStudio for Performance Marketing and has made many improvements and updates leading up to Adobe Summit 2025. We’ve had an opportunity to use it here at Perficient, and have discovered a number of exciting features (along with nuances) of the product.

We see an evolving future of its rollout, especially as more and more marketing teams adopt the capabilities it has into their own digital marketing ecosystems. 

What GenStudio Is 

GenStudio may very well be a marketer’s dream. We do see it as a game-changer for how marketing content is created, activated, and measured. That’s because it greatly reduces the amount of time that is typically required to request, build, assemble, review, and publish content for marketing campaigns.

These various flows in creating content can now be handled by the AI capabilities of GenStudio. Not only that, but the content generated can follow brand standards and guidelines that are established in GenStudio. 

Some of the main features to highlight: 

  • An AI-first approach 
  • Brand scoring based on generated content, with feedback review 
  • Integrations with existing brand-approved assets 
  • Extensibility options 
  • Channel activation directly from GenStudio 

We’d like to note that although there are many Generative AI capabilities within creating content, human review is always a part of the approval and publication process. 

GenStudio Use Cases 

There are a few use cases that have been described by Adobe that can be addressed with GenStudio.  

  • Reuse of content from previous campaigns across channels 
  • Personalization of content to products, offers, and segments 
  • Content localization across geos and languages 
  • Content optimization based on insights 

Our experience so far has been focused on the content creation process, and seeing how our content looks and behaves in some of our channels. We look forward to creating personalized experiences, along with seeing how the content performs based on things like Content Analytics, recently announced at Adobe Summit. 

The Process

After onboarding, defining users and groups, and establishing some processes for adopting GenStudio, the first step is to establish the Brand Guidelines.  

Brand Setup 

New Brands can be created (along with Storage Permissions) within the interface, either using a guidelines document or manually.    

Expert Tip: Use a PDF document that has all your brand guidelines defined to upload, and GenStudio will create the various guidelines based on the document(s).   

Once a brand is uploaded, review the guidelines, add new ones, and make necessary adjustments.  

The following example illustrates the WKND brand: 

GenStudio for Adobe's fictitious WKND Brand

Note that the permissions to edit and publish a brand should be kept to brand owners. Changes to the brand which are then published may also impact other systems that use these brand guidelines, such as Adobe Experience Manager, or Orchestration Agents. 

Once the brand has been published, it can then be used to generate emails, meta ads, banner ads, and other display ads.  

Content Creation 

Content creation is based on templates. These templates allow the creation of content that may greatly reduce the amount of time to build out content with existing tools. What we would like to see eventually from Adobe in this area is the ability to create and design layouts within the tool, as opposed to having to upload HTML files that need to adhere to certain frameworks. Another approach may be to create a process that can reference existing layouts such as emails from Marketo, or Experience Fragments in AEM, and them brought into GenStudio. 

Assets can also be brought into GenStudio and then used in generating content. Assets that are managed in AEM as a Cloud Service can also be used.  

Note: The Assets that are part of AEMaaCS need to be marked as “Approved” before being made available in GenStudio. Assets can also be sourced from ContentHub.  

Expert tip: Because there are several ways of sourcing Assets that are brought into GenStudio, we suggest working with a partner such as Perficient to guide these processes. 

Example content generation for an event at Adobe Summit:
GenStudio Content Generation

Content Review 

After the content creation process, content can then be sent for approval. For example, in the above display ad, a content reviewer may ask for re-phrasing to help improve the brand score, if appropriate. Once approved, the content is then published as part of a campaign and can be downloaded in the form of HTML, images, or CSV files for publication. 

Content Activation 

Activating content can also be done on various channels such as Meta, Google Campaign Manager 360, and others. (Note that as of this writing, 3/19/25, the only channel available for activation is Meta.) Once these additional channels are rolled out, we look forward to exploring those capabilities and insights based on those channels, which is another feature available as part of GenStudio.  

Excited About the Future of GenStudio 

We’re excited about the features that Adobe GenStudio for Performance Marketing provides now, and what will be rolled out over time as features become available. Working with the tool itself feels slick, and having the Generative AI features built on top of it makes us feel like we’re really using some cutting-edge technologies. 

]]>
https://blogs.perficient.com/2025/03/21/adobe-genstudio-for-marketers-in-5-minutes/feed/ 2 379072
Recap of the Women in Digital Breakfast at Adobe Summit 2025 https://blogs.perficient.com/2025/03/20/recap-of-the-women-in-digital-breakfast-at-adobe-summit-2025/ https://blogs.perficient.com/2025/03/20/recap-of-the-women-in-digital-breakfast-at-adobe-summit-2025/#respond Thu, 20 Mar 2025 19:21:25 +0000 https://blogs.perficient.com/?p=379065

Our Women in Digital Breakfast is easily our favorite way to kick off the week at Adobe Summit. We brought conference attendees together before the opening keynote to connect with peers and dive into meaningful discussions about the roles women play in an ever-evolving digital landscape.

A Morning of Inspiration and Insight

The event featured a panel of inspiring women who have made significant strides in their careers and included:

  • Kristen Harris, Director of Marketing Data Strategy and Optimization at H&R Block
  • Aileen Herndon, Senior Vice President of Distribution Marketing at Jackson
  • Kelly Wyatt, Executive Vice President and Chief Digital Officer at GM Financial
  • Julia Dane, Vice President of US Enterprise Sales at Adobe

Erin Rushman, General Manager of Perficient’s Customer Experience and Digital Marketing practice, moderated the panel. Erin guided the conversation through a series of thought-provoking questions about how to embrace new technology, balance innovation with daily operations, the power of mentorship, inclusivity, navigating challenging business decisions, and what women can do to lead in our evolving landscape.

Embracing New Technologies

The discussion began with a focus on how to stay updated with the latest trends andWomen In Digital Panel Discussion 2025 technologies. Kristen shared how she simply started integrating ChatGPT into her daily life as a way to embrace Generative AI.

She recounted, “When I do the hard work of actually trying to integrate a lot of these new technologies into my daily life, it’s transformative in the way that I’m able to help bring my team along and help make it seem less scary.”

Her story highlighted the importance of hands-on experience in demystifying new technologies. Kelly chimed in, acknowledging the challenge of finding time to learn new technologies amidst a busy schedule.

She candidly admitted, “It’s hard for me to find the time to learn the technology or the application but I do agree… and as you move up in the organization that becomes harder and harder.”

Her honesty resonated with many in the audience, emphasizing the universal struggle of balancing learning with leadership responsibilities.

Balancing Innovation and Daily Operations

Aileen brought a unique perspective from the highly regulated insurance and annuity space. She spoke about the delicate balance between innovation and day-to-day operations and how taking small pieces of innovation is key to making progress while remaining compliant.

Aileen shared, “You have to pilot new things to a smaller audience to see how that works and what kinds of results you get. I also really think you have to figure out where there is going to be a long-term impact. Really try to look at what’s going to be happening in a year from now that you can try to devote some time and innovation to transform.”

And when it comes to finding the time to devote to innovation, Aileen talked about sharing the load with her extended team.

She said, “Trying to carve that out and get people to still think innovatively can be challenging because there’s so much day to day. So, I have our extended leadership team really drive new projects. I want everybody to have new ideas and bring those to the table. Even in a regulated environment, we’re able to see progress that way.”

Her approach underscored the importance of incremental innovation and the value of small-scale projects.

The Power of MentorshipWomen In Digital Breakfast With Perficient

The conversation then shifted to the role of mentorship. Julia reflected on her long career in technology, recalling, “I’ve had a glorious long career… And I think for the first ten years I was the only woman in the room. So, my mentors early on were authentic male leaders that I could trust and I was fortunate enough to have one that I worked with for 14 years that really helped guide me and really treated me no different than all the men in the room. But I think it really becomes meaningful when you start mentoring other people.”

She emphasized the profound impact of mentorship as well as the importance of paying it forward by mentoring others.

Kelly added her insights, highlighting the value of informal mentorship connections. She shared, “Many companies have very official mentor/mentee programs, but they feel very mechanical to me. I spend a good amount of my week connecting and meeting one-on-one with people. If they have a problem and they want to talk it through with me, I say shoot me a message and I’ll jump on a call with you. Being available to help support the people that you mentor is extremely important so it doesn’t just become a check-in type process.”

Kelly also encouraged seeking diverse perspectives when it comes to mentorship. She advised, “It’s important to be mentored and mentor people that are not like you. It’s really easy to connect with people who are just like you, but you’re going to get the same advice that you’d give.”

Inclusivity in Leadership

Inclusivity was a recurring theme throughout the discussion as well. Julia spoke about the importance of bringing in those who might feel left out.

Julia Dane And Gina HartShe said, “I’ve worked hard early in my career to go and bring in the person who is on the outside…. I probably see the shyest or the least involved before I see the most vocal. Because the most vocal are going to be the most vocal no matter what. But it’s the ones that are on the outside that I think can be brought inside and become advocates.”

Her commitment to inclusivity served as a powerful reminder of the impact of small, intentional actions. Kelly echoed this sentiment, urging leaders to give their team members opportunities to shine.

She said, “Allow your team members to do the presentation. Allow them a seat at that table and let them be the voice.”

Kelly also acknowledged how scary that can be but also how important it is to overcome fear to learn and grow. She said, “If you’re a leader, pull those people along and let them be there and lean in. I tell my young people you are at that table for a reason. You got your position for a reason. Lean into it.”

Navigating Challenging Decisions

The panel also discussed the long-term benefits of making tough decisions and the resilience required to lead through change.

Kristen shared a story about a significant decision she had to make as a leader during a data transformation project. She recounted the challenges of migrating to a new technology stack and the impact it had on her team.

“We had to make the call to modernize despite the fact that we didn’t really want to. So, for me that was a really challenging call. My team was impacted. All my internal employee surveys were really low because I came in and everyone was really mad. They didn’t understand the platform. They didn’t see the big vision. We did the best we could to support everyone, and transition is hard. Change is hard. Especially when you’re trying to make a leapfrog to something new. Sometimes you have to be the bad guy and work through those challenges,” she said. “Change is challenging but it also leads to a lot of benefits.”

Aileen added that sometimes the most challenging decision can be deciding not to do something.

She said, “Some of the hardest decisions I’ve had to make are to say we’re not quite ready. Here’s what we need to do to get ready. And as much as that’s not in my personality, the best decisions that I’ve made are when I’ve recognized that and saw that we were running too hard and too fast for something shiny and new that wasn’t going to work for us.”

Looking Ahead: The Future of Digital Experience

The panelists concluded with a forward-looking discussion on the future of digital experiences and how women can prepare to lead in this evolving landscape.

Aileen emphasized the importance of continuous learning and maintaining an entrepreneurial spirit.

Kristin encouraged embracing technology and seeking to understand it deeply, while Julia reminded everyone of the responsibility to be role models for the next generation.

And Kelly left the audience with a powerful call to action: “Learn the technology. Don’t fight the automation. Don’t fight the GenAI. If you don’t learn it, you will get left behind.”

Her words resonated as a reminder of the importance of staying ahead in the digital age.

Continuing the Conversation

This event not only highlighted the achievements and challenges faced by women in the digital space but also underscored the importance of community and support in driving innovation and growth. We left the breakfast with renewed energy and a deeper understanding of how we can all contribute to shaping the future of our organizations and the digital world.

Thank you to our panelists, attendees, and everyone who made this event a success. We look forward to continuing these important conversations and supporting each other in our digital journeys.

We hope to see you again at Adobe Summit 2026.

]]>
https://blogs.perficient.com/2025/03/20/recap-of-the-women-in-digital-breakfast-at-adobe-summit-2025/feed/ 0 379065
3 Topics We’re Excited About at Adobe Summit 2025 https://blogs.perficient.com/2025/03/10/3-topics-were-excited-about-at-adobe-summit-2025/ https://blogs.perficient.com/2025/03/10/3-topics-were-excited-about-at-adobe-summit-2025/#comments Mon, 10 Mar 2025 16:32:40 +0000 https://blogs.perficient.com/?p=378030

Our Adobe experts are heading to Vegas this month to attend Adobe Summit, connect with industry leaders, and learn about Adobe’s latest innovations. The conference will provide plenty of opportunities to learn how to grow your business and deliver exceptional digital experiences.

In the video below, Perficient principals Robert Sumner and Ross Monaghan have identified the top three topics they are excited to hear about: GenStudio, the rise in B2B features, and personalization.

Check out the video and learn more about why they’re excited and make sure to check out all the ways you can engage with us if you’re attending Summit as well.

Watch: Why Our Experts Are Excited About GenStudio, B2B, and Personalization

Meet Us at Adobe Summit

Going to Adobe Summit? Find out how to connect with us!

Learn more. 

]]>
https://blogs.perficient.com/2025/03/10/3-topics-were-excited-about-at-adobe-summit-2025/feed/ 1 378030
Championing Women at Adobe Summit 2025 https://blogs.perficient.com/2025/03/08/championing-women-at-adobe-summit-2025/ https://blogs.perficient.com/2025/03/08/championing-women-at-adobe-summit-2025/#respond Sat, 08 Mar 2025 13:03:31 +0000 https://blogs.perficient.com/?p=378037

The month of March offers so many opportunities to celebrate the contributions women have made across different fields all over the world. As we continue to recognize women this month, we’re excited to bring the celebration to Adobe Summit 2025!

Our Women in Digital Breakfast is returning for its ninth year and we’re also supporting the nonprofit organization Girls Who Code. There are so many incredible women in our communities, and we can’t wait to help share their stories.

Breakfast With Inspiring Women

Our Women in Digital Breakfast is a highly popular event that has been a Perficient tradition since 2017. This year we’re excited to partner with Adobe to share it with Summit attendees again.

Attendees will join us before the opening keynote to grab a bite and have an opportunity to connect with peers and engage in meaningful discussions. Our panel of inspiring women in the digital space will share their journeys, insights, and strategies for success and making an impact in today’s digital landscape.

This year’s event has already sold out, but you can still join our waitlist.

Meet Our Women in Digital Panelists

  • Kristen Harris, Director of Marketing Data Strategy and Optimization at H&R Block
  • Aileen Herndon, Senior Vice President of Distribution Marketing at Jackson
  • Kelly Wyatt, Executive Vice President and Chief Digital Officer at GM Financial
  • Julia Dane, Vice President of US Enterprise Sales at Adobe
  • And the panel will be moderated by Erin Rushman, General Manager of Perficient’s Customer Experience and Digital Marketing practice

 

Click to view slideshow.

Helping Close the Gender Gap in Tech

This year, we’re also continuing to “skip the swag” to support a good cause and make a difference.

Unfortunately, the gender gap in computing is getting worse, but Girls Who Code is working hard to change that. They are an international nonprofit that aims to support and increase the number of women in computer science and is one of the many organizations that Perficient is proud to support.

Instead of purchasing branded promotional items to hand out, we will donate $5 to Girls Who Code for every person who has their badge scanned at our booth. All we need Adobe Summit attendees to do is simply stop by booth #1189 and we’ll do the rest!

Let’s Celebrate Women!

Whether you attend Adobe Summit 2025 or not, we hope you’ll join us in finding ways to celebrate, champion, and empower the women in our communities.

Cheers, and happy International Women’s Day!

]]>
https://blogs.perficient.com/2025/03/08/championing-women-at-adobe-summit-2025/feed/ 0 378037
7 Ways to Connect at Adobe Summit 2025 https://blogs.perficient.com/2025/03/04/7-ways-to-connect-at-adobe-summit-2025/ https://blogs.perficient.com/2025/03/04/7-ways-to-connect-at-adobe-summit-2025/#respond Tue, 04 Mar 2025 15:03:52 +0000 https://blogs.perficient.com/?p=377999

Adobe Summit is the platform’s premier digital experience conference. This year it’s being held in Las Vegas at The Venetian Convention and Expo Center, March 18 – 20.

Attending the conference is a great way to learn about the latest digital trends, connect with peers and experts from around the world, and explore Adobe’s vision for the future of AI-powered digital experiences.

As a sponsor, our experts are excited to return to the Summit, connect with industry leaders, and share insights on how to grow their businesses and deliver exceptional digital experiences.

While we’re there, attendees will have several opportunities to engage with us. Read on to learn more about where to find us!

1. Women in Digital Breakfast

This highly popular breakfast event has been a Perficient tradition since 2017 and this year we’re excited to partner with Adobe to share it with Summit attendees again.

Attendees will join us before the opening keynote to grab a bite and have an opportunity to connect with peers and engage in meaningful discussions. Our panel of inspiring women in the digital space will share their journeys, insights, and strategies for success and making an impact in today’s digital landscape.

This year’s event has already sold out, but you can still join our waitlist.

Join the Waitlist

2. AI-Enabled, Consumer-Centric Find Care Experiences Lunch

When: Tuesday, March 18 | 11:30 A.M. – 1:30 P.M.

Where: Grand Lux Café in the Palazzo

What: Healthcare systems and providers are invited to join us for lunch and discover how AI-enabled, consumer-centric experiences can build brand loyalty, support better health outcomes, and improve satisfaction across the full care journey, starting with the steps to choose a provider–a critical decision that signals real-time intent.

Register: How AI-Driven Find Care Experiences Drive Growth and Loyalty

3. Welcome Reception in the Community Pavilion

When: Tuesday, March 18 | 5:30 – 7:00 P.M.

Where: Community Pavilion in The Venetian Convention and Expo Center

What: Stop by booth #1189 and see us! You can meet the team, learn more about Perficient’s capabilities, and enjoy refreshments.

4. Make Marketing Data and Your CDP Work for You Breakfast

When: Wednesday, March 19 | 8:00 A.M. – 9:30 A.M.

Where: Grand Lux Café in the Palazzo

What: Join us for breakfast before the day-two keynote and learn how to make sense of the data you need to meet customer experience objectives, boost your marketing team’s impact, and get the most out of your Adobe Experience Platform investment.

Register: Make Marketing Data and Your CDP Work for You

5. Beyond GenStudio: Crafting a Modern Content Supply Chain Vision Lunch

When: Wednesday, March 19 | 11:30 A.M. – 1:30 P.M.

Where: Grand Lux Café in the Palazzo

What: Join us for lunch before heading back to afternoon sessions and explore why having a clear, strategic vision is essential before deploying new technologies. We’ll discuss how GenStudio and other tools can fit into your existing content workflow to maximize efficiency and creativity.

Register: Beyond GenStudio: Crafting a Modern Content Supply Chain Vision

6. Summit Session: Marketo Engage Data Hygiene Strategies With Qualcomm

When: Thursday, March 20 | 1:00 – 2:00 P.M.

Where: The Venetian Convention and Expo Center

What: Delve into advanced Marketo Engage strategies for maintaining data hygiene using executable campaigns. During this session, you’ll learn how to implement a governance framework for managing required fields and validation rules while improving both the quality of data and the efficiency of your marketing operations.

Add to Schedule: Adobe Summit – Sessions

7. Join Us in The Grand Lux Café at The Palazzo

When: Tuesday, March 18, and Wednesday, March 19 from 8:00 A.M. until 5:00 P.M.

Where: The Grand Lux Café in the Palazzo (Note: The Grand Lux Café at The Palazzo is different from The Grand Lux Café at The Venetian)

What: Located on The Palazzo side of the resort, The Grand Lux Café provides a quiet and comfortable space for meetings with Perficient experts and executives.

To find us, stroll through the waterfall atrium and past the Love sculpture. Head north toward Sands Avenue, through the Palazzo Casino, and you’ll see The Grand Lux in the right corner.

See You at Adobe Summit!

From Sneaks to Bash, and all the innovation in between there is so much to look forward to at Adobe Summit.

No matter what your conference schedule looks like, we hope to see you there.

[BONUS] Join Us After Adobe Summit

Following Adobe Summit, we are co-hosting a virtual Adobe user group meetup to discuss the latest innovations that will be announced at the conference. It’ll be an opportunity to debrief on what attendees learned and what they’re excited about and gain insights from Adobe experts.

Adobe Summit 2025: Top Insights, Favorite Sessions, and What’s Next!

Sign Up Here

 

]]>
https://blogs.perficient.com/2025/03/04/7-ways-to-connect-at-adobe-summit-2025/feed/ 0 377999
#1 Barrier to Implementing a Content Supply Chain at Large Organizations https://blogs.perficient.com/2025/03/03/implementing-a-content-supply-chain-at-large-organizations/ https://blogs.perficient.com/2025/03/03/implementing-a-content-supply-chain-at-large-organizations/#respond Mon, 03 Mar 2025 16:25:21 +0000 https://blogs.perficient.com/?p=378024

As I gear up for my presentation at the Adobe Summit this March, I’ve been reflecting on the transformative potential of a well-executed content supply chain—and the hurdles large organizations face in making it a reality. And since it is Summit, I will obviously be referencing tools like Adobe GenStudio, Adobe Workfront, AEM Sites, and AEM Assets, which all aim to streamline content creation, management, and activation. Yet, one pain point consistently rises to the top when implementing this process at scale: siloed teams and disconnected workflows.

The #1 Barrier to an Efficient Content Supply Chain

In large organizations, it is practically impossible to audit the content generation processes because content production often resembles a patchwork quilt rather than a seamless assembly line, with each patch representing a different department or agency. The patches themselves represent the individual departmental processes, which makes stitching them together difficult.

For example, the Marketing team might be crafting campaigns within the agency, while design teams work in isolation on visuals that get handed off to the dev team for assembly within their isolated channel teams.  This fragmentation isn’t just a minor inconvenience—it’s the number one barrier to achieving an efficient content supply chain.

This pain point isn’t insurmountable, however. The Adobe Experience Cloud is designed specifically to bridge these process clusters to help orchestrate tasks across teams, ensuring everyone—from copywriters to legal reviewers—is aligned on timelines and deliverables. Now coined GenStudio from Adobe, Adobe has invested significant dollars into creating one holistic solution to streamline content development. The trick is getting everyone on the same page.

Simply Buying Tech Won’t Solve Your Content Supply Challenges

Ok, so, yes, it’s the age-old adage of people and processes and not just technology. You probably didn’t need to read this to figure that out, but if it is so obvious, why do so many large organizations struggle to improve? My observation is this: if you don’t have the proper change management and cross-functional training in place and if you can’t foster and establish a cultural shift toward collaboration, then all the technology in the world won’t help, making leadership buy-in is critical.

At Adobe Summit, my plan is to review the technology elements but to also dive deeper into how organizations can tackle this pain point head-on, with real-world examples and practical strategies. We have to start by connecting the dots—and the people—behind the content, unlocking the full potential of the organization to scale up content production.

Stay tuned for more insights as I prepare for March, and let me know your thoughts on streamlining content workflows in the comments!

Attending Adobe Summit 2025?

Join us for lunch during Adobe Summit to explore why having a clear, strategic vision is essential before deploying new technologies. We’ll discuss how GenStudio and other tools can fit into your existing content workflow to maximize efficiency and creativity.

We hope to see you there!

Beyond GenStudio: Crafting a Modern Content Supply Chain Vision
Wednesday, March 19 | 11:30 A.M. – 1:30 P.M.
Register

]]>
https://blogs.perficient.com/2025/03/03/implementing-a-content-supply-chain-at-large-organizations/feed/ 0 378024
Website Speed is Important When Time is Money https://blogs.perficient.com/2025/02/28/website-speed-is-important-when-time-is-money/ https://blogs.perficient.com/2025/02/28/website-speed-is-important-when-time-is-money/#comments Fri, 28 Feb 2025 12:03:06 +0000 https://blogs.perficient.com/?p=377887

Website speed, or website performance, is one crucial component of an amazing digital experience and it’s the first factor visitors notice.

Recent data reports that nearly half of users expect a website to load within 2-3 seconds. Anything longer than that will likely result in an abandoned visit (bounce). So, with ever-increasing competition (a new website is built every 3 seconds), you’re losing business if your site is too slow.

Whether you’re a digital marketer or a developer, website speed is an important part of providing a positive user experience.

In this blog, we’ll discuss what contributes to a slow website, how to find out how well your website performs and learn about a new set of composable services from Adobe focused on maximizing the performance of your digital properties.

3 Ways Your Slow Website Speed is Affecting Your Business

1. Poor user experience and higher bounce rates

As mentioned above, users have short attention spans and no patience for long page loading times. When consumers bounce because of a bad experience, data shows that nearly 9 out of 10 won’t return.

2. Lower conversion rates

Slow websites are frustrating and hinder engagement which ultimately leads to dissatisfaction with the brand and lost revenue. In fact, it’s estimated that slow websites cost retailers $2.6 billion in lost sales annually.  

3. Negative impact on SEO rankings

Google uses site speed as a factor in its search ranking algorithms to improve user experiences. This means faster-loading websites are more likely to rank higher in search engine results than slower-loading websites. So, if you want your site to be discoverable it must perform well.

The ability to deliver high-impact digital experiences that are discoverable, engaging, and convert is what can give your brand a competitive advantage in a highly competitive market. So, what can you do?

Do You Know How Fast Your Website is Now?

A good starting point to address performance challenges is finding out how your site currently measures up. There are several tools to do this, but one popular tool is Google Lighthouse.Poor Google Lighthouse Score

Lighthouse is a free tool that assesses the overall quality and user experience of any publicly available web page. There are several ways to get started, but the easiest way is to run Lighthouse from a web UI. You don’t have to install anything. Just navigate to PageSpeed Insights and simply paste the URL of the page you want to test and click analyze.

You’ll see a diagnostic report that provides ratings for performance, accessibility, best practices, and SEO for both mobile and desktop versions of your page.

A score below 90 is a poor user experience and anything below 50 means you’re failing.

Considering the average load time for Fortune 100 websites is nearly 40% longer than what’s considered a good experience, chances are your current Lighthouse score is low too. Once you have your baseline, what can you do to improve?

How Adobe is Delivering Super-Fast Experiences

Some of the world’s largest brands are turning to Adobe Experience Manager (AEM) Sites with Edge Delivery Services, a new set of composable services focused on maximizing the performance of your digital properties.

Along with extreme content velocity and rapid development capabilities, Edge Delivery Services and AEM provide a performance-first approach to delivering super-fast loading experiences.

Features include

  • Faster load times with edge caching: Content is regionally available at the edge with a high cache ratio to reduce the time it takes for data to travel, significantly improving page load speeds and ensuring a smoother user experience
  • Enhanced Reliability and Scalability: Built to handle high traffic volumes, Adobe’s edge infrastructure ensures consistent performance even during peak times or unexpected traffic spikes, maintaining optimal site speed and responsiveness
  • Phased content rendering: Loading web pages in phases makes it easy to achieve high Google Lighthouse scores and improve user experience
  • Automated testing: Continuously test every code change to ensure high performance
  • Continual proactive monitoring: Maintain site performance and identify dips with recommendations to quickly resolve issues

Big Brands Are Already Gaining a Competitive Edge With Adobe

24 Hour Fitness, Hanes, PGA TOUR, Sunstar, Merative, Maidenform, and Volvo Trucks are all big brands that are already realizing the benefits of using the AEM Sites with Edge Delivery Services.Edge Delivery Services Perfect Performance Score

For example, Adobe stated that Volvo Trucks was able to boost its mobile performance score from 35 to 100 and increase its visibility score from 2.5% to 43%

Merative improved its web performance score by nearly 200%, from 34 to 100, and reduced its page load speed by 85%, from 10.9 to 1.6 seconds. This performance improvement combined with accelerated development workflows ultimately boosted engagement by 42% and conversion by 100%.

And Maidenform has created its fastest ecommerce website in use today — with page load speeds 400% faster than before.

Performance speed is only one factor in delivering high-impact experiences but it’s an important one and one that gives enterprises like the ones mentioned above a leg up on the competition.

Speed Impacts Growth

Don’t miss out on your opportunity to maximize your ability to turn visitors into customers. Fast, optimized experiences lead to more traffic, better engagement, and higher conversions.

Any way you slice it, website speed matters.

Check out our on-demand introduction to Edge Delivery Services. You’ll learn how to not only improve site performance but also streamline your content creation for faster, high-performance results.

]]>
https://blogs.perficient.com/2025/02/28/website-speed-is-important-when-time-is-money/feed/ 1 377887
How to Automate Content Updates Using AEM Groovy Scripts https://blogs.perficient.com/2025/02/27/how-to-automate-content-updates-using-aem-groovy-scripts/ https://blogs.perficient.com/2025/02/27/how-to-automate-content-updates-using-aem-groovy-scripts/#respond Thu, 27 Feb 2025 14:34:32 +0000 https://blogs.perficient.com/?p=377880

As an AEM author, updating existing page content is a routine task. However, manual updates, like rolling out a new template, can become tedious and costly when dealing with thousands of pages.

Fortunately, automation scripts can save the day. Using Groovy scripts within AEM can streamline the content update process, reducing time and costs. In this blog, we’ll outline the key steps and best practices for using Groovy scripts to automate content updates.

The Benefits of Utilizing Groovy Scripts

Groovy is a powerful scripting language that integrates seamlessly with AEM. It allows developers to perform complex operations with minimal code, making it an excellent tool for tasks such as: 

  • Automating repetitive tasks
  • Accessing and modifying repository content 
  • Bulk updating properties across multiple nodes
  • Managing template and component mappings efficiently

The Groovy Console for AEM provides an intuitive interface for running scripts, enabling rapid development and testing without redeploying code.   

Important things to know about Groovy Console 

  • Security – Due to security concerns, Groovy Console should not be installed in any production environment.  
  • Any content that needs to be updated in production environments should be packaged to a lower environment, using Groovy Console to update and validate content. Then you can repackage and deploy to production environments.  

How to Update Templates for Existing Web Pages

To illustrate how to use Groovy, let’s learn how to update templates for existing web pages authored inside AEM

Our first step is to identify the following:

  • Templates that need to be migrated
  • Associated components and their dependencies
  • Potential conflicts or deprecated functionalities

You should have source and destination template component mappings and page paths.  

As a pre-requisite for this solution, you will need to have JDK 11, Groovy 3.0.9, and Maven 3.6.3.   

Steps to Create a Template Mapping Script 

1. Create a CSV File 

The CSV file should contain two columns: 

  • Source → The legacy template path. 
  • Target → The new template path. 

Save this file as template-map.csv.

Source,Target 

"/apps/legacy/templates/page-old","/apps/new/templates/page-new" 

"/apps/legacy/templates/article-old","/apps/new/templates/article-new"v

2. Load the Mapping File in migrate.groovy 

In your migrate.groovy script, insert the following code to load the mapping file: 

def templateMapFile = new File("work${File.separator}config${File.separator}template-map.csv") 

assert templateMapFile.exists() : "Template Mapping File not found!"

3. Implement the Template Mapping Logic 

Next, we create a function to map source templates to target templates by utilizing the CSV file. 

String mapTemplate(sourceTemplateName, templateMapFile) { 

    /*this function uses the sourceTemplateName to look up the template 

    we will use to create new XML*/ 

    def template = '' 

    assert templateMapFile : "Template Mapping File not found!" 

 

    for (templateMap in parseCsv(templateMapFile.getText(ENCODING), separator: SEPARATOR)) { 

        def sourceTemplate = templateMap['Source'] 

        def targetTemplate = templateMap['Target'] 

        if (sourceTemplateName.equals(sourceTemplate)) { 

            template = targetTemplate 

        } 

    }   

        assert template : "Template ${sourceTemplateName} not found!" 

         

    return template 

}

After creating a package using Groovy script on your local machine, you can directly install it through the Package Manager. This package can be installed on both AEM as a Cloud Service (AEMaaCS) and on-premises AEM.

Execute the script in a non-production environment, verify that templates are correctly updated, and review logs for errors or skipped nodes. After running the script, check content pages to ensure they render as expected, validate that new templates are functioning correctly, and test associated components for compatibility. 

Groovy Scripts Minimize Manual Effort and Reduce Errors

Leveraging automation through scripting languages like Groovy can significantly simplify and accelerate AEM migrations. By following a structured approach, you can minimize manual effort, reduce errors, and ensure a smooth transition to the new platform, ultimately improving overall maintainability. 

More AEM Insights

Don’t miss out on more AEM insights and follow our Adobe blog! 

]]>
https://blogs.perficient.com/2025/02/27/how-to-automate-content-updates-using-aem-groovy-scripts/feed/ 0 377880
What To Expect When Migrating Your Site To A New Platform https://blogs.perficient.com/2025/02/26/what-to-expect-when-migrating-your-site-to-a-new-platform/ https://blogs.perficient.com/2025/02/26/what-to-expect-when-migrating-your-site-to-a-new-platform/#respond Wed, 26 Feb 2025 15:59:30 +0000 https://blogs.perficient.com/?p=377633

This series of blog posts will cover the main areas of activity for your marketing, product, and UX teams before, during, and after site migration to a new digital experience platform.

Migrating your site to a different platform can be a daunting prospect, especially if the site is sizable in both page count and number of assets, such as documents and images. However, this can also be a perfect opportunity to freshen up your content, perform an asset library audit, and reorganize the site overall.

Once you’ve hired a consultant, like Perficient, to help you implement your new CMS and migrate your content over, you will work with them to identify several action items your team will need to tackle to ensure successful site migration.

Whether you are migrating from/to some of the major enterprise digital experiences platforms like Sitecore, Optimizely, Adobe, or from the likes of Sharepoint or WordPress, there are some common steps to take to make sure content migration runs smoothly and is executed in a manner that adds value to your overall web experience.

Part I – “Keep, Kill, Merge”

One of the first questions you will need to answer is“What do we need to carry over?” The instinctive answer would be everything. The rational answer is that we will migrate the site over as is and then worry about optimization later. There are multiple reasons why this is usually not the best option.

  • This is a perfect opportunity to do a high-level overview of the entire sitemap and dive a bit deeper into the content. It will help determine if you still need a long-forgotten page about an event that ended years ago or a product that is no longer being offered in a certain market. Perhaps it hasn’t been purged simply because there is always higher-priority work to be done.
  • It is far more rational to do this type of analysis ahead of the migration rather than after. If nothing else, it is simply for efficiency purposes. By trimming down the number of pages, you ensure that the migration process is shorter and more purposeful. You also save time and resources.

Even though this activity might take time, it is essential to use this opportunity in the best possible manner. A consultant like Perficient can help drive the process. They will pull up an initial list of active pages, set up simple audit steps, and ensure that decisions are recorded clearly and organized.

Step I – Site Scan

The first step is to ensure all current site pages are accounted for. As simple as this may seem, it doesn’t always end up being so, especially on large multi-language sites. You might have pages that are not crawlable, are temporarily unpublished, are still in progress, etc.

Depending on your current system capabilities, putting together a comprehensive list can be relatively easy. Getting a CMS export is the safest way to confirm that you have accounted for everything in the system.

Crawling tools, such as Screaming Frog, are frequently used to generate reports that can be exported for further refinement. Cross-referencing these sources will ensure you get the full picture, including anything that might be housed externally.

An Analyst Uses A Computer And Dashboard For Data Business Analysis And Data Management System With Kpi And Metrics Connected To The Database For Technology Finance, Operations, Sales, Marketing

Step II – Deep Dive

Once you’ve ensured that all pages made it to a comprehensive list you can easily filter, edit, and share, the fun part begins.

The next step involves reviewing and analyzing the sitemap and each page. The goal is to determine those that will stay vs candidates for removal. Various different factors can impact this decision from business goals, priorities, page views, conversion rate, SEO considerations, and marketing campaigns to compliance and regulations. Ultimately, it is important to assess each page’s value to the business and make decisions accordingly.

This audit will likely require input from multiple stakeholders, including subject matter experts, product owners, UX specialists, and others. It is essential to involve all interested parties at an early stage. Securing buy-in from key stakeholders at this point is critical for the following phases of the process. This especially applies to review and sign-off prior to going live.

Depending on your time and resources, the keep-kill-merge can either be done in full or limited to keep-kill. The merge option might require additional analysis, as well as follow-up design and content work. Leaving that effort for after the site migration is completed might just be the rational choice.

Step III – Decisions and Path Forward

Once the audit process has been completed, it is important to record findings and decisions simply and easily consumable for teams that will implement those updates. Proper documentation is essential when dealing with large sets of pages and associated content. This will inform the implementation team’s roadmap and timelines.

At this point, it is crucial to establish regular communication between a contact person (such as a product owner or content lead) and the team in charge of content migration from the consultant side. This partnership will ensure that all subsequent activities are carried out respecting the vision and business needs identified at the onset.

Completing the outlined activities properly will help smooth the transition into the next process phase, thus setting your team up for a successful site migration.

]]>
https://blogs.perficient.com/2025/02/26/what-to-expect-when-migrating-your-site-to-a-new-platform/feed/ 0 377633
Personalization at Scale: How Adobe & Perficient Are Redefining Digital Experiences https://blogs.perficient.com/2025/02/19/personalization-at-scale-how-adobe-perficient-are-redefining-digital-experiences/ https://blogs.perficient.com/2025/02/19/personalization-at-scale-how-adobe-perficient-are-redefining-digital-experiences/#comments Wed, 19 Feb 2025 16:47:19 +0000 https://blogs.perficient.com/?p=377444

“Data is everywhere—so how do we make it work for us?” 

Imagine walking into your favorite store, and before you even reach the counter, your phone buzzes with a personalized discount for an item you’ve been eyeing. This isn’t the future—it’s happening now. Adobe and Perficient are revolutionizing digital experiences, making personalization smarter, faster, and more intuitive.

Ross Monaghan, Principal of Perficient’s Adobe practice, breaks it down: “There’s a lot of different parts of a customer that are left in a multitude of places. Some individuals may have multiple devices, in-store experiences—there’s a lot of data to stitch together.” The challenge? Unify this scattered data into a single, actionable profile. The solution? Adobe’s AI-powered ecosystem, coupled with Perficient’s expertise, turns raw data into seamless, hyper-personalized experiences.

Why Data Readiness is the Key to Success 

Most businesses have enormous amounts of data but struggle to use it effectively. Often, IT controls the data, leaving marketers without the access they need. Perficient helps bridge this gap through its Adobe Data Factory Jumpstart, allowing marketing and IT teams to collaborate, unify attributes, and act on real-time customer insights.

“We bring all those different sources of data together and unify them within a profile that’s constantly enriched,” Ross explains. This means that every new interaction—whether online, in-store, or via mobile—enhances the customer’s profile, allowing brands to communicate with precision, relevance, and consistency.

The Future is AI-Driven & Dynamic 

Adobe Experience Cloud is a game-changer, enabling businesses to leverage AI-powered automation for content creation, audience segmentation, and journey optimization. Instead of relying on manual A/B testing, companies can now dynamically generate and deploy personalized ads, website experiences, and messaging in real time.

“Leveraging Adobe’s GenStudio and Firefly, we can dynamically create new imagery and messaging at scale,” says Ross. “This isn’t about replacing creativity—it’s about amplifying it.” The result? Highly relevant, on-brand experiences that resonate with customers and drive conversion.

Personalization That Delivers Results 

True personalization is about being in the right place, at the right time, with the right message. With Adobe Journey Optimizer, brands can send contextual notifications based on real-time triggers. Picture this: A loyal customer enters your store, and their phone alerts them to use their $20 loyalty reward—right at the perfect moment.

Ross highlights the power of this, “These are highly relevant contextual experiences that matter, and Adobe’s experience platform really allows you to satisfy that end-to-end.” By leveraging AI-driven insights and real-time customer profiles, businesses can enhance loyalty, increase engagement, and maximize revenue.

 The Perficient Advantage: Turning Data into Actionable Personalization 

Implementing personalization at scale isn’t easy. Data readiness, AI adoption, and seamless customer journeys require the right strategy and execution. As an Adobe Platinum Partner, Perficient has the expertise to help businesses unlock their full digital potential.

“These are complex topics, but Perficient is ready to help you take your digital marketing to the next level,” Ross assures. Whether you’re looking to optimize your content strategy, enhance your customer journey, or scale your personalization efforts, our team is ready to bring your vision to life. Let’s unlock the full potential of your digital marketing strategy together.

Get in touch with us today and take the next step toward digital excellence. 

]]>
https://blogs.perficient.com/2025/02/19/personalization-at-scale-how-adobe-perficient-are-redefining-digital-experiences/feed/ 2 377444