Statistics / Analytics
Summary of supported analytics integrations
- Google Analytics 4
- Meta (Facebook) Pixel
- Contentsquare
- Xaxis
- Xandr
Browser Support
For browser support of each statistics plugin, please review the documentation of the source functionality for their browser support.
Google Tag Manager for loading additional scripts no longer supported
Using Google Tag Manager (GTM) for loading additional scripts is no longer supported. The reason for this is that each script should be possible to configure to only load based on user tracking preference settings.
To load the scripts that would otherwise be loaded by Google Tag Manager, making a plugin which loads the same code can be done by yourself or a partner.
A plugin (similar to a GTM tag) a script file which exists separately from the frontend application. This script can, for example, listen to frontend events and forward them to corresponding platforms like Google analytics or Meta pixel.
Please refer to the documentation on Frontend Plugins at https://developer.futureordering.com for more information on Frontend Plugins.
Enable by Configuration
Contentsquare
Customer must purchase Contentsquare, and provide a Contentsquare id (13 symbols).
Supports main tag and ecommerce tag (purchase).
Supports custom variables?
- Currency
- Order Type
- Order Time
- Store
- Page Type
- User Logged In
- Product Name
Google Analytics 4
Customer must set up a GA4 property and provide the GA4 measurement id (G-XXXXXXX).
https://support.google.com/analytics/answer/9304153?hl=en
Supports standard events
- view_item_list
- select_item
- view_item
- begin_checkout
- purchase
Also sends the rest of our events as custom events.
Meta (Facebook) Pixel
Customer must set up a Pixel in Facebook (Meta) and provide the Pixel id (15 digit number).
https://sv-se.facebook.com/business/help/952192354843755?id=1205376682832142.
Supports page view and the following events
- InitiateCheckout
- Purchase
- AddToCart
- ViewContent
Xaxis
Customer must provide a Xaxis id. Supports initialization tag only.
Xandr
Customer must provide a xandr id. Supports initialization tag and page view event.
Technical details
Frontend events and data
This section describes which events the frontend pushes emits to measure different activities.
NB! These event and property - names may be mapped separately in each integration to new names and structures. This documentation only shows which data is available to the integrations.
Custom dimensions
The values of these custom dimensions are set by several events.
| field | value | description |
|---|---|---|
| dimension1 | orderType | |
| dimension2 | affiliation | The store or affiliation from which this transaction occured. Combines store name and city. |
| dimension3 | userId | |
| dimension4 | 'future' / 'direct' | Specifies if the user wanted the order directly or in the future. NB: Even if user actively selected ASAP time, this value will be 'direct'. NB2: If user selected a non-asap time, but waits until checkout displays ASAP, this value will still be 'future' |
| dimension5 | checkNumber |
Ecommerce
Product Impressions
event: productsImpression
A product impression is a viewing of a product offer. The impressions array will include one item for each product offer which is visible in the viewport. The category and list name will depend on the context in which the product is offered. For example a product could be offered both inside a category listing and during an upsell step.
{
"event": "productsImpression",
"ecommerce": {
"currencyCode": "GBP",
"impressions": [
{
"name": "Cheese and Bacon Burger",
"id": 97654,
"price": 12,
"category": "Burgers",
"list": "Burgers"
},
{
"name": "Cheese Burger",
"id": 97650,
"price": 9,
"category": "Burgers",
"list": "Burgers"
},
{
"name": "Future Burger",
"id": 97630,
"price": 11.5,
"category": "Burgers",
"list": "Burgers"
}
]
}
}
Product clicks
event: productClick
Sent when a product is clicked in a product listing.
{
"event": "productClick",
"eventLabel": "Burgers -> Future Burger",
"ecommerce": {
"click": {
"actionField": {
"list": "Burgers"
},
"products": [
{
"name": "Future Burger",
"id": 97630,
"price": 11.5,
"category": "Burgers"
}
]
}
}
}
Product details
event: productDetail
Sent when a product is clicked in a product listing.
{
"event": "productDetail",
"eventLabel": "Burgers -> Future Burger",
"ecommerce": {
"detail": {
"actionField": {
"list": "Burgers"
},
"products": [
{
"name": "Future Burger",
"id": 97630,
"price": 11.5,
"category": "Burgers"
}
]
}
}
}
Add to cart
event: addToCart
Sent when products are added to the shopping cart (basket).
{
"event": "addToCart",
"eventLabel": "Future Burger",
"ecommerce": {
"currencyCode": "GBP",
"sourceProductMenuId": 85841, // The productId which triggered the upsell, or undefined if not upsell
"add": {
"products": [
{
"name": "Future Burger",
"id": 97630,
"price": 11.5,
"quantity": 1
}
]
}
}
}
Remove from cart
event: removeFromCart
Sent when products are removed from the shopping cart (basket).
{
"event": "removeFromCart",
"eventLabel": "Future Burger",
"ecommerce": {
"remove": {
"products": [
{
"name": "Future Burger",
"id": 97630,
"quantity": 1
}
]
}
}
}
Checkout
event: checkout
The checkout process is measured in several steps. The steps are:
- Cross Sell
- Pickup Time,
- Login / Register / Guest,
- Special,
- Payment,
- Place Order,
Each event will include a complete list of products currently in the basket in addition to the step number which is used to indicate which stage of the checkout process is being measured.
{
"event": "checkout",
"eventLabel": "1 - Cross Sell",
"ecommerce": {
"checkout": {
"actionField": {
"step": 1
},
"products": [
{
"id": 97692,
"name": "Strawberry",
"category": "Ice-Cream",
"price": 1,
"quantity": 1
}
]
}
}
}
Purchases
event: transaction
A transaction details event is sent after an order has been successfully placed.
This even contains some custom dimensions. Descriptions of which custom dimensions we set can be found in the Custom dimensions section.
{
"event": "transaction",
"page": "transaction-complete",
"title": "Transaction Complete",
"dimension1": "takeaway",
"dimension2": "Future Ordering FUSE, Reading",
"dimension3": "u123",
"dimension4": "future",
"dimension5": "1001",
"ecommerce": {
"currencyCode": "NOK",
"purchase": {
"actionField": {
"id": "tid123",
"affiliation": "Future Ordering FUSE, Reading",
"storeCity": "Reading",
"revenue": "11.5",
"tax": "0",
"shipping": "0"
},
"storeId": "192",
"pickupTime": "2022-01-1T12:00:00.000Z",
"provider": "Klarna", // Can be multiple comma separated providers if multiple payments was used ex: "stored-value,netaxept"
"paymentMethodType": "CardPayment", // Can be multiple comma separated paymentMethodTypes
"collectionType": "curbside",
"products": [
{
"name": "Future Burger",
"id": 97630,
"price": 11.5,
"quantity": 1,
"dimension1": "takeaway",
"dimension2": "Future Ordering FUSE, Reading",
"dimension3": "u123",
"dimension4": "future",
"dimension5": "1001"
}
]
}
}
}
Basket
Quantity change
event: basketQuantityChanged
The eventLabel value is set to the name of the product whos quantity was changed.
{
"event": "basketQuantityChanged",
"eventLabel": "Future Burger",
"ecommerce": {
"change": {
"products": [
{
"id": 97692,
"name": "Strawberry",
"category": "Ice-Cream",
"price": 1,
"quantity": 3
}
]
}
}
}
Country
Country change
event: countryChanged
{
"event": "countryChanged",
"eventLabel": "Sweden"
}
User
User info
event: customDimensionUser
Sent when user info is fetched from the server. This sets userLoggedIn to true if user is logged in as non-guest. Also sets the email, phoneNumber, and also sets user-id at custom dimension index 3.
See Custom dimensions.
{
"event": "customDimensionUser",
"customDimensionIndex": 3,
"customDimensionValue": "u123",
"userLoggedIn": true,
}
User event
event: userEvent
User events for various actions.
Actions are:
- Password Reset
- Logged In
- Logged Out
- Guest password set
- Guest password was not set
{
"event": "userEvent",
"eventLabel": "Logged Out" // user action
}
Localization
Sent when language is changed.
Language change
event: localizationChanged
{
"event": "localizationChanged",
"eventLabel": "English"
}
Menu
Subcategory expansion
event: subCategoryExpanded
Sent when a collapsed subcategory is expanded.
{
"event": "menuSubCategoryExpanded",
"eventLabel": "Classics", // Category Title
"eventValue": 14927 // Category Id
}
Order
Cancel ongoing order (not placed)
event: orderCancel
Sent when an ongoing order was cancelled and the user is returned to the start page.
{
"event": "orderCancel"
}
Payment
Save payment method dialog response
event: paymentSaveMethod
Sent when the user responds to a dialog which offers to save a payment method for future use.
{
"event": "paymentSaveMethod",
"eventLabel": "No", // "Yes" or "No"
"paymentMethod": {
"provider": "Klarna",
"paymentMethodType": "Invoice", // Undefined if no paymentMethodType exists
"expiryDate": "2301" // YYMM. Only defined for CardPaymentType
}
}
Payment method added
event: paymentMethodAdded
Sent when a payment method is saved to the users account.
{
"event": "paymentMethodAdded",
"eventLabel": "netaxept", // Payment provider name
"expiryDate": "2301" // YYMM. Only defined for CardPaymentType
}
Payment method removed
event: paymentMethodRemoved
Sent when a payment method is removed from the users account.
{
"event": "paymentMethodRemoved",
"eventLabel": "netaxept" // Payment provider name
}
Product
Product info viewed
event: productInfo
Sent when product info is viewed.
{
"event": "productInfo",
"eventLabel": 97630, // Product id
"eventValue": "6461" // Category id
}
Page
Page Changed
event: pageChanged
Sent when page is changed.
{
"event": "pageChanged",
"page": "/gb/en-gb/stores?menuType=eatin",
"pageType": "stores",
"orderType": "eatin"
}
Time Selected
event: timeSelected
Sent when time is actively selected by pressing the "Confirm time" or "ASAP" button on datetime(-blocks). Other events which also uses 'dimension4' always use the value from the latest timeSelected event, if present
{
"event": "timeSelected",
"eventLabel": "'datetime' | 'datetime-blocks'", // Current datetime-page-type
"dimension4": "'direct' | 'future'"
}
Session
Session Start
event: startSession
Sent when a new order session is initiated.
{
"event": "startSession"
}
Session End (kiosk only)
event: endSession
Sent when an ongoing order session ends. Kiosk only.
{
"event": "endSession"
}