Skip to main content

eCommerce events

eCommerce events

Last updated: 29-Feb-2024
Rate this article:

Overview

This article lists all eCommerce events supported by the ConvertPlus shopping cart.

The ConvertPlus cart caters to the following Web Metrics solutions:

  • Google Universal Analytics
  • Google Tag Manager (with Universal Analytics) 
  • Adobe Dynamic Tag Manager
  • Google Analytics 4 
  • Google Tag Manager (with GA4) 

Each solution handles enhanced events triggered by the ConvertPlus Cart differently. Due to the fact that each Web Metrics solution prefers its data arranged in a particular way, we'll document each web solution separately, alongside a distinct section for the custom cartUpdated event.

The parameters below are used to track eCommerce events triggered by the ConvertPlus and InLine carts.

Availability

Merchant tracking is available for all 2Checkout accounts.

eCommerce events grouped by Web Metric

Google Universal Analytics

The Google Universal Analytics DataLayer differs from Google Tag Manager and Adobe's Dynamic Tag Manager in that it is an array of arrays. Each event pushed in the DataLayer is an array with various indexes, based on the type of the triggered event:

  • The first element of the array determines the type of payload added to the DataLayer (it can either be event or config).
  • The second element of the array determines the sub-type of the first element.
  • The third element is an object with the actual data/payload.
Event Triggered by Notes Example

begin_checkout

LOAD_CART (load-cart)
  • the item’s price is the item’s net discounted price, taken from the item’s key named itemNetDiscountedPrice

  • the item’s price should not be calculated with the item’s quantity

  • the item’s coupon key is only present if a coupon is applied

  • the order’s coupon key is only present if an order coupon is applied

[
  "event",
  "begin_checkout",
  {
    "currency": "USD",
    "coupon"  : "promotion-code",
    "items"   : [
      {
        "category": "REGULAR",
        "id"      : 4591180,
        "name"    : "Antivirus 2016",
        "price"   : 50,
        "quantity": 1,
        "coupon"  : "coupon_code",
        "group"   : "General",
        "tax"     : 20.5
      }
    ],
    "value"   : "177.89"
  }
]
purchase PLACE_ORDER (place-order:success)
  • the transaction_id is the order’s refNo hashed using sha256
  • the value is the order’s grossDiscounted price and it should reflect the total amount the shopper has to pay

  • the item’s price is the item’s net discounted price

  • the item’s coupon key is only present if a coupon is applied

  • the order’s coupon key is only present if an order coupon is applied

[
  "event",
  "purchase",
  {
    "transaction_id": "11741538",
    "value"         : 84.03,
    "tax"           : 15.97,
    "shipping"      : 11.02,
    "currency"      : "USD",
    "coupon"  : "promotion-code",
    "items"         : [
      {
        "category": "REGULAR",
        "id"      : 4591180,
        "name"    : "Antivirus 2016",
        "price"   : 84.03,
        "quantity": 1,
        "coupon"  : "coupon_code",
        "group"   : "General",
        "tax"     : 20.5
      }
    ]
  }
]

remove_from_cart

DELETE_ITEM (delete-item)
  • the item’s coupon key is only present if a coupon is applied

  • the value is the order’s net discounted price

  • the item’s price is the item’s net discounted price, not taking quantity into account the

  • the order’s coupon key is only present if an order coupon is applied

[
  "event",
  "remove_from_cart",
  {
    "items": [
      {
        "category": "REGULAR",
        "id"      : 4591180,
        "name"    : "Antivirus 2016",
        "price"   : 84.03,
        "quantity": 1,
        "coupon"  : "coupon_code",
        "group"   : "General",
        "tax"     : 20.5
      }
    ],
    "coupon"  : "promotion-code",
    "value": 84.03
  }
]

page_redirect

LOAD_PAGE (load-page) Is only triggered if the cart is redirected to the retry page
[
  "event",
  "page_redirect",
  {
    "event_label"    : "Retry",
    "event_category" : "2checkout_non_interaction_event",
    "non_interaction": true
  }
]

Google Analytics 4

The Google Analytics 4 DataLayer differs from Google Tag Manager and Adobe's Dynamic Tag Manager in that it is an array of arrays. Each event pushed in the DataLayer is an array with various indexes, based on the type of the triggered event: 

  • The first element of the array determines the type of payload added to the DataLayer (it can either be event or config). 

  • The second element of the array determines the sub-type of the first element. 

  • The third element is an object with the actual data/payload.

Event

Triggered by 

Notes 

Example 

begin_checkout 

LOAD_CART (load-cart) 

  • the item’s price is the item’s net discounted price, taken from the item’s key named itemNetDiscountedPrice 

  • the item’s price should not be calculated with the item’s quantity 

  • the item’s coupon key is only present if a coupon is applied 

  • the order’s coupon key is only present if an order coupon is applied 

[ 
  "event", 
  "begin_checkout", 
  { 
    "currency": "USD", 

    "value"   : "177.89", 
    "coupon"  : "promotion-code", 
    "items"   : [ 
      { 
        "category" : "REGULAR", 
        "item_id"  : 4591180, 
        "item_name": "Antivirus 2016", 
        "price"    : 50, 
        "quantity" : 1, 
        "coupon"   : "coupon_code", 
        "group"    : "General", 
        "tax"      : 20.5 
      } 
    ] 
  } 
] 

purchase

PLACE_ORDER (place-order:success) 

  • the transaction_id is the order’s refNo hashed using sha256 

  • the value is the order’s grossDiscounted price and it should reflect the total amount the shopper has to pay 

  • the item’s price is the item’s net discounted price 

  • the item’s coupon key is only present if a coupon is applied 

  • the order’s coupon key is only present if an order coupon is applied 

[ 
  "event", 
  "purchase", 
  { 
    "transaction_id": "11741538", 
    "value"         : 84.03, 
    "tax"           : 15.97, 
    "shipping"      : 11.02, 
    "currency"      : "USD", 
    "coupon"  : "promotion-code", 
    "items"         : [ 
      { 
        "item_category": "REGULAR", 
        "item_id"      : 4591180, 
        "item_name"    : "Antivirus 2016", 
        "price"        : 84.03, 
        "quantity"     : 1, 
        "coupon"       : "coupon_code", 
        "group"        : "General", 
        "tax"          : 20.5 
      } 
    ] 
  } 
] 

 

remove_from_cart

DELETE_ITEM (delete-item) 

  • the item’s coupon key is only present if a coupon is applied 

  • the value is the order’s net discounted price 

  • the item’s price is the item’s net discounted price, not taking quantity into account the 

  • the order’s coupon key is only present if an order coupon is applied 

[ 
  "event", 
  "remove_from_cart", 
  { 
    "items": [ 
      { 
        "item_category": "REGULAR", 
        "item_id"      : 4591180, 
        "item_name"    : "Antivirus 2016", 
        "price"        : 84.03, 
        "quantity"     : 1, 
        "coupon"       : "coupon_code", 
        "group"        : "General", 
        "tax"          : 20.5 
      } 
    ], 
    "currency": "USD", 
    "coupon"  : "promotion-code", 
    "value"   : 84.03 
  } 
] 

 

page_redirect

LOAD_PAGE (load-page) 

Is only triggered if the cart is redirected to the retry page 

[ 
  "event", 
  "page_redirect", 
  { 
    "event_label"    : "Retry", 
    "event_category" : "2checkout_non_interaction_event", 
    "non_interaction": true 
  } 
] 

add_to_cart

 

ADD_ITEM (add-item) 

  • the item’s coupon key is only present if there is an active product coupon code (coupon / auto-apply) 

  • the item’s price is the item’s net discounted price 

  • the item's format key for the  cross-sell product:  

  • “cross_sell” for products displayed in a listing, as recommended products; 

  •  “auto_cross_sell” for cross-sell products auto added in the cart; 

  •  “main” for products which are not cross sell. 

[ 
    'event', 
    'add_to_cart', 
    { 
        'items': [ 
            { 
                'item_category': 'REGULAR', 
                'item_id': 4591180, 
                'item_name': 'Antivirus 2016', 
                'price': 84.03, 
                'quantity': 1, 
                'group': 'General', 
                'tax': 20.5, 
                'format': 'cross_sell' 
            } 
        ], 
        'currency': 'USD', 
        'value': 84.03 
    } 
] 

view_item_list 

 

LOAD_CROSS_SELL (load-cross-sell) 

  • the item’s price is the item’s net discounted price 

  • the item's index key is the position of the product in the the cross-sell listing 

[ 
    'event', 
    'view_item_list', 
    { 
        'currency': 'USD', 
        'item_list_id': 'cross-sell products', 
        'item_list_name': 'cross-sell products', 
        'items': [ 
            { 
                'item_name': 'Antivirus 2018', 
                'item_id': 7628300, 
                'price': '27.9', 
                'discount': '3.10', 
                'type': 'Physical', 
                'group': 'General', 
                'format': 'cross_sell', 
                'index': 0 
            }, 
            { 
                'item_name': 'Antivirus 2020', 
                'item_id': 7635736, 
                'price': '55.88', 
                'discount': '13.96', 
                'type': 'Electronic', 
                'group': 'General', 
                'format': 'cross_sell', 
                'hiddenAdditionalFields': [ 
                    { 'Additional hiddenfield': '' } 
                ], 
                'index': 1 
            } 
        ] 
    } 
] 

 

Google Tag Manager with Universal Analytics

For the Google Tag Manager with Universal Analytics, the DataLayer is an array of objects. The object payload passed to the DataLayer is mainly made up of two keys: event & eCommerce.

The event key determines the type of event passed to the Datalayer, while the eCommerce key holds the eCommerce object with all the relevant event data.

Both Google Tag Manager and Adobe’s Dynamic Tag Manager follow the same advanced eCommerce layout and they also have the ability to support Custom Events (cartUpdated).

Event Triggered by Notes Example

checkout

  • LOAD_CART (load-cart)

  • SET_ECOMMERCE (set-ecommerce)

  • the actionField’s stepkey will always be 1 as the checkout page is the first action field

  • the product’s price key is the item’s net discounted price

  • the product’s hiddenAdditionalFields key is only present if the product has hidden additional fields

  • the product’s option key is only present if the product has active options

  • the actionField’s coupon key is only present if there is a valid order promotion present

  • the actionField’s orderDiscountCoupon key is only present if there is a valid order promotion present

  • the actionField’s orderDiscountCoupon default’s to ‘auto-apply' if the promotion doesn’t have a promotion coupon

{
   "event":"checkout",
   "ecommerce":{
      "currencyCode":"USD",
      "checkout":{
         "actionField":{
            "step":1,
            "coupon": "promotion-code",
            "orderDiscountCoupon": "promotion-coupon"
         },
         "products":[
            {
               "name":"Panda_Antivirus",
               "id":7628801,
               "price":"200",
               "quantity":2,
               "type":"Electronic",
               "options":"USERS=users_one_test;PERIOD=period_one",
               "hiddenAdditionalFields":[
                  {
                     "product_hidden_text_name":"hidden_text_value"
                  }
               ],
              "group": "General",
              "tax": 20.5
            },
            {
               "name":"Turbo_Panda_Antivirus",
               "id":7630067,
               "price":"100",
               "quantity":1,
               "type":"Electronic",
               "group": "General",
               "tax": 20.5
            }
         ]
      }
   }
}

purchase

PLACE_ORDER (place-order:success)
  • the actionField’s id key is the order’s refNo hashed with sha256

  • the actionField’s revenue key is the order’s gross discounted price

  • the actionField’s purchaseFlow key references if purchase flow selected by the customer (personal/company)

  • the actionField’s affiliation key is only present if the order has an affiliate

  • the actionField’s coupon key is only present if there is an order level coupon (which ConvertPlus doesn’t support atm of this writing)

  • the actionField’s returnType & returnUrl are only present if the order has a returnType or returnUrl

  • the actionField’s subscription key is present only if the order has a subscription product and it represents the unique system-generated identifier of the subscription.

  • the actionField’s coupon key is only present if there is a valid order promotion present

  • the actionField’s orderDiscountCoupon key is only present if there is a valid order promotion present

  • the actionField’s orderDiscountCoupon default’s to ‘auto-apply' if the promotion doesn’t have a promotion coupon

  • the product’s coupon key is only present if there is an active product coupon code (coupon / auto-apply)

  • the product’s price is the item’s net discounted price

  • the product’s isDynamic key is only present if the product is dynamic

  • the product’s dynamicType key is only present if the product is dynamic

  • the product’s recurrence key is only present if the product is dynamic

  • the product’s hiddenAdditionalFields key is only present if the product has hidden additional fields

  • the product’s option key is only present if the product has active options

{
   "event":"purchase",
   "ecommerce":{
      "purchase":{
         "currencyCode":"USD",
         "actionField":{
            "id":"11544394",
            "affiliation":"",
            "revenue":"168.06",
            "tax":"31.94",
            "shipping":"0",
            "purchaseFlow":"personal",
            "returnUrl":"",
            "returnType":"",
            "coupon":"",
            "subscription":"",
            "coupon": "promotion-code",
            "orderDiscountCoupon": "promotion-coupon"
         },
         "products":[
            {
               "name":"Panda_Antivirus",
               "id":7628801,
               "price":"84.03",
               "quantity":1,
               "type":"Electronic",
               "coupon":"coupon_code",
               "options":"USERS=users_one_test;PERIOD=period_one",
               "hiddenAdditionalFields":[
                  {
                     "product_hidden_text_name":"hidden_text_value"
                  }
               ],
               "group": "General",
               "tax": 20.5
            },
            {
               "name":"Turbo_Panda_Antivirus",
               "id":7630067,
               "price":"84.03",
               "quantity":1,
               "type":"Electronic",
               "isDynamic":true,
               "dynamicType":"",
               "dynamicRecurrence":"",
               "dynamicDuration":"dynamicRenewalPrice"
            }
         ]
      }
   }
}

removeFromCart

DELETE_ITEM (delete-item)
  • the product’s coupon key is only present if there is an active product coupon code (coupon / auto-apply)

  • the product’s price is the item’s net discounted price

  • the product’s isDynamic key is only present if the product is dynamic

  • the product’s dynamicType key is only present if the product is dynamic

  • the product’s recurrence key is only present if the product is dynamic

  • the product’s hiddenAdditionalFields key is only present if the product has hidden additional fields

  • the product’s option key is only present if the product has active options

  • the remove’s coupon key is only present if there is a valid order promotion present

  • the remove’s orderDiscountCoupon key is only present if there is a valid order promotion present

  • the remove’s orderDiscountCoupon default’s to ‘auto-apply' if the promotion doesn’t have a promotion

{
   "event":"removeFromCart",
   "ecommerce":{
      "currencyCode":"USD",
      "remove":{
         "coupon": "promotion-code",
         "orderDiscountCoupon": "promotion-coupon"
         "products":[
            {
               "name":"Turbo_Panda_Antivirus",
               "id":7630067,
               "price":"100",
               "quantity":1,
               "type":"Electronic",
               "coupon":"coupon_code",
               "isDynamic":true,
               "dynamicType":"",
               "dynamicRecurrence":"",
               "dynamicDuration":"",
               "dynamicRenewalPrice":"",
               "options":"USERS=users_one_test;PERIOD=period_one",
               "hiddenAdditionalFields":[
                  {
                     "product_hidden_text_name":"hidden_text_value"
                  }
               ]
            }
         ]
      }
   }
}

addToCart

ADD_ITEM (add-item)
  • the product’s coupon key is only present if there is an active product coupon code (coupon / auto-apply)

  • the product’s price is the item’s net discounted price

  • the product’s isDynamic key is only present if the product is dynamic

  • the product’s dynamicType key is only present if the product is dynamic

  • the product’s recurrence key is only present if the product is dynamic

  • the product’s hiddenAdditionalFields key is only present if the product has hidden additional fields

  • the product’s option key is only present if the product has active options

{
   "event":"addToCart",
   "currencyCode":"USD",
   "ecommerce":{
      "add":{
         "products":[
            {
               "name":"Antivirus 2018 - physical product",
               "id":7605582,
               "price":"127.89",
               "quantity":1,
               "type":"Physical",
               "coupon":"coupon_code",
               "isDynamic":true,
               "dynamicType":"",
               "dynamicRecurrence":"",
               "dynamicDuration":"",
               "dynamicRenewalPrice":"",
               "options":"USERS=users_one_test;PERIOD=period_one",
               "hiddenAdditionalFields":[
                  {
                     "product_hidden_text_name":"hidden_text_value"
                  }
               ]
            }
         ]
      }
   }
}

Google Tag Manager with GA4 

Google tag manager GA4 respects the Google analytics 4 structure. The DataLayer is an array of objects. The object payload passed to the DataLayer is mainly composed of two keys: event & ecommerce. 

The event key determines the type of event passed to the Datalayer, while the eCommerce key holds the eCommerce object with all the relevant event data.

Event 

Triggered by 

Notes 

Example 

begin_checkout 

LOAD_CART (load-cart) 

SET_ECOMMERCE (set-ecommerce) 

  • the actionField’s stepkey will always be 1 as the checkout page is the first action field 

  • the item’s price key is the item’s net discounted price 

  • the item’s hiddenAdditionalFields key is only present if the product has hidden additional fields 

  • the item’s option key is only present if the product has active options 

  • the actionField’s coupon key is only present if there is a valid order promotion present 

  • the actionField’s orderDiscountCoupon key is only present if there is a valid order promotion present 

  • the actionField’s orderDiscountCoupon default’s to ‘auto-apply' if the promotion doesn’t have a promotion coupon

{ 
    'event': 'begin_checkout', 
    'ecommerce': { 
        'currency': 'USD', 
        'value': "300", 
        'coupon': 'promotion-code', 
        'actionField': { 
            'step': 1, 
            'orderDiscountCoupon': 'promotion-coupon' 
        }, 
        'items': [ 
            { 
                'item_name': 'Panda_Antivirus', 
                'item_id': 7628801, 
                'price': '200', 
                'quantity': 2, 
                'type': 'Electronic', 
                'options': 'USERS=users_one_test;PERIOD=period_one', 
                'hiddenAdditionalFields': [ 
                    { 
                        'product_hidden_text_name': 'hidden_text_value' 
                    } 
                ], 
                'group': 'General', 
                'tax': 20.5 
            }, 
            { 
                'item_name': 'Turbo_Panda_Antivirus', 
                'item_id': 7630067, 
                'price': '100', 
                'quantity': 1, 
                'type': 'Electronic', 
                'group': 'General', 
                'tax': 20.5 
            } 
        ] 
    } 
} 

purchase 

PLACE_ORDER (place-order:success) 

  • the transaction_id key is the order’s refNo hashed with sha256 

  • the value key is the order’s gross discounted price 

  • the actionField’s purchaseFlow key references if purchase flow selected by the customer (personal/company) 

  • the actionField’s affiliation key is only present if the order has an affiliate 

  • the coupon key is only present if there is an order level coupon  

  • the actionField’s returnType & returnUrl are only present if the order has a returnType or returnUrl 

  • the actionField’s subscription key is present only if the order has a subscription product and it represents the unique system-generated identifier of the subscription. 

  • the actionField’s orderDiscountCoupon default’s to ‘auto-apply' if the promotion doesn’t have a promotion coupon 

  • the item’s coupon key is only present if there is an active product coupon code (coupon / auto-apply) 

  • the item’s price is the item’s net discounted price 

  • the item’s isDynamic key is only present if the product is dynamic 

  • the item’s dynamicType key is only present if the product is dynamic 

  • the item’s recurrence key is only present if the product is dynamic 

  • the item’s hiddenAdditionalFields key is only present if the product has hidden additional fields 

  • the item’s option key is only present if the product has active options 

{ 
    'event': 'purchase', 
    'ecommerce': { 
        'coupon': 'promotion-code', 
        'currency': 'USD', 
        'value': '168.06', 
        'shipping': '0', 
        'tax': '31.94', 
        'transaction_id': '8c7be1b402d775f256289410d608e47135f4c431d8064005fcbbc8b65ffeaaa5', 
        'actionField': { 
            'affiliation': '', 
            'purchaseFlow': 'personal', 
            'returnUrl': '', 
            'returnType': '', 
            'subscription': '', 
            'orderDiscountCoupon': 'promotion-coupon' 
        }, 
        'items': [ 
            { 
                'item_name': 'Panda_Antivirus', 
                'item_id': 7628801, 
                'price': '84.03', 
                'quantity': 1, 
                'type': 'Electronic', 
                'coupon': 'coupon_code', 
                'options': 'USERS=users_one_test;PERIOD=period_one', 
                'hiddenAdditionalFields': [ 
                    { 
                        'product_hidden_text_name': 'hidden_text_value' 
                    } 
                ], 
                'group': 'General', 
                'tax': 20.5 
            }, 
            { 
                'item_name': 'Turbo_Panda_Antivirus', 
                'item_id': 7630067, 
                'price': '84.03', 
                'quantity': 1, 
                'type': 'Electronic', 
                'isDynamic': true, 
                'dynamicType': '', 
                'dynamicRecurrence': '', 
                'dynamicDuration': 'dynamicRenewalPrice' 
            } 
        ] 
    } 
} 

remove_from_cart 

DELETE_ITEM (delete-item) 

  • the coupon key is only present if there is an active product coupon code (coupon / auto-apply) 

  • the item’s price is the item’s net discounted price 

  • the item’s isDynamic key is only present if the product is dynamic 

  • the item’s dynamicType key is only present if the product is dynamic 

  • the item’s recurrence key is only present if the product is dynamic 

  • the item’s hiddenAdditionalFields key is only present if the product has hidden additional fields 

  • the item’s option key is only present if the product has active options 

  • the item’s coupon key is only present if there is a valid order promotion present 

  • the  orderDiscountCoupon default’s to ‘auto-apply' if the promotion doesn’t have a promotion

{ 
    'event': 'remove_from_cart', 
    'ecommerce': { 
        'currency': 'USD', 
        'value': '100', 
        'coupon': 'promotion-code', 
        'orderDiscountCoupon': 'promotion-coupon', 
        'items': [ 
            { 
                'item_name': 'Turbo_Panda_Antivirus', 
                'item_id': 7630067, 
                'price': '100', 
                'quantity': 1, 
                'type': 'Electronic', 
                'coupon': 'coupon_code', 
                'isDynamic': true, 
                'dynamicType': '', 
                'dynamicRecurrence': '', 
                'dynamicDuration': '', 
                'dynamicRenewalPrice': '', 
                'options': 'USERS=users_one_test;PERIOD=period_one', 
                'hiddenAdditionalFields': [ 
                    { 
                        'product_hidden_text_name': 'hidden_text_value' 
                    } 
                ] 
            } 
        ] 
    } 
} 

add_to_cart 

ADD_ITEM (add-item) 

  • the item’s coupon key is only present if there is an active product coupon code (coupon / auto-apply) 

  • the item’s price is the item’s net discounted price 

  • the item’s isDynamic key is only present if the product is dynamic 

  • the item’s dynamicType key is only present if the product is dynamic 

  • the item’s recurrence key is only present if the product is dynamic 

  • the item’s hiddenAdditionalFields key is only present if the product has hidden additional fields 

  • the item’s option key is only present if the product has active options 

{ 
    'event': 'add_to_cart', 
    'ecommerce': { 
        'currency': 'USD', 
        'value': '127.89', 
        'items': [ 
            { 
                'item_name': 'Antivirus 2018 - physical product', 
                'item_id': 7605582, 
                'price': '127.89', 
                'quantity': 1, 
                'type': 'Physical', 
                'coupon': 'coupon_code', 
                'isDynamic': true, 
                'dynamicType': '', 
                'dynamicRecurrence': '', 
                'dynamicDuration': '', 
                'dynamicRenewalPrice': '', 
                'options': 'USERS=users_one_test;PERIOD=period_one', 
                'hiddenAdditionalFields': [ 
                    { 
                        'product_hidden_text_name': 'hidden_text_value' 
                    } 
                ] 
            } 
        ] 
    } 
} 

add_to_cart 

 

LOAD_CROSS_SELL (load-cross-sell) 

  • the item’s price is the net discounted price 

  • the item's index key is the position of the product in the the cross-sell listing 

{ 
    'event': 'view_item_list', 
    'ecommerce': { 
        'currency': 'USD', 
        'item_list_id': 'cross-sell products', 
        'item_list_name': 'cross-sell products', 
        'items': [ 
            { 
                'item_name': 'Printer 2', 
                'item_id': 31002340, 
                'price': '20', 
                'discount': '0', 
                'type': 'Physical', 
                'group': null, 
                'tax': 0, 
                'format': 'cross_sell', 
                'index': 0 
            }, 
            { 
                'item_name': 'Demo 1', 
                'item_id': 31016005, 
                'price': '12.12', 
                'discount': '0', 
                'type': 'Electronic', 
                'group': null, 
                'tax': 0, 
                'format': 'cross_sell', 
                'index': 1 
            } 
        ] 
    } 
} 

Adobe's Dynamic Tag Manager

Event Triggered by Notes Example
checkout
  • LOAD_CART (load-cart)

  • SET_ECOMMERCE (set-ecommerce)

  • the actionField’s stepkey will always be 1 as the checkout page is the first action field

  • the actionField’s coupon key is only present if there is a valid order promotion present

  • the actionField’s orderDiscountCoupon key is only present if there is a valid order promotion present

  • the actionField’s orderDiscountCoupon default’s to ‘auto-apply' if the promotion doesn’t have a promotion coupon

  • the item’s price key is the item’s net discounted price

  • the product’s hiddenAdditionalFields key is only present if the product has hidden additional fields

  • the product’s option key is only present if the product has active options

  • the product’s externalRef key is only present if the product has an external reference

{
   "event":"checkout",
   "ecommerce":{
      "currencyCode":"USD",
      "checkout":{
         "actionField":{
            "step":1,
            "coupon": "promotion-code",
            "orderDiscountCoupon": "promotion-coupon"
         },
         "products":[
            {
               "name":"Panda_Antivirus",
               "id":7628801,
               "price":"200",
               "quantity":2,
               "type":"Electronic",
               "options":"USERS=users_one_test;PERIOD=period_one",
               "hiddenAdditionalFields":[
                  {
                     "product_hidden_text_name":"hidden_text_value"
                  }
               ],
               "externalRef": "",
               "group": "General",
               "tax": 20.5
            },
            {
               "name":"Turbo_Panda_Antivirus",
               "id":7630067,
               "price":"100",
               "quantity":1,
               "type":"Electronic",
               "group": "General",
               "tax": 20.5
            }
         ]
      }
   }
}


purchase

PLACE_ORDER (place-order:success)
  • the actionField’s id key is the order’s refNo hashed with sha256

  • the actionField’s revenue key is the order’s gross discounted price

  • the actionField’s purchaseFlow key references if purchase flow selected by the customer (personal/company)

  • the actionField’s affiliation key is only present if the order has an affiliate

  • the actionField’s coupon key is only present if there is an order level coupon (which ConvertPlus doesn’t support atm of this writing)

  • the actionField’s returnType & returnUrl are only present if the order has a returnType or returnUrl

  • the actionField’s subscription key is present only if the order has a subscription product and it represents the unique system-generated identifier of the subscription.

  • the actionField’s coupon key is only present if there is a valid order promotion present

  • the actionField’s orderDiscountCoupon key is only present if there is a valid order promotion present

  • the actionField’s orderDiscountCoupon default’s to ‘auto-apply' if the promotion doesn’t have a promotion coupon

  • the product’s coupon key is only present if there is an active product coupon code (coupon / auto-apply)

  • the product’s price is the item’s net discounted price

  • the product’s isDynamic key is only present if the product is dynamic

  • the product’s dynamicType key is only present if the product is dynamic

  • the product’s recurrence key is only present if the product is dynamic

  • the product’s hiddenAdditionalFields key is only present if the product has hidden additional fields

  • the product’s option key is only present if the product has active options

  • the product’s externalRef key is only present if the product has an external reference

{
   "event":"purchase",
   "ecommerce":{
      "purchase":{
         "currencyCode":"USD",
         "actionField":{
            "id":"11544394",
            "affiliation":"",
            "revenue":"168.06",
            "tax":"31.94",
            "shipping":"0",
            "purchaseFlow":"personal",
            "returnUrl":"",
            "returnType":"",
            "coupon":"",
            "subscription":"",
            "coupon": "promotion-code",
            "orderDiscountCoupon": "promotion-coupon"
         },
         "products":[
            {
               "name":"Panda_Antivirus",
               "id":7628801,
               "price":"84.03",
               "quantity":1,
               "type":"Electronic",
               "coupon":"coupon_code",
               "options":"USERS=users_one_test;PERIOD=period_one",
               "hiddenAdditionalFields":[
                  {
                     "product_hidden_text_name":"hidden_text_value"
                  }
               ],
               "externalRef": "",
               "group": "General",
               "tax": 20.5
            },
            {
               "name":"Turbo_Panda_Antivirus",
               "id":7630067,
               "price":"84.03",
               "quantity":1,
               "type":"Electronic",
               "isDynamic":true,
               "dynamicType":"",
               "dynamicRecurrence":"",
               "dynamicDuration":"dynamicRenewalPrice",
               "externalRef": "",
               "group": "General",
               "tax": 20.5
            }
         ]
      }
   }
}

removeFromCart

DELETE_ITEM (delete-item)
  • the product’s coupon key is only present if there is an active product coupon code (coupon / auto-apply)

  • the product’s price is the item’s net discounted price

  • the product’s isDynamic key is only present if the product is dynamic

  • the product’s dynamicType key is only present if the product is dynamic

  • the product’s recurrence key is only present if the product is dynamic

  • the product’s hiddenAdditionalFields key is only present if the product has hidden additional fields

  • the product’s option key is only present if the product has active options

  • the product’s externalRef key is only present if the product has an external reference

  • the remove’s coupon key is only present if there is a valid order promotion present

  • the remove’s orderDiscountCoupon key is only present if there is a valid order promotion present

  • the remove’s orderDiscountCoupon default’s to ‘auto-apply' if the promotion doesn’t have a promotion coupon

{
   "event":"removeFromCart",
   "ecommerce":{
      "currencyCode":"USD",
      "remove":{
         "coupon": "promotion-code",
         "orderDiscountCoupon": "promotion-coupon"
         "products":[
            {
               "name":"Turbo_Panda_Antivirus",
               "id":7630067,
               "price":"100",
               "quantity":1,
               "type":"Electronic",
               "coupon":"coupon_code",
               "isDynamic":true,
               "dynamicType":"",
               "dynamicRecurrence":"",
               "dynamicDuration":"",
               "dynamicRenewalPrice":"",
               "options":"USERS=users_one_test;PERIOD=period_one",
               "hiddenAdditionalFields":[
                  {
                     "product_hidden_text_name":"hidden_text_value"
                  }
               ],
               "externalRef": ""
            }
         ]
      }
   }
}

addToCart

ADD_ITEM (add-item)
  • the product’s coupon key is only present if there is an active product coupon code (coupon / auto-apply)

  • the product’s price is the item’s net discounted price

  • the product’s isDynamic key is only present if the product is dynamic

  • the product’s dynamicType key is only present if the product is dynamic

  • the product’s recurrence key is only present if the product is dynamic

  • the product’s hiddenAdditionalFields key is only present if the product has hidden additional fields

  • the product’s option key is only present if the product has active options

  • the product’s externalRef key is only present if the product has an external reference

{
   "event":"addToCart",
   "currencyCode":"USD",
   "ecommerce":{
      "add":{
         "products":[
            {
               "name":"Antivirus 2018 - physical product",
               "id":7605582,
               "price":"127.89",
               "quantity":1,
               "type":"Physical",
               "coupon":"coupon_code",
               "isDynamic":true,
               "dynamicType":"",
               "dynamicRecurrence":"",
               "dynamicDuration":"",
               "dynamicRenewalPrice":"",
               "options":"USERS=users_one_test;PERIOD=period_one",
               "hiddenAdditionalFields":[
                  {
                     "product_hidden_text_name":"hidden_text_value"
                  }
               ],
               "externalRef": ""
            }
         ]
      }
   }
}

Custom events (cartUpdated)

Some Web Metric solutions allow the use of custom events. Currently, these solutions are Adobe’s Dynamic Tag Manager and Google Tag Manager.

Custom events allow us to pass any values under any keys we see fit, as long as we provide an acceptable and consistent format.

The format of a custom event is as follows:

{
  "event": "cartUpdated",
  "CUSTOM_KEY_1": "custom_value_1",
  "CUSTOM_KEY_2": "custom_value_2",
  ...
}

The event key will always be populated with the cartUpdated value as this is the name of our custom event. Alongside the event key, you can find any number of custom keys, like their number, names, and values vary and depend on the action that the user performed in the cart.

The Convert Plus shopping cart implements an event buffer.

When a shopper performs an action in the cart, the cart triggers a lot of internal events that in turn trigger other events which may lead to the cart being overloaded when booting for changing its state.

To prevent the DataLayer from being spammed by unnecessary small updates, the event buffer was designed to do just that, buffer events. Catch all events in a designated time (1 s at the moment of this writing), keeping only their newest value, and release them in bigger chunks.

The custom keys used by the cartUpdated event are as follow:

Event Triggered by Values Notes Example

PAGE_NAME

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page)

  • PLACE_ORDER (place-order:success)

  • checkout

  • finish

  • retry

 
{
  "PAGE_NAME": "finish"
}

PAGE_THEME

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

  • 2CO-MARKETPLACE-default

  • BITWIG-one-column

  • COMODOJC-default

  • default

  • inline

  • inline-one-step

  • MOVAVI-inline

  • one-column

  • SITEL-inline

  • VisitTCI-inline

The loaded theme’s name.
{
  "PAGE_THEME": "default"
}

merchant_CODE

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

  The 2CheckOut code form GAP.
{
  "merchant_CODE": "RDGM"
}

ONESTEPCART

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

Boolean
  • is only triggered by these two cart events and the value is hard coded to true

  • true if the flow has no review page, false if the flow has a review page

  • currently review page is not available in ConvertPlus

{
  "ONESTEPCART": true
}

SHORT_FORM

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

Boolean
  • is only triggered by these two cart events and the value is hard coded to true

  • returns true if short form is applied and false if it is not applied

  • currently only short form in ConvertPlus

{
  "SHORT_FORM": true
}

PURCHASE_COMPLETE

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

  • PLACE_ORDER (place-order:success)

Boolean
  • when triggered from LOAD_CART or LOAD_PAGE is set to true if the page name is not finish

  • when triggered from PLACE_ORDER is hard coded to true

{
  "PURCHASE_COMPLETE": true
}

TEMPLATE_CREATION_DATE

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

  • Null
  • Date
  • returns the date when the merchant created the customized template and started using it

  • returns null if no customization took place

{
  "TEMPLATE_CREATION_DATE": "20-04-2020"
}

TEMPLATE_LAST_MODIFIED_DATE

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

  • Null
  • Date
  • the date when the customized template was last modified by the merchant

  • returns null if no customization took place

{
  "TEMPLATE_LAST_MODIFIED_DATE": "20-04-2020"
}

PAGE_STYLE_NAME

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

The name of the customized theme.
  • returns the name of the customized template from the merchant's Control Panel

  • returns null if no customization took place

{
  "PAGE_STYLE_NAME": "My Custom ConvertPlus default"
}

PROFESSIONAL_SERVICES

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

Boolean Determined by whether the template has been customized by professional services.
{
  "PROFESSIONAL_SERVICES": false
}

TEST_ORDER

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

Boolean Is true if the loaded cart is in test mode.
{
  "TEST_ORDER": false
}

PRODUCT_SOURCE

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

  • Catalog
  • Dynamic
Determined by the products in the cart.
{
  "PRODUCT_SOURCE": "Catalog"
}

CART_LOCK

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

Boolean Is set to true if the cart is locked.
{
  "CART_LOCK": false
}

DISCOUNT_COUPON

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

  • UPDATE_COUPON (apply-coupon)

Coupon code
  • is only present if one or more products have discounts applied

  • only takes into account product level coupons

{
  "DISCOUNT_COUPON": "50_OFF"
}

DISCOUNT_COUPON_STATUS

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

  • UPDATE_COUPON_STATUS (set-coupon-status)

  • Unavailable: when the order doesn’t allow promotions and items don’t have discounts applied

  • Available: when the order allows promotions and items don’t have discounts applied

  • Applied: when the order allows promotions and items have discounts applied

  • on LOAD_CART & LOAD_PAGE the status is computed based on the order.allowsPromotion & if items have discounts applied

  • When set via UPDATE_COUPON_STATUS the computed status is received as a string

{
  "DISCOUNT_COUPON_STATUS": "Appplied"
}

COMPANY_NAME

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changes: the new one is different form the previous one)

  • UPDATE_COMPANY_NAME (change:companyName)

Company name. The company name entered by the user while the company flow is selected.
{
  "COMPANY_NAME": "Acme corp inc."
}

ORDER_EXT_REF

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

String The external reference set by the merchant.
{
  "ORDER_EXT_REF": "MERCHANT_EXTERNAL_REFERENCE"
}

CUSTOMER_EXT_REF

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

String The external customer reference set by the merchant.
{
  "CUSTOMER_EXT_REF": "CUSTOMER_EXTERNAL_REFERENCE"
}

AUTO_RENEWAL

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

  • UPDATE_RENEWAL_STATUS (set-renewal-status)

  • Unavailable: if the recurring option is not enabled or unavailable and the order’s status is not enabled

  • Invisible Applied: if the recurring option is enabled (invisible applied) and the order’s status is enabled

  • Available: if the recurring option is enabled (opt-in or opt-out) and the order’s status is not enabled

  • Visible Applied: if the recurring option is enabled (opt-in or opt-out) and the order’s status is enabled

The status is computed based on the visibility of the recurring button (Recurring option in GAP account settings) & the actual recurring status of the order.
{
  "AUTO_RENEWAL": "Available"
}

PURCHASE_TYPE

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different fr0m the previous one)

  • Regular: if the cart doesn’t contain subscription products

  • Renewal: if the cart contains subscription products

  • determined by the products the cart was loaded with

  • the type of the purchase, regular for new acquisition or renewal

{
  "PURCHASE_TYPE": "Regular"
}

ADDITIONAL_HIDDEN_FIELDS

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

The value of the additional hidden field may be null if it has no value. Array of hidden additional fields.
{
  "ADDITIONAL_HIDDEN_FIELDS": [
    {
      "order_hidden_field_name": "hidden additional field value"      
    }
  ]
}

BILLING_COUNTRY

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

  • UPDATE_COUNTRY (change:country)

The country code.
  • the same value as VISITOR_COUNTRY

  • on LOAD_CART & LOAD_PAGE the order country is used

  • on UPDATE_COUNTRY the country code is sent directly from the cart’s context

  • the country code can be empty if no country is selected

{
  "BILLING_COUNTRY": "RO"
}

VISITOR_COUNTRY

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

  • UPDATE_COUNTRY (change:country)

The country code.
  • the same value as BILLING_COUNTRY

  • on LOAD_CART & LOAD_PAGE the order country is used

  • on UPDATE_COUNTRY the country code is sent directly from the cart’s context

  • the country code can be empty if no country is selected

{
  "VISITOR_COUNTRY": "RO"
}

BILLING_CURRENCY

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

  • UPDATE_CURRENCY (change:currency)

The currency code.
  • on LOAD_CART & LOAD_PAGE the order’s currency is used

  • on UPDATE_COUNTRY the currency code is sent directly from the cart’s context

{
  "BILLING_CURRENCY": "RON"
}

LANGUAGE

  • LOAD_CART (load-cart)

  • LOAD_PAGE (load-page) (only if the key’s value is changed: the new one is different from the previous one)

  • UPDATE_LANGUAGE (change:language)

  • PLACE_ORDER (place-order:success)

The language code.
  • on LOAD_CART, LOAD_PAGE & PLACE_ORDER the order’s language is used

  • on UPDATE_LANGUAGE the language code is sent directly from the cart’s context

{
  "LANGUAGE": "EN"
}

FORM_ERROR

SET_ERRORS (set-errors) Form field names separated by | The form field where an error occurred in the cart.
{
  "FORM_ERROR": "email|country|card|date|cvv|name"
}

PAYMENT_METHOD

UPDATE_PAYMENT_METHOD (change:paymentMethod) The payment method code.
  • comes in a pair with PAYMENT_METHOD_TYPE

  • the payment method selected in the shopping cart (cart type such as visa, Mastercard, or any other method).

{
  "PAYMENT_METHOD": "visa"
}

PAYMENT_METHOD_TYPE

UPDATE_PAYMENT_METHOD (change:paymentMethod)
  • offline: if it’s an offline payment method

  • online: if it’s an online payment method

  • whether the payment method is online or offline

  • determined by the paymentMethod.isOffline payload key

{
  "PAYMENT_METHOD_TYPE": "offline"
}

PAYMENT_CATEGORY

UPDATE_PAYMENT_METHOD (change:paymentMethod) Payment method label. The payment method label selected in the shopping cart (Credit card, wire, or any other method).
{
  "PAYMENT_CATEGORY": "wire"
}

QUANTITY_CHANGED

UPDATE_ITEM (update-item) Integer  
{
  "QUANTITY_CHANGED": 3
}

CART_STEP

UPDATE_CART_STEP (change:cartStep)
  • STEP_HOME

  • STEP_PRODUCT

  • STEP_BILLING

  • STEP_DELIVERY

  • STEP_PAYMENT

Only triggered for the InLine themes.
{
  "CART_STEP": "STEP_BILLING"
}

ADDITIONAL_FIELDS_COUNT

UPDATE_ADDITIONAL_FIELD_COUNT (additional-fields-count-changed) Integer The number of additional fields present in the cart.
{
  "ADDITIONAL_FIELDS_COUNT": 6
}

PURCHASE_FLOW

UPDATE_PURCHASE_FLOW (set-purchase-flow)
  • personal: when personal flow is selected

  • company: when the company flow is selected

Set by the customer when selecting the purchase flow.
{
  "PURCHASE_FLOW": "personal"
}

SOURCE

UPDATE_ADDITIONAL_FIELD_COUNT (additional-fields-count-changed) The source value. Merchant defined source.
{
  "SOURCE": "order source value"
}

time

SET_ECOMMERCE (set-ecommerce) Timestamp Sets the current time as a timestamp after a SET_ECOMMERCE event.
{
  "time": 1589806793608
}

CREDIT_CARD_INSTALLMENTS

UPDATE_HAS_INSTALLMENTS (set-has-cc-installments)
  • Yes
  • No
 
{
  "CREDIT_CARD_INSTALLMENTS": "No"
}

 

Rate this article:

Need help?

Do you have a question? If you didn’t find the answer you are looking for in our documentation, you can contact our Support teams for more information. If you have a technical issue or question, please contact us. We are happy to help.

Not yet a Verifone customer?

We’ll help you choose the right payment solution for your business, wherever you want to sell, in-person or online. Our team of experts will happily discuss your needs.

Verifone logo