---
title: "Personalization with eCommerce Tables and Related Data"
slug: "personalization-with-ecommerce-tables-and-related-data"
updated: 2025-03-27T15:42:26Z
published: 2025-03-27T15:42:26Z
---

> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mapp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Personalization with eCommerce Tables and Related Data

## General Information

You can personalize messages in Mapp Engage using eCommerce data. Depending on your setup and preferences, Mapp Engage can pull data from the [Product Catalog](/v1/docs/using-ecommerce-data-for-email-personalization#personalization-with-the-product-catalog) or [Related Data](/v1/docs/using-ecommerce-data-for-email-personalization#personalization-with-related-data) for email personalization. Below, you will find personalization functions and examples for both solutions.

## Personalization with the Product Catalog

The Product Catalog allows you to personalize messages based on data saved in the eCommerce tables: Wishlist, Abandoned Cart, and Abandoned Browse, and in combination with [eCommerce Triggers](/v1/docs/triggers): [Back to stock](/v1/docs/back-to-stock), [Low stock](/v1/docs/low-stock), and [Price drop](/v1/docs/price-drop).

### Standard Personalization

#### Product

To use specific product data, use the `ecx` function.

```javascript
<%${ecx:productCatalog('{productSKU}','{attributeName}')}%>
```

Example:

```javascript
<%${ecx:productCatalog('111-222-333','productTitle')}%>
```

#### Abandoned Cart

```javascript
<%ForEach var='item' items="${user.abandonedCartProducts}" %>
	AC name: <%${item['productName']}%> <br>
    AC productSKU: <%${item['productSKU']}%> <br>
<%/ForEach%>
```

#### Abandoned Browse

```javascript
<%ForEach var='item' items="${user.abandonedBrowseProducts}" %> 
	AB name: <%${item['productName']}%> <br> 
	AB productSKU: <%${item['productSKU']}%> <br> 
<%/ForEach%>
```

#### Wishlist

```javascript
<%ForEach var='item' items="${user.wishlistProducts}" %>
	WL name: <%${item['productName']}%> <br>
    WL productSKU: <%${item['productSKU']}%> <br>
<%/ForEach%>
```

#### Transactions

```javascript
<%ForEach var='item' items="${user.transactionProducts}" %>
	TR name: <%${item['productName']}%> <br>
    TR productSKU: <%${item['productSKU']}%> <br>
<%/ForEach%>
```

### FreeMarker Personalization

FreeMarker is a Java-based template engine for generating dynamic content and can also be used outside of Mapp Engage.

> [!NOTE]
> Channels supporting the FreeMarker personalization engine in Mapp Engage:
> 
> - In-App,
> - Mobile Push
> - Web Push
> - AMP Email

#### Product

```javascript
${productCatalog('{productSKU}','{attributeName}')}
```

Example:

```javascript
${productCatalog('111-222-333','productTitle')}
```

#### Abandoned Cart

```javascript
<#list user.abandonedCartProducts as item>
  ${item['productName']}
  ${item['productSKU']}
</#list>
```

#### Abandoned Browse

```javascript
<#list user.abandonedBrowseProducts as item> 
  ${item['productName']} 
  ${item['productSKU']} 
</#list>
```

#### Wishlist

```javascript
<#list user.wishlistProducts as item>
  ${item['productName']}
  ${item['productSKU']}
</#list>
```

#### Transactions

```javascript
<#list user.transactionProducts as item>
  ${item['productName']}
  ${item['productSKU']}
</#list>
```

## Personalization with Related Data

Email personalization with Related Data combines product information from the Product Catalog with data stored in your related data tables, giving you more personalization options and flexibility.

> [!NOTE]
> Note that [eCommerce triggers](/v1/docs/triggers) cannot be set up using Related Data. To do that, you must use the Product Catalog.

### Standard personalization

#### Wishlist

```javascript
<%ForEach var="test" items="${user.wishlistProductsRD['myrdlistwithproductdata']}" %>
  WL productSKU: <%${test['productSKU']}%><br>
  WL description: <%${test['description']}%><br>
  WL price: <%${test['price']}%><br><br>
<%/ForEach%>
```

#### Abandoned Cart

```javascript
<%ForEach var="test" items="${user.abandonedCartProductsRD['myrdlistwithproductdata']}" %>
  AC productSKU: <%${test['productSKU']}%><br>
  AC description: <%${test['description']}%><br>
  AC price: <%${test['price']}%><br><br>
<%/ForEach%>
```

#### Abandoned Browse

```javascript
<%ForEach var="test" items="${user.abandonedBrowseProductsRD['myrdlistwithproductdata']}" %>
  AB productSKU: <%${test['productSKU']}%><br>
  AB description: <%${test['description']}%><br>
  AB price: <%${test['price']}%><br><br>
<%/ForEach%>
```

### FreeMarker Personalization

FreeMarker is a Java-based template engine for generating dynamic content and can also be used outside of Mapp Engage.

> [!NOTE]
> Channels supporting the FreeMarker personalization engine in Mapp Engage:
> 
> - In-App,
> - Mobile Push
> - Web Push
> - AMP Email

#### Wishlist

```javascript
<#list user.wishlistProductsRD['myrdlistwithproductdata'] as key, values>
    <#list values as item>
        ${item['productName']}
    </#list>
</#list>
```

#### Abandoned Cart

```javascript
<#list user.abandonedCartProductsRD['myrdlistwithproductdata'] as key, values>
    <#list values as item>
        ${item['productName']}
    </#list>
</#list>
```

#### Abandoned Browse

```javascript
<#list user.abandonedBrowseProductsRD['myrdlistwithproductdata'] as key, values>
     <#list values as item>
        ${item['productName']}
     </#list>
</#list>
```

## Related

- [How to Personalize Emails with eCommerce and Related Data Tables](/how-to-personalize-emails-with-ecommerce-and-related-data-tables.md)
