Adobe Experience Manager (AEM) is an enterprise-grade content management system. This guide covers multiple approaches for integrating Needle Engine 3D content into AEM, from simple iframe embeds to advanced component-based integrations that content authors can manage.
Overview: Integration Approaches
Choose the approach that fits your AEM setup and authoring requirements:
:::tip Get Embed Code from Needle Cloud Needle Cloud provides ready-to-use embed code. Open your project, click "Share", and copy the iframe snippet. :::
iframe Considerations
Pros:
✅ No AEM development required
✅ Works with any AEM version
✅ Easy updates (just redeploy Needle project)
✅ Content isolation
Cons:
❌ Limited integration with page content
❌ Less flexible sizing options
❌ Authors can't edit 3D content properties in AEM
Approach 2: Custom AEM Component
Best for: Content authors who need to configure and manage 3D experiences directly in AEM.
Create a custom AEM component that allows authors to add and configure Needle Engine content through AEM's authoring interface.
Architecture Overview
Implementation Steps
1. Create the AEM Component
Create a new component in your AEM project:
Component Structure:
.content.xml (Component Definition):
2. Create the Author Dialog
_cq_dialog.xml (Author Interface):
3. Create the HTL Template
needle-engine.html (Component Rendering):
4. Add Client Library (Optional for Enhanced Features)
Best for: Reusable 3D content across multiple pages or channels (email, mobile app, etc.).
Experience Fragments let you create reusable Needle Engine content that can be shared across pages and exported to other channels.
Steps
Create an Experience Fragment template with Needle Engine component
Content authors can:
Create an Experience Fragment with 3D content
Configure the Needle Engine component once
Reuse across multiple pages
Export to Adobe Target for personalization
Use in email campaigns or mobile apps
Reference the fragment on pages:
:::tip Multi-Channel Content Experience Fragments are especially powerful when you need the same 3D content across web, mobile apps, and email campaigns. Configure once, use everywhere. :::
Advanced Integration: Communication Between AEM and Needle
For advanced use cases where AEM content needs to interact with Needle Engine (e.g., clicking an AEM button triggers an animation in the 3D scene).
Example: Triggering 3D Animations from AEM
AEM Component JavaScript:
Needle Engine Component (TypeScript):
Asset Management Considerations
Where to Host Needle Engine Projects
Option
Best For
Pros
Cons
Needle Cloud
Quick iteration, dev/staging
Fast deployment, preview sharing
May want custom domain for production
AEM DAM
Enterprise compliance, single platform
Integrated with AEM, compliance
Larger asset sizes, may need CDN
Separate CDN
Performance-critical apps
Fast global delivery, cache control
Additional infrastructure
AEM Publish
Simple setups
No extra infrastructure
Not optimized for 3D assets
Recommended Setup
Development: Host on Needle Cloud for rapid iteration
Staging: Host on AEM staging environment or dedicated CDN
Production: Host on CDN (CloudFront, Akamai, etc.) with AEM URLs stored in component properties
Content Author Workflow
A typical workflow for content authors:
Receive 3D content from design/development team
Deployed to Needle Cloud or CDN
Provided with URL
Add to AEM page
Drag Needle Engine component onto page
Configure URL and options in dialog
Preview in edit mode
Adjust properties as needed
Height, background color, AR features
Integration mode (iframe vs direct)
Publish the page
:::tip For Content Authors The Needle Engine component works like any other AEM component. Just paste the URL of your 3D experience and configure the display options. No coding required! :::
Performance Best Practices
Use CDN for assets
Host .glb files and textures on a CDN
Leverage AEM Dispatcher caching for static resources
Lazy loading
Load Needle Engine only when the component is visible
:::tip Need Help? Integrating with enterprise CMS platforms can be complex. Reach out on our forum or Discord for specific AEM integration questions. :::