WooCommerce CRO Technique

Where delivery, shipping cost and returns should go on a WooCommerce product page

This technique places delivery timing, shipping cost and a plain-English returns line directly in the product-page buy area, close to the price and Add to Cart control, instead of making shoppers hunt in tabs, banners or the footer.

Summary

Bottom Line: Put delivery, shipping cost and returns inside the WooCommerce buy area itself — ideally grouped around the Add to Cart control — not buried in tabs, banners or the footer alone.

  • The right placement is the buy box, not just a footer link: Baymard’s product-page research says shipping cost belongs on the PDP near the buy section, and return-policy copy or a link should be in the main product content as well as the footer.
  • “Delivery by Tuesday 9 June” is usually clearer than “ships in 2 business days”, because shoppers care when the order arrives, not how the merchant labels transit speed.
  • If you can calculate a mandatory delivery charge, UK pricing guidance says it should be included up front; if you cannot, you must still give shoppers prominent information to work it out, and for delivery options you should show the cheapest delivery choice until they pick another one.
  • In WooCommerce, the lightest-touch implementation is usually either a hook-based microcopy block on classic templates or a native block inserted in the Single Product template in the Site Editor for block themes.
  • Exact delivery dates only help if they are believable: Baymard found shoppers treat dates as a promise, so cut-offs, weekends, holidays, backorders and destination rules must be accounted for before you show one.

How To Implement

  • Define the minimum promise before you touch the page

    Decide what you can honestly show for standard delivery on the PDP: an exact cost, a “from” cost, a country-aware estimate, or a tight delivery window. UK CMA guidance says that if a mandatory delivery charge can reasonably be calculated, it should be included in the total price up front; if it cannot, you still need to give shoppers enough prominent information to calculate it, placed next to the price information they can already see.

  • Set the message hierarchy for the buy area

    For most stores, the cleanest stack is: delivery date/windowshipping cost / threshold / destination notereturns line with policy link. Baymard’s product-page guidance is clear that shipping cost belongs somewhere on the product page, close enough to help shoppers assess total order cost before adding to basket, and that returns copy or a link should also sit in the main product content, not just the footer.

  • Choose the exact placement around the CTA

    The practical default is either directly above the Add to Cart area or directly below the Add to Cart button, keeping all three lines visually tied to the buy decision. Baymard explicitly recommends showing shipping cost near the “Buy” section, and its return-policy guidance says the return-policy summary or link should be displayed prominently on the main product page.

  • If you run a classic WooCommerce theme, start with a hook, not a template override

    The safest implementation for buy-box microcopy is usually a child-theme or snippets-plugin action on woocommerce_after_add_to_cart_button, which exists in classic add-to-cart templates and is also listed in the current code reference for the newer AddToCartWithOptions renderer. Woo developer docs say hooks are generally more robust than overriding templates, because template overrides have to be kept up to date with core changes. Also avoid editing the parent theme or WooCommerce core files directly.

  • Only use a template override when the layout genuinely needs it

    If you must change the visual structure of the buy area, use a child-theme override in /woocommerce/ rather than editing plugin files, and remember that override files need ongoing maintenance when core templates change. Woo’s classic-theme handbook explicitly warns that template overrides are heavier-maintenance than hook-based changes.

  • If you run a block theme, use the Single Product template in the Site Editor

    Go to Appearance → Editor → Templates → WooCommerce → Single Product, then add a native Paragraph, List, Group or similar block next to the product summary / Add to Cart area. WooCommerce’s Single Product template docs confirm that pricing, summary and Add to Cart live in the editable block template, and the blocks docs note that you need a block theme to use the Site Editor for template customisation.

  • Treat the Add to Cart + Options block as version-sensitive

    WooCommerce docs say the Add to Cart + Options block was introduced in WooCommerce 10.0 and is still labelled Beta in the docs, even though the current stable tag is WooCommerce 10.8.1 and the hooks reference shows woocommerce_after_add_to_cart_button in AddToCartWithOptions.php. On staging, confirm the block is not developer-locked in your theme and that your chosen placement survives variation changes, sold-individually products and mobile layouts.

  • For exact delivery dates, use rule-based logic, not hand-written text

    Baymard’s delivery-date research shows shoppers treat delivery dates as a promise and recommends calculated delivery dates that account for order-processing time, cut-offs, weekends and holidays. If your date varies by product, stock, country, zone or method, use an extension rather than hard-coding text. An official Woo Marketplace example is Estimated Order Delivery and Pickup Date, configured at WooCommerce → Settings → Estimated Delivery Date and WooCommerce → Estimated Delivery Rules → Add New Rule; its docs say it can display on the Single Product Page, target product/category/shipping country/zone/method, and use minimum/maximum days, cut-off time and excluded days/dates. Measurement note: before rollout, make sure GA4 already captures view_item, add_to_cart, begin_checkout, add_shipping_info and purchase, so you can compare exposed PDP sessions cleanly.

  • Prefer an arrival date or tight date window to dispatch-speed language

    Replace vague microcopy like “Ships in 2 days” with wording like “Standard delivery: by Tue 9 June” or “Estimated delivery: 9–11 June” only when your rules genuinely support it. Baymard found “delivery date” is easier for shoppers to interpret than “shipping speed”, and wide windows — especially more than about 5–7 days — create hesitation.

  • Make the returns line plain English, short and linked

    Good PDP copy is a buyer-facing summary, not the whole policy. For example: “30-day returns. Full policy and exclusions.” or “Free UK returns within 30 days. See policy.” Baymard says the link or summary should be prominent on the product page and understandable to the average user; it also warns against hiding this behind a generic “Help” label or clever wording that shoppers will not scan for. For UK stores, keep statutory rights accurate: GOV.UK says distance sellers must tell customers about their cancellation right up to 14 days after delivery, and a retailer must not mislead customers about their refund rights.

  • Add country-aware messaging only where it materially changes the promise

    WooCommerce can geolocate customers from WooCommerce → Settings → General → Default customer location using Geolocate or Geolocate (with page caching support), and shipping zones determine which methods and rates a customer sees based on address matching. Use that to swap the destination note, cheapest standard shipping at a zone level, or free-shipping threshold — but always state the basis of the estimate, and let shoppers override it if needed. Baymard also notes that if live carrier APIs are too heavy for every PDP view, use a precomputed estimate rather than a slow live call.

  • QA the edge cases before publishing

    Test simple products, variable products, bulky items with surcharges, local pickup, international destinations, pre-orders, backorders and holiday cut-off periods. Static PDP copy does not create an HPOS issue on its own, because HPOS concerns order storage, not front-end product-page text; however, if your delivery extension writes data into orders, emails or checkout, verify current extension compatibility in staging because Woo says incompatible extensions are flagged when HPOS is enabled, and HPOS has been the default for new installs since WooCommerce 8.2.

How To Measure

The primary KPI is add-to-cart rate from PDP visits, read as add_to_cart relative to view_item for the treated product pages. Secondary KPIs are RPV, PDP conversion rate, shipping-step completion (begin_checkoutadd_shipping_info), and pre-sale support clicks on returns/shipping help links or widgets. Google recommends view_item, add_to_cart, begin_checkout, add_shipping_info and purchase as ecommerce events, and those events populate ecommerce reporting in GA4.

In GA4, read the result in an Exploration or report set filtered to the changed PDP URLs only, ideally restricted to physical, in-stock products and split by country/zone, device, and new vs returning users if the messaging is destination-aware. Use the Landing page report or an Exploration filtered to PDP landing paths for PDP conversion and RPV, and a funnel built from view_itemadd_to_cartbegin_checkoutadd_shipping_infopurchase for downstream completion.

For support behaviour, create a GA4 custom event for clicks on the returns link, delivery-estimate explainer or support widget entry point, for example returns_policy_click, shipping_info_click or a broader support_click_shipping_returns. GA4 supports custom events for interactions that matter to your business but are not already covered by recommended events.

What success looks like — higher add_to_cart per view_item on treated PDPs, stable or improved checkout completion and purchase rate, and fewer support/help clicks driven by basic delivery or returns questions. Because this technique reduces uncertainty rather than changing offer economics, look for a cleaner upstream funnel before you expect a large AOV change.

Guardrail metricsAOV, overall conversion rate, checkout completion, and PDP LCP/INP/CLS must not get worse. If you add geolocation, API lookups or a heavyweight estimator widget, watch real-user Core Web Vitals on the treated PDPs; web.dev notes that field measurement is the right way to judge Core Web Vitals because real-user conditions vary.

Pitfalls

  • Myth: a sitewide free-shipping banner does the job. Baymard found that banner-only or header-only free-shipping messages are often missed, and they are not substitutes for direct shipping information on the product page.
  • Myth: the footer is enough. Baymard found a real subgroup goes straight to the footer for shipping/returns, so the footer still matters, but the same research also says that product-page content must carry this information too. In other words: main product content and footer, not either/or.
  • Mistake: using “ships in 2 days” when the shopper actually needs an arrival date. Baymard’s research shows users stop to do mental maths when they only see shipping speed, and that clarity improves when the wording answers “When will I receive my order?” directly.
  • Mistake: promising an exact date without cut-offs, holidays, stock status or destination logic. Baymard says shoppers treat delivery dates as promises, so inaccurate dates may help a click today and hurt trust tomorrow.
  • Mistake: putting a single generic message on all variations or backorders. If one variation is backordered or one destination is slower, a store-wide static line can mislead. Use stock-status-aware or shipping-rule-aware messages where needed. Official Woo delivery-date extensions explicitly support product/category/shipping-country/zone logic and different messages by stock status.
  • Mistake: using vague labels like “Help” instead of “Returns policy” or “Shipping info”. Baymard says shoppers scan for those keywords specifically.
  • Mistake: hiding mandatory calculable delivery charges until later. UK CMA guidance says mandatory charges should be shown up front when reasonably calculable, and if not calculable yet, customers still need enough prominent information to work out the total price.
  • Mistake: letting the PDP copy conflict with UK statutory rights. GOV.UK says online customers generally have a 14-day cancellation period after delivery for distance sales, and retailers must not mislead shoppers about refund rights. Your voluntary returns promise should sit alongside, not replace, those rights.

Examples

FAQs

Sources & Further Reading

Want us to implement this for you?

We run measured CRO consultancy for WooCommerce. If you want help prioritising, testing & implementing these improvements, tell us about your store.

Book Pilot

About This Page

  • Written By: Eliot Webb – Founder & WooCommerce CRO Consultant
  • Last Reviewed: 5 Jun 2026
  • Last Updated: