The My Account page opens, but clicking Orders, Downloads, Addresses or Account details gives Page not found. Or the Lost password link 404s, or customers pay and land on a 404 instead of the Order received thank-you page. These are WooCommerce endpoints: extra addresses added to the end of a page, such as /my-account/orders/. Two checks tell you whether WordPress forgot those addresses or the page they hang off is set wrong.
In WordPress, go to Settings > Permalinks and click Save Changes without changing anything. This rebuilds the list of addresses WordPress knows, including every WooCommerce endpoint. Then open the broken link again in a private window. If it works now, the list had gone stale, usually after a plugin update, a site move or a change to the account page's slug. If it still 404s, go to Check 2.
Go to WooCommerce > Settings > Advanced. Under Page setup, My account page and Checkout page must point at the real, published pages, not a deleted copy or a draft. Below that, under Account endpoints and Checkout endpoints, each box (orders, downloads, edit-address, lost-password, order-received) must hold a plain word. An empty box, a space, or two endpoints using the same word all break that link. Then open the My Account page in the editor: it must contain the My account block or the [woocommerce_my_account] shortcode. A page builder layout with only a login form does not draw the endpoints.
| What you see | Cause | Fix |
|---|---|---|
| Works after saving permalinks | Stale rewrite rules after an update, a migration, or renaming the account page | Nothing more; save permalinks again after the next site move |
| Every account tab 404s, the dashboard works | My account page in Advanced settings points at an old or duplicate page | Pick the real page, save, then save permalinks |
| One tab 404s | Its endpoint box is empty, or another endpoint or a page uses the same word | Restore the default word (for example orders) or rename the clashing page |
| Tabs open but show the dashboard text only | The page uses a builder login widget instead of the My account block or shortcode | Put the block or [woocommerce_my_account] on the page |
| Order received 404 after paying | Checkout page setting wrong, or the order-received endpoint cleared, or the checkout page is a child page that was moved | Fix the Checkout page and endpoint, save permalinks; orders were taken, check them in WooCommerce > Orders |
| 404 only on the live site, fine on staging | A security or redirect plugin, or a server rule, catching addresses it does not know | Exclude /my-account/ and /checkout/ from the plugin's rules |
| 404 only in another language | A translation plugin translated the page slug but not the endpoints | Translate the endpoints in the translation plugin's WooCommerce settings, then save permalinks |
Plain permalinks setting (?p=123) | Endpoints need pretty permalinks to make tidy addresses | Choose Post name, save, and set a redirect from any old addresses that were shared |
Log in as a test customer in a private window and click every tab on My Account, then log out and use Lost password. Place one test order (cash on delivery or the gateway's test mode) and confirm it lands on the Order received page with the order number. Clear the site and host cache afterwards so no one is served the old 404.
If you would rather someone else finds why the account pages 404 and fixes it, that is what the box below is for. Related: pages show 404, checkout not working, login keeps sending you back.