Skip to content

Product Details Data & Events

The Product Details drop-in uses the event bus to emit and listen to events for communication between drop-ins and external integrations.

Version: 3.0.1
EventDirectionDescription
pdp/validEmitsEmitted when validation state changes.
pdp/setValuesListensFired by Pdp (pdp) when values are set programmatically.
pdp/dataEmits and listensTriggered when data is available or changes.
pdp/valuesEmits and listensTriggered when form or configuration values change.

The following sections provide detailed information about each event, including its direction, event payload, and usage examples.

Triggered when data is available or changes.

ProductModel | null

See ProductModel for full type definition.

import { events } from '@dropins/tools/event-bus.js';
events.on('pdp/data', (payload) => {
console.log('pdp/data event received:', payload);
// Add your custom logic here
});

Fired by Pdp (pdp) when values are set programmatically.

import { events } from '@dropins/tools/event-bus.js';
events.on('pdp/setValues', (payload) => {
console.log('pdp/setValues event received:', payload);
// Add your custom logic here
});

Emitted when validation state changes.

boolean
import { events } from '@dropins/tools/event-bus.js';
events.on('pdp/valid', (payload) => {
console.log('pdp/valid event received:', payload);
// Add your custom logic here
});

Triggered when form or configuration values change.

ValuesModel

See ValuesModel for full type definition.

import { events } from '@dropins/tools/event-bus.js';
events.on('pdp/values', (payload) => {
console.log('pdp/values event received:', payload);
// Add your custom logic here
});

The following data models are used in event payloads for this drop-in.

Used in: pdp/data.

interface ProductModel {
name: string;
sku: string;
isBundle: boolean;
addToCartAllowed: boolean;
inStock: boolean | null;
shortDescription?: string;
metaDescription?: string;
metaKeyword?: string;
metaTitle?: string;
description?: string;
images?: Image[];
prices: Prices;
attributes?: Attribute[];
options?: Option[];
optionUIDs?: string[];
url?: string;
urlKey?: string;
externalId?: string;
externalParentId?: string;
variantSku?: string;
productType?: ProductType | undefined;
}

Used in: pdp/values.

interface ValuesModel {
sku: string;
quantity: number;
optionsUIDs?: string[];
enteredOptions?: Array<{ uid: string; value: string }>;
}