Screen Type and User context entities
When tracking actions on an e-commerce store, it can prove useful to be able to add extra and more generic contextual information such as the Screen/Page Type the visitor is currently on or User information for the user completing an action.
To do this, we provide you the setEcommerceScreen and setEcommerceUser methods, which allow you to set this information on events sent from the Snowplow tracker. These context entities will be attached to ALL events, not just e-commerce events.
setEcommerceScreen
For consistency with web tracking, this method adds a Page (rather than Screen) entity, defined by the schema iglu:com.snowplowanalytics.snowplow.ecommerce/page/jsonschema/1-0-0. The Ecommerce Screen/Page entity helps in grouping insights by screen/page type, e.g. Product description, Product list, Home screen.
To set a Screen/Page entity you can use the EcommerceScreenEntity with the following attributes:
EcommerceScreenEntity(type: String, language: String?, locale: String?)
- Where
typeis the type of page that was visited. E.g. homepage, product page, cart. - Where
languageis the language the web page is based in. - Where
localeis the locale version of the site that is running.
Example usage:
let entity = EcommerceScreenEntity(type: "demo_app_screen")
tracker.ecommerce.setEcommerceScreen(entity)
// setting EcommerceScreen again will replace the original entity
let newEntity = EcommerceScreenEntity(type: "product_list", language: "EN-GB", locale: "UK")
tracker.ecommerce.setEcommerceScreen(newEntity)
// remove the saved properties and stop the Page entity being added
tracker.ecommerce.removeEcommerceScreen()
EcommerceScreenEntity(type: String, language: String?, locale: String?)
- Where
typeis the type of page that was visited. E.g. homepage, product page, cart. - Where
languageis the language the web page is based in. - Where
localeis the locale version of the site that is running.
Example usage:
val entity = EcommerceScreenEntity(type = "demo_app_screen")
tracker.ecommerce.setEcommerceScreen(entity)
// setting EcommerceScreen again will replace the original entity
val newEntity = EcommerceScreenEntity(type = "product_list", language = "EN-GB", locale = "UK")
tracker.ecommerce.setEcommerceScreen(newEntity)
// remove the saved properties and stop the Page entity being added
tracker.ecommerce.removeEcommerceScreen()
EcommerceScreenEntity(type: String, language: String?, locale: String?)
- Where
typeis the type of page that was visited. E.g. homepage, product page, cart. - Where
languageis the language the web page is based in. - Where
localeis the locale version of the site that is running.
Example usage:
EcommerceScreenEntity entity = new EcommerceScreenEntity(
"demo_app_screen" // type
)
tracker.getEcommerce().setEcommerceScreen(entity);
// setting EcommerceScreen again will replace the original entity
EcommerceScreenEntity newEntity = new EcommerceScreenEntity(
"product_list", // type
"EN-GB", // language
"UK" // locale
)
tracker.getEcommerce().setEcommerceScreen(newEntity);
// remove the saved properties and stop the Page entity being added
tracker.getEcommerce().removeEcommerceScreen();
setEcommerceUser
The Ecommerce User entity helps in modeling guest/non-guest account interactions. To set an Ecommerce User context you can use the EcommerceUserEntity with the following attributes:
EcommerceUserEntity(id: String, isGuest: Bool?, email: String?)
- Where
idis the user identifier. - Where
is_guestis whether or not the user is a guest type. - Where
emailis the user’s email address.
Example usage:
let entity = EcommerceUserEntity(id: "userId12345", isGuest: true)
tracker.ecommerce.setEcommerceUser(entity)
// setting EcommerceUser again will replace the original entity
let newEntity = EcommerceUserEntity(id: "userId67890", isGuest: false, email: "email@email.com")
tracker.ecommerce.setEcommerceUser(newEntity)
// remove the saved properties and stop the User entity being added
tracker.ecommerce.removeEcommerceUser()
EcommerceUserEntity(id: String, isGuest: Boolean?, email: String?)
- Where
idis the user identifier. - Where
is_guestis whether or not the user is a guest type. - Where
emailis the user’s email address.
Example usage:
val entity = EcommerceUserEntity(id = "userId12345", isGuest = true)
tracker.ecommerce.setEcommerceUser(entity)
// setting EcommerceUser again will replace the original entity
val newEntity = EcommerceUserEntity(id = "userId67890", isGuest = false, email = "email@email.com")
tracker.ecommerce.setEcommerceUser(newEntity)
// remove the saved properties and stop the User entity being added
tracker.ecommerce.removeEcommerceUser()
EcommerceUserEntity(id: String, isGuest: Boolean?, email: String?)
- Where
idis the user identifier. - Where
is_guestis whether or not the user is a guest type. - Where
emailis the user’s email address.
Example usage:
EcommerceUserEntity entity = new EcommerceUserEntity(
"userId12345", // id
true // isGuest
)
tracker.getEcommerce().setEcommerceUser(entity);
// setting ScreenType again will replace the original entity
EcommerceUserEntity newEntity = new EcommerceUserEntity(
"userId67890", // id
false, // isGuest
"email@email.com" // email
)
tracker.getEcommerce().setEcommerceUser(newEntity);
// remove the saved properties and stop the Page entity being added
tracker.getEcommerce().removeEcommerceUser();