Product Impression
An event that describes the action of viewing a list of products in a page as the user is browsing.
Here's an example of a Product Impression:
- Javascript
- Swift
- Kotlin
- Java
- Objective-C
pcdp("event", "track", {
"clientId": "kevel",
"siteId": "kevel.com",
"type": "productImpression",
"customFields": {
"debug": "true",
"role": "superuser"
},
"products": [
{
"itemGroupId": "p125",
"name": "My product",
"brand": "Nike",
"category": "Men/Shirts/Short Sleeve Shirts",
"categoriesList": [
"Men",
"Shirts",
"Short Sleeve Shirts"
],
"currency": "EUR",
"promotions": [
"WINTERSALE"
],
"adult": false,
"size": "S",
"sizeSystem": "EU",
"customFields": {
"color": "blue"
},
"id": "p125zc",
"price": 102.5,
"quantity": 1,
"discount": {
"value": 5,
"currency": "EUR"
},
"gender": "male",
"sku": "p125zc-5"
}
]
})
import VelocidiSDK
let trackingEvent = [
"clientId": "kevel",
"siteId": "kevel.com",
"type": "productImpression",
"customFields": [
"debug": "true",
"role": "superuser"
],
"products": [
[
"itemGroupId": "p125",
"name": "My product",
"brand": "Nike",
"category": "Men/Shirts/Short Sleeve Shirts",
"categoriesList": [
"Men",
"Shirts",
"Short Sleeve Shirts"
],
"currency": "EUR",
"promotions": [
"WINTERSALE"
],
"adult": false,
"size": "S",
"sizeSystem": "EU",
"customFields": [
"color": "blue"
],
"id": "p125zc",
"price": 102.5,
"quantity": 1,
"discount": [
"value": 5,
"currency": "EUR"
],
"gender": "male",
"sku": "p125zc-5"
]
]
] as [String: Any]
VSDKVelocidi.sharedInstance().track(trackingEvent, userId: userId)
@import VelocidiSDK;
NSDictionary *trackingEvent = @{
@"clientId" : @"kevel",
@"siteId" : @"kevel.com",
@"type" : @"productImpression",
@"customFields" : @{
@"debug" : @"true",
@"role" : @"superuser"
},
@"products" : @[
@{
@"itemGroupId" : @"p125",
@"name" : @"My product",
@"brand" : @"Nike",
@"category" : @"Men/Shirts/Short Sleeve Shirts",
@"categoriesList" : @[
@"Men",
@"Shirts",
@"Short Sleeve Shirts"
],
@"currency" : @"EUR",
@"promotions" : @[
@"WINTERSALE"
],
@"adult" : @NO,
@"size" : @"S",
@"sizeSystem" : @"EU",
@"customFields" : @{
@"color" : @"blue"
},
@"id" : @"p125zc",
@"price" : @102.5,
@"quantity" : @1,
@"discount" : @{
@"value" : @5,
@"currency" : @"EUR"
},
@"gender" : @"male",
@"sku" : @"p125zc-5"
}
]
};
[VSDKVelocidi.sharedInstance track: trackingEvent userId: userId]
import org.json.*
import com.velocidi.Velocidi
val trackingEvent = mapOf(
"clientId" to "kevel",
"siteId" to "kevel.com",
"type" to "productImpression",
"customFields" to mapOf(
"debug" to "true",
"role" to "superuser"
),
"products" to arrayOf(
mapOf(
"itemGroupId" to "p125",
"name" to "My product",
"brand" to "Nike",
"category" to "Men/Shirts/Short Sleeve Shirts",
"categoriesList" to arrayOf(
"Men",
"Shirts",
"Short Sleeve Shirts"
),
"currency" to "EUR",
"promotions" to arrayOf(
"WINTERSALE"
),
"adult" to false,
"size" to "S",
"sizeSystem" to "EU",
"customFields" to mapOf(
"color" to "blue"
),
"id" to "p125zc",
"price" to 102.5,
"quantity" to 1,
"discount" to mapOf(
"value" to 5,
"currency" to "EUR"
),
"gender" to "male",
"sku" to "p125zc-5"
)
)
)
Velocidi.getInstance().track(userId, JSONObject(trackingEvent))
import org.json.*;
import com.velocidi.Velocidi;
JSONObject trackingEvent = new JSONObject()
.put("clientId", "kevel")
.put("siteId", "kevel.com")
.put("type", "productImpression")
.put("customFields", new JSONObject()
.put("debug", "true")
.put("role", "superuser")
)
.put("products", new JSONArray()
.put(new JSONObject()
.put("itemGroupId", "p125")
.put("name", "My product")
.put("brand", "Nike")
.put("category", "Men/Shirts/Short Sleeve Shirts")
.put("categoriesList", new JSONArray()
.put("Men")
.put("Shirts")
.put("Short Sleeve Shirts")
)
.put("currency", "EUR")
.put("promotions", new JSONArray()
.put("WINTERSALE")
)
.put("adult", false)
.put("size", "S")
.put("sizeSystem", "EU")
.put("customFields", new JSONObject()
.put("color", "blue")
)
.put("id", "p125zc")
.put("price", 102.5)
.put("quantity", 1)
.put("discount", new JSONObject()
.put("value", 5)
.put("currency", "EUR")
)
.put("gender", "male")
.put("sku", "p125zc-5")
)
);
Velocidi.getInstance().track(userId, trackingEvent);
In more detail, the fields supported on every Product Impression are:
Field | Required | Type | Default | Example | Description |
---|---|---|---|---|---|
clientId | string | "kevel" | The client identifier. | ||
siteId | string | "kevel.com" | The client's site identifier. | ||
type | required | "productImpression" | "productImpression" | The event type. | |
customFields | object of string | {...} | An object with custom fields for extra metadata to be supplied in the event. The values within this object must all be strings. | ||
facebookConversionTracking | Facebook Conversion Tracking Details | {...} | A description of a tracking event to send to Facebook using Facebook Conversions API. | ||
products | required | array of Product | [...] | An array of products being shown as part of the product impression event. |
Facebook Conversion Tracking Details
A description of a tracking event to send to Facebook using Facebook Conversions API.
Field | Required | Type | Default | Example | Description |
---|---|---|---|---|---|
pixel_id | string | "396622227884531" | The pixel ID to associate this Facebook tracking event with. | ||
event_id | string | "0c53d0b57" | ID used to deduplicate events sent by both Facebook Pixel and Conversions API. More information about the usefulness of this ID is available at https://developers.facebook.com/docs/marketing-api/server-side-api/using-the-api/deduplicate-pixel-and-server-side-events. | ||
event_name | string | "AddToCart" | A Facebook pixel Standard Event or Custom Event name. This field is used to deduplicate events sent by both Facebook Pixel and Conversions API. The available Standard Events are listed in https://developers.facebook.com/docs/facebook-pixel/reference#standard-events. | ||
custom_data | object | {...} | Parameters to send additional data Facebook can use for ads delivery optimization. More information about the fields that can be supplied here is available at https://developers.facebook.com/docs/marketing-api/conversions-api/parameters/custom-data. |
Product
Product details.
Field | Required | Type | Default | Example | Description |
---|---|---|---|---|---|
itemGroupId | string | "p125" | Identifier for a group of products that come in different versions (variants). | ||
name | string | "" | "My product" | Product name. | |
brand | string | "Nike" | Product brand. | ||
category | string | "Men/Shirts/Short Sleeve Shirts" | Product category. If possible, 'categoriesList' should be filled instead of this field. | ||
categoriesList | array of string | ["Men", "Shirts", "Short Sleeve Shirts"] | A hierarchically sorted list of the sub-categories that this product belongs to. The first item on this list should be the most general sub-category, while the last should be the most specific. Any item on this list should correspond to a sub-category of the item immediately preceding it. If 'category' is present and this field is left undefined, the default value of this field will be a best effort derivation of 'category'. | ||
currency | required | string | "EUR" | The currency used in monetary values. Supported values: "PLN" , "CAD" , "HKD" , "AUD" , "SEK" , "TRY" , "BRL" , "KRW" , "CZK" , "BGN" , "ETH" , "CLP" , "GBP" , "MXN" , "THB" , "ISK" , "SGD" , "CHF" , "INR" , "LTC" , "CNY" , "PHP" , "RON" , "BTC" , "DKK" , "XAU" , "XAG" , "JPY" , "ARS" , "HUF" , "MYR" , "USD" , "RUB" , "NZD" , "IDR" , "ILS" , "NOK" , "NAD" , "EUR" , "ZAR" and "HRK" . | |
promotions | array of string | [] | ["WINTERSALE"] | Vouchers applied in the purchase or displayed together with the product. | |
adult | boolean | false | false | Whether the product includes adult content (alcohol, guns, gambling, sexually suggestive content...) and might not show up to some users. | |
size | string | "S" | Product size. | ||
sizeSystem | string | "EU" | Country of the size system used by your product. | ||
customFields | object of string | {"color": "blue"} | Additional fields related to the product. The values within this object must all be strings. | ||
id | required | string | "p125zc" | Product identifier. | |
price | number | 0 | 102.5 | The product's price. | |
quantity | number | 1 | 1 | Number of items purchased. | |
discount | Discount | {...} | Discount applied to the product. | ||
gender | string | "male" | Gender for which the product is intended. | ||
sku | string | "p125zc-5" | Product SKU. |
Discount
Discount applied to the product. One of Percentage Discount, Price Discount or Value Discount.
Percentage Discount
A discount description where the percentage discounted is provided.
Field | Required | Type | Default | Example | Description |
---|---|---|---|---|---|
percentage | required | number | 0.25 | The percentage of the discount. |
Price Discount
A discount description where the price after the discount is provided.
Field | Required | Type | Default | Example | Description |
---|---|---|---|---|---|
price | required | number | 42 | The price after the discount. | |
currency | required | string | "EUR" | The currency used in monetary values. Supported values: "PLN" , "CAD" , "HKD" , "AUD" , "SEK" , "TRY" , "BRL" , "KRW" , "CZK" , "BGN" , "ETH" , "CLP" , "GBP" , "MXN" , "THB" , "ISK" , "SGD" , "CHF" , "INR" , "LTC" , "CNY" , "PHP" , "RON" , "BTC" , "DKK" , "XAU" , "XAG" , "JPY" , "ARS" , "HUF" , "MYR" , "USD" , "RUB" , "NZD" , "IDR" , "ILS" , "NOK" , "NAD" , "EUR" , "ZAR" and "HRK" . |
Value Discount
A discount description where the value of the discount is provided.
Field | Required | Type | Default | Example | Description |
---|---|---|---|---|---|
value | required | number | 10 | The total value of the discount. | |
currency | required | string | "EUR" | The currency used in monetary values. Supported values: "PLN" , "CAD" , "HKD" , "AUD" , "SEK" , "TRY" , "BRL" , "KRW" , "CZK" , "BGN" , "ETH" , "CLP" , "GBP" , "MXN" , "THB" , "ISK" , "SGD" , "CHF" , "INR" , "LTC" , "CNY" , "PHP" , "RON" , "BTC" , "DKK" , "XAU" , "XAG" , "JPY" , "ARS" , "HUF" , "MYR" , "USD" , "RUB" , "NZD" , "IDR" , "ILS" , "NOK" , "NAD" , "EUR" , "ZAR" and "HRK" . |