Update 2023-12-01: The dedicated Legacy REST API extension is now available. See the announcement post.
Update 2023-10-27: This post has been extended to include information about legacy webhooks.
The details
WooCommerce 2.6, which was released back in 2016, included a new REST API based on the WordPress JSON API. That made the old (now referred to as “Legacy”) REST API obsolete, and we have documented it as being deprecated since then. In fact, it needs to be explicitly enabled from the admin area for it to be usable.
We have decided that the Legacy REST API will be removed from WooCommerce as of version WooCommerce 9.0, scheduled to be released in June 2024. However, we will offer a separate WooCommerce extension that will include all the removed code for sites that still need it.
For all practical purposes, having the new extension installed and activated in WooCommerce 9.0 and newer versions will be functionally equivalent to having the Legacy REST API enabled in WooCommerce 8.9 and older versions: nothing will change for clients of the API, and the same client keys will continue working.
Additionally, webhooks configured to use the Legacy REST API to compose their payloads (referred to as “legacy webhooks” in this post) will stop working starting with WooCommerce 9.0 unless the new extension is installed.
Why this change?
We are continuously working on improving the WooCommerce experience for both users and developers. As part of that, we sometimes need to do some cleanup. Removing the Legacy REST API — whose usage we have been discouraging for the past few years — will make the WooCommerce release package lighter and will hopefully also help make the WooCommerce REST API easier to understand.
How can I tell if this affects me?
This change affects you if at least one of the following is true (or you anticipate that it will be true by the time of the WooCommerce 9.0 release) for your site :
To check if the Legacy REST API is enabled, go to WooCommerce > Settings > Advanced > Legacy API. The “Enable the legacy REST API” box below being checked means that the Legacy REST API is enabled.
- You have legacy webhooks in your WooCommerce install.
To check if you have legacy webhooks in your store, go to WooCommerce > Settings > Advanced > Webhooks. Starting with WooCommerce 8.3 you will see a “Legacy” section with a count of how many of such webhooks exist in your site.
If you have WooCommerce 8.2 or an older version, you will need to check every webhook individually. Click on the webhook name to open its details page, a legacy webhook will have “Legacy API v3 (deprecated)” as the value for the API Version setting.
If any of these applies to you, your site will need to have the new extension installed so that applications communicating with your site via the Legacy REST API aren’t affected, and legacy webhooks continue working. Ideally, this should happen before your server gets upgraded to WooCommerce 9.0 to avoid any disruptions.
WooCommerce 8.3 will also add dismissible warning notices in sites that either have the Legacy REST API enabled or have legacy webhooks.
What action should I take?
If you anticipate that you’ll still need to have the Legacy REST API enabled when WooCommerce 9.0 is released, the recommended action is to install the new extension as soon as it’s available. We will announce the availability of the new extension in this blog.
Can I install the upcoming extension before WC 9.0 is released?
It will be safe to install the new extension at any time before WooCommerce 9.0 is released. This is due to the fact that as long as the extension detects that the WooCommerce version currently running in your server still has the Legacy REST API in place, it won’t initialize itself as to not interfere with the built-in code.
Can I rely on the new extension to support the Legacy API forever?
Please note that the new extension will not be maintained indefinitely, so we would strongly encourage you to update any systems that rely on the Legacy API or on legacy webhooks and migrate to the current REST API instead. If you are using a third party product or service, consider contacting their team about this.
Tell us what you think
We are considering automatic installation of the new extension as part of the upgrade to WooCommerce 9.0 on sites that have the Legacy REST API enabled or have legacy webhooks, but that’s something we need to explore further. Comment on this post and let us know if this is something you feel would benefit you.
70 replies on “The Legacy REST API will move to a dedicated extension in WooCommerce 9.0”
Big change here i think. A notice upon install and upgrade of the latest version about the Legacy API or automatic installation is probably a good idea. I have a lot customer still using the Legacy API for shipping integration etc.
LikeLike
Thanks for your comment. You are absolutely right, the good news is that we already thought of that and a warning notice pointing to this post will land in WooCommerce 8.3: https://github.com/woocommerce/woocommerce/pull/40535
LikeLike
Awesome 😀
LikeLike
Are you able to share details on any known integrations with the Legacy API? We’d love to reach out to those developers and try to get them moved over to the modern APIs.
LikeLike
We use Delhivery shipping service in India to integrate our shipping service which required legacy API
LikeLiked by 1 person
https://extensiv.com/ Still uses the legacy REST API to integrate with WooCommerce.
LikeLiked by 2 people
awkwardstyles.com print on demand still uses Legacy API for its integration
LikeLike
I remember seeing a note on Slack that the Legacy Rest API is not HPOS compatible. Am I right that Legacy REST API won’t work with HPOS?
LikeLike
The legacy REST API has been deprecated for a considerable length of time (around 7 years) and so, quite naturally, we did not prioritize it while testing HPOS.
It should however work so long as you keep Compatibility Mode enabled—but the best advice we can offer is to migrate away from it, and adopt the currently supported version of the REST API instead.
LikeLiked by 3 people
Am I right in understanding that the Legacy REST API is not HPOS compatible?
LikeLike
I have the Legacy API enabled on my site, but I have no idea why, or what might be using it. Is there any way to tell?
LikeLiked by 2 people
Yes, the article was poorly written; I have the same question. I had one webhook that I no longer use, so I don’t know if that means I don’t need the legacy api or what.
LikeLike
Hi, there is a section titled “How can I tell if this affects me?”.
Specifically, it mentions you could be affected if:
To check if the Legacy REST API is enabled, go to WooCommerce > Settings > Advanced > Legacy API. The “Enable the legacy REST API” box below being checked means that the Legacy REST API is enabled.
You have legacy webhooks in your WooCommerce install.
To check if you have legacy webhooks in your store, go to WooCommerce > Settings > Advanced > Webhooks. Starting with WooCommerce 8.3 you will see a “Legacy” section with a count of how many of such webhooks exist in your site.
If you have removed the unused legacy webhooks, then you should be good to go.
LikeLike
But it says “If any of these applies to you” so that’s why there’s a lot of questions. People, such as me, are asking YES, it’s enabled, but NO I don’t have any webhooks. The way the article is written, it means or, not and, so that’s why there’s confusion.
LikeLiked by 1 person
I’m sorry for the confusion. So, in this case, yes: you are potentially affected.
The reason I say potentially is that just because it is enabled does not mean it is actively being used—but, as you may have seen in another comment, we’re looking into ways to help determine that.
LikeLike
You just quoted the blog post the comment was on, which does not answer any more clearly. The post says “This change affects you if at least one of the following is true” – one of those things being simply having the box checked.
So how are we to know whether we can uncheck it or not? I have no webhooks and contacting support has not been terribly helpful, either. They even linked me to your comment, Stephanie.
LikeLiked by 1 person
If you have custom integrations with 3rd party providers, software, programs, then you are using this functionality. For instance, if you send woocommerce data to a subcontractor or subsupplier, or if you send woocommerce data to other programs. In other words, if you only use WooCommerce to handle these data, and have not set up automation, then you are most likely not using this feature, and can untick it.
LikeLike
I just want to clarify that we only plan to remove the legacy REST API. Most integrations should now be using the currently supported REST API, which is not going anywhere.
LikeLiked by 1 person
Same here. I never enabled it, but there it is…enabled. I’d also like to know the answer to this.
LikeLiked by 1 person
And can I just disable it, since I don’t know why it’s enabled? I don’t have any webhooks, either.
LikeLike
It seems a lot of us have the same question. Yes, I have the legacy checkbox enabled (and not by me!) and no, I don’t have any webhooks. Can I just uncheck it?
LikeLike
I also don’t know this. How can I found out if I still need it or not?
LikeLike
I also have Legacy API enabled, but all webhooks were updated recently to the latest API. So I wonder if I can safely disable the Legacy API. Anyone?
LikeLike
Great question!
We’ll give some thought to the creation of a utility that can help to detect if the legacy REST API is actually being used, as opposed to it merely being enabled.
For those who are able to look at their server access logs (sometimes this is available through web hosting control panels), you may also be able to scan them for URLs containing /wc-api/ … for example:
https://example.com/wc-api/v3/orders
These would act as an indication that one of the legacy REST APIs is still actively being used. We realize that may not be possible for everyone, though, and so—as noted—will think about some tooling to make it easier.
LikeLiked by 2 people
As suggested, I think it’s a good idea to enable (or at least a checkbox to offer) automatic installation of the new extension as part of the upgrade to WooCommerce 9.0 on sites that have the Legacy REST API enabled or have legacy webhooks. The Legacy REST API is enabled in our settings but to be honest I’m not sure why, I’m guessing one of the plugins we have required it to be enabled as the site was only built in 2020.
LikeLike
I have Woocommerce 8.3 installed and I am seeing the messages about Legacy REST API which has brought me here but when I look at Webhooks it is not showing me the All, Active, Disabled, Legacy tabs counts. I only have the 1 webhook – could this be the reason why I am not seeing the tab counts? When I check the API version of the webhook it says it is using WP REST API v3 so I am assuming this is all ok and I can safely disable Legacy REST API anyway?
LikeLike
Exactly! Suppose you have one disabled webhook, you would only see the following tabs:
All (1) | Disabled (1)
The legacy tab count will not appear at all if you do not have any legacy webhooks in place.
LikeLike
I also have no idea why my enable box is checked. I am a novice re: all website stuff (ha, ha, I don’t even know what to call it! lol) but am trying to learn as much as I can as fast as I can. I would love the extension to install automatically at this point. I have ShipStation integration, might that be why? thank you for thinking of us less experienced/more tech challenged folks!
LikeLike
I agree. As someone who is just a novice running a website, I don’t really understand this – so instructions written for people who aren’t web developers would be helpful or something automatic would be even better.
LikeLiked by 1 person
I hope this is updated automatically. I will be traveling a lot and may not notice when it becomes available.
LikeLike
My Legacy API is enabled. Then I went to the Webhooks section and saw just one, that I no longer use and deleted it. Does that mean I can disable the Legacy API? Or do things other than Webhooks depend on it? I’m a little unclear there.. Thanks!
LikeLiked by 1 person
Automatic installation of the new extension for those who have Legacy REST API enabled would be a very good idea and convenient for anyone who may not know much about website building in depth enough to set it all up.
LikeLike
I have the Legacy API enabled on my site but I am not sure what is using it, is there a way to tell
LikeLike
I have an online school (LMS) website selling one course. Woo notified me that Legacy REST API was active. I have no idea what this was about as I’m only skilled enough to copy and paste API keys from Stripe. There is a webhook secret set up between Woo and Stripe. WooCommerce> Settings> Payments> Stripe> Manage> Settings> Edit Account Keys is where my API keys and webhook secret key to Stripe is located.
I made the mistake of disabling/unchecking Legacy REST API and customers began seeing a warning: “Error processing checkout. Please try again later.” Re-enabling Legacy didn’t immediately fix the problem as I had to delete, and then reinstall the WooCommerce plugin.
I’m using a great “clean” theme called Total by WPExplorer and the LearnPress LMS plugin by ThimPress. I also had to buy a WooCommerce Payment plugin and a Stripe payment plugin from LearnPress/ThimPress so I could accept payments.
I would be grateful for the auto plugin update, but even more appreciative if someone can tell me where this Legacy REST API is located? Who should I be contacting? Is it in the LearnPress WooCommerce plugin? My Total WordPress theme?
All new to me, but no problem in learning something new. Been doing this for nearly ten years now. And just when I thought it was safe to relax for the upcoming holidays… 🙂
Frank B.
thedronecoach.io
LikeLiked by 1 person
I’m sorry to hear you experienced difficulties … 😬
From your description, it certainly sounds like there is a connection between the two things—but I’m not immediately sure why this would be. To clarify, you are not using the official WooCommerce Stripe Payment Gateway but rather a third party solution from LearnPress?
We’d love to do something like this, and are looking into it in more detail.
I’m a little unsure if I’m answering your question here, exactly, but the idea behind REST APIs is that they provide a way for two different applications on two different machines to communicate with one another.
For example, you could have an app running on your phone that ‘speaks’ to WooCommerce and asks for a list of recent orders. Or, perhaps you operate a couple of physical stores, and have existing software to manage your inventory: the developers of that software package might then use the REST API to keep the inventory on your WooCommerce-powered webstore up-to-date.
I’m simplifying a little, but perhaps that helps to illustrate? In terms of where it is ‘located’, the code supporting our REST APIs lives inside the WooCommerce plugin (but, of course, any applications which want to take advantage of it need to have some corresponding code of their own).
Just to reiterate the timeline for this change, we’re targeting WooCommerce 9.0 (provisionally slated for June 11, 2024) and we will have a new extension available in advance of that, which you can install to mitigate any risk.
LikeLiked by 1 person
Hi Barry,
Thanks for your reply. I’ve been busy reading, and somewhat comprehending, the Woo and REST API docs. And I’ve been painstakingly testing my site (in the wee hours of the morning when the Nation’s asleep) to see which plugins do what. Although I’m no where close to being able to sit in the same room as a developer, I eventually realised and corrected my problems.
I had two previously-used ThimPress ‘theme’ plugins that were no longer being used. Those may not have been the cause for my troubles but, they were still unused and present. Those plugins now deleted.
Before I began using WooCommerce two months ago, I was using a ThimPress LMS theme and a LearnPress Stripe plugin for online purchases. Between the ThimPress theme and the LearnPress Stripe checkout plugin, online purchasing, and my overall experience, was pretty awful; clunky and unstable to say the least. I noticed something wrong when I’m getting over 3,000 visitors a month yet 1-2 sales?
So two months ago, I began using the Total WordPress theme by WPExplorer and I installed WooCommerce (I have 7 Total theme licenses so I know how stable that theme is). However, I never deleted the older/previously-used Stripe payment gateway plugin. I thought I could see it wasn’t being used but yet, I was afraid to uninstall it. But I’ve since discovered this older Stripe plugin isn’t necessary, I removed it and checkout works fine.
I unchecked the Legacy REST API checkbox and no more issues or errors. Real-time purchases have been made, so no need for me to be concerned with this Legacy issue.
But I also assumed I had to buy and install the $49 WooCommerce integration plugin by LearnPress to allow my visitors to purchase my LearnPress course; a required connection between LearnPress and WooCommerce?
https://thimpress.com/product/woocommerce-add-on-for-learnpress/
I also have your WooCommerce Stripe Gateway plugin installed. And when I click on your Stripe plugin settings link, I’m taken directly to Woo> Settings> Payment tab> Stripe> Manage button> Settings. Nice one-click jump to those settings!
So I still have one more test to conduct, and that’s to see if the LearnPress WooCommerce integration plugin is required. ThimPress sells the plugin for $49 so I assumed it is a handshake or pathway between the LearnPress Buy Now button and the WooCommerce payment gateway? But, I am going to try removing it and conduct some sandbox purchasing test. Easy enough to do and my hosting provider provides backup on demand as well, which is a huge help.
Anyway, thanks again for such a detailed reply Barry, and your support at WordPress.org is phenomenal as well (they directed me to the late night reads).
Cheers!
Frank B.
thedronecoach.io
LikeLike
I agree that I think it’s a good idea to enable automatic installation of the new extension as part of the upgrade to WooCommerce 9.0 on sites that have the Legacy REST API enabled. There are many things to keep track of here and this would be helpful!
LikeLike
While automatic install of the new extension is certainly a possibility we’re exploring, I just would like to emphasize that it will be possible to manually install the extension before the Legacy REST API is removed from WooCommerce. By doing that no action will be required when your site effectively upgrades to WooCommerce 9.0. We’ll make the extension available well in advance before that happens.
LikeLike
Same here: Legacy API is enabled and I don’t know why. Would be great to get an answer from the team if there’s a way to find out what is using it if anything.
LikeLike
I found I have the Legacy REST API enabled (not sure why), and no webhooks. Since I didn’t know why this would be enabled, just for grins I disabled it. Site works just fine, including the whole ordering system.
LikeLike
Thanks for the feedback. Yes, I could test that on my staging site. Thing is: There could be a background process that then doesn’t work anymore without any obvious, immediate signs. I’ve had features fail after an update and only realized it days later. It might not be a big deal, but I would just like to know beforehand, which processes, plugins, features use this Legacy API. Because then I can specifically test that afterwards.
LikeLiked by 1 person
Good point!
LikeLike
Thanks for that information as I have the same situation, API is enabled, but no webhooks are shown. I’ll disable mine too
LikeLike
Noted! As covered above, we’re discussing some ways in which we might answer this question and will be sure to share what we come up with.
LikeLike
I use the Printful integration which currently uses the legacy API. I have emailed them about the change but someone asked above for a list, so now you know as well!
Also, it would be great to have the updated version of WooCommerce automatically come with the needed extension upon install. Just putting in my vote 🙂
LikeLike
Thank you for sharing!
Appreciated—we’re looking into this possibility.
LikeLike
SERIOUSLY WOOCOMMERCE I DON’T WANT TO SPEND ALL AFTERNOON LEARNING ABOUT WHAT A LEGACY API IS, WHAT IT DOES, WHY THE BOX THAT I’VE NEVER SEEN BEFORE IS CHECKED, AND WHETHER MY SITE IS GOING TO CRASH ON YOUR NEXT AUTOMATIC UPDATE! ARRRRGGGGHHHHH!!! YOUR “INFORMATION” IS JUST DREADFUL TORMENT.
LikeLike
We’ll definitely do what we can to make this as safe and easy as possible.
Our apologies if the post was not initially clear enough—I’ve posted answers to various questions in the comments that will hopefully provide some additional clarity.
LikeLike
WooCommerce successfully added a notice about the removal of the Legacy API in WooCommerce 9.0. Is it possible to add a notice when the dedicated extension is released? On the one hand, it would seem that, as adults, we’re capable of checking the blog from time to time. On the other hand, many of us are managing multiple projects and, even though I have a tickler to check the blog occasionally, I can imagine this slipping through the cracks.
LikeLike
That’s a great idea. We’re definitely keen to take whatever steps we can to make this as easy as possible.
LikeLike
I am using the Legacy API for Gelato integration. Also vote for automatic plugin install where the API is enabled.
LikeLiked by 1 person
I am not sure if this is part of this
First: Legacy API enabled (I cannot remember enabling this)
Webhooks- NONE
Go to Woocommerce/Settings/Advanced/Features
In my case:
Order data storage is locked to – WordPress posts storage (legacy)
Checked WordPress posts storage (legacy) (LOCKED)
Unavailable High-performance order storage (recommended)
Unchecked Enable compatibility mode (synchronises orders to the posts table).
Is this affected by this change?
What is your recommendation?
LikeLike
The two things are unrelated: the reason you cannot enable HPOS (High-Performance Order Storage) is simply that the noted plugins are not compatible—this is unconnected to the Legacy REST API.
…By the way, the current version of WooCommerce Bookings should actually be compatible: perhaps you need an update?
LikeLike
I am in the same position as many here, the Legacy REST API in enabled on my site and I have no webhooks. However, I also didn’t enable it myself and don’t know what is using it or why.
I am a big novice when it comes to web development and while I’ve learned a lot in the past 3 years I really know very little about the behind-the-scenes stuff. I can do what is recommended by support, but don’t usually understand the process or why.
The automatic installation would be fab, because I have no idea how to do it, nor even what it does.
LikeLike
FWIW, I went ahead and unchecked the box, and haven’t noticed any issues. Orders are still being placed without problem, so I guess it’s ok.
LikeLiked by 1 person
Do you use PayPal Standard on the Payments tab? I’m hoping yes so that I can feel more comfortable unchecking the box.
LikeLike
I’d love the automated install if possible 🙂 Thanks!
LikeLike
The automatic install with the new version would be greatly appreciated.
Robbie
LikeLike
Same for me! I had some old Active Campaign web hooks that I deleted, but does that mean I can disable the Legacy API?
LikeLike
I am facing many of the same questions already raised here. My site does have the legacy Rest API enabled but there are no webhooks defined. I have seen responses that a tool may be in the works that would allow novice users that play the role of site admins to verify if this is an issue and if our site could face some issues if this is not rectified correctly. Please let me know if based on my info above, I have anything to be aware of or when said tool might be ready for us to use.
LikeLike
I have Legacy REST API enabled on all my ecommerce websites. I have no idea why it is enabled. I checked a couple of stores and there are no webhooks listed. I don’t understand any of this. I don’t know why the legacy rest api is enabled. I don’t know if it is required. I do run updates so have the most current version of Woo. The blog post seems to run right over me leaving me with more questions than answers. Can I disable it? Are there plugins that require it? How would I know if I broke something by disabling it? This is very confusion for some one who is not a developer.
LikeLike
Sorry for the confusion, Daphne. As noted in a few other comments, we’re looking into tooling that will help to answer this question and make things clearer for everyone. Stay tuned!
LikeLike
Hi,
For non-developers, this still doesn’t address whether or not we need the legacy API. I am still confused. And with legacy products, eventually, they are completely dropped. So, I am concerned about not understanding whether or not I even need it.
LikeLike
Your confusion is completely understandable, and I’m sorry my last comment wasn’t clearer.
The feedback we’ve received so far shows that, for many users, it’s hard to tell if the Legacy REST API is actually being used. After all, if it is not being used, you could simply disable it. To that end, we’re looking at some further changes to give you that information.
That work is still in progress, and its final shape may change, but our current prototype would generate admin notices looking something like this (in other words, you will get an alert telling you that the Legacy REST API is being used along with information that might tell you who or what is using it.)
Again, this is still under development, but hopefully will roll out soon.
LikeLike
(I edited my comment, as the image link was initially missing.)
LikeLike
Any timeframes of when:
1) API 9.0 will become available?
2) How long will the Legacy extension be available for before we need to transition off it?
LikeLike
Our plan is to remove the Legacy REST API in WooCommerce 9.0. That’s scheduled for June 11, 2024.
We don’t have a fixed timeline for this. However, as the article mentions, the new extension will not be maintained indefinitely—so we would strongly encourage you to update any systems that rely on the Legacy API (or on legacy webhooks) and migrate to the current REST API instead, or else contact the relevant companies and prompt them to update their code.
Also, as noted in a few other comments, we’re investigating ways of helping you to discover which services might still be accessing the legacy REST API, so you can evaluate if they are still needed and reach out to their support teams if so.
LikeLike
After reading all the above I still have no idea what the Legacy Rest API is. LOL.
And yes I found that it’s enabled on my site and I had no idea.
It’s like… I had no problem but suddenly I have problem now…
LikeLike
As my store shipping fulfillment service relies on Legacy Rest API to pick up my Woo orders, it would be great to have the extension automatically applied.
Noticed that you were interested in reaching out to vendors about updating their products to eliminate the need for the Legacy Rest API. The one my fulfillment service uses is called CartRover.
LikeLike
UPDATE: The dedicated Legacy REST API extension is now available. See the announcement post for the details.
LikeLike