The documentation for WooCommerce Blocks has moved to the WooCommerce monorepo.
Please refer to the documentation in the new location as the files in this repository will no longer be updated and the repository will be archived.
💡 What's the difference between the Cart Store and the Checkout Store?
The Cart Store (
wc/store/cart
) manages and retrieves data about the shopping cart, including items, customer data, and interactions like coupons.The Checkout Store (
wc/store/checkout
) manages and retrieves data related to the checkout process, customer IDs, order IDs, and checkout status.
The Checkout Store provides a collection of selectors to access and manage data during the checkout process. These selectors enable developers to fetch key details such as customer information, order status, and other checkout-related data.
To utilize this store you will import the CHECKOUT_STORE_KEY
in any module referencing it. Assuming @woocommerce/block-data
is registered as an external pointing to wc.wcBlocksData
you can import the key via:
const { CHECKOUT_STORE_KEY } = window.wc.wcBlocksData;
Returns the WordPress user ID of the customer whose order is currently processed by the Checkout block.
number
: The WordPress user ID of the customer.
const store = select( CHECKOUT_STORE_KEY );
const customerId = store.getCustomerId();
Returns the WooCommerce order ID of the order that is currently being processed by the Checkout block.
number
: The WooCommerce order ID.
const store = select( CHECKOUT_STORE_KEY );
const orderId = store.getOrderId();
Returns the order notes.
string
: The order notes.
const store = select( CHECKOUT_STORE_KEY );
const orderNotes = store.getOrderNotes();
Returns the URL to redirect to after checkout is complete.
string
: The URL to redirect to.
const store = select( CHECKOUT_STORE_KEY );
const redirectUrl = store.getRedirectUrl();
Returns the extra data registered by extensions.
object
: The extra data registered by extensions.
{
[ extensionNamespace ]: {
[ key ]: value,
},
}
const store = select( CHECKOUT_STORE_KEY );
const extensionData = store.getExtensionData();
Returns the current status of the checkout process.
string
: The current status of the checkout process. Possible values are:pristine
,before-processing
,processing
,after-processing
,complete
,idle
.
const store = select( CHECKOUT_STORE_KEY );
const checkoutStatus = store.getCheckoutStatus();
Returns true if the shopper has opted to create an account with their order.
boolean
: True if the shopper has opted to create an account with their order.
const store = select( CHECKOUT_STORE_KEY );
const shouldCreateAccount = store.getShouldCreateAccount();
Returns true if the shopper has opted to use their shipping address as their billing address.
boolean
: True if the shipping address should be used as the billing address.
const store = select( CHECKOUT_STORE_KEY );
const useShippingAsBilling = store.getUseShippingAsBilling();
Returns true if an error occurred, and false otherwise.
boolean
: True if an error occurred.
const store = select( CHECKOUT_STORE_KEY );
const hasError = store.hasError();
Returns true if a draft order had been created, and false otherwise.
boolean
: True if a draft order had been created.
const store = select( CHECKOUT_STORE_KEY );
const hasOrder = store.hasOrder();
When the checkout status is IDLE
this flag is true. Checkout will be this status after any change to checkout state after the block is loaded. It will also be this status when retrying a purchase is possible after processing happens with an error.
boolean
: True if the checkout has had some activity, but is currently waiting for user input.
const store = select( CHECKOUT_STORE_KEY );
const isIdle = store.isIdle();
When the checkout status is BEFORE_PROCESSING
this flag is true. Checkout will be this status when the user submits checkout for processing.
boolean
: True if an order is about to be processed.
const store = select( CHECKOUT_STORE_KEY );
const isBeforeProcessing = store.isBeforeProcessing();
When the checkout status is PROCESSING
this flag is true. Checkout will be this status when all the observers on the event emitted with the BEFORE_PROCESSING
status are completed without error. It is during this status that the block will be sending a request to the server on the checkout endpoint for processing the order.
boolean
: True if the checkout is processing.
const store = select( CHECKOUT_STORE_KEY );
const isProcessing = store.isProcessing();
When the checkout status is AFTER_PROCESSING
this flag is true. Checkout will have this status after the the block receives the response from the server side processing request.
boolean
: True if an order had just been processed.
const store = select( CHECKOUT_STORE_KEY );
const isAfterProcessing = store.isAfterProcessing();
When the checkout status is COMPLETE
this flag is true. Checkout will have this status after all observers on the events emitted during the AFTER_PROCESSING
status are completed successfully. When checkout is at this status, the shopper's browser will be redirected to the value of redirectUrl
at that point (usually the order-received
route).
boolean
: True if the order is complete.
const store = select( CHECKOUT_STORE_KEY );
const isComplete = store.isComplete();
This is true when the total is being re-calculated for the order. There are numerous things that might trigger a recalculation of the total: coupons being added or removed, shipping rates updated, shipping rate selected etc. This flag consolidates all activity that might be occurring (including requests to the server that potentially affect calculation of totals). So instead of having to check each of those individual states you can reliably just check if this boolean is true (calculating) or false (not calculating).
boolean
: True if there is an in-flight request to update any values.
const store = select( CHECKOUT_STORE_KEY );
const isCalculating = store.isCalculating();
Returns true if the customer prefers to collect their order, and false otherwise.
- prefersCollection
boolean
: True if the shopper prefers to collect their order.
const store = select( CHECKOUT_STORE_KEY );
const prefersCollection = store.prefersCollection();
Sets the prefersCollection
flag to true or false.
- prefersCollection
boolean
: True if the shopper prefers to collect their order.
const store = dispatch( CHECKOUT_STORE_KEY );
store.setPrefersCollection( true );
We're hiring! Come work with us!
🐞 Found a mistake, or have a suggestion? Leave feedback about this document here.