advanced_ dom_ input_ changedinterface
The event is published when an input value changes.
This event is limited on checkout to stores on the Shopify Plus plan.
Anchor to propertiesProperties
- Anchor to clientIdclientIdstring
The client-side ID of the customer, provided by Shopify
- Anchor to datadataPixelEventsAdvancedDomInputChangedData
- string
The ID of the customer event
- Anchor to namenamestring
The name of the customer event
- number
The sequence index number of the event.
- Anchor to timestamptimestampstring
The timestamp of when the customer event occurred, in ISO 8601 format
- Anchor to typetypeEventType.AdvancedDom
PixelEventsAdvancedDomInputChangedData
- node
The node object for the event target.
DomNode
export interface PixelEventsAdvancedDomInputChangedData {
/**
* The node object for the event target.
*/
node?: DomNode;
}
DomNode
Representation of a node in the document.
- attributes
A dictionary of attributes of an element. Only available on element nodes.
{ [key: string]: string; }
- checked
The checked state of an element. Only available on input element nodes.
boolean
- clientRect
The coordinates of the element in the viewport. Only available on element nodes.
ClientRect
- nodeType
The type of node based on the native DOM API's [`nodeType`](https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType) values. It distinguishes different kind of nodes from each other, such as elements, text and comments.
number
- scroll
The scroll coordinates of the element in the viewport. Only available on element nodes.
ClientRect
- serializationId
The serialization id of the node. This is a unique identifier for the node based on its stable reference in the host DOM tree.
number
- tagName
A string representation of the tag of a node. Only available on element nodes.
string
- textContent
The text content of an element. Only available on text nodes.
string
export interface DomNode {
/**
* The type of node based on the native DOM API's
* [`nodeType`](https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType) values. It distinguishes different kind of
* nodes from each other, such as elements, text and comments.
*/
nodeType?: number;
/**
* The serialization id of the node. This is a unique identifier for the node
* based on its stable reference in the host DOM tree.
*/
serializationId?: number;
/**
* A dictionary of attributes of an element. Only available on element nodes.
*/
attributes?: {[key: string]: string};
/**
* The checked state of an element. Only available on input element nodes.
*/
checked?: boolean;
/**
* The coordinates of the element in the viewport. Only available on element
* nodes.
*/
clientRect?: ClientRect;
/**
* The scroll coordinates of the element in the viewport. Only available on
* element nodes.
*/
scroll?: ClientRect;
/**
* A string representation of the tag of a node. Only available on element
* nodes.
*/
tagName?: string;
/**
* The text content of an element. Only available on text nodes.
*/
textContent?: string;
}
ClientRect
An object that contains data about an element coordinates in a viewport.
- height
number
- width
number
- x
number
- y
number
export interface ClientRect {
height?: number;
width?: number;
x?: number;
y?: number;
}
EventType
- AdvancedDom
advanced-dom
- Custom
custom
- Dom
dom
- Meta
meta
- Standard
standard
export enum EventType {
AdvancedDom = 'advanced-dom',
Custom = 'custom',
Dom = 'dom',
Meta = 'meta',
Standard = 'standard',
}
Accessing Advanced DOM Events
App Pixel
Examples
Accessing Advanced DOM Events
App Pixel
import {register} from '@shopify/web-pixels-extension'; register(({analytics}) => { analytics.subscribe('advanced_dom_input_changed', (event) => { // Accessing event payload const node = event.data.node; if (node?.nodeType !== Node.ELEMENT_NODE) return; const payload = { event_name: event.name, event_data: { id: node.serializationId, value: node.attributes?.value, }, }; // E.g. sending event to third party servers fetch('https://example.com/pixel', { method: 'POST', body: JSON.stringify(payload), keepalive: true, }); }); });