Personalization module
Personalization Bundled: DX Core
| Edition | DX Core | 
|---|---|
| License | This module includes GeoLite2 data created by MaxMind, available from www.maxmind.com. | 
| Issues | |
| Maven site | |
| Latest | 2.1.20 | 
| Yes | 
| 
 | 
Personalization
Personalization refers to adapting content to a particular user according to his or her personal preferences, needs and capabilities. In order to do so, you first select a set of traits of a visitor or a visit, then compose rules using these traits to define what content is presented to which visitors and when.
Modules
Magnolia’s Personalization feature consists of the following modules.
- 
Blossom-compatibility: Provides personalization of Blossom components. 
- 
Compatibility: Provides the 5 UI framework modules. 
- 
Components: Support for creating component variants. 
- 
Core: Personalization core. 
- 
Integration: Personalization support for creating page variants and fields for selecting traits and audiences. Since version 2.0, this submodule has been deprecated and its functions relocated to the Compatibility submodule. 
- 
Pages: Personalization integration for the Pages app. 
- 
Personas app: App for creating hypothetical visitors who represent your target audience. 
- 
Preview app: App for testing content delivery by impersonating a visitor. 
- 
Segmentation app: Provides the Segments app for grouping visitors into segments. 
- 
Traits: Example traits country, date, cookie and visitor. 
- 
Widgetset: Widgetset for client-side extensions needed for the variant-selectors. 
<dependency>
  <groupId>info.magnolia.personalization</groupId>
  <artifactId>magnolia-personalization-compatibility</artifactId>
  <version>2.1.20</version> (1)
</dependency>| 1 | Should you need to specify the module version, do it using <version>. | 
<dependency>
  <groupId>info.magnolia.personalization</groupId>
  <artifactId>magnolia-personalization-components</artifactId>
  <version>2.1.20</version> (1)
</dependency>| 1 | Should you need to specify the module version, do it using <version>. | 
<dependency>
  <groupId>info.magnolia.personalization</groupId>
  <artifactId>magnolia-personalization-core</artifactId>
  <version>2.1.20</version> (1)
</dependency>| 1 | Should you need to specify the module version, do it using <version>. | 
<dependency>
  <groupId>info.magnolia.personalization</groupId>
  <artifactId>magnolia-personalization-integration</artifactId>
  <version>2.1.20</version> (1)
</dependency>| 1 | Should you need to specify the module version, do it using <version>. | 
<dependency>
  <groupId>info.magnolia.personalization</groupId>
  <artifactId>magnolia-personalization-pages</artifactId>
  <version>2.1.20</version> (1)
</dependency>| 1 | Should you need to specify the module version, do it using <version>. | 
<dependency>
  <groupId>info.magnolia.personalization</groupId>
  <artifactId>magnolia-personalization-personas-app</artifactId>
  <version>2.1.20</version> (1)
</dependency>| 1 | Should you need to specify the module version, do it using <version>. | 
<dependency>
  <groupId>info.magnolia.personalization</groupId>
  <artifactId>magnolia-personalization-preview-app</artifactId>
  <version>2.1.20</version> (1)
</dependency>| 1 | Should you need to specify the module version, do it using <version>. | 
<dependency>
  <groupId>info.magnolia.personalization</groupId>
  <artifactId>magnolia-personalization-rest</artifactId>
  <version>2.1.20</version> (1)
</dependency>| 1 | Should you need to specify the module version, do it using <version>. | 
<dependency>
  <groupId>info.magnolia.personalization</groupId>
  <artifactId>magnolia-personalization-segmentation-app</artifactId>
  <version>2.1.20</version> (1)
</dependency>| 1 | Should you need to specify the module version, do it using <version>. | 
<dependency>
  <groupId>info.magnolia.personalization</groupId>
  <artifactId>magnolia-personalization-traits</artifactId>
  <version>2.1.20</version> (1)
</dependency>| 1 | Should you need to specify the module version, do it using <version>. | 
<dependency>
  <groupId>info.magnolia.personalization</groupId>
  <artifactId>magnolia-personalization-widget</artifactId>
  <version>2.1.20</version> (1)
</dependency>| 1 | Should you need to specify the module version, do it using <version>. | 
Part of the module is also the magnolia-personalization-blossom-compatibility.
| To be able to use personalization in the Delivery API, you should: | 
- 
Add the Blossom dependency ( magnolia-personalization-blossom-compatibility) only if you are using the Blossom modules in your project:<dependency> <groupId>info.magnolia.personalization</groupId> <artifactId>magnolia-personalization-blossom-compatibility</artifactId> <version>2.1.20</version> (1) </dependency>1 Should you need to specify the module version, do it using <version>.
- 
Make sure that in the content of your pom.xmlfor your webapp you include the following two dependencies if your project is generated from the Magnolia webapp archetype:... <dependencies> ... <!-- include p13n for rest --> <dependency> <groupId>info.magnolia.personalization</groupId> <artifactId>magnolia-personalization-rest</artifactId> <version>2.1.1</version> </dependency> </dependencies> ...If you use personalization version 2.1.0, you also need to add the following dependencyManagement into your webapp’s pom.xmlfile.... <dependencyManagement> <dependencies> <!-- include dependency management for p13n 2.1.0 --> <dependency> <groupId>info.magnolia.personalization</groupId> <artifactId>magnolia-personalization-parent</artifactId> <version>2.1.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> ...
Configuration
Variant rendering restrictions on public instances
In Personalization module 2.1.17 (Magnolia 6.2.58) and later, a default rendering filter at /server/filters/cms/rendering blocks direct URL access to mgnl:variant nodes on public instances for security purposes, and returns a 404 not found response.
This means you can’t test variants using direct URLs.
To test, use the Preview app or enable traits as URL parameters .
For more information, see Restricting node type rendering.
Components submodule
Nested variants occur when a page variant contains component variants.
Control the ability for editors to create nested variants using the
allowNestedVariants property on the module level configuration.
| Node name | Value | 
|---|---|
| personalization-components | |
| config | |
| allowNestedVariants | false | 
| Property | Description | 
|---|---|
| 
 | optional, default is  Allows you to create component variants inside a page variant if set to
 | 
Custom traits
Each trait has a configuration which can be adjusted. For configuration details, see the Registering a trait section on Creating custom traits page.