INDEPENDENT WEBSITE SUPPORT · NORTHERN IRELANDPlain answers. Work done properly.

Resources · Article

WooCommerce Guest Orders Not Showing in My Account? What Changed in WooCommerce 11.0

By THEED REWORK.CO · Published 25 August 2026

Updated 30 August 2026

If a customer creates a WooCommerce account and their older guest orders are missing from My Account, the answer to this changed in WooCommerce 11.0.

Before 11.0, WooCommerce generally didn’t go back and attach old guest orders just because the billing email matched a customer account. That’s why there are years of support answers, plugins and PHP snippets telling you how to do it yourself.

WooCommerce 11.0 added a native way to handle it. Once the customer confirms ownership of the email address on their account, WooCommerce can find matching past guest orders and link them to that account. WooCommerce lists the ability for customers to claim previous guest checkout orders as one of the main changes in 11.0.

So if you’re looking at an older tutorial telling you WooCommerce can’t do this, check which version of WooCommerce you’re actually running before you start adding code to functions.php.

What changed in WooCommerce 11.0?

The problem was fairly simple. Someone could place an order as a guest, create a customer account later using the same email address, then open My Account > Orders and find that their previous purchase wasn’t there.

WooCommerce 11.0 added the missing part. A customer can now confirm that they own the email address on their account, and WooCommerce can link matching past guest orders to it.

WooCommerce now has dedicated documentation for the customer email confirmation and guest order linking process.

The important bit is that WooCommerce doesn’t just assume an order belongs to somebody because the email addresses happen to match. The customer has to confirm the email first.

How guest-order linking works now

For an unconfirmed customer, the process starts under My Account > Orders.

WooCommerce shows a message asking them to confirm their email address. They select Confirm email address, and WooCommerce sends a one-time confirmation link to the email address currently attached to the account.

The link lasts for 24 hours. When the customer opens it, they also need to be logged into the same WooCommerce account that requested the confirmation. If they’re logged out, WooCommerce asks them to sign in first. If they’re logged into a different account, it refuses the confirmation. The confirmation link itself does not log the customer in.

Once the email is confirmed, WooCommerce checks for matching guest orders and links the ones that qualify to the account.

Looking at the actual WooCommerce 11.0.1 code, this isn’t just a display trick that makes the orders appear under My Account. WooCommerce finds the matching orders using its order API, sets the customer ID on each order and saves it. If an order contains downloadable products, it also rebuilds the relevant download permissions.

So these really do become customer-linked orders.

Which previous orders will WooCommerce link?

WooCommerce is looking for two things:

  • The order is still assigned to Guest.
  • The billing email on the order matches the customer’s current account email.

Orders already assigned to another registered customer aren’t moved.

That’s an important distinction.

If you’re troubleshooting an old order and the billing email looks right but the order still doesn’t appear, check the Customer field on the order itself. If it already belongs to another account, the new guest-order linking process isn’t going to take it away from that account.

Changing the email address on the customer account matters as well. WooCommerce stores the email address that was actually confirmed rather than just a simple yes or no flag. If the account email later changes, the previous confirmation no longer applies and the new address needs confirmed separately.

Why does WooCommerce make the customer confirm their email?

Because an email address entered during guest checkout isn’t proof on its own.

It could be right, it could have been mistyped, or it could be an address used by more than one person. Matching an email address is useful, but WooCommerce doesn’t treat that match alone as enough reason to start attaching old orders to an account.

The customer needs access to the email inbox and the correct WooCommerce account before the confirmation can complete. The one-time link is tied to that account and its current email, expires after 24 hours and doesn’t create a login session itself.

There is another detail here that might look odd at first.

WooCommerce shows the email confirmation prompt to an unconfirmed customer whether matching guest orders exist or not. That’s deliberate. If it only showed the message when old orders had been found, the message itself would reveal that there was order history for that email address before the customer had proved they controlled it.

Guest-order linking is not the same as guest order email verification

WooCommerce now has two different email checks that can sound like they’re doing the same thing.

Historical guest-order linking Guest order payment verification
What is it for? Adding matching past guest orders to a customer account Protecting access to an individual guest order payment page
Does the customer need an account? Yes No
Does it link the order to My Account? Yes, if the order is eligible No
What is being confirmed? The customer’s current account email The billing email on that individual guest order
Where does it happen? My Account > Orders A guest order payment link
Main purpose Recovering past order history Protecting private order and payment information

The second system is used when somebody follows a payment link for a guest order. If enough time has passed since the order was created, WooCommerce can ask them to enter the billing email before showing the payment form.

That check does not attach the order to a customer account. WooCommerce now specifically points this out in its Paying for Orders documentation.

So if a customer has verified the billing email to access one individual guest order, don’t assume they’ve completed the new account confirmation process as well. They’re two different things.

Why older tutorials still tell you to add code

Because before WooCommerce 11.0, a lot of that advice was right.

You’ll still find older support answers and tutorials telling you to manually assign the order to the customer, install a plugin, run a script or add PHP that finds guest orders by billing email and changes the customer association.

Those articles weren’t necessarily wrong when they were written.

WooCommerce changed.

That’s the bit I’d check before removing or adding anything. If a snippet was written to solve something WooCommerce genuinely didn’t do at the time, that doesn’t suddenly make the original advice bad. It does mean I wouldn’t automatically paste it into a WooCommerce 11 shop.

Some older snippets use WooCommerce functions and APIs. Others directly change things such as the old _customer_user order meta.

Those aren’t the same thing.

WooCommerce’s current native process uses its order APIs, loads the order, sets the customer ID and saves it properly.

I’d be particularly careful with an old snippet that directly updates order post meta on a current shop using HPOS. That code may have been written around the old WordPress posts-table storage model, so I wouldn’t assume it’s still the right answer without checking it first.

There’s also the verification side.

A simple script that finds every guest order with a matching billing email and assigns it to a user can skip the ownership check WooCommerce deliberately added to the new system.

That doesn’t make every old snippet dangerous. It just means you should know why you’re bypassing the native process before you do it.

Guest orders still not showing? This is what I’d check

Check the WooCommerce version. The native customer email confirmation and guest-order linking flow arrived in WooCommerce 11.0. If the shop is still on an older version, this process isn’t available.

Check whether the missing order is actually still a guest order. Open the order and look at the Customer field. If it already belongs to another registered customer, WooCommerce won’t move it.

Compare the billing email with the account email. The billing email on the guest order needs to match the customer’s current account email. Don’t just compare the customer’s name. The email is what matters here.

Check whether the customer has confirmed the email. An unconfirmed customer normally sees the confirmation option under My Account > Orders.

There is one exception worth knowing about. WooCommerce doesn’t show a second confirmation prompt while an account is still using a temporary password. Completing the emailed set-password process confirms the address, and completing a later password reset also confirms the customer’s current account email.

Check the confirmation link isn’t old. It lasts for 24 hours. If it has expired or is invalid, the customer can request another one from My Account > Orders.

Make sure they’re logged into the right account. If the customer opens the link while logged into a different account, WooCommerce refuses the confirmation. If they’re logged out, they need to sign in to the account that requested it first.

Check whether the account email has changed. A previous confirmation doesn’t carry over to a new email address. The new address needs confirmed separately.

If the confirmation email never arrives, check the email side before changing order data. WooCommerce now has a separate Confirm email address transactional email under WooCommerce > Settings > Emails. Make sure that’s enabled and then troubleshoot it like any other WooCommerce email problem.

If all of that looks right, then I’d start checking customisations. Themes, My Account template overrides, account plugins and older order-linking snippets can all interfere with the normal flow. That’s where I’d want to know what’s actually running on the site before changing anything.

Turning off customer email confirmation

There are two settings here and they aren’t quite the same thing.

The actual Customer email confirmation feature is under WooCommerce > Settings > Accounts & Privacy. This controls whether customers can confirm their account email and link matching past guest orders.

There is also a separate Confirm email address transactional email under WooCommerce > Settings > Emails. That controls the email WooCommerce sends with the one-time confirmation link.

WooCommerce 11.0 had a bug here. Disabling the Confirm email address email could stop the email being sent while the confirmation prompt still remained under My Account > Orders.

WooCommerce confirmed that as core issue #67879. A fix was merged in PR #67993 and backported to the WooCommerce 11.1 release branch. The fix is scheduled for WooCommerce 11.1, which has not been publicly released yet.

The fix makes the My Account confirmation prompt respect the status of the Confirm email address notification. Once the fix is running on the shop, disabling that email also removes the confirmation notice from My Account > Orders.

Stores still running WooCommerce 11.0.x may continue to see the notice even when the email itself has been disabled.

So if you’re seeing that on WooCommerce 11.0.x, I wouldn’t start changing the theme to get rid of it. Check the WooCommerce version first.

Store owners can confirm an email manually

WooCommerce 11.0 also adds a control to the customer’s WordPress user profile.

A user with the manage_woocommerce capability can open the customer profile and mark Email address confirmed. Doing that confirms the customer’s current email and immediately links any matching past guest orders.

The confirmation can also be cleared again later. Clearing it resets the confirmation status, but it doesn’t detach orders that have already been linked.

I wouldn’t use that as the normal customer flow, but it’s useful when you’re troubleshooting a genuine account issue and you know what you’re changing.

A couple of developer details

When WooCommerce confirms a customer’s email, it fires woocommerce_customer_email_verified. Core attaches the existing wc_update_new_customer_past_orders() function to that action to handle the guest-order linking.

Each order linked by that function also fires woocommerce_update_new_customer_past_order.

One limitation has already come up for developers using other email-verification plugins. The current EmailVerificationService::is_verified() check doesn’t provide a filter for another extension to alter the result, and there is an open WooCommerce enhancement request asking for better integration points.

One thing I wouldn’t assume is that this feature covers every possible guest-order workflow.

It’s specifically built around linking past matching guest orders when an account email becomes verified. If a shop needs future guest checkouts to keep being automatically attached to an existing account, I’d test that exact workflow separately rather than assuming this feature covers it.

That may still be a perfectly valid reason for custom functionality.

Does creating a WooCommerce account automatically add old guest orders?

Not just because the account exists.

The important step is confirming ownership of the account email. Depending on how the account was created, that can happen through the WooCommerce confirmation process or through an emailed password setup/reset flow. Once the current email is confirmed, WooCommerce can link eligible past guest orders using that billing email.

Will WooCommerce move an order from another customer’s account?

No.

The new process looks for orders that are still assigned to Guest. An order already linked to another registered customer is left where it is.

Do I still need a plugin or custom PHP to link guest orders?

For the normal problem of a customer wanting their older guest orders to appear in their account, not necessarily anymore.

If the shop is running WooCommerce 11.0 or newer, I’d check the native confirmation flow first.

There are still cases where custom behaviour might make sense. Bulk migrations, unusual account systems, existing CRM relationships or a shop that wants future guest checkouts continually matched to existing customers may need something different.

But custom PHP shouldn’t be the first answer anymore just because that’s what an older search result says.

If the normal WooCommerce process does what the shop needs, I’d rather leave WooCommerce to handle it. It already knows how its orders are stored, it already has the email confirmation step, and there’s a lot less to go wrong than maintaining another piece of code that doesn’t need to be there.