Add content around the checkout

Use Checkout content hooks to show notices, instructions or registered shortcode output at 22 native WooCommerce checkout positions. It is intended for store administrators who can edit HTML. WooCommerce and the classic checkout are required; this includes POM Theme checkout layouts.

The Checkout block does not execute these template hooks. Adding content here does not add block slots or replace the checkout page.

Configure the content

  1. Open Settings → POM Tweaks → E-Commerce → Cart & checkout.
  2. Enable Checkout content hooks.
  3. Enter trusted HTML or a registered shortcode in the required editor. Leave unused positions empty.
  4. Click Save.
  5. Add a product to a staging cart and open checkout. On a step-based checkout, visit the step that contains your chosen position.

Checkout content hooks with the HTML editors and template-specific guidance

For example, Before checkout form can contain:

<p class="checkout-help">Please check your delivery details before placing the order.</p>

With Polylang, these HTML editors are available for string translation. Product metadata and sale tags belong to Product content hooks and are not evaluated here.

Match the surrounding markup

The cart contents, shipping and order-total positions run inside the order summary. Standard WooCommerce templates use a table and need a complete row:

<tr><td>Delivery note</td><td>We will confirm the dispatch date by email.</td></tr>

POM Theme uses a block layout for this summary. Use a block instead:

<div class="checkout-note">We will confirm the dispatch date by email.</div>

The setting renders your fragment as written. It does not add or convert wrappers. Do not nest another checkout form inside the existing form.

Order-summary fragments can render again when WooCommerce updates checkout through AJAX. Use shortcodes that display content without creating orders, sending messages or other repeated side effects. Do not depend on an inline script running once. Some native positions outside the refreshed fragments run only on the initial page render.

Available positions

Editor Native action
Before checkout form woocommerce_before_checkout_form
Before customer details woocommerce_checkout_before_customer_details
Before billing form woocommerce_before_checkout_billing_form
After billing form woocommerce_after_checkout_billing_form
Before shipping form woocommerce_before_checkout_shipping_form
After shipping form woocommerce_after_checkout_shipping_form
Before order notes woocommerce_before_order_notes
After order notes woocommerce_after_order_notes
After customer details woocommerce_checkout_after_customer_details
Before order review woocommerce_checkout_before_order_review
Review order - Before cart contents woocommerce_review_order_before_cart_contents
Review order - After cart contents woocommerce_review_order_after_cart_contents
Review order - Before shipping data woocommerce_review_order_before_shipping
Review order - After shipping data woocommerce_review_order_after_shipping
Review order - Before order total woocommerce_review_order_before_order_total
Review order - After order total woocommerce_review_order_after_order_total
Review order - Before payment woocommerce_review_order_before_payment
Review order - Before submit woocommerce_review_order_before_submit
Review order - After submit woocommerce_review_order_after_submit
Review order - After payment woocommerce_review_order_after_payment
After order review woocommerce_checkout_after_order_review
After checkout form woocommerce_after_checkout_form

All fragments run at priority 15. Actual availability depends on the current template and customer flow. Shipping-form and shipping-summary positions require the relevant shipping flow. A virtual-only cart does not show shipping controls. Themes may move the same native action into another checkout step.

Verify and disable

Check the intended position on the storefront, then leave that editor empty and save: its content should disappear. Disable the module and save to stop all its insertions while retaining the configured content.

Also change a billing address or shipping selection to refresh the summary. The fragment should remain in the correct location without accumulating duplicate copies. No order needs to be placed to verify display.

If content is missing, confirm the module is enabled, the editor is populated, the shortcode exists and the current template executes the selected action. If HTML appears in the wrong location, check the surrounding table or block markup. Clear any relevant page cache after changing cached content.

Related: Add content around the product and Browse modern tweaks.