Journey Optimizer allows you to personalize and test the experiences you want to deliver to your customers across all your touchpoints like: web apps, mobile apps, desktop apps, video consoles, TV connected devices, smart TVs, kiosks, ATMs, voice assistants, IoT devices, etc.
With the code-based experience capability, you can define inbound experiences using a simple and intuitive non-visual editor. It allows you to insert and edit specific elements at individual and more granular locations of your apps or web pages, no matter the type of applications you have - rather than applying modifications to an entire content.
Specific recommendations for code-based experiences are detailed on this page.
![]()
|
![]()
|
![]()
|
![]() |
➡️ An end-to-end use case showing how to use content experiments to compare decisions with the code-based experience channel is presentend in this section.
When to use the code-based channel rather than the other Journey Optimizer channels?
You can use the code-based channel as an alternative to the Journey Optimizer web or in-app channels in case you have an API-based, headless or server-side implementation.
You can also leverage the code-based channel on native mobile applications as an alternative to the in-app channel if you want to modify the content inside your native app instead of showing modals, popups or overlays.
To execute web use cases, you can use either the web channel or code-based experience, but depending on your context one would be more appropriate than the other. The main differences are listed below so you can make an informed decision on what to use, and when.
Web
Code-based experience
This feature is for developer persona and/or experienced users. It can be used by marketers with some code-writing skills, as long as the channel configurations and initial setup are handled by your development team.
To edit your content using the Journey Optimizer code-based experience feature, your pages or apps need to be instrumented. To do so, you must declare upfront the specific individual locations (called “surfaces”) where you want to insert or replace content.
Currently the content associated with a configuration can only be HTML or JSON.
The key steps to create and deliver a code-based experience are as follows.
Make sure you follow the channel-specific prerequisites. Learn more
Define a surface in your application implementation, which is basically the location where you want to add your experience.
Create a code-based channel configuration that references that location. Learn how
Create a journey or campaign in Journey Optimizer using this configuration. Learn how
Compose an experience by specifying content for the selected configuration using the Journey Optimizer personalization editor. Learn how
Test your code-based experience. Learn how
Publish it. Learn how
Once your code-based experience journey or campaign is live, the app or page implementation that requests content for the surface must be in place for the content to be retrieved and displayed.
To ensure this, your app implementation team makes explicit API or SDK calls to fetch content for the surface defined in the code-based configuration, such as “Banner Text” or “Recommendations Tray 1”, or non-UI-related decision points in an application, such as “search algorithm parameters”. Learn more