Skip to content

Cart Data & Events

The Cart drop-in uses the event bus to emit and listen to events for communication between drop-ins and external integrations. For common events shared across multiple drop-ins (such as locale, error, authenticated, etc.), see the Common events reference.

Version: 1.5.1

Events reference

EventDirectionDescription
cart/initializedEmitsEmitted when the component completes initialization
cart/product/addedEmitsEmitted when an item is added
cart/product/removedEmitsEmitted when an item is removed
cart/product/updatedEmitsEmitted when the component state is updated
checkout/initializedListensFired by Checkout (checkout) when the component completes initialization
checkout/updatedListensFired by Checkout (checkout) when the component state is updated
companyContext/changedListensFired by Company Context (companyContext) when a change occurs
cart/dataEmits and listensTriggered when data is available or changes
cart/mergedEmits and listensTriggered when data is merged
cart/resetEmits and listensTriggered when the component state is reset
cart/updatedEmits and listensTriggered when the component state is updated
shipping/estimateEmits and listensTriggered when an estimate is calculated

Event details

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

cart/data (emits and listens)

Triggered when data is available or changes

Data payload

This event’s data payload structure is not documented in the source code.

Usage

Listen to this event in your storefront:

import { events } from '@dropins/tools/event-bus.js';
const cartDataListener = events.on('cart/data', (data) => {
console.log('cart/data event received:', data);
// Add your custom logic here
});
// Later, when you want to stop listening
cartDataListener.off();

cart/initialized (emits)

Emitted when the component completes initialization

Data payload

CartModel | null

Usage

Listen to this event in your storefront:

import { events } from '@dropins/tools/event-bus.js';
const cartInitializedListener = events.on('cart/initialized', (data) => {
console.log('cart/initialized event received:', data);
// Add your custom logic here
});
// Later, when you want to stop listening
cartInitializedListener.off();

cart/merged (emits and listens)

Triggered when data is merged

Data payload

{
oldCartItems: Item[] | null;
newCart: CartModel | null;
}
PropertyTypeDescription
oldCartItemsItem[] | nullSee type definition in source code
newCartCartModel | nullSee type definition in source code

Usage

Listen to this event in your storefront:

import { events } from '@dropins/tools/event-bus.js';
const cartMergedListener = events.on('cart/merged', (data) => {
console.log('cart/merged event received:', data);
// Add your custom logic here
});
// Later, when you want to stop listening
cartMergedListener.off();

cart/product/added (emits)

Emitted when an item is added

Data payload

Item[] | null

Usage

Listen to this event in your storefront:

import { events } from '@dropins/tools/event-bus.js';
const cartProductAddedListener = events.on('cart/product/added', (data) => {
console.log('cart/product/added event received:', data);
// Add your custom logic here
});
// Later, when you want to stop listening
cartProductAddedListener.off();

cart/product/removed (emits)

Emitted when an item is removed

Data payload

This event’s data payload structure is not documented in the source code.

Usage

Listen to this event in your storefront:

import { events } from '@dropins/tools/event-bus.js';
const cartProductRemovedListener = events.on('cart/product/removed', (data) => {
console.log('cart/product/removed event received:', data);
// Add your custom logic here
});
// Later, when you want to stop listening
cartProductRemovedListener.off();

cart/product/updated (emits)

Emitted when the component state is updated

Data payload

Item[] | null

Usage

Listen to this event in your storefront:

import { events } from '@dropins/tools/event-bus.js';
const cartProductUpdatedListener = events.on('cart/product/updated', (data) => {
console.log('cart/product/updated event received:', data);
// Add your custom logic here
});
// Later, when you want to stop listening
cartProductUpdatedListener.off();

cart/reset (emits and listens)

Triggered when the component state is reset

Data payload

void

Usage

Listen to this event in your storefront:

import { events } from '@dropins/tools/event-bus.js';
const cartResetListener = events.on('cart/reset', (data) => {
console.log('cart/reset event received:', data);
// Add your custom logic here
});
// Later, when you want to stop listening
cartResetListener.off();

cart/updated (emits and listens)

Triggered when the component state is updated

Data payload

CartModel | null

Usage

Listen to this event in your storefront:

import { events } from '@dropins/tools/event-bus.js';
const cartUpdatedListener = events.on('cart/updated', (data) => {
console.log('cart/updated event received:', data);
// Add your custom logic here
});
// Later, when you want to stop listening
cartUpdatedListener.off();

checkout/initialized (listens)

Fired by Checkout (checkout) when the component completes initialization

Data payload

This event’s data payload structure is not documented in the source code.

Usage

Listen to this event in your storefront:

import { events } from '@dropins/tools/event-bus.js';
const checkoutInitializedListener = events.on('checkout/initialized', (data) => {
console.log('checkout/initialized event received:', data);
// Add your custom logic here
});
// Later, when you want to stop listening
checkoutInitializedListener.off();

checkout/updated (listens)

Fired by Checkout (checkout) when the component state is updated

Data payload

any

Usage

Listen to this event in your storefront:

import { events } from '@dropins/tools/event-bus.js';
const checkoutUpdatedListener = events.on('checkout/updated', (data) => {
console.log('checkout/updated event received:', data);
// Add your custom logic here
});
// Later, when you want to stop listening
checkoutUpdatedListener.off();

companyContext/changed (listens)

Fired by Company Context (companyContext) when a change occurs

Data payload

This event’s data payload structure is not documented in the source code.

Usage

Listen to this event in your storefront:

import { events } from '@dropins/tools/event-bus.js';
const companyContextChangedListener = events.on('companyContext/changed', (data) => {
console.log('companyContext/changed event received:', data);
// Add your custom logic here
});
// Later, when you want to stop listening
companyContextChangedListener.off();

shipping/estimate (emits and listens)

Triggered when an estimate is calculated

Data payload

{
address: PartialAddress;
shippingMethod: ShippingMethod | null;
}
PropertyTypeDescription
addressPartialAddressSee type definition in source code
shippingMethodShippingMethod | nullSee type definition in source code

Usage

Listen to this event in your storefront:

import { events } from '@dropins/tools/event-bus.js';
const shippingEstimateListener = events.on('shipping/estimate', (data) => {
console.log('shipping/estimate event received:', data);
// Add your custom logic here
});
// Later, when you want to stop listening
shippingEstimateListener.off();