WooCommerce Hook Finder
Browse the real action hooks WooCommerce fires on the shop, single product, cart and checkout pages, with priorities and copy-ready code.
Find a hook
A theme built on the Product Gallery/Product Details blocks renders those parts from block content, not from these action hooks.
14 hooks on the single product page, in the order they fire
woocommerce_before_single_product
Default: woocommerce_output_all_notices() at priority 10
woocommerce_before_single_product_summary
Default: woocommerce_show_product_sale_flash() at priority 10
woocommerce_before_single_product_summary
Default: woocommerce_show_product_images() at priority 20
woocommerce_single_product_summary
Default: woocommerce_template_single_title() at priority 5
woocommerce_single_product_summary
Default: woocommerce_template_single_rating() at priority 10
woocommerce_single_product_summary
Default: woocommerce_template_single_price() at priority 10
woocommerce_single_product_summary
Default: woocommerce_template_single_excerpt() at priority 20
woocommerce_single_product_summary
Default: woocommerce_template_single_add_to_cart() at priority 30
Only shown when $product->is_purchasable().
woocommerce_single_product_summary
Default: woocommerce_template_single_meta() at priority 40
woocommerce_single_product_summary
Default: woocommerce_template_single_sharing() at priority 50
woocommerce_after_single_product_summary
Default: woocommerce_output_product_data_tabs() at priority 10
woocommerce_after_single_product_summary
Default: woocommerce_upsell_display() at priority 15
woocommerce_after_single_product_summary
Default: woocommerce_output_related_products() at priority 20
woocommerce_product_additional_information
Default: wc_display_product_attributes() at priority 10
Inside the Additional information tab.
How WooCommerce's template hooks work
WooCommerce's classic templates (shop, single product, cart, the shortcode checkout, my account) are built almost entirely from do_action() calls. Instead of editing the template file, you hook a function onto one of these actions with add_action( 'hook_name', 'your_function', priority ). Lower priority numbers run first.
Search or pick a page below to see the hooks that fire on it in order, which core function is already attached to each one (so you know what runs before or after your code), and a copy-ready add_action stub.
Block-based Cart and Checkout don't use these hooks. They're React apps rendered by WooCommerce Blocks. Most woocommerce_checkout_* and woocommerce_cart_* actions below only fire on the classic shortcode versions of those pages. To change block Cart or Checkout, use the Blocks extensibility APIs (ExperimentalOrderMeta slot fills, the woocommerce_blocks_enqueue_checkout_block_scripts_after action) or the WooCommerce Text String Changer for wording changes.
Using a hook safely
- 01
Find the hook
Pick the page, then find the hook nearest where you want your content to appear.
- 02
Check what's already there
The default function column shows what core has hooked there, so you don't accidentally duplicate or conflict with it.
- 03
Copy the stub
Copy the
add_actionsnippet and paste it into a site-specific plugin or your child theme's functions.php. - 04
Set a priority
Use a priority between the two hooks you want your content to land between, for example 15 to run after a priority-10 hook and before a priority-20 one.
Never edit WooCommerce's own template files in the plugin folder. A plugin update overwrites them. Hooks (or a copy of the template in your theme) survive updates.
Questions people ask
What's the difference between an action and a filter?
An action (do_action, hooked with add_action) runs code and outputs something; it doesn't return a value. A filter (apply_filters, hooked with add_filter) takes a value in and must return a (possibly changed) value out. Everything on this page is an action hook.
Why did my hooked content show up in the wrong place?
Check the priority. WooCommerce's own functions are attached at specific priorities (shown here); if your priority matches one exactly, the order between the two isn't guaranteed, so pick a number that clearly falls before or after it.
Do these hooks still work with block themes?
Yes, for the classic WooCommerce templates: shop archive, single product, and the [woocommerce_cart]/[woocommerce_checkout] shortcodes. Block-based Cart and Checkout blocks use a separate system.
Where do I put the code?
In a small site-specific plugin, or your child theme's functions.php. Never in the parent theme or the WooCommerce plugin folder, since both get overwritten on update.
How do I remove something a hook adds instead of adding to it?
Use remove_action( 'hook_name', 'function_name', priority ) with the exact same function name and priority shown in the default function column, then hooked function name must be a plain function, not a class method, unless you also pass the class instance.
Related tools
Last reviewed 30 September 2026.
Sources: WooCommerce source: wc-template-hooks.php · WooCommerce source: wc-template-functions.php · WooCommerce Code Reference: Hooks · WooCommerce Docs: Template structure · WooCommerce source: Blocks/BlockTypes/Checkout.php
