A personal community project under @kyletaylored, MIT licensed.Not provided or supported by Datadog.
Schema 1.0.0
Action names are GA4's recommended ecommerce event names behind a family prefix, and attributes are GA4's parameters. There is no second vocabulary to learn, and a site already pushing GA4 ecommerce data maps one to one.
This page is generated from the core's schema definitions. Schema changes go through a short RFC and a semver bump; each adapter declares the version it emits in its manifest.
commerce commerce.*
Actions
| Action | GA4 event | Fires when | Key attributes |
|---|---|---|---|
commerce.view_item_list | view_item_list | Collection or category page shown | item_list_name, items |
commerce.view_item | view_item | Product detail page shown | value, currency, items |
commerce.add_to_cart | add_to_cart | Item added or quantity raised | value, currency, items, cart_id |
commerce.remove_from_cart | remove_from_cart | Item removed or quantity lowered | value, currency, items, cart_id |
commerce.view_cart | view_cart | Cart page or drawer opened | value, currency, item_count |
commerce.begin_checkout | begin_checkout | Checkout entered | value, currency, item_count, coupon |
commerce.add_shipping_info | add_shipping_info | Shipping step submitted | value, currency, shipping_tier |
commerce.add_payment_info | add_payment_info | Payment step submitted | value, currency, payment_type |
commerce.purchase | purchase | Order confirmation seen | transaction_id, value, currency, tax, shipping, coupon, item_count |
commerce.search | search | Store search run | search_term_length |
Attributes
| Attribute | Type | Origin | Description | Example |
|---|---|---|---|---|
value | number | GA4 | Monetary value in the store currency: items affected on cart events, cart total on view_cart and begin_checkout, revenue on purchase. | 84.5 |
currency | string | GA4 | ISO 4217 store currency. | "USD" |
transaction_id | string | GA4 | Platform order identifier. | "#1042" |
tax | number | GA4 | Tax charged on the order. | 6.2 |
shipping | number | GA4 | Shipping charged on the order. | 4.95 |
coupon | string | GA4 | Discount code applied. | "WELCOME10" |
payment_type | string | GA4 | Payment method name. Never card data. | "paypal" |
shipping_tier | string | GA4 | Shipping option chosen. | "Ground" |
item_list_name | string | GA4 | Collection or category name. | "Summer sale" |
items | items | GA4 | GA4 item objects (item_id, item_name, price, quantity, item_variant, item_category), capped at 20 entries. Opt-in via includeItems. | — |
item_count | integer | extension | Sum of quantities. | 3 |
unique_items | integer | extension | Distinct line items. | 2 |
cart_id | string | extension | Platform cart identifier. | "c1-8f2a" |
search_term_length | integer | extension | Length of the search query. Replaces GA4 search_term, which can hold PII. | 12 |
account account.*
Actions
| Action | GA4 event | Fires when | Key attributes |
|---|---|---|---|
account.login | login | Auth state becomes signed in | method |
account.sign_up | sign_up | A new account is created | method |
account.logout | none | Auth state becomes signed out | none |
Attributes
| Attribute | Type | Origin | Description | Example |
|---|---|---|---|---|
method | string | GA4 | Auth method or connection name. | "google-oauth2" |
account_id | string | extension | Organization or tenant identifier. | "org_19x" |
lead lead.*
Actions
| Action | GA4 event | Fires when | Key attributes |
|---|---|---|---|
lead.generate_lead | generate_lead | A lead form is submitted | form_id, form_name |
Attributes
| Attribute | Type | Origin | Description | Example |
|---|---|---|---|---|
value | number | GA4 | Estimated lead value. | 100 |
currency | string | GA4 | ISO 4217 currency for value. | "USD" |
form_id | string | extension | Form identifier, never its field values. | "hs-4821" |
form_name | string | extension | Form name. | "Contact sales" |
support support.*
Actions
| Action | GA4 event | Fires when | Key attributes |
|---|---|---|---|
support.chat_opened | none | The support widget is shown | provider |
Attributes
| Attribute | Type | Origin | Description | Example |
|---|---|---|---|---|
provider | string | extension | Chat provider name. | "intercom" |
Session-wide context
Set with setGlobalContextProperty. Deliberately low cardinality: no order, cart or user IDs.
| Key | Property |
|---|---|
| platform | commerce.platform |
| pluginVersion | commerce.plugin_version |
| schemaVersion | commerce.schema_version |
| storeId | store.id |
| storeCurrency | store.currency |
| storeLocale | store.locale |
| customerType | customer.type |
| consentCategories | consent.categories |
Limits the core enforces
items[]is opt-in and capped at 20 entries.- Strings are truncated at 256 characters.
commerce.purchasefires once pertransaction_id, deduplicated for 24 hours.- Numbers are sent as numbers, never strings, so they can become RUM measures and distribution metrics.
Why some platform events send nothing
A platform event with no GA4 equivalent emits no action. Shopify'scheckout_contact_info_submitted, for instance, only feeds setUser when the merchant opts into email. Inventing an action name for it would break the promise that one dashboard works across every platform.