Dev Request: Dev Request - Purchase
Instructions
Intro
When the Google Tag Manager library loads it declares a global JS object, dataLayer. It overloads the array prototype .push method so that it can grab on to objects/"events" pushed to that array.
Notes/Questions
- What values are possible there for
customer.status? - Populate
customer.hubspot_canonical_vid,customer.auth0_id,chargebee_idif available. If not available, keep the key and use value javascriptnull.
Other Notes
data.value is the cart total (including tax and shipping, if any, minus any discounts) in whole currency units e.g. dollars not cents
data.currency is the 3 character currency code
data.discount_amount is number of total dollars discounted from the cart.
data.items.list_price is the undiscounted price per unit
data.items.unit_price is the discounts-applied price per unit
data.items.discount is the per-unit discount
data.items is an array e.g. contains multiple objects if there are multiple line items in the cart
data.purchase.is_renewal is true if the purchase is a license renewal, false if a first-time purchase
is_first_time* can be left out if not easily accessible in the app state
Change Log
- 11/24/21:
couponto be array of strings instead of single string
Data Layer Event: PDQ - Purchase
Triggering Conditions
Upon a successfully validated purchase, after the load of the purchase confirmation route.
Event to Log
<script>
var dataLayer = window.dataLayer || [];
window.dataLayer.push({
'event': 'purchase',
'data': {}
});
</script>
Description of Data Fields
Data Layer - purchase
Validation Schema does not have properties
Data Layer - customer
Validation Schema does not have properties
Data Layer - Item
Validation Schema does not have properties
JSON Validation Schema
For Super Techies:
The event payload, everything under the data property, will be validated against this schema. For more see JSONSchema standard.
{
"TBD": "TBD"
}