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.
Events reference
| Event | Direction | Description |
|---|---|---|
| cart/initialized | Emits | Emitted when the component completes initialization |
| cart/product/added | Emits | Emitted when an item is added |
| cart/product/removed | Emits | Emitted when an item is removed |
| cart/product/updated | Emits | Emitted when the component state is updated |
| checkout/initialized | Listens | Fired by Checkout (checkout) when the component completes initialization |
| checkout/updated | Listens | Fired by Checkout (checkout) when the component state is updated |
| companyContext/changed | Listens | Fired by Company Context (companyContext) when a change occurs |
| cart/data | Emits and listens | Triggered when data is available or changes |
| cart/merged | Emits and listens | Triggered when data is merged |
| cart/reset | Emits and listens | Triggered when the component state is reset |
| cart/updated | Emits and listens | Triggered when the component state is updated |
| shipping/estimate | Emits and listens | Triggered 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 listeningcartDataListener.off();cart/initialized (emits)
Emitted when the component completes initialization
Data payload
CartModel | nullUsage
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 listeningcartInitializedListener.off();cart/merged (emits and listens)
Triggered when data is merged
Data payload
{oldCartItems: Item[] | null;newCart: CartModel | null;}| Property | Type | Description |
|---|---|---|
oldCartItems | Item[] | null | See type definition in source code |
newCart | CartModel | null | See 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 listeningcartMergedListener.off();cart/product/added (emits)
Emitted when an item is added
Data payload
Item[] | nullUsage
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 listeningcartProductAddedListener.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 listeningcartProductRemovedListener.off();cart/product/updated (emits)
Emitted when the component state is updated
Data payload
Item[] | nullUsage
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 listeningcartProductUpdatedListener.off();cart/reset (emits and listens)
Triggered when the component state is reset
Data payload
voidUsage
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 listeningcartResetListener.off();cart/updated (emits and listens)
Triggered when the component state is updated
Data payload
CartModel | nullUsage
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 listeningcartUpdatedListener.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 listeningcheckoutInitializedListener.off();checkout/updated (listens)
Fired by Checkout (checkout) when the component state is updated
Data payload
anyUsage
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 listeningcheckoutUpdatedListener.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 listeningcompanyContextChangedListener.off();shipping/estimate (emits and listens)
Triggered when an estimate is calculated
Data payload
{address: PartialAddress;shippingMethod: ShippingMethod | null;}| Property | Type | Description |
|---|---|---|
address | PartialAddress | See type definition in source code |
shippingMethod | ShippingMethod | null | See 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 listeningshippingEstimateListener.off();