This article was last manually reviewed for data accuracy on 16 November 2025.
The WooCommerce checkout page is one of the most crucial parts of any WooCommerce store, serving as the final step before purchase completion. Customizing this page allows store owners and developers to improve user experience, streamline the process, and optimize conversions.
WooCommerce provides numerous action and filter hooks throughout the checkout page template to customize it. This visual hook guide and complete list of WooCommerce checkout page hook will serve a ready reference.
Note: The hooks listed in this visual guide are all classic hooks tied to PHP templates. They are available only on classic checkout pages using the [woocommerce_checkout] shortcode or via the standard WooCommerce checkout endpoint. The modern Block page supports different hooks which is listed separately.
Visual Guide: WooCommerce CheckOut Page Hooks

Complete List of WooCommerce Checkout Page Action Hooks
| Group & Location | Hook Name | Description/Usage | Default Function |
|---|---|---|---|
| Checkout Form | woocommerce_before_checkout_form | Fires before the checkout form. Useful for notices or custom markup. | None |
| woocommerce_after_checkout_form | Fires after the checkout form. | None | |
| Customer Details | woocommerce_checkout_before_customer_details | Before customer details section. | None |
| Customer Details – Billing | woocommerce_checkout_billing | Wrapper for billing fields. | woocommerce_checkout_billing() |
| woocommerce_before_checkout_billing_form | Before billing fields start. | None | |
| woocommerce_after_checkout_billing_form | After billing fields end. | None | |
| Customer Details – Shipping | woocommerce_checkout_shipping | Wrapper for shipping fields. | woocommerce_checkout_shipping() |
| woocommerce_before_checkout_shipping_form | Before shipping fields start. | None | |
| woocommerce_after_checkout_shipping_form | After shipping fields end. | None | |
| Customer Details | woocommerce_checkout_after_customer_details | After customer details section. | None |
| Order Review | woocommerce_checkout_before_order_review | Before order review section. | None |
| woocommerce_checkout_order_review | Wrapper for order review. | woocommerce_order_review() | |
| woocommerce_checkout_after_order_review | After order review section. | None | |
| woocommerce_checkout_after_order_review_details | After order review details, before final hooks. | None | |
| Review Order Table | woocommerce_review_order_before_cart_contents | Before cart contents in order review. | None |
| woocommerce_review_order_after_cart_contents | After cart contents in order review. | None | |
| woocommerce_review_order_before_shipping | Before shipping rows. | None | |
| woocommerce_review_order_after_shipping | After shipping rows. | None | |
| woocommerce_review_order_before_order_total | Before order total row. | None | |
| woocommerce_review_order_after_order_total | After order total row. | None | |
| Payment Section | woocommerce_review_order_before_payment | Before payment methods. | None |
| woocommerce_review_order_after_payment | After payment methods. | None | |
| woocommerce_review_order_before_submit | Before the “Place Order” button. | None |
Essential List of WooCommerce Checkout Page Filters
| Group & Location | Hook Name | Description & Parameters |
|---|---|---|
| Checkout Fields | woocommerce_checkout_fields | Filters all checkout fields. Params: $fields |
| woocommerce_checkout_get_value | Filters default field values. Params: $value, $input | |
| Checkout Data | woocommerce_checkout_posted_data | Filters posted checkout data. Params: $data |
| woocommerce_checkout_update_order_meta | Filters order meta update logic. Params: $order_id, $data | |
| Cart Items (Checkout Review) | woocommerce_checkout_cart_item_quantity | Filters cart item quantity display. Params: $quantity, $cart_item, $cart_item_key |
| woocommerce_checkout_cart_item_subtotal | Filters cart item subtotal display. Params: $subtotal, $cart_item, $cart_item_key | |
| woocommerce_checkout_cart_item_class | Filters CSS class for checkout cart row. Params: $class, $cart_item, $cart_item_key | |
| woocommerce_checkout_cart_item_visible | Controls visibility of cart item. Params: $visible, $cart_item, $cart_item_key | |
| woocommerce_checkout_cart_item_product | Filters product object. Params: $product, $cart_item, $cart_item_key | |
| woocommerce_checkout_cart_item_product_id | Filters product ID. Params: $product_id, $cart_item, $cart_item_key | |
| woocommerce_checkout_cart_item_name | Filters product name HTML. Params: $name, $cart_item, $cart_item_key | |
| woocommerce_checkout_cart_item_permalink | Filters product permalink. Params: $permalink, $cart_item, $cart_item_key | |
| woocommerce_checkout_cart_item_thumbnail | Filters product thumbnail HTML. Params: $thumbnail, $cart_item, $cart_item_key | |
| woocommerce_checkout_cart_item_price | Filters product price HTML. Parms: $price, $cart_item, $cart_item_key | |
| woocommerce_checkout_cart_item_remove_link | Filters remove link HTML. Params: $link, $cart_item_key |
Code Examples: Actions vs. Filters in WooCommerce Checkout Page
Deep Dive: For a comprehensive understanding of WooCommerce Filter and Hooks refer to WooCommerce Hooks and Filters: Complete Guide with Examples.
WooCommerce Checkout Page Action Hook Example : Add Custom VAT Number field
In this example we will use woocommerce_before_checkout_billing_form ro sdd a custom “VAT Number” field before the billing form.
php
/**
* Add a custom VAT Number field before billing form.
*/
function able_rabbit_add_vat_field_before_billing() {
echo '<div class="custom-vat-field">';
woocommerce_form_field( 'billing_vat_number', array(
'type' => 'text',
'label' => __('VAT Number', 'able-rabbit'),
'placeholder' => __('Enter your VAT number', 'able-rabbit'),
'required' => false,
), WC()->checkout->get_value( 'billing_vat_number' ) );
echo '</div>';
}
add_action( 'woocommerce_before_checkout_billing_form', 'able_rabbit_add_vat_field_before_billing' );Explanation:
- This hook fires right before the billing fields start.
- You can inject custom fields, notices, or markup.
- Here we add a VAT Number field using woocommerce_form_field().
WooCommerce Checkout Page Filter Hook Example : Make the phone number field optional
In this example we will use woocommerce_checkout_fields filter to make the phone number field optional.
php
/**
* Make phone number optional at checkout.
*
* @param array $fields Checkout fields array.
* @return array Modified fields.
*/
function able_rabbit_optional_phone_field( $fields ) {
if ( isset( $fields['billing']['billing_phone'] ) ) {
$fields['billing']['billing_phone']['required'] = false;
}
return $fields;
}
add_filter( 'woocommerce_checkout_fields', 'able_rabbit_optional_phone_field' );Explanation:
- This filter gives full control over checkout fields.
- You can add, remove, or modify field properties (label, placeholder, required, etc.).
- In this example, the phone field is made optional.
Summary: Mastering WooCommerce Checkout Page Customization
Understanding WooCommerce checkout page hooks unlocks powerful flexibility to customize your store’s checkout process. By using the provided action and filter hooks, you can add unique content, modify form behavior, adjust order review displays, and integrate with payment sections seamlessly.
With this visual guide, developers and site owners can implement precise, upgrade-safe customizations that improve both aesthetics and functionality, ultimately delivering a better shopping experience and driving higher conversion rates.
FAQs: WooCommerce Checkout Page Hooks
What are checkout page hooks in WooCommerce?
Checkout page hooks are predefined locations in the WooCommerce checkout template where you can add or modify content using custom code. They include action hooks to insert content and filter hooks to change existing data, helping customize the checkout experience without editing core files.
How do I use action hooks on the WooCommerce checkout page?
Action hooks let you insert custom content or execute code at specific points, such as before the checkout form (woocommerce_before_checkout_form), around billing and shipping sections, or after the order review. You attach your PHP function to these hooks using add_action() and define your custom logic.
What kind of customizations can filter hooks perform on the checkout page?
Filter hooks allow you to modify existing checkout data like form fields (woocommerce_checkout_fields), cart item display (woocommerce_checkout_cart_item_price), and order meta before saving. Filters are essential for adjusting labels, placeholders, item details, or visibility dynamically.
Are checkout hooks safe to use for customization?
Yes, since hooks allow customizations without modifying WooCommerce core files, they are upgrade-safe and best practice for extending WooCommerce functionality. Properly used hooks ensure your custom code remains functional through WooCommerce updates.
Where can I find a complete list of WooCommerce checkout hooks?
Complete and updated lists of checkout page hooks are available in WooCommerce developer documentation.
PRO Tip: Bookmark all our Visual WooCommerce Hook Guides for ready reference.
Did this help? Send a sip
Leave a Reply