Is there a supported way to upload a custom HTML package in AEM as a Cloud Service and render it as a microsite or landing page?
I'm looking for functionality similar to the now-deprecated Landing Page Replicator. Ideally, I want to:
Has anyone implemented this in AEM Cloud? Are there best practices or recommended approaches?
Any guidance or examples would be greatly appreciated!
Topics help categorize Community content and increase your ability to discover relevant content.
Views
Replies
Total Likes
Adobe Experience Manager (AEM) as a Cloud Service allows you to create microsites or landing pages from custom HTML packages, and the best way is likely through site templates, which are designed for quick site creation.
This approach replaces the deprecated Landing Page Replicator and is supported for AEM Cloud, with many organizations using it for similar purposes.
For the site template approach, the process involves:
Thanks
Partyush
Hello @BrianKasingli @SantoshSai @partyush
Thank you for your responses, however my idea is to have functionality similar to landing page replicator as it was empowering business to develop and deliver small/static campaign or landing pages easily in lesser time from authoring/front-end directly.
But all the above process requires DevOps intervention most of time (one time setup is ok however for every build or upload it wont be feasible). Is there any other alternative solution?
Views
Replies
Total Likes
Hi @Abhishek_Dubey,
Well, Cloud does not allow arbitrary uploads of static HTML into publishable areas like /content
directly (due to security, maintainability, and deployment constraints), but you can achieve your use case by leveraging Client Libraries (ClientLibs) and Sling Resource Types via editable templates.
Here are a few recommended options:
Best for: Campaigns, one-off microsites, lightweight landing pages
Create a new AEM template (e.g., microsite-template
) with minimal editable structure — no header/footer.
Create a custom page component that:
Has a body.html
rendering static HTML.
Embeds required CSS/JS as ClientLibs or static includes.
Put static assets (images, CSS, JS) under:/apps/<project>/clientlibs-site/microsites/<campaign-name>
Author the page under a custom path:/content/<project>/campaigns/<campaign-name>/index.html
Map the domain using Dispatcher/CDN rules if needed.
Best for: Complex interactivity (e.g., React/Vue) or externally-built microsites
Build your microsite using a static site generator or frontend framework.
Host the final build (index.html
, CSS/JS) as a package under /apps
or /etc.clientlibs
.
Create a simple AEM page/component that includes:
An iframe that points to the hosted version.
Or embed the raw HTML using a servlet/sling resource rendering.
For assets like fonts/images, adjust Dispatcher/CDN to allow delivery from appropriate paths.
Views
Replies
Total Likes
I wouldn't be doing too much customization on your AEM enterprise website, but if you really wanted to... Another simple way to embed custom HTML, CSS, JS (like a micro-site) would be like this.
1. Upload assets to DAM under /content/dam/microsites/myapp/:
bundle.js
styles.css
any images or assets
After publishing, assets are publicly available at:
/content/dam/microsites/myapp/bundle.js
/content/dam/microsites/myapp/styles.css
2. Create a new AEM page using any editable template. Add a Rich Text component (Text or RTE) to the body. In source mode, paste the following:
<link rel="stylesheet" href="/content/dam/microsites/myapp/styles.css">
<div id="my-app-root"></div>
<script src="/content/dam/microsites/myapp/bundle.js"></script>
Your bundle.js should contain the logic to mount a SPA into the #my-app-root container.
Example (React):
import React from 'react';
import { createRoot } from 'react-dom/client';
import App from './App';
const container = document.getElementById('my-app-root');
const root = createRoot(container);
root.render(<App />);
Upload AEM Assets (make sure both external CSS and JS files exists), and ensure the rich-text editor renders the custom code. If successful, the page will render the SPA inside the RTE component.
Real Example: SourcedCode CURL Generator Tool
In this example, my website, I applied the same steps as above, but instead of hosting files on AEM, I hosted the files on Wordpress https://sourcedcode.com/blog/aem/tool-generate-curl-command-to-update-osgi-configurations#curltool
As you can see in the screenshot, this is where step #2 comes in. An id="root" (in my case) for my bundle in line:1368 to be loaded. The CSS must be somewhere along the top of the page.
@Abhishek_Dubey Just checking in — were you able to resolve your issue?
We’d love to hear how things worked out. If the suggestions above helped, marking a response as correct can guide others with similar questions. And if you found another solution, feel free to share it — your insights could really benefit the community. Thanks again for being part of the conversation!
Views
Replies
Total Likes
Views
Likes
Replies
Views
Likes
Replies