In WooCommerce the thank-you page is the order-received endpoint inside the checkout page, and you can change it four ways: hooks, a template override, the site editor in a block theme or a plugin. Below: when to pick which, and the mistakes that come up most often.
How the WooCommerce order page works
After payment the customer lands on an address like /checkout/order-received/1234/?key=wc_order_…. There is no separate WordPress page for it: WooCommerce prints the content inside the checkout page. The key parameter protects the order: without it, other people's data isn't shown.
Hence the first rule: don't create a "Thank you" page by hand, and don't set up a hard redirect to it that drops the order number and key. Otherwise the order details disappear, and so do the analytics events that rely on order data.
Method 1. Hooks
The most reliable option for a developer. The woocommerce_thankyou hook fires on the order page and receives the order ID. Use it to add a text block, a coupon, instructions or a widget. There are also hooks for a specific payment method, for example woocommerce_thankyou_bacs for bank transfers.
Put the code in a snippet plugin or a child theme, never in parent theme files: they get overwritten on update. Inside the hook, get the order with wc_get_order and check its status: the page can be opened for an unpaid order too.
Method 2. Template override
Copy the checkout/thankyou.php template into the woocommerce folder of a child theme and edit it as needed. This lets you change the markup completely. The downside: when WooCommerce updates, the template may change and your copy goes out of date. WooCommerce lists outdated templates under WooCommerce → Status → System Status, so check it after updates.
Method 3. The site editor in a block theme
If your store uses a block theme and the block-based checkout, the confirmation page is edited as the Order Confirmation template in the site editor (Appearance → Editor → Templates). It offers status, summary, order contents and address blocks that you can rearrange without code.
The limit: custom logic, such as different content for different payment methods, still needs code or a plugin.
Method 4. Plugins
Plugins are convenient when you need a ready-made feature: a one-click upsell, a coupon, different pages by product or category. The WooCommerce and WordPress.org directories have thank-you page builders, upsell plugins and plugins that add individual blocks.
- Builders: rebuild the whole page and add coupons and product blocks.
- Post-purchase upsell plugins: add a product to the order, often only for certain payment gateways.
- Partner offer plugins: show offers from other companies and pay the store for results.
- Analytics and review plugins: add a survey, a review request or pixels.
Which method to choose
| Goal | Best method |
|---|---|
| Add some text or a block | A hook or a block in the site editor |
| A completely different design | A template in a child theme or the site editor |
| One-click upsell | A plugin compatible with your payment gateway |
| Different content by payment method | woocommerce_thankyou_<method> hooks |
| Revenue from every order without your own products | A partner offers plugin |
Common mistakes
- Redirecting to your own page without the order number and key: details and analytics disappear.
- Code in the parent theme: it vanishes on update.
- Several plugins that each change the page: blocks duplicate or conflict.
- Heavy scripts: the page loads slower and conversion pixels don't get to fire.
- Caching the order page: the customer sees someone else's order or an old one. Exclude order-received from the cache.
- The purchase event is sent on every page refresh.
Checks after changes
- A test order with every payment method, including bank transfer and a canceled payment.
- A phone check: no horizontal scrolling, the order number visible on the first screen.
- Page refresh: the purchase event isn't duplicated in analytics.
- Incognito mode: without the order key, no data is shown.
- WooCommerce System Status: no outdated templates.
Example: custom text for bank transfers
A common task is reminding the customer of the payment deadline for a bank transfer. Through the woocommerce_thankyou_bacs hook you print a paragraph like "We'll hold your order for 3 days. Once the transfer arrives, we'll email you and ship the order." WooCommerce already shows the bank details itself, so don't duplicate them.
A similar approach prints pickup instructions: in the hook, check the order's shipping method and show the pickup point address and opening hours. Short texts like these save support a lot of repetitive replies.
Performance and caching
The order page is personal and must never be served from a shared cache. Most caching plugins exclude cart and checkout pages automatically, but check this by hand, especially if you use hosting-level caching or a CDN.
Every plugin that adds a block to this page brings its own scripts and styles. With many blocks, loading slows down noticeably on phones. Keep only the ones you need and check the page in your browser's developer tools.
Analytics on the order page
The thank-you page is where purchases are usually recorded in analytics and ad accounts. If you change it in a way that removes the standard hooks, pixels may stop firing. After any edit, place a test order and check that the purchase event arrived once and with the right amount.
Ad-network pixels that receive the customer's email or phone number for matching require the customer's consent under cookie and GDPR rules. Check that your consent banner blocks them until consent is given.
A block that earns revenue
If you want the page to earn as well as confirm the order, the ThanklyClub plugin adds 1–3 partner gifts to it and to the order confirmation email. It uses standard hooks and needs no template edits.
FAQ
Where is the WooCommerce thank-you page?
It is the order-received endpoint of the checkout page, and there is no separate page in the WordPress pages list. You change the endpoint address under WooCommerce → Settings → Advanced.
How do I add my own text to the WooCommerce thank-you page?
Through the woocommerce_thankyou hook in a child theme or snippet plugin, through a block in the site editor on a block theme, or through a builder plugin.
Can I make different thank-you pages for different products?
Yes, through a plugin with rules by product and category, or through your own code that checks the order contents in the hook.
Why are conversions on my thank-you page counted twice?
The event is sent every time the page opens. Save a flag on the order that the event was already sent, or use server-side tracking.
Connect your store in 5 minutes
The plugin is free. You get 60% of the partner payout for every new customer.



