# Products

### Product Event

Along with all standard [Analytics Event properties](https://docs.hello-lisa.com/developers/analytics/abobe-appmeasurement/event-reference/..#canonical-shared-event-schema), a Product Event includes the following additional properties:

#### Schema

```typescript
interface ProductEvent extends Omit<
  AnalyticsEvent,
  'eventType'
> {
  eventType:
    | 'lsc:product:add-to-cart'
    | 'lsc:product:add-to-wishlist'
    | 'lsc:product:click'
    | 'lsc:product:emoji'
    | 'lsc:product:impresssion';
  /**
   * The product's brand name translated to the visitor's locale,
   * if provided.
   */
  productBrand?: string;
  /**
   * The currency code (ISO 4217, 3-letter format) of the product price.
   */
  productCurrency?: string;
  /**
   * Universally unique, LiSA-assigned product identifier.
   */
  productId: string;
  /**
   * The product's original price, if currently on sale.
   */
  productOriginalPrice?: number;
  /**
   * The prouduct's current price.
   */
  productPrice?: number;
  /**
   * The unique product identifier as assigned by the customer's
   * ecommerce system.
   */
  productReference?: string;
  /**
   * The product title, translated to the visitor's locale.
   */
  productTitle: string;
  /**
   * Universally unique, LiSA-assigned product variant identifier.
   */
  variantId?: string;
  /**
   * The unique product variant identifier as assigned by the
   * customer's ecommerce system.
   */
  variantReference?: string;
}

```

#### Alias Mapping Table

<table data-full-width="false"><thead><tr><th width="270.4453125" valign="top">Alias (contextData key) </th><th valign="top">Meaning / Use Case</th><th valign="top">Suggested Adobe Target (placeholder)</th><th valign="top">Friendly Label Example</th></tr></thead><tbody><tr><td valign="top"><code>lsc.productBrand</code></td><td valign="top">Product brand</td><td valign="top">prop{PRODUCT_BRAND}</td><td valign="top">Brand</td></tr><tr><td valign="top"><code>lsc.productCurrency</code></td><td valign="top">Regional segmentation</td><td valign="top">prop{VISITOR_NAME}</td><td valign="top">Currency</td></tr><tr><td valign="top"><code>lsc.productId</code></td><td valign="top">Attribution to specific products</td><td valign="top">eVar{PRODUCT_ID}</td><td valign="top">LiSA Product ID</td></tr><tr><td valign="top"><code>lsc.productOriginalPrice</code></td><td valign="top">Dynamic pricing analysis or revenue accuracy</td><td valign="top">prop{ORIGINAL_PRICE}</td><td valign="top">Original Price</td></tr><tr><td valign="top"><code>lsc.productPrice</code></td><td valign="top">Dynamic pricing analysis or revenue accuracy</td><td valign="top">prop{PRICE}</td><td valign="top">Price</td></tr><tr><td valign="top"><code>lsc.productReference</code></td><td valign="top">Attribution to specific products</td><td valign="top">eVar{PRODUCT_REFERENCE} or merchandising eVar</td><td valign="top">Product ID</td></tr><tr><td valign="top"><code>lsc.productTitle</code></td><td valign="top">Product name</td><td valign="top">prop{PRODUCT_NAME}</td><td valign="top">Product Name</td></tr><tr><td valign="top"><code>lsc.variantId</code></td><td valign="top">Attribution to specific products</td><td valign="top">eVar{VARIANT_ID}</td><td valign="top">LiSA Variant ID</td></tr><tr><td valign="top"><code>lsc.variantReference</code></td><td valign="top">Attribution to specific products</td><td valign="top">eVar{VARIANT_REFERENCE} merchandising eVar</td><td valign="top">Variant ID</td></tr></tbody></table>

### `lsc:product:add-to-cart`

Visitor added a product to their cart.

#### Schema

```typescript
export interface ProductAddToCartEvent extends Omit<
  ProductEvent,
  'eventType'
> {
  eventType: 'lsc:product:add-to-cart';
}
```

### `lsc:product:add-to-wishlist`

Visitor added a product to their wishlist.

#### Schema

```typescript
export interface ProductAddToWishlistEvent extends Omit<
  ProductEvent,
  'eventType'
> {
  eventType: 'lsc:product:add-to-wishlist';
}
```

### `lsc:product:click`

Visitor clicked a product to see the product details.

#### Schema

```typescript
export interface ProductClickEvent extends Omit<
  ProductEvent,
  'eventType'
> {
  eventType: 'lsc:product:click';
}
```

### `lsc:product:emoji`

Visitor reacted to the product with an emoji.

#### Schema

```typescript
export interface ProductEmojiEvent extends Omit<
  ProductEvent,
  'eventType'
> {
  eventType: 'lsc:product:emoji';
}
```

### `lsc:product:impression`

Product card appeared in the visitor's viewport for the first time.

#### Schema

```typescript
export interface ProductImpressionEvent extends Omit<
  ProductEvent,
  'eventType'
> {
  eventType: 'lsc:product:impression';

  // Event-specific fields

  /**
   * Indicates, whether this is the first impression of this product
   * for the current media item.
   */
  firstOccurrence: boolean;
}
```

#### Alias Mapping Table

<table data-full-width="false"><thead><tr><th width="270.4453125" valign="top">Alias (contextData key) </th><th valign="top">Meaning / Use Case</th><th valign="top">Suggested Adobe Target (placeholder)</th><th valign="top">Friendly Label Example</th></tr></thead><tbody><tr><td valign="top"><code>lsc.firstOccurrence</code></td><td valign="top">Filtering</td><td valign="top">prop{FIRST_OCCURRENCE}</td><td valign="top">First Occurrence</td></tr></tbody></table>
