Purchase
Fire whenever a user purchases one or more items. The Google Analytics 4 schema has some very extreme requirements about what is needed to be recognized as a true purchase/transaction. The following parameters are 100% REQUIRED when implementing the purchase event:
- Transaction ID (transaction_id)
- Currency (currency)
- Items (items)
- Value (value)
If any of the above parameters are not present, the transaction will NOT be recognized by Google Analytics 4, which can result in no ecommerce information being processed.
Javascript Code
// When:
// User purchases on or more items
// Code:
window.dataLayer = window.dataLayer || [];
dataLayer.push({ event_data: null, ecommerce: null }); // Clear the previous ecommerce object.
dataLayer.push({
event: "purchase",
event_data: {
identifier: "<identifier>", // REQUIRED | string | ex. uniquely_created_id, skin360_pwa_ntg_atc
name: '<name>' // REQUIRED | string | ex. pdp_add_to_cart, skin360_pwa_ntg add_to_cart
},
ecommerce: {
affiliation: "<affiliation>", // REQUIRED | string | ex. walgreens, listerine online store | pattern: ^[A-Za-z0-9_]+$
coupon: "<coupon>", // contextual | string | ex. SUMMER_FUN | pattern: ^[A-Za-z0-9_]+$
currency: "<currency>", // REQUIRED | string | ex. USD | pattern: ^[A-Z]{3}$ | min. 3, max. 3
items: "<items>", // REQUIRED | array | ex. [{item_id: "test"}]
shipping: "<shipping>", // REQUIRED | number | ex. 3.33 | pattern: ^\d\.\d\d$ | min. 0.00
tax: "<tax>", // REQUIRED | number | ex. 1.11 | pattern: ^\d\.\d\d$ | min. 0.00
transaction_id: "<transaction_id>", // REQUIRED | string | T12345
value: "<value>" // REQUIRED | number | ex. 7.77 | pattern: ^\d\.\d\d$ | min. 0.00
}
});
Variable Definitions
Field | Type | Required | Description | Example | Pattern | Minimum Length | Maximum Length | Minimum |
---|---|---|---|---|---|---|---|---|
identifier | string |
required | The wtb-event machine-readable name. This should be a unique value specific to this piece of content, if one exists. If one does not exist, this can also be populated with the same value as the |
contact , lead_generation |
100 |
|||
name | string |
required | The wtb-event human-readable name. This should be something that an analyst without a deep knowledge of the technical implementation of the site can easily identify the event with. It should be lowercase snake_case. | contact , lead_generation |
100 |
|||
affiliation | string | required | A product affiliation to designate a supplying company or brick and mortar store location. Event-level and item-level affiliation parameters are independent. | walgreens ,listerine online store |
100 |
|||
coupon | string | contextual | The coupon name/code associated with the event. Event-level and item-level coupon parameters are independent. | SUMMER_FUN |
100 |
|||
currency | string | required | Currency of the items associated with the event, in 3-letter ISO 4217 format. | USD |
^[A-Z]{3}$ |
3 |
3 |
|
items | array of items | required | Populate with items objects that represent the product(s) purchased. | [{item_id: "test"}] |
||||
shipping | number | required | Shipping cost associated with a transaction. Does not include currency sign. | 3.33 |
^\d\.\d\d$ |
100 |
0.00 |
|
tax | number | required | Tax cost associated with a transaction. Does not include currency sign. | 1.11 |
^\d\.\d\d$ |
100 | 0.00 |
|
transaction_id | string | required | The unique identifier of a transaction. | T12345 |
100 |
|||
value | number | required | The monetary value of the event. Does not include currency sign. | 7.77 |
^\d\.\d\d$ |
100 |
0.00 |