WooCommerce

Description

WooCommerce is a free eCommerce plugin that allows you to sell anything, beautifully. Built to integrate seamlessly with WordPress, WooCommerce is the world’s favorite eCommerce solution that gives both store owners and developers complete control.

With endless flexibility and access to hundreds of free and premium WordPress extensions, WooCommerce now powers 30% of all online stores — more than any other platform.

Sell anything, anywhere

With WooCommerce, you can sell both physical and digital goods in all shapes and sizes, offer product variations, multiple configurations, and instant downloads to shoppers, and even sell affiliate goods from online marketplaces.

With premium extensions, you can offer bookings, memberships, and recurring subscriptions. Perhaps you’d like to sell monthly subscriptions for physical goods, or offer your members a discount on digital downloads? It’s all possible.

Ship wherever you like

Offer free shipping, flat rate shipping, or make real-time calculations. Limit your shipments to specific countries, or open your store up to the world. Shipping is highly configurable, and WooCommerce even supports drop shipping.

Extensive payment options

WooCommerce comes bundled with the ability to accept major credit cards, PayPal, BACS (bank transfers), and cash on delivery. Need additional options? More than 140 region-specific gateways integrate with WooCommerce, including popular choices like Stripe, Authorize.Net, and Amazon Payments.

You control it all — forever

WooCommerce gives you complete control of your store, from taxes to stock levels to customer accounts. Add and remove extensions, change your design, and switch settings as you please. It’s all under your control.

One of the biggest risks of using a hosted eCommerce platform is what happens to your store if the provider closes up shop. With WooCommerce, you have complete control, so there’s never any reason to worry. Your data belongs to you — and it’s kept secure, thanks to regular audits by industry leaders.

Define your style with Storefront

Storefront is a free WordPress theme available to any WooCommerce store. Along with deep WooCommerce integration, Storefront prioritizes speed and uptime while eliminating theme and plugin conflicts during major updates.

Define your style even further by customizing Storefront to your liking or choosing from one of our several Storefront child themes. It’s all up to you, and all open source.

Built with developers in mind

Extendable, adaptable, and open source — WooCommerce was created with developers in mind. With its strong, robust framework, you can scale your client’s store all the way from basic to high-end (infinity and beyond).

Built with a REST API, WooCommerce can integrate with virtually any service. Your store’s data can be accessed anywhere, anytime, 100% securely. WooCommerce allows developers to easily create, modify, and grow a store that meets their specifications.

No matter the size of the store you want to build, WooCommerce will scale to meet your requirements. With a growing collection of more than 300 extensions, you can enhance each store’s features to meet your client’s unique needs — or even create your own solution.

If security is a concern, rest easy. WooCommerce is audited by a dedicated team of developers working around the clock to identify and patch any and all discovered bugs.

We also support WooCommerce and all its extensions with comprehensive, easily-accessible documentation. With our docs, you’ll learn how to create the exact site your client needs.

Extensions galore

WordPress.org is home to some amazing extensions for WooCommerce, including:

Keen to see them all? Search WordPress.org for ‘WooCommerce’ to dive in.

If you’re looking for something endorsed and maintained by the developers who built WooCommerce, there are a plethora of premium eCommerce extensions, the most popular of which include:

And there’s plenty more where they came from. Visit our extensions page to find out everything you’re capable of and all that’s possible with premium WooCommerce extensions.

Join our growing community

When you download WooCommerce, you join a community of more than a million store owners, developers, and WordPress enthusiasts. We’re one of the fastest-growing open source communities online, and no matter your skill level we’d love to have you!

If you’re interested in contributing to WooCommerce we’ve got more than 350 contributors, and there’s always room for more. Head over to the WooCommerce GitHub Repository to find out how you can pitch in.

Want to add a new language to WooCommerce? Swell! You can contribute via translate.wordpress.org.

And, finally, consider joining or spearheading a WooCommerce Meetup locally, more about those here.

Screenshots

  • The WooCommerce settings panel.
  • WooCommerce products admin.
  • Product data panel.
  • WooCommerce sales reports.
  • A single product page.
  • A product archive (grid).

Installation

Minimum Requirements

  • PHP version 5.2.4 or greater (PHP 7.2 or greater is recommended)
  • MySQL version 5.0 or greater (MySQL 5.6 or greater is recommended)

Visit the WooCommerce server requirements documentation for a detailed list of server requirements.

Automatic installation

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 WooCommerce, log in to your WordPress dashboard, navigate to the Plugins menu and click Add New.

In the search field type “WooCommerce” and click Search Plugins. Once you’ve found our eCommerce 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”.

Manual installation

The manual installation method involves downloading our eCommerce plugin and uploading it to your webserver via your favourite FTP application. The WordPress codex contains instructions on how to do this here.

Updating

Automatic updates should work like a charm; as always though, ensure you backup your site just in case.

If on the off-chance you do encounter issues with the shop/category pages after an update you simply need to flush the permalinks by going to WordPress > Settings > Permalinks and hitting ‘save’. That should return things to normal.

Sample data

WooCommerce comes with some sample data you can use to see how products look; import sample_products.xml via the WordPress importer. You can also use the core CSV importer or our CSV Import Suite plugin to import sample_products.csv.

FAQ

Where can I find WooCommerce documentation and user guides?

For help setting up and configuring WooCommerce please refer to our user guide

For extending or theming WooCommerce, see our codex.

Where can I get support or talk to other users?

If you get stuck, you can ask for help in the WooCommerce Plugin Forum.

For help with premium extensions from WooCommerce.com, use our helpdesk.

Will WooCommerce work with my theme?

Yes; WooCommerce will work with any theme, but may require some styling to make it match nicely. Please see our codex for help. If you’re looking for a theme with built in WooCommerce integration we recommend Storefront.

Where can I request new features, eCommerce themes and extensions?

You can vote on and request new features and extensions in our WooIdeas board

Where can I report bugs or contribute to the project?

Bugs can be reported either in our support forum or preferably on the WooCommerce GitHub repository.

Where can I find the REST API documentation?

You can find the documentation of our REST API on the WooCommerce REST API Docs.

WooCommerce is awesome! Can I contribute?

Yes you can! Join in on our GitHub repository 🙂

Reviews

5-Star plugin!

Easily convert my wordpress to an e-commerce website! Thanks for the effort! 5 Stars!

Contributors & Developers

“WooCommerce” is open source software. The following people have contributed to this plugin.

Contributors

“WooCommerce” has been translated into 53 locales. Thank you to the translators for their contributions.

Translate “WooCommerce” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

3.5.2 – 2018-11-29

  • Enhancement – Added compatibility for Twenty Nineteen theme. #21970
  • Update – Prepare WooCommerce for PHP 7.3. #22009
  • Tweak – Updates the signature field type to “password” in PayPal settings for increased security. #21715
  • Tweak – Change the filter name in the /myaccount/lost-password-confirmation.php template to differentiate between other filter with same name and different message. #21829
  • Tweak – Reintroduce Preview button by popular demand with the understanding that the Preview will only work on some product fields. It was removed from pubished products in 3.5.0 to prevent confusion. #21838
  • Tweak – Add tool to systems status tools for running the DB update routine. #21923
  • Tweak – Revert default behavior for woocommerce_formatted_address_force_country_display filter to maintain backwards compatibility. #21865
  • Tweak – Update products block notice for WP 5.0. #21930
  • Tweak – Use wp_kses_post instead of esc_html for sanitizing product titles to allow minimal HTML in product titles. #21936
  • Tweak – Use dedicated woocommerce_add_order_again_cart_item to filter cart item data when ordering again. Prevents issues with applying woocommerce_add_cart_item out of context. #21947
  • Tweak – Remove postal code for Angola, São Tomé and Príncipe since they don’t use postal codes and update locale info. #21984 #21985 #21987
  • Fix – Metadata with array key of 0 can save properly. #21641
  • Fix – Prevent deleting the default product category via REST API. #21696
  • Fix – Fix ‘Table does not exist’ messages on System Status Report in multisite. #21706
  • Fix – Add dynamic SSL check to dashboard SSL notice to prevent misdiagnosing that sites aren’t set up with SSL. #21738
  • Fix – Don’t show escaped HTML in admin order item details for fees. #21769
  • Fix – Don’t include draft variable products in on sale product results. #21778
  • Fix – Add woocommerce_hold_stock_minutes check back to stock check in cart/checkout. #21797 #22050
  • Fix – Fix potential undefined index notice on checkout fields when comparing the sort order. #21801
  • Fix – Throw an error when trying to set a variation as the parent of a variation in the CSV importer. #21810
  • Fix – Make “account erasure request” text translatable. #21812
  • Fix – Display notices on Order Pay page. #21821
  • Fix – Fix tax rate uploading by file path. #21831
  • Fix – Make wc_download_log_permission_id constraint creation work better on multisites and multiple sites using the same DB. #21836 #21940
  • Fix – Don’t render undecoded HTML entities in variations dimensions. #21844
  • Fix – Do not check for stock when not managing stock or have backorders enabled when paying through the order-pay page. #21849
  • Fix – Apply priority field sorting on additional filters to make it apply on the edit address pages as well. #21856
  • Fix – Fix export and edit of attribute labels with html encoded special characters in product CSV exporter. #21864
  • Fix – Prevent fatal error when rendering plaintext customer invoice email. #21879
  • Fix – Prevent fatal error when delivering webhooks using v3 API. #21921
  • Fix – Prevent undefined variable notice in wc_increase_stock_levels. #21928
  • Fix – Fix overescaping image output on product widget. #21929
  • Fix – Croatian Kuna symbol should be lowercase. #21934
  • Fix – Fixed an error when deleting logged entries when using the ‘WC_Log_Handler_DB’ handler. #21949
  • Fix – Update ShipStation plugin info so install works through setup wizard. #21953
  • Fix – Use dynamic DB table name in product list table shipping class query. #21954
  • Fix – Log file date/time should be in UTC and not site timezone as per the +00:00:00 string appended to it. #21981
  • Fix – Set customer’s country to selling country when only selling to one country and default customer location is ‘none’. #21995
  • Fix – Change new account email copy to be compatible with auto-generated accounts. #21999
  • Fix – Correct Aria-Labelledby attribute for quantity selectors. #22000
  • Fix – Show notices on lost password page. #22001
  • Fix – Fix authentication errors when using the REST API with 3rd-party authentication. #22013
  • Fix – Fix issues where potentially not all active plugins were included on the system status report. #22057
  • Fix – Make PDT validation use the same rounding as the IPN validation to prevent erroneous totals mismatch. #21729

3.5.1 – 2018-10-31

  • Fix – Use CRUD method to get product images to fix custom tables missing images. #21608
  • Fix – Use HTML entity for times sign when outputting dimensions to fix RTL support. #21633
  • Fix – Fix India address format to look nice in the shipping calculator. #21647
  • Fix – Don’t default gallery variation images to gallery thumbnail size if flexslider is disabled. #21655
  • Fix – Revert show shipping behavior change to prevent missing shipping line on Cart page. #21658
  • Fix – Removed non-existing WC_Product_Simple->set_date_created_gmt method. #21675
  • Fix – Use correct comment_type when fetching recent reviews for widget. #21689
  • Fix – Do not include strong tags as part of translation string on subscriptions disconnect message. #21690
  • Fix – Make it possible to send webhooks with the v3 API. #21745
  • Fix – Fix get_cart_from_session infinite loop when filters used. #21749
  • Fix – Use array instead of string to define class for address line 2 input on checkout. #21757
  • Fix – Make checkout fields priority work correctly again. #21763
  • Tweak – Remove mentions of deprecated live shipping rates from setup wizard. #21645
  • Tweak- Update product block editor hook for WP 5.0. #21703
  • Tweak – Merged similar strings to reduce number of translateable strings. #21704
  • Tweak – Remove hated “Over to you” text from emails. #21709
  • Tweak – Revert problematiic customer as post author change. #21740

3.5.0 – 2018-10-17

  • Feature – REST API v3. #20111
  • Feature – Option has been added on the inventory tab of the edit product page to set a low stock threshold for individual products. #20260
  • Feature – Add ability to export products by category to the CSV exporter. #20870
  • Feature – Ability to define custom product placeholder images that will resize to correct store aspect ratio. #20644
  • Enhancement – Excluded children categories from WP_Query in product shortcode if cat_operator=AND. #20207
  • Enhancement – Add anchor tag example to email template preview. #20246
  • Enhancement – Introduce is_paypal_supported_currency check in setup wizard. #20244
  • Enhancement – Payment method table reordering accessibility. #19844
  • Enhancement – Log errors from transaction emails with logger. #20203
  • Enhancement – Improved shipping calculator experience. Shows destination country and added context to calculate shipping link. #20345
  • Enhancement – On the fly image generation for frontend, if image sizes are missing. #20011
  • Enhancement – SelectWoo enabled product categories dropdown widget. #20617
  • Enhancement – Make it easier to read and act upon the outdated template notice. #20732
  • Enhancement – Styled date, time, etc. inputs in admin to match styling of other inputs. #21013
  • Enhancement – Show update notices on the System Status page for WordPress.org hosted Official WooCommerce extensions. #21073
  • Enhancement – Better wording for transactional emails. #21288
  • Fix – Check billing email is posted before using in WC_Cart::check_customer_coupons. #20180
  • Fix – Shipping postcode formatting when only posting a billing address. #20330
  • Fix – Correctly show/hide save card checkbox on tokenization form. #20506
  • Fix – orderby and order parameters in WC_Customer_Download_Log_Data_Store::get_download_logs() were ignored. #20931
  • Fix – Unslash city name to prevent double escape in tax settings. #21205
  • Fix – Updated phone validation logic. #21188
  • Fix – Fix weight and dimensions cache of variable products if childs doesn’t have any of those params. #21244
  • Fix – Correctly replace images in the woocommerce_uploads folder with the placeholder image. #20848
  • Fix – Show parent variable product in shipping class admin screen when variation has shipping class. #21278
  • Fix – Correctly excluded administrators from “Customer list” report. #21304
  • Fix – Update quick edit logic to show/hide Stock qty and Backorders fields. #21301
  • Fix – Fix Layered Nav Widget where special HTML entities did not display correctly in the “Any %s” string. #21312
  • Fix – Set the is_checkout javascript parameter on any page that uses the checkout filter or shortcode. #21328
  • Fix – Fix cron_interval property support in WP_Background_Process. #21353
  • Fix – CSS Changes to make text fields line up on the shipping settings page. #21247
  • Fix – Add extra null check to fix an issue with select payment fields using disabed select as placeholders. #21391
  • Fix – Don’t modify attributes orderby when sorting by name. #21408
  • Fix – Allow saving a stock quantity of 0 using quick edit. #21447
  • Fix – Change the query used to save session data to the database to protect against deadlocks. #21455
  • Fix – Make sure default category tooltip is rendered when the image column is deactivated. #21410
  • Fix – Fix warning when using logger instance in woocommerce_logging_class filter. #21448
  • Fix – Use uppercase “ID” when sorting product queries by ID. #21461
  • Fix – Consistently escape the gateway ID in the checkout payment method template. #21439
  • Fix – Avoid treating HTTP 301 and 302 codes as failures for webhooks. #21491
  • Fix – Add address_1 to shipping packages info in WC_Cart:: get_shipping_packages to make it work correctly in address formatting functions. #21493
  • Fix – Don’t fire two of the same action when saving shipping settings. #21494
  • Fix – Remove double condition for address line 2 in WC_Countries::get_default_address_fields. #20629
  • Fix – Correctly handle shorthand values for memory_limit in php.ini. #21557
  • Fix – Product shortcode numeric term slug matching. #21560
  • Fix – Remove the erasure tools links from the descriptions of the erasure settings for users without the manage_privacy_options capability. #21565
  • Fix – Don’t double urldecode posted variation attributes. #21570
  • Fix – Don’t double-sanitize cart images. #21574
  • Fix – Check if ID exists and is not empty before set Product’s download ID in API. #21588
  • Fix – Ensure wp_list_pluck() gets a array and not possibly null in WC_Product_Data_Store_CPT::update_attributes. #21591
  • Fix – Trim CSV header rows to prevent leading/trailing whitespace issues. #21614
  • Fix – Show draft products in previews on unsupported themes. #21619
  • Fix/Tweak – Fire woocommerce_grant_product_download_access hook after the download has its ID set. #20905
  • Fix/Tweak/Performance – Change wp_woocommerce_sessions primary key to session_id. #21245
  • Tweak – Show empty terms in admin product category filter dropdown. #20324
  • Tweak – Don’t force default token gateway active by default. #20125
  • Tweak – Move notice output to hooked in functions. #19794
  • Tweak – Apply order bulk actions in chronological order. #20338
  • Tweak – Updated Emogrifier to 2.0. #20547
  • Tweak – Avoid using wp.template (eval) in add-to-cart-variation.js. #19496
  • Tweak – Hide Preview button when creating new products, as most fields aren’t set up for it. #20650
  • Tweak – For guests, store all address fields to the session whilst placing an order. #20665
  • Tweak – Removed ‘ajax_add_to_cart’ class from ‘Read more’ button. #20690
  • Tweak – Removed unnecessary checkout form change trigger on load of the checkout page. #20655
  • Tweak – Add image size filters to wc_get_product_attachment_props(). #20722
  • Tweak – Only display the current site’s tables for a multisite install when viewing the system status. #20731
  • Tweak – include the file path and line number where a fatal error occurred in the fatal errors log. #20787
  • Tweak – Cast tax rate to float so that it can be treated as number further on in the code. #20910
  • Tweak – Send webhooks using Action Scheduler. #20030
  • Tweak – Update customer’s ip address on successful payment. #21038
  • Tweak – Changed wc_clean to checking for valid utf8 for line items and password. #20993
  • Tweak – Add to cart notice actions (View cart/Continue shopping) now have tabindex 1 for improved accessibility. #21108
  • Tweak – Remove icanhazip from geolocation services. #21198
  • Tweak – Remove unnecessary aria-required attributes from product reviews template. #21211
  • Tweak – Added hidden label for screen readers on checkout address line 2 input. #21193
  • Tweak – Remove empty space in mini-cart template. #21261
  • Tweak – Tax display in cart now depends on whether customer is tax exempt. #21292
  • Tweak – Change sort dropdown option “Sort by newness” to “Sort by latest”. #21311
  • Tweak – Sanitize endpoint slugs upon saving. #21355
  • Tweak – Ignore converting float meta value for registered post meta. #21333
  • Tweak – Remove ‘order_again’ query string to avoid multiple re-orders. #21444
  • Tweak – Remove Netherlands Antilles from the North America continent definitions. #21449
  • Tweak – Display label and meta on the same line in order emails to match frontend Order Details styling. #21456
  • Tweak – Use wp_get_upload_dir for geolite DB path. #21550
  • Performance/Tweak – Use post_author for the order customer instead of ‘_customer_user’ meta data. #17895
  • Performance – Exclude frontend include from REST API calls. #20000
  • Performance – Improve performance of the query to delete version transients by removing unneeded “ORDER BY”. #21274
  • Dev – REST API – Allows oAuth1.0a authentication under SSL.
  • Dev – REST API – Fix position param for images. #20497
  • Dev – REST API – Handle children products deletion regardless of type. #20670
  • Dev – Added woocommerce_increase_coupon_usage_count and woocommerce_decrease_coupon_usage_count action hooks to increase extensibility of Coupons. #19981
  • Dev – Add endpoints to account menu items filter. #19980
  • Dev – Added qty param to wc_add_to_cart_message filter. #19817
  • Dev – Added woocommerce_search_products_ids filter. #20160
  • Dev – Introduced woocommerce_cart_calculate_shipping_address field to allow manipulation of cart shipping calculator data. #20046
  • Dev – Introduced woocommerce_shipping_calculator_enable_country filter. #20046
  • Dev – Pass product id to backorder notification. #20416
  • Dev – Added woocommerce_cart_shipping_total filter to control shipping display. #20591
  • Dev – Refactor “Order again” handling to separate logic better. #20606
  • Dev – Added ‘woocommerce_products_admin_list_table_filters’ filter to make it easier to customize the products list table filters. #20634
  • Dev – Added woocommerce_shipping_method_add_rate_args and woocommerce_shipping_method_add_rate filters. #20633
  • Dev – Added woocommerce_coupon_validate_user_usage_limit filter. #20630
  • Dev – Add hooks needed for product custom tables feature plugin. #20520
  • Dev – Added new filter to ‘Item in quotes’ translation for messages. #20714
  • Dev – Add ‘woocommerce_shutdown_error’ hook triggered on request termination with an error. #20787
  • Dev – New filter ‘woocommerce_admin_meta_boxes_variations_count’ to customize the shown count of variations. #21067
  • Dev – Added ability to query products that have a field set in wc_get_products/WC_Product_Query using the wildcard symbol ‘*’. #21162
  • Dev – Added a JavaScript events before and after the order total recalculation on the Edit Order page. #21181
  • Dev – Check for needs_payment instead of has_status( 'pending' ) in PayPal PDT handler for custom order status support. #21200
  • Dev – Added form action hooks for edit account and login templates. #21248
  • Dev – Add action for when system tools are run. #21270
  • Dev – Add – woocommerce_restock_refunded_items filter to control default state of the restock option when refunding items on an order. #21314
  • Dev – Add an extensible/swappable job queue via WC_Action_Queue and WC_Queue_Interface. #20030
  • Dev – Use WC_Action_Queue for schedule and delivery of webhooks. #20030
  • Dev – Include Action Scheduler v2.1.0 and use it for the default job queue. #21424 / #20030
  • Dev – Save reviews under the ‘review’ comment type. #21305
  • Localization – Updated IT provinces. #20286
  • Localization – Eircode validation. #20330
  • Localization – Disable postcode requirement for Bahrain. #21103
  • Localization – Make postcode field optional and hidden for Nigeria and label State. #21056
  • Localization – Make Romania state selection mandatory. #21180
  • Localization – Make city field optional and hidden for Singapore addresses. #21016

See changelog for all versions.