Make your WooCommerce store headless with CoCart, a REST API designed for decoupling.
CoCart’s mission is decoupling your WooCommerce store with our developer friendly REST API extension.
CoCart is a customizable, open-source REST API solution built for WooCommerce that is ready to decouple away from WordPress, allowing you to design and build without limitations imposed by a WordPress theme that is harder to modify and optimize. Our REST API handles all the server side actions so it can be utilized in faster and familiar frameworks that you prefer.
CoCart Free contains everything you need to get started.
WooCommerce provides a flexible, and efficient way to build cutting-edge stores with WordPress at it’s core. If you are looking to provide a great store for your customers that is fast, decoupling your store is a no brainer, but accessing the front side via the REST API was missing which is where CoCart comes in.
Is your store slow? Looking to decouple away from WordPress? Overwhelmed with getting WooCommerce working the way you want in your own REST API endpoints?
These are the struggles web developers have trying to decouple a WooCommerce store and with CoCart, you can overcome these challenges and get straight to utilizing a REST API that is ready for you.
And this is just the tip of the iceberg.
★★★★★
An excellent plugin, which makes building a headless WooCommerce experience a breeze. Easy to use, nearly zero setup time. Harald Schneider
CoCart was born out of frustration with no existing solution on the market. As beautiful as it functions, the API is just as flexible with you, the developer in mind making the API a joy to work with so you can focus on building a headless store in days, not months.
★★★★★
Amazing Plugin. I’m using it to create a react-native app with WooCommerce as back-end. This plugin is a life-saver! Daniel Loureiro
Unlock your stores full potential. Upgrade to complete the API with additional features that help you develop your store further.
See what else we have in store.
★★★★★
This plugin saved me tones of work and it is working amazingly! The plugin author provides fast and high quality support. Well done! @codenroll
We aim to provide regular support for the CoCart plugin on the WordPress.org forums. But please understand that we do prioritize support for our paying customers. Support can also be requested with the community on Discord.
★★★★★
Thanks for doing such a great work with this! Works exactly as expected and CoCart seems to have a nice community around it. The founder seems really devoted and that’s one of the key things for a plugin like this to live on and get the right updates in the future. We just got ourselves the lifetime subscription. Mighty Group Agency
★★★★★
This plugin works great out of the box for adding products to the cart via API. The code is solid and functionality is as expected, thanks Sebastien! Scott Bolinger, Creator of Holler Box
It is recommended that anytime you want to update CoCart that you get familiar with what’s changed in the release.
CoCart publishes release notes via the changelog.
CoCart uses Semver practices. The summary of Semver versioning is as follows:
You can read more about the details of Semver at semver.org
We also have add-ons that extend CoCart to enhance your development and your customers shopping experience.
They work with the core of CoCart already, and these add-ons of course come with support too.
On Discord we have a community of developers, WordPress agencies and shop owners building the fastest and best headless WooCommerce stores with CoCart.
Come and join our community
Extensible, adaptable, and open source — CoCart is created with developers in mind. If you’re interested to jump in the project, there are opportunities for developers at all levels to get involved. Contribute to CoCart on the GitHub repository and join the party. 🎉
Bug reports for CoCart are welcomed in the CoCart repository on GitHub. Please note that GitHub is not a support forum, and that issues that aren’t properly qualified as bugs will be closed.
This plugin is developed and maintained by Sébastien Dumont.
Founder of CoCart Headless, LLC.
“CoCart” has not yet been translated in other languages. You can translate “CoCart” into your language.
INTERESTED IN DEVELOPMENT?
Browse the code, check out the SVN repository, or subscribe to the development log by RSS.
Please review your experience
If you like CoCart and it has helped with your development, please take a moment to provide a review. It helps to keep the plugin going strong, and is greatly appreciated.
Automatic installation is the easiest option as WordPress handles the file transfers itself and you don’t need to leave your web browser. To do an automatic install of CoCart, log in to your WordPress dashboard, navigate to the Plugins menu and click Add New.
In the search field type “CoCart” and click Search Plugins. Once you’ve found the plugin you can view details about it such as the point release, rating and description. Most importantly of course, you can install it by simply clicking “Install Now”.
The manual installation method involves downloading the plugin and uploading it to your webserver via your favorite FTP application. The WordPress codex contains instructions on how to do this here.
It is recommended that anytime you want to update CoCart that you get familiar with what’s changed in the release.
CoCart publishes release notes via the changelog.
CoCart uses Semver practices. The summary of Semver versioning is as follows:
You can read more about the details of Semver at semver.org
CoCart provides a REST API that is ready to decouple WooCommerce away from WordPress. It allows you to search products by Name, ID or SKU, filter and return product data you need without authentication, manage cart sessions for customers and avoids the hassle of needing multiple requests to verify item and coupon validity in your cart. It also efficiently checks stock, calculates totals and fees, ensuring real-time accuracy so your responses return up to date every time.
CoCart sources the WooCommerce’s Data Stores API and repeats most WooCommerce hooks to provide a wider array of support for most WooCommerce extensions out of the box.
Pretty much everyone, who wants a faster ecommerce store to improve their business. WooCommerce runs multiple requests for multiple steps. We avoid the hassle of needing multiple requests for these steps and process them all together.
CoCart is perfect for ecommerce owners and developers who want to create an ecommerce app for mobile or a custom frontend shopping experience completely using the REST API.
CoCart is designed with developers in mind allowing for complete control to customize or add support for a plugin to work with CoCart. CoCart does it’s best to work out of the box but if there is a compatibility issue with a plugin that you would like to work with CoCart. We would be happy to hear about it.
CoCart sources the WooCommerce’s Data Stores API and repeats most WooCommerce hooks to provide a wider array of support for most WooCommerce extensions out of the box.
Yes. Just install CoCart and activate it on the sites you want to use CoCart.
Absolutely. That is what CoCart is mainly developed for. You just need to enable CORS. You can do that easily with the CORS add-on or you can manually enable it via the filters available in the documentation.
The majority of plugins are not REST API specific so it shouldn’t. However, while we allow the source of truth for compatibility, there maybe a WooCommerce extension that returns data via an action hook that the REST API cannot understand during a specific action and may fail the response.
If that does happen, simply report the situation with as much detail as possible on our GitHub repository and we will try our best to find a solution.
You will first need WooCommerce installed and set up to your configurations. Then install CoCart, activate and your ready to start using the REST API following the API Reference provided.
Please check the requirements listed in the installation section.
WooCommerce’s Store API is designed for the Gutenberg blocks which only requires a fixed format and is still prone to be used on native storefronts. It also lacks validation on the server end which you will need and not every extensions yet works with it out of the box. A lot of valuable information and abilities that developers require to help them are also unavailable and if you try to use the Store API for headless you will have issues managing the cart sessions.
CoCart’s API is designed for decoupling away from WordPress with ease. It’s a plug and play solution that just works out of the box. Also, improvements are always made to CoCart to ensure you get the best decoupled experience.
As this plugin provides a REST API built for developers, you will need to have some coding knowledge to use it.
You can find the documentation here.
You certainly can. There are over 100+ filters available to customize to your needs.
If you’re familiar with WooCommerce, you may be wondering why using a custom session handler at all instead of the WooCommerce default session handler? A number of reasons but the ones that really matter are.
shutdown
hook.No. “WooCommerce Shipping and Tax” ignores any custom REST API’s from allowing the ability to calculate the taxes from TaxJar except for WooCommerce Blocks and JetPack. We don’t recommend it. However, TaxJar for WooCommerce plugin is supported.
If you have “TaxJar for WooCommerce” v3.2.5 or above and CoCart v3.0 or above installed… then yes, it is supported.
Yes you can use your preferred tools and favorite modern technologies like Astro ,NextJS, React, Vue, Ember and more giving you endless flexibility and customization.
Yes. The best method would be to install/update CoCart from the GitHub repository but you can also do so via https://wpackagist.org/
Report bugs on the CoCart GitHub repository. You can also notify us via the support forum – be sure to search the forums to confirm that the error has not already been reported.
Yes, you can! Join in on our GitHub repository and follow the development blog to stay up-to-date with everything happening in the project.
Yes! CoCart is deployed with full translation and localization support via the ‘cart-rest-api-for-woocommerce’ text-domain.
If you get stuck, you can ask for help in the CoCart support forum or join the CoCart Community on Discord where you will find like minded developers who help each other out. If you are in need of priority support, it will be provided by purchasing CoCart Plus or a higher tier.
Find out all relevant features and pricing information over on the official site.
Check out Frequently Asked Questions for more.
update_session_timestamp()
function from failing in session handler.This release fixes 3 known issues that were reported. issue #425, issue #426, issue #427 that has been affected since version 4.2 of CoCart.
It was due to the optimizations made to allow CoCart to perform better. Unfortunately it had some unexpected side affects that were not picked up during testing. For that I am sorry. If you haven’t rolled back to before 4.2 then this patch is highly recommended.
Previous patch releases will also be updated to prevent further sites from experiencing these issues for those who like to update to specific version of the plugin.
A hard lesson was learned here and hope you haven’t lost trust in the plugin. I appreciate your feedback and support during this process.
Please don’t forget to backup your site before updating.
In this release we have added a plugin update prevention system as a safety measure. For the moment it will detect for compatibility with minor releases while we are making adjustments but it’s designed mostly for detecting major changes. All CoCart add-ons that we release will now check for CoCart’s requirements and will help you decide to update or not until your ready to do so.
These filters are for site admins more than anything.
cocart_in_plugin_update_message
allows you to change the upgrade notice.cocart_get_plugins_with_header
allows you to get the plugins that have a valid value for a specific header.cocart_get_plugins_for_cocart
allows you to get plugins which “maybe” are for CoCart.We are reverting a change for destroying a session. Previous change causes a conflict with identifying the correct column with our session table and causes the cart not to clear.
When loading a cart from session a deprecated function was still triggered. It’s now been removed to prevent failing.
In this release we have optimized our session handler making this release more compatibility with third party plugins. We also no longer use cookies as a backup for headless. This should also help with the confusion of needing to pass along the session cookie or reading the cookie to extract the cart key and help with user switching much better. A cart key is provided in both the cart response and returned headers. Saving the cart key in your own cookie or local storage is fairly straight forward.
We advise that you update on staging or local to check if you have used any of our experimental functions and filters that were added to the session handler to see if any have been deprecated. You can also see the list of deprecations below. If you have any questions about this update please contact us.
cocart-api-cart-key
.is_user_customer()
to check the user role is a customer when authenticated before migrating cart from guest.cocart_update_customer_fields
.get_product_image_sizes()
. Cuts down on the filter cocart_products_image_sizes
being in multiple places.currency_symbol_pos
and the currency symbol will now return based on the set currency without lookup.is_rest_api_request()
function to the main class so it can be utilized outside of the plugin.CoCart_Session
that extended WC_Session
. Any remaining functions have moved to our refreshed session handler.CoCart_Session_Handler::destroy_cookie()
no longer used.CoCart_Session_Handler::cocart_setcookie()
no longer used.CoCart_Session_Handler::get_cart()
no longer used.cocart_cookie
no longer used. Use woocommerce_cookie
instead.cocart_cookie_httponly
no longer used.cocart_cookie_supported
no longer used.cocart_set_cookie_options
no longer used.cocart_cart_use_secure_cookie
no longer used. Use wc_session_use_secure_cookie
instead.cocart_is_cart_data_valid
no longer used.X-CoCart-API-Timestamp
and X-CoCart-API-Version
no longer used.cocart_after_session_saved_data
fires after the session is saved.cocart_send_nocache_headers
to decide if nocache headers are sent.In this release we are adding some quality of life improvements.
HTTP_AUTHORIZATION
, REDIRECT_HTTP_AUTHORIZATION
or getallheaders()
function.cocart_does_product_allow_price_change
.CoCart-API-Cart-Expiring
and CoCart-API-Cart-Expiration
to be exposed with CORS.cocart_override_cart_item
filter. Recommend using cocart_item_added_to_cart
action hook instead.cocart_cart_updated
hook. Replaced with cocart_update_cart_before_totals
hook.cocart_auth_header
that allows you to change the authorization header.cocart_set_customer_id
that allows you to set the customer ID before initialized.cocart_available_shipping_packages
that allows you to alter the shipping packages returned.cocart_does_product_allow_price_change
that allows you to deny all custom prices or on specific items.cocart_update_customer_fields
that allows for additional customer fields to be validated and added if supported.cocart_after_item_added_to_cart
that allows for additional requested data to be processed once item has added to the cart.cocart_after_items_added_to_cart
that allows for additional requested data to be processed once items are added to the cart.cocart_update_cart_before_totals
fires before the cart has updated via a callback.Introduced new action hook cocart_update_cart_after_totals
fires after the cart has updated via a callback.
Added the request object and the cart object as parameters for filter cocart_cart
. No longer use $from_session
parameter.
ReserveStock
not found when adding products to cart.Developer note: A line was unintentionally removed that calls the class for use.
In this release, we are happy to provide some of the various improvements made through out the plugin that were from the originally planned v4 release. These improvements are backwards compatible but one change is not. See the developer note for details.
Developer note: This release requires the quantity parameter to pass the value as a string for both adding items or updating items. If you are not new to CoCart then please update your code to account for this change.
Find out more about what’s new in CoCart 4.0 in our release post!
Hope you enjoy this release.
Access-Control-Allow-Credentials
being outputted as 1 instead of true. Solves issue 410. Thanks to @SebastianLamprecht for reporting it.CoCart-API-Cart-Expiring
and CoCart-API-Cart-Expiration
.These two new headers can help developers use the timestamps of the cart in session for when it is going to expire and how long until it does expire completely.
WP_DEBUG
is set to true to help with any debugging.📢 This release solves a validation issue for both versions of the Products API when accessing an individual product. It is important that you update to this release asap to keep your store secure.