ConvertPlus events
Overview
This page lists all the events supported by the ConvertPlus shopping cart, their triggers, payloads, eCommerce events, or custom events they trigger, and the effects they produce for each supported web metrics/tracking solution.
Currently, we support the following Web Metrics solutions:
- DTM - Dynamic Tag Manager (from Adobe, used for internal tracking)
- UA - Google Universal Analytics
- GA4 - Google Analytics 4 (recommended)
- GTM - Google Tag Manager (with and without GA and/or GA4)
- The custom cartUpdated event is only supported by DTM & GTM.
- The payload section represents the data required by the shopping.cart.tracker application from the data-set sent from the ConvertPlus shopping cart.
Availability
Available to all 2Checkout accounts.
Supported ConvertPlus Events
LOAD_CART (load-cart)
Triggered by:
- page refresh (while on checkout page)
- loading the cart
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- Google Universal Analytics begin_checkout event
- Google Tag Manager checkout event
- Dynamic Tag Manager checkout event
- Google Analytics 4 begin_checkout event
- Google Tag Manager (GA4) begin_checkout event
- cartUpdated DISCOUNT_COUPON
- cartUpdated COMPANY_NAME
- cartUpdated ORDER_EXT_REF
- cartUpdated CUSTOMER_EXT_REF
- cartUpdated TEMPLATE_LAST_MODIFIED_DATE
- cartUpdated TEMPLATE_CREATION_DATE
- cartUpdated PROFESSIONAL_SERVICES
- cartUpdated PAGE_STYLE_NAME
- cartUpdated ADDITIONAL_HIDDEN_FIELDS
- cartUpdated PAGE_NAME
- cartUpdated PAGE_THEME
- cartUpdated VENDOR_CODE
- cartUpdated ONE_STEP_CART
- cartUpdated SHORT_FORM
- cartUpdated PURCHASE_COMPLETE
- cartUpdated TEST_ORDER
- cartUpdated PRODUCT_SOURCE
- cartUpdated CART_LOCK
- cartUpdated DISCOUNT_COUPON_STATUS
- cartUpdated AUTO_RENEWAL
- cartUpdated PURCHASE_TYPE
- cartUpdated LANGUAGE
- cartUpdated BILLING_COUNTRY
- cartUpdated VISITOR_COUNTRY
- cartUpdated BILLING_CURRENCY
Example
{
"page":{
"name":"checkout"
},
"customization":{
"templateCreationDate":null,
"templateLastModifiedDate":null,
"pageStyleName":null,
"professionalServices":"no"
},
"theme":"default",
"isRecurring":false,
"recurringIsEnabled":false,
"order":{
"cartId":"5ef483ce33df67.19210359",
"refNo":null,
"date":null,
"language":"EN",
"country":"",
"currency":"CAD",
"hasPromotions":false,
"hasFulfillment":false,
"hasDynamicProducts":false,
"hasPhysicalProducts":false,
"isFulfillmentFinalized":null,
"errors":{
"ORDER_BILLING_DETAILS_COUNTRY_EMPTY":"The Country cannot be empty"
},
"completed":false,
"shipping":0,
"shippingVAT":0,
"externalRef":null,
"externalCustomerRef":null,
"orderAdditionalFields":[
],
"items":[
{
"code":"P_AV",
"quantity":4,
"optionsCodes":[
],
"subscription":null,
"isLocked":false,
"recurrence":[
],
"externalRef":"",
"product":{
"id":7628801,
"code":"P_AV",
"type":"REGULAR",
"isDynamic":false,
"isTangible":false,
"name":"Panda_Antivirus",
"version":"1.1.1",
"minAllowedQuantity":1,
"maxAllowedQuantity":99999,
"maxSupportedQuantity":99999,
"image":null,
"hasPromotions":true,
"hasAutoRenewal":false,
"hasOptions":false,
"hasFulfillment":false,
"options":[
],
"price":{
"net":513.65,
"gross":513.65,
"vat":0,
"VATPercent":0,
"discount":0,
"netDiscounted":513.65,
"grossDiscounted":513.65,
"affiliateCommission":0,
"unitNet":128.41,
"unitGross":128.41,
"unitVAT":0,
"unitDiscount":0,
"unitNetDiscounted":128.41,
"unitGrossDiscounted":128.41,
"unitAffiliateCommission":0,
"currency":"CAD",
"handlingFeeGross":0,
"handlingFeeNet":0,
"guid":"55a771f1-e60d-b496-d88c-a818929f1743"
},
"additionalFields":[
{
"code":"product_checkbox_identifier",
"name":"product_checkbox_text",
"enabled":true,
"required":false,
"type":"CHECKBOX",
"validationRule":"",
"urlParameter":"ADDITIONAL_product_checkbox_identifier[7628801]",
"value":false,
"guid":"1b5ae6b9-ce5c-6edd-0f89-f3f9dfd2569a"
},
{
"code":"product_textbox_identifier",
"name":"product_textbox_text",
"enabled":true,
"required":false,
"type":"TEXT",
"validationRule":"/^.*$/",
"urlParameter":"ADDITIONAL_product_textbox_identifier[7628801]",
"value":null,
"guid":"9d220f1f-67b3-220f-1c75-3484d6f929f8"
},
{
"code":"product_listbox_identifier",
"name":"product_listbox_text",
"enabled":true,
"required":false,
"type":"LISTBOX",
"validationRule":"",
"urlParameter":"ADDITIONAL_product_listbox_identifier[7628801]",
"value":"",
"values":[
"first_value",
"some_other_value",
"not_the_first_values"
],
"guid":"27204065-b8b6-8168-5b60-0d9c77140d86"
},
{
"code":"product_hidden_identifier",
"name":"product_hidden_text",
"enabled":true,
"required":false,
"type":"HIDDEN",
"validationRule":"",
"urlParameter":"ADDITIONAL_product_hidden_identifier[7628801]",
"value":null,
"guid":"9123ef21-2679-34cf-07a4-f479cf26832d"
}
],
"description":{
"code":"P_AV-description",
"short":"",
"long":"",
"systemRequirements":"",
"guid":"49744364-45b3-8eab-5b07-a324697bc901"
},
"returnMethod":{
"type":"redirect",
"url":null,
"guid":"e7d21c08-af22-10be-4a2a-1f3f56d35686"
},
"productGroup": {
"code": "RANDOMCODE",
"description": "Default products group",
"name": "General"
},
"links":[
"options",
"price",
"additionalFields",
"description",
"returnMethod",
"productGroup"
],
"guid":"65999b0f-f4b1-86f9-e698-b99ac4da0d47"
},
"fulfillment":{
"downloadFile":null,
"deliveryDescription":"",
"codesDescription":"",
"codes":[
],
"guid":"b1367015-2498-6f82-aebe-7aab7164f50e"
},
"links":[
"product",
"fulfillment"
],
"guid":"37308c62-2bb9-3648-41ff-119caecf0deb"
}
],
"billing":{
"name":"",
"email":null,
"country":"",
"address":null,
"city":null,
"zip":null,
"state":"",
"company":null,
"fiscalCode":null,
"taxOffice":"",
"phone":null,
"sameDelivery":true,
"guid":"6054f537-619b-079b-268e-dd2ca326a1fc"
},
"delivery":{
"method":null,
"name":"",
"email":null,
"country":"",
"address":null,
"city":null,
"zip":null,
"state":"",
"phone":null,
"guid":"3eb0e516-fe52-2e8f-2ac3-9ef93ae73c6a"
},
"price":{
"currency":"CAD",
"net":513.65,
"gross":513.65,
"netDiscounted":513.65,
"grossDiscounted":513.65,
"taxValue":0,
"taxLabel":"TAX/VAT",
"taxPercentage":0,
"guid":"234d7a00-315b-8444-afc7-cb46b9ac302a"
},
"payment":{
"method":"CC",
"type":"visa",
"businessCompany":"AVANGATEBV",
"retryPaymentMethods":null,
"details":{
"cc":{
"lastDigits":null,
"redirectUrl":null
},
"paypal":{
"hasToken":false,
"hadToken":null,
"redirectUrl":null
}
},
"guid":"05cc2ef0-1819-825f-472f-639cccfb2227",
"cc":{
"lastDigits":null,
"redirectUrl":null
},
"paypal":{
"hasToken":false,
"hadToken":null,
"redirectUrl":null
},
"wire":{
},
"ideal":{
},
"boleto":{
}
},
"links":[
"items",
"billing",
"delivery",
"price",
"payment"
],
"guid":"81021f65-17b5-5277-387c-6f730cc59bd8",
"allowsPromotion":true,
"allowsAutoRenewal":false,
"isPlaced":false,
"isCompleted":false,
"failReason":null,
"hasOrderPromotion": false,
"promotion": {
"Code": "PROMO-CODE",
"Name": "promo name",
"Description": "promo description",
"Coupon": "PROMO-COUPON",
"DiscountLabel": "12%",
"Enabled": true,
"Type": "GLOBAL",
"Translations": [],
"Products": [
"PV_AV"
]
}
},
"merchant":{
"code":"QWE",
"name":"QWE",
"homepage":"https://kakulatoare.ro",
"logo":"",
"recurringEnabled":true,
"recurringValue":false,
"tracking":"simple",
"isGDPR":true,
"hotlineNumbers":[
{
"code":"INTERNATIONAL",
"name":"International",
"phones":{
"Israel":[
"+972 02 372 4346"
],
"USA/Canada":[
"+1 (650) 963-5701"
],
"International":[
"+31 88 0000008"
]
},
"guid":"6f2d2129-1d79-1bf5-75b3-ac07390971df"
}
],
"returnMethod":{
"type":"redirect",
"url":null,
"guid":"07672d6e-bf45-92cd-c9ee-42c6ca4114d5"
},
"trackingCodes":[
{
"code":"UA-144834505-1",
"type":"GA",
"guid":"7785dfbf-d5a8-9900-34db-58bad58c8895"
},
{
"code":"UA-144834505-1",
"type":"GA",
"guid":"89bf2f71-d4ea-a411-6706-dc936f15ce96"
}
],
"links":[
"hotlineNumbers",
"returnMethod",
"trackingCodes"
],
"guid":"5a0d2c3b-b1db-fa11-6e15-7d6fb2548f8a"
},
"orderAdditionalHiddenFields":[
{
"code":"order_hidden_identifier",
"name":"order_hidden_text",
"enabled":true,
"required":false,
"type":"HIDDEN",
"validationRule":"",
"urlParameter":null,
"value":null,
"guid":"2beb2978-99e8-ce91-699e-e5ac2893260a"
}
],
"cartLock":null
}
LOAD_PAGE (load-page)
Triggered by:
- page refresh (while not on checkout page)
- redirect
Triggers
For more details on all the triggers below, check out the eCommerce events page.
Google Universal Analytics and Google Analytics 4 non-interaction event (if the loaded page is the retry page).
- cartUpdated DISCOUNT_COUPON
- cartUpdated COMPANY_NAME
- cartUpdated ORDER_EXT_REF
- cartUpdated CUSTOMER_EXT_REF
- cartUpdated TEMPLATE_LAST_MODIFIED_DATE
- cartUpdated TEMPLATE_CREATION_DATE
- cartUpdated PROFESSIONAL_SERVICES
- cartUpdated PAGE_STYLE_NAME
- cartUpdated ADDITIONAL_HIDDEN_FIELDS
- cartUpdated PAGE_NAME
- cartUpdated PAGE_THEME
- cartUpdated VENDOR_CODE
- cartUpdated ONE_STEP_CART
- cartUpdated SHORT_FORM
- cartUpdated PURCHASE_COMPLETE
- cartUpdated TEST_ORDER
- cartUpdated PRODUCT_SOURCE
- cartUpdated CART_LOCK
- cartUpdated DISCOUNT_COUPON_STATUS
- cartUpdated AUTO_RENEWAL
- cartUpdated PURCHASE_TYPE
- cartUpdated LANGUAGE
- cartUpdated BILLING_COUNTRY
- cartUpdated VISITOR_COUNTRY
- cartUpdated BILLING_CURRENCY
Example
{
"page":{
"name":""
},
"order":{
"currency":"",
"language":"",
"items":[
{
"product":{
"id":"",
"name":"",
"type":"",
"price":{
"netDiscounted":""
},
"isTangible":true,
"isDynamic":false
},
"promotion":{
"coupon":""
},
"recurrence":{
"CycleUnit":1,
"CycleLength":5,
"CycleAmount":10
},
"quantity":"",
"externalRef": ""
}
],
"billing":{
"company":"company_name"
},
"externalRef":"",
"externalCustomerRef":"",
"refNo":"",
"hasOrderPromotion": false,
"promotion": {
"Code": "PROMO-CODE",
"Name": "promo name",
"Description": "promo description",
"Coupon": "PROMO-COUPON",
"DiscountLabel": "12%",
"Enabled": true,
"Type": "GLOBAL",
"Translations": [],
"Products": [
"PV_AV"
]
}
},
"merchant":"merchant_code",
"theme":"default",
"cartLock":true,
"customization":{
"templateLastModifiedDate":"",
"templateCreationDate":"",
"professionalServices":"",
"pageStyleName":""
},
"orderAdditionalHiddenFields":[
{
"type":"",
"enabled":"",
"name":"",
"value":""
}
]
}
PLACE_ORDER (place-order:success)
Triggered by:
- placing a successful order
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- Google Universal Analytics purchase event
- Google Tag Manager purchase event
- Dynamic Tag Manager purchase event
- Google Analytics 4 purchase event
- Google Tag Manager (GA4) purchase event
- cartUpdated PAGE_NAME
- cartUpdated PURCHASE_COMPLETE
- cartUpdated LANGUAGE
Example
{
"order":{
"refNo":"",
"shipping":"",
"purchaseFlow":"",
"language":"",
"returnMethod":{
"url":"",
"type":""
},
"coupon":{
"code":""
},
"price":{
"netDiscounted":"",
"taxValue": "",
"currency": ""
},
"items":[
{
"product":{
"id":"",
"name":"",
"type":"",
"price":{
"netDiscounted":""
},
"isTangible":true,
"isDynamic":false
},
"promotion":{
"coupon":""
},
"recurrence":{
"CycleUnit":1,
"CycleLength":5,
"CycleAmount":10
},
"quantity": 1,
"externalRef": ""
}
],
"hasOrderPromotion": false,
"promotion": {
"Code": "PROMO-CODE",
"Name": "promo name",
"Description": "promo description",
"Coupon": "PROMO-COUPON",
"DiscountLabel": "12%",
"Enabled": true,
"Type": "GLOBAL",
"Translations": [],
"Products": [
"PV_AV"
]
}
}
}
SET_ECOMMERCE (set-ecommerce)
Triggered by:
- changing currency
- changing the cart’s total amount
- changing product options
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- Google Tag Manager checkout event
- Dynamic Tag Manager checkout event
- Google Tag Manager (GA4) begin_checkout event
- cartUpdated time
Example
{
"cartId":"5ef483ce33df67.19210359",
"refNo":null,
"date":null,
"language":"EN",
"country":"",
"currency":"CAD",
"hasPromotions":false,
"hasFulfillment":false,
"hasDynamicProducts":false,
"hasPhysicalProducts":false,
"isFulfillmentFinalized":null,
"errors":{
"ERROR_CODE":"ERROR_MESSAGE"
},
"completed":false,
"shipping":0,
"shippingVAT":0,
"externalRef":null,
"externalCustomerRef":null,
"orderAdditionalFields":[
],
"items":[
{
"code":"P_AV",
"quantity":4,
"optionsCodes":[
],
"subscription":null,
"isLocked":false,
"recurrence":[
],
"externalRef":"",
"product":{
"id":7628801,
"code":"P_AV",
"type":"REGULAR",
"isDynamic":false,
"isTangible":false,
"name":"Panda_Antivirus",
"version":"1.1.1",
"minAllowedQuantity":1,
"maxAllowedQuantity":99999,
"maxSupportedQuantity":99999,
"image":null,
"hasPromotions":true,
"hasAutoRenewal":false,
"hasOptions":false,
"hasFulfillment":false,
"options":[
],
"price":{
"net":513.65,
"gross":513.65,
"vat":0,
"VATPercent":0,
"discount":0,
"netDiscounted":513.65,
"grossDiscounted":513.65,
"affiliateCommission":0,
"unitNet":128.41,
"unitGross":128.41,
"unitVAT":0,
"unitDiscount":0,
"unitNetDiscounted":128.41,
"unitGrossDiscounted":128.41,
"unitAffiliateCommission":0,
"currency":"CAD",
"handlingFeeGross":0,
"handlingFeeNet":0,
"guid":"da22c2a0-900f-f71b-e2ad-20af47d011f7"
},
"additionalFields":[
{
"code":"product_checkbox_identifier",
"name":"product_checkbox_text",
"enabled":true,
"required":false,
"type":"CHECKBOX",
"validationRule":"",
"urlParameter":"ADDITIONAL_product_checkbox_identifier[7628801]",
"value":false,
"guid":"07d2bfb2-919d-a798-c5a8-21e23cc4365f"
}
],
"description":{
"code":"P_AV-description",
"short":"",
"long":"",
"systemRequirements":"",
"guid":"03ea7943-3666-096e-f864-1881dab24f91"
},
"returnMethod":{
"type":"redirect",
"url":null,
"guid":"09da5429-2227-7c60-0cd9-feb92015100b"
},
"productGroup": {
"code": "RANDOMCODE",
"description": "Default products group",
"name": "General"
},
"links":[
"options",
"price",
"additionalFields",
"description",
"returnMethod",
"productGroup"
],
"guid":"d3e31215-323c-8e09-8e03-9610d77ed72a"
},
"fulfillment":{
"downloadFile":null,
"deliveryDescription":"",
"codesDescription":"",
"codes":[
],
"guid":"bcca5c6c-9992-92a3-3f97-30ccdbe0e7c9"
},
"links":[
"product",
"fulfillment"
],
"guid":"ee820b8a-a8ff-5ad0-a6a4-b1b715e862c6"
}
],
"billing":{
"name":"",
"email":null,
"country":"",
"address":null,
"city":null,
"zip":null,
"state":"",
"company":null,
"fiscalCode":null,
"taxOffice":"",
"phone":null,
"sameDelivery":true,
"guid":"c92ad3bc-a899-6e02-068a-74940422f69b"
},
"delivery":{
"method":null,
"name":"",
"email":null,
"country":"",
"address":null,
"city":null,
"zip":null,
"state":"",
"phone":null,
"guid":"4f3e22ba-1249-8af5-a3f6-ee556d164575"
},
"price":{
"currency":"CAD",
"net":513.65,
"gross":513.65,
"netDiscounted":513.65,
"grossDiscounted":513.65,
"taxValue":0,
"taxLabel":"TAX/VAT",
"taxPercentage":0,
"guid":"e44835a4-bf4e-4f48-8c42-54f26b027401"
},
"payment":{
"method":"CC",
"type":"visa",
"businessCompany":"AVANGATEBV",
"retryPaymentMethods":null,
"details":{
"cc":{
"lastDigits":null,
"redirectUrl":null
},
"paypal":{
"hasToken":false,
"hadToken":null,
"redirectUrl":null
}
},
"guid":"a9ba52cf-90c5-0431-c411-e14cee2d20b8",
"cc":{
"lastDigits":null,
"redirectUrl":null
},
"paypal":{
"hasToken":false,
"hadToken":null,
"redirectUrl":null
},
"wire":{
},
"ideal":{
},
"boleto":{
}
},
"links":[
"items",
"billing",
"delivery",
"price",
"payment"
],
"guid":"8f5cc3ab-982a-091d-0ee6-570bf1c303a2",
"allowsPromotion":true,
"allowsAutoRenewal":false,
"isPlaced":false,
"isCompleted":false,
"failReason":null,
"hasOrderPromotion": false,
"promotion": {
"Code": "PROMO-CODE",
"Name": "promo name",
"Description": "promo description",
"Coupon": "PROMO-COUPON",
"DiscountLabel": "12%",
"Enabled": true,
"Type": "GLOBAL",
"Translations": [],
"Products": [
"PV_AV"
]
}
}
SET_ERRORS (set-errors)
Triggered by:
- any validation error
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated FORM_ERROR
Example
[
"field_name_1",
"field_name_2",
"field_name_3"
]
UPDATE_COUNTRY (change:country)
Triggered by:
- changing the country
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated BILLING_COUNTRY
- cartUpdated VISITOR_COUNTRY
Example
{
"code": "RO"
}
UPDATE_CURRENCY (change:currency)
Triggered by:
- changing the currency
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated BILLING_CURRENCY
Example
{
"code": "RON"
}
UPDATE_LANGUAGE (change:language)
Triggered by:
- changing the language
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated LANGUAGE
Example
{
"code": "RO"
}
UPDATE_COMPANY_NAME (change:companyName)
Triggered by:
- changing the company name while on the company flow
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated COMPANY_NAME
Example
"company name"
UPDATE_COUPON (apply-coupon)
Triggered by:
- adding a coupon
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated DISCOUNT_COUPON
Example
"coupon_code"
UPDATE_COUPON_STATUS (set-coupon-status)
Triggered by:
- loading the cart
- adding a coupon
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated DISCOUNT_COUPON_STATUS
Example
{
"status": "Available"
}
UPDATE_PAYMENT_METHOD (change:paymentMethod)
Triggered by:
- changing the payment method
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated PAYMENT_METHOD
- cartUpdated PAYMENT_METHOD_TYPE
Example
{
"paymentType": {
"code": "wire"
}
"paymentMethod": {
"isOffline": true
}
}
UPDATE_PAYMENT_CATEGORY (change:paymentMethod)
Triggered by:
- changing the payment method
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated PAYMENT_METHOD
Example
Wire
UPDATE_RENEWAL_STATUS (set-renewal-status)
Triggered by:
- loading the cart
- enabling auto-renewal
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated AUTO_RENEWAL
Example
{
"state" : true,
"enabled": true
}
UPDATE_CART_STEP (change:cartStep)
Triggered by:
- changing sections in the inline cart
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated CART_STEP
Example
"STEP_BILLING"
UPDATE_ADDITIONAL_FIELD_COUNT (additional-fields-count-changed)
Triggered by:
- loading the cart
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated ADDITIONAL_FIELDS_COUNT
Example
8
UPDATE_SOURCE (source-loaded)
Triggered by:
- loading the cart
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated SOURCE
Example
"source value"
UPDATE_PURCHASE_FLOW (set-purchase-flow)
Triggered by:
- changing the purchase flow
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated PURCHASE_FLOW
Example
"company"
ADD_ITEM (add-item)
Triggered by:
- changing product options
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- custom custom cartUpdated event
- Google Tag Manager addToCart event
- Google Analytics 4 add_to_cart event
- Google Tag Manager (GA4) add_to_cart event
Example
{
"product":{
"id":123,
"name":"",
"isTangible":true,
"isDynamic":true,
"type":"",
"price":{
"netDiscounted": 100,
"currency":"EUR"
}
},
"recurrence":{
"CycleUnit":1,
"CycleLength":2,
"CycleAmount":3
},
"promotion":{
"coupon":"coupon_code"
},
"quantity":1,
"externalRef": ""
}
UPDATE_ITEM (update-item)
Triggered by:
- changing product quantity
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated QUANTITY_CHANGED
Example
{
"quantity": 1
}
DELETE_ITEM (delete-item)
Triggered by:
- remove item from cart
Notes:
- the payload consists of two main keys, the currencyCode, and the entirety of the item object
- the hasOrderPromotion & orderPromotion keys are only present if there is a valid order promotion present
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- Google Universal Analytics remove_from_cart event
- Google Tag manager removeFromCart event
- Dynamic Tag manager removeFromCart event
- Google Analytics 4 remove_from_cart event
- Google Tag Manager (GA4) remove_from_cart event
Example
{
"currencyCode" : "USD",
"hasOrderPromotion": false,
"orderPromotion" : {
"Code" : "PROMO-CODE",
"Name" : "promo name",
"Description" : "promo description",
"Coupon" : "PROMO-COUPON",
"DiscountLabel": "12%",
"Enabled" : true,
"Type" : "GLOBAL",
"Translations" : [],
"Products" : [
"PV_AV"
]
},
"item" : {
"code" : "P_AV",
"quantity" : 1,
"optionsCodes": [],
"subscription": null,
"isLocked" : false,
"recurrence" : [],
"externalRef" : "",
"product" : {
"id" : 7628801,
"code" : "P_AV",
"type" : "REGULAR",
"isDynamic" : false,
"isTangible" : false,
"name" : "Panda_Antivirus",
"version" : "1.1.1",
"minAllowedQuantity" : 1,
"maxAllowedQuantity" : 99999,
"maxSupportedQuantity": 99999,
"image" : null,
"hasPromotions" : true,
"hasAutoRenewal" : false,
"hasOptions" : false,
"hasFulfillment" : false,
"options" : [],
"price" : {
"net" : 100,
"gross" : 100,
"vat" : 0,
"VATPercent" : 0,
"discount" : 0,
"netDiscounted" : 100,
"grossDiscounted" : 100,
"affiliateCommission" : 0,
"unitNet" : 100,
"unitGross" : 100,
"unitVAT" : 0,
"unitDiscount" : 0,
"unitNetDiscounted" : 100,
"unitGrossDiscounted" : 100,
"unitAffiliateCommission": 0,
"currency" : "USD",
"handlingFeeGross" : 0,
"handlingFeeNet" : 0,
"guid" : "71b503f4-e0fd-48ff-6ff7-3f7a27801991"
},
"additionalFields" : [
{
"code" : "product_checkbox_identifier",
"name" : "product_checkbox_text",
"enabled" : true,
"required" : false,
"type" : "CHECKBOX",
"validationRule": "",
"urlParameter" : "ADDITIONAL_product_checkbox_identifier[7628801]",
"value" : false,
"guid" : "37dc7383-dc03-9049-52cf-9792cb0e0093"
},
{
"code" : "product_textbox_identifier",
"name" : "product_textbox_text",
"enabled" : true,
"required" : false,
"type" : "TEXT",
"validationRule": "/^.*$/",
"urlParameter" : "ADDITIONAL_product_textbox_identifier[7628801]",
"value" : null,
"guid" : "eedaede2-6e65-f78a-d918-3945960d5f7e"
},
{
"code" : "product_listbox_identifier",
"name" : "product_listbox_text",
"enabled" : true,
"required" : false,
"type" : "LISTBOX",
"validationRule": "",
"urlParameter" : "ADDITIONAL_product_listbox_identifier[7628801]",
"value" : "",
"values" : [
"first_value",
"some_other_value",
"not_the_first_values"
],
"guid" : "7e84db3e-52dc-fe2b-837f-2e2e537dbefc"
},
{
"code" : "product_hidden_identifier",
"name" : "product_hidden_text",
"enabled" : true,
"required" : false,
"type" : "HIDDEN",
"validationRule": "",
"urlParameter" : "ADDITIONAL_product_hidden_identifier[7628801]",
"value" : null,
"guid" : "f6d1f347-1eac-58aa-a0d2-74540c99d768"
}
],
"description" : {
"code" : "P_AV-description",
"short" : "",
"long" : "",
"systemRequirements": "",
"guid" : "86579d72-2ce1-a1d1-e981-5d978d059940"
},
"returnMethod" : {
"type": "redirect",
"url" : null,
"guid": "1d8a1ab9-31c2-8eaa-5657-cfa540bc0484"
},
"productGroup" : {
"code" : "RANDOMCODE",
"description": "Default products group",
"name" : "General"
},
"links" : [
"options",
"price",
"additionalFields",
"description",
"returnMethod",
"productGroup"
],
"guid" : "83400c11-9cab-c454-ed4e-5038717b3d49"
},
"fulfillment" : {
"downloadFile" : null,
"deliveryDescription": "",
"codesDescription" : "",
"codes" : [],
"guid" : "b08e4024-954f-9fc2-9999-4c9eb5ad6265"
},
"links" : [
"product",
"fulfillment"
],
"guid" : "60151ce2-14ee-4515-c58a-a9405053887a"
}
}
LOAD_CROSS_SELL (load-cross-sell)
Triggered by:
-
loading the cross-sell carousel on page
Triggers
- Google Tag Manager productImpression event
- Dynamic Tag Manager productImpression event
- Google Analytics 4 view_item_list event
- Google Tag Manager (GA4) view_item_list event
UPDATE_HAS_INSTALLMENTS (set-has-cc-installments)
Triggered by:
- page refresh (while on checkout page & a country that supports installments is selected)
- loading the cart (while a country that supports installments is selected)
- changing the installment options
- changing payment methods
- changing country
Triggers
For more details on all the triggers below, check out the eCommerce events page.
- cartUpdated CREDIT_CARD_INSTALLMENTS
Example
"false"
Order statistics
The Order statistics report aggregates data for new purchases, renewals and upgrades, based on the order placing date. The aggregated data includes new purchases, renewals and upgrades. Refunded orders are counted as new purchases.
Transactions completed in other currencies than the ones supported are converted to the default currency set per product.
You can configure the report to show either the total or the average number of finished orders in the selected time interval.
API Responses
Overview
This section contains the objects returned as API responses, based on your requests to retrieve information on orders, products, subscriptions, promotions, and others.
Integrate 3dcart
Availability
3dcart integration is available only for 2Checkout accounts that handle their own tax and invoice management (2Sell and 2Subscribe accounts).
3dcart Settings:
Perform the below set of instructions in your 3dcart account to integrate it with 2Checkout.
- Sign in to your 3dcart admin
- Click Payment Methods
- Check Active
- Enter your Store ID (2Checkout Account Number)
- Click Save
2Checkout Settings:
Follow the below instructions in your 2Checkout Control Panel to finalize the 3dcart integration process.
- Sign in to your 2Checkout account.
- Navigate to Dashboard → Integrations → Webhooks & API section
- Follow these steps to activate Redirect URL:
- In the Redirect URL section check “Enable return after sale”
- For Return method, select Link in the Thank You Page or Direct return
- Set the Approved URL to https://yourdomain.3dcartstores.com/...ive.asp?gw=2co (where yourdomain is your domain name)
4. Click Update to save your settings.
About 3dcart
Fast, reliable, and most of all EASY TO USE, 3dcart will get your business online in just a few minutes! We provide the software, the hardware, and the support!
For more information, visit: 3dcart.com
API Reference
This is a summary of the objects/classes and methods available.
2Pay.js - Payments Solution
Overview
The 2Pay.js Javascript library is a quick and secure way to collect sensitive credit card payments, using customizable UI components that give merchants full control over the checkout experience. It allows merchants to create seamless payment flows while keeping the need for PCI compliance to a minimum SAQ A level. This means that shoppers pass sensitive payment information directly to the 2Checkout platform without sharing their credit card details with the merchant.
Availability
The 2Pay.js payments solution is available for all 2Checkout merchants who already use or want to use the 2Checkout API integration, no matter what business model they have.
Requirements
To benefit from the 2Pay.js solution, merchants need to be integrated with the 2Checkout API and use the latest version - API 6.0.
Merchants with <20,000 transactions/year are recommended to have an SAQ-A filled in, but merchants >20,000 transactions are required to do so.
Benefits
The 2Pay.js solution brings multiple benefits for both merchants and shoppers:
- Improved payment processing with a more secure and compliant system
- Full-cart ownership for merchants as they don't need to handle customer data, by tokenizing the payment information for them
- Reduced complexity for the PCI DSS validation process via an SAQ-A self-questionnaire
- Improved security for shoppers, who will pass sensitive payment data directly to the 2Checkout platform, thus bypassing the merchant's systems.
Activation
2Pay.js can be implemented by merchants via a JavaScript library that allows them to include the payment fields at checkout without the need to handle shoppers' credit card data in any way, as shown by the steps below:
- Merchants include a few lines of code in the interface where they need to collect payment information.
- Merchants will run a JS library that will replace the input fields with iframes
- The iframes will collect and send shoppers' card data directly to the 2Checkout platform
How it works
Triggering an order with 2Pay.js will work like any other order placed via API: the JavaScript library will pass the credit card data to the 2Checkout system and it will return a payment token. The API order is placed using the payment token.
- The merchant runs a JavaScript library that will change the billing form by replacing the input fields with iframes. This way the data is sent directly to the 2Checkout system.
- In return, the merchant receives a token for the saved credit card information from the 2Checkout platform. The token is valid for 10 minutes.
- The merchant submits the billing information and the payment token via the 2Checkout API.
- The 2Checkout platform matches the token with the card data, extracts the card data and authorizes the payment, and stores the card in the vault.
- The merchant then redirects the customer to the Order Confirmation page.
- Once the order is approved, the merchant receives a notification from the 2Checkout platform.
- Finally, the 2Checkout system sends a notification once the payment is settled.
Use cases
See here some use cases for the 2Pay.js implementation.
FAQ
1. What payment methods are available for use with the 2Pay.js library?
All API version 6 accepted credit cards can be used with the 2Pay.js library.
2. What integrations does 2Pay.js support?
2Pay.js was developed for integration within web sites so that it allows full seamless integration with the merchants' checkout flow.
3. Does 2Pay.js support 3D Secure version 2?
While 2Pay.js does not need 3D Secure support, the integration for this security check is done via API once the order is placed with the payment token. More information about the 3DS flow in the API can be found here.
4. How can I include the N/A value in the required API fields?
You can easily include the N/A value in the required API fields as shown below:
// For US:
"BillingDetails": {
"Address1": "N/A",
"City": "n/a",
"CountryCode": "US",
"Email": "customer@2Checkout.com",
"FirstName": "Customer",
"FiscalCode": null,
"LastName": "2Checkout",
"Phone": "N/A",
"State": "NY",
"Zip": "10075"
},
// For the rest of the world:
"BillingDetails": {
"Address1": "N/A",
"City": "n/a",
"CountryCode": "RO",
"Email": "customer@2Checkout.com",
"FirstName": "Customer",
"FiscalCode": null,
"LastName": "2Checkout",
"Phone": "N/A",
"State": "N/a",
"Zip": "N/A"
},
Integrate WHMCS
Overview
WHMCS is an all-in-one Content Management System including client management, billing & support solution for online businesses and web hosts.
Merchants can use the WHMCS connector to integrate with 2Checkout and process orders via ConvertPlus, InLine Checkout, and 2Pay.js, and provide an improved experience to their shoppers.
Availability
The WHMCS integration is available only for 2Checkout accounts that handle their own tax and invoice management (2Sell and 2Subscribe accounts).
WHMCS Settings
Regardless of the fact that you are already using the WHMCS connector or you want to start using it to integrate with 2Checkout, you need to follow the steps below:
- Download the 2Checkout payment module from GitHub by clicking on the Code button and then on Download ZIP.
- Sign in to your WHMCS admin panel.
- Navigate to Setup → Payments and click on Payment Gateways.
- On the Payment Gateways page, click on the All Payment Gateways tab.
- On the All Payment Gateways page, select 2Checkout's ConvertPlus, InLine Checkout, and API Gateway (2Pay.js).
-
Go to Manage Existing Gateways and configure each cart option by adding the required information from your 2Checkout Merchant Control Panel.
- Tick the Show on Order Form box if you want this information to be displayed on the order.
- Add the Merchant Code.
- Add the Buy-Link Secret Word.
- Add the Secret key.
- Tick Test Mode if you wish to enable it. This allows you to place test orders using test payment methods, to check your integration with 2Checkout.
- Tick the Skip 2CO Fraud Check box, if you want to mark invoices as paid without waiting for the 2Checkout fraud review.
- Add Reasons for Refunds.
- Click on Save Changes.
- The Merchant Code is your 2Checkout Merchant Code that you can obtain by logging in to your Merchant Control Panel and navigating to Integrations → Webhooks & API.
- To find the Buy-Link Secret Word, log in to your 2 Checkout Merchant Control Panel and navigate to Integrations → Webhooks & API → Secret Word . Edit your INS Secret Word to match the Buy-Link Secret Word , copy the value and paste it in the WHMCS admin panel.
- The Secret key can be found in your 2Checkout Merchant Control Panel, right next to the Merchant Code. Copy and paste it in your WHMCS admin panel.
Since WHMCS does not support special characters, but only letters (a-z) and digits, you can use a code generator to obtain a Secret Word that needs to be saved both in the 2Checkout Control Panel and the WHMCS admin.
2Checkout Settings
Follow the below instructions to finalize the WHMCS integration process.
- Sign in to your 2Checkout Merchant Control Panel account.
- Navigate to Dashboard → Integrations → Webhooks & API section.
- Follow these steps to activate Redirect URL:
- In the Redirect URL section check Enable return after sale.
- For the return method, select Header Redirect (for both Standard and Inline checkout).
- Set the Approved URL to http://www.yourdomain.com/whmcs/modu.../2checkout.php (replace http://yourdomain.com with the actual URL to your domain).
- Save settings.
- In the Webhooks and API section, under the Instant Notification Service (INS) card, check the Enable Global URL box.
- Enter http://www.yourdomain.com/whmcs/modu.../2checkout.php as the global endpoint URL.
- Click on Update to save your changes.
- Make sure to enable the IPN webhook notification in your Merchant Control Panel.
- Log in to the 2Checkout Merchant Control Panel and navigate to Integrations → Webhooks & API.
- Scroll down to the Notifications section and select IPN or Email Text & IPN from the drop-down, and then click on the Configure IPN button.
- On the IPN Settings page, click on Add IPN URL.
- Input the IPN URL available in the configuration page in the WHMCS admin, select the SHA 2 / SHA 3 hash and click on Add IPN.
- After adding the IPN URL, the URL should be displayed in the IPN URLs section in your Merchant Control Panel.
- Enable all triggers and response tags.
About WHMCS
WHMCS is an all-in-one client management, billing & support solution for online businesses. Handling everything from signup to termination, WHMCS is a powerful business automation tool that puts you firmly in control.
For more information visit WHMCS.com.
Integrate Ecwid
Availability
Ecwid integration is available only for 2Checkout accounts that handle their own tax and invoice management (2Sell and 2Subscribe accounts).
Ecwid settings:
- Create a new 2Checkout account
- Go to Ecwid Control Panel → Payment
- Scroll down to Other ways to get paid
- Click Choose Payment Processor to see the list of payment gateways available for your country
- Select 2Checkout from the drop-down menu
- You will see 2Checkout Account Details. Find and copy your Approved and INS URL and save it somewhere as you will need it later
2Checkout settings:
- Go to your 2Checkout Merchant Account
- Navigate to Dashboard → Integrations → Webhooks & API
- In the Redirect URL section, set the Return Method to “Header redirect”
- In the Approved URL field, paste the “Approved and INS URL” that you copied earlier from your Ecwid control panel
- Click Update to save the changes
- In the Instant Notification System (INS) section:
- Select Enable INS and Enable global URL and paste the value of “Approved and INS URL” you saved earlier
- Click Update to save the changes
- In the Secret word section:
- Make sure both the INS secret word and the Buy-link secret word are set to the same value and copy it
- Return to the 2Checkout Account Details in your Ecwid control panel
- Enter your 2Checkout account number (Merchant Code) and the INS secret word
- Scroll to Appearance options and enable this payment method
About Ecwid
Ecwid is a cloud-based e-commerce platform that helps to easily create a bold, easy to use online store and start selling anywhere online or in-person. Ideal for small and medium sized businesses. Ecwid can be seamlessly integrated with your existing website, business page on a social network, your blog, marketplaces or mobile app. All the storefronts are synced and managed from one control panel. Ecwid lets you organize your products, customize your storefront, accept credit card payments, track and respond to orders — all with a few clicks of the mouse. Find out more about Ecwid here.
Dispute balance
Overview
Disputes Balance is a financial mechanism designed to manage the funds of order transactions for which customers disputed the charges made using their credit / debit card or PayPal.
When shoppers initiate chargebacks, the equivalent of the disputed charges is debited from 2Checkout's bank account. Disputed charges are also reflected in the 2Checkout system and the funds paid by shoppers for disputed transactions are retained in the Disputes Balance. Once a chargeback resolution is reached, the disputed charges are released from the Disputes Balance.
How 2Checkout calculates Dispute Balance amounts
Disputes Balance amounts are calculated by deducting affiliate commissions and taxes from the total order amount (the costs incurred by shoppers). Disputes Balance amounts include 2Checkout processing fees.
2Checkout charges commissions for the initial transactions associated with orders refunded as a result of chargeback disputes initiated by shoppers.
Dispute balance process flow
- Customers can dispute charges to their credit/debit cards or PayPal claiming reasons such as:
- Order not fulfilled/not delivered
- Product(s) not as described/unfunctional
- Duplicate order
- Fraud/Order not recognized: Customers claim that they don't recognize the charge
- Agreed refund not processed
- New/renewal order not recognized
- Authorization problem
- Information request
- 2Checkout is informed by the shopper bank or by PayPal of the chargeback initiated and the dispute is also reflected into the system. The disputed amount is debited from 2Checkout's bank account.
- 2Checkout retains the funds associated with disputed orders, adding the value to the Disputes Balance.
- 2Checkout works with the shopper bank or PayPal to resolve the disputes in your favor until a resolution is reached.
- There are two possible outcomes to this process:
- You win the dispute, in which case the funds retained are released from the Disputes Balance and paid to you with the next due payment.
- You lose the dispute , in which case the funds retained are also released from the Disputes Balance. Refunds are issued reflecting the money paid back to shoppers. As is the case with all refunds, the order processing commissions received by 2Checkout will not be returned to you.
Dashboard account balance information
The account balance report on the 2Checkout dashboard shows information on the Disputes Balance from the moment of the last payment you received from 2Checkout.
- Retained to Disputes Balance - the value of all disputed charges retained for chargebacks initiated in the report period starting from the last payment you received from 2Checkout.
- Released from Disputes Balance - the value of all disputed charges released for chargebacks closed in the report period starting from the last payment you received from 2Checkout.
Disputes Balance email
Disputes Balance data is reported using a standalone notification in addition to the 2Checkout Sales Report you receive each payment cycle. This email report details only the amounts retained and released from Disputes Balance.
The 2Checkout Sales Report also includes Disputes Balance information in addition to refund info.
Accounting Summary
This report centralizes payment data, including upcoming transfers.
- Balance represents an estimated value of the funds you're due to receive on the next payment.
- Overall Disputes Balance represents the total value of unresolved disputed charges for complete orders that 2Checkout retains until a chargeback resolution is reached (Released Disputes Charges are deducted from the Overall Disputes Balance). Released Disputes amounts for transactions in non-payment currencies are reported in your account's default payment currency.
- Retained to Disputes Balance - the value of all disputed charges retained for chargebacks initiated in the report period starting from the last payment you received from 2Checkout.
- Released from Disputes Balance - the value of all disputed charges released for chargebacks closed in the report period starting from the last payment you received from 2Checkout.