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.
WordPress.org is home to some amazing extensions for WooCommerce, including:
- Google Analytics
- Delivery Notes
- PDF Invoices and Packing Slips
- Affiliates Integration Light
- New Product Badges
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:
- WooCommerce Subscriptions
- WooCommerce Memberships
- WooCommerce Bookings
- Dynamic Pricing
- Table Rate Shipping
- Product CSV Import Suite
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 whether you’re a n00b or a Ninja, 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.
- 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 🙂
Nice plugin and Highly customizable
Excellent tool. Be patient and set one by one item and you'll be surprised what you can do with Woo...
2.6.12 – 2017-01-12
- Fix – Make images shown up on pageload when using ajax variations.
- Fix – Allow variations options to be deselected in IE11.
- Fix – Disabled-button and pagination styling in 2017.
- Fix – PHP 7.1 compatibility issues with non-numeric math operations.
- Fix – Fix notices in abstract class when price is empty.
2.6.11 – 2016-12-22
- Fix – Variation form compatibility with quotes in attribute values, and initial variation image fadeIn on certain configs.
2.6.10 – 2016-12-22
- Fix – Flat rate no class costs when no shipping classes exist.
- Fix – Returned REST API coupon expiry date.
- Fix – reviews_allowed being set to false in Rest API.
- Fix – Sales date series for some custom ranges.
- Fix – Missing attributes when an option is chosen by default on variations. This was the result of a Firefox 50 compatibility fix. In order to support both Firefox, Chrome, IE, and Edge we’ve done some refactoring of the variation add to cart scripts.
- Tweak – Updated Geo IP API services.
- Dev – Added support for WP VIP/VIP GO GEO IP headers.
- Dev – API – Throw error messages when product image ID is not a valid WordPress attachment ID.
2.6.9 – 2016-12-07
- Theme – Added support for Twenty Seventeen Theme.
- Fix – Excluded webhook delivery logs from comments count.
- Fix – Included password strength meter in “Lost Password” page.
- Fix – Order fee currency in admin screen.
- Fix – Variation selection on Firefox 40.
- Fix – Don’t prevent submission when table is not found on cart.
- Fix – Improved layered nav counts on attribute archives.
- Fix – Fixed pagination when removing layered nav items via widget.
- Fix – Default BE tax rate.
- Fix – Downloads should store variation ID rather than product if set. Also fixes link on account page.
- Fix – Use wp_list_sort instead of _usort_terms_by_ID to be compatible with 4.7.
- Fix – Only return empty string if empty for weight and dimension functions.
- Fix – Added correct fallbacks for logout/lost password URLs when endpoints are not defined.
- Security – Wrapped admin tax rate table values in _escape to thwart evil CSVs an admin user could upload. Vulnerability was discovered by Fortinet’s FortiGuard Labs.
- Dev – API – Only update categories menu order and display if defined.
- Dev – Fixed when should deliver wp_trash_post webhooks.
2.6.8 – 2016-11-10
- Fix – REQUEST_URI was missing a trailing slash when being compared in the cache prevention functions.
- Fix – Prevent issues when sending empty prices to PayPal.
- Fix – Invalid email check.
- Tweak – New extensions screen.
2.6.7 – 2016-10-26
- Fix – Use FLOOR and CEIL to get price filter values. Fixes the issue where max price is capped at 99.
- Fix – Hide “Sales this month” information from Dashboard widget for users that don’t have
- Fix – Remove notices only once on cart so subsequent notices do not remove older notices.
- Tweak – Improve credit card fields for better mobile experience.
2.6.6 – 2016-10-20
- Fix – Conflict with Local Pickup Plus extension due to 2.7.x code in has_shipping_method().
- Fix – Shipping method display order on frontend.
2.6.5 – 2016-10-19
- Fix – Shipping classes URL in admin.
- Fix – Notice in reports when using custom date ranges.
- Fix – When checking needs_shipping, ignore anything after : in the method ID.
- Fix – Allow has_shipping_method to work with instances.
- Fix – Potential notice in wc_add_to_cart_message().
- Fix – Prevent notice in wpdb_table_fix if termmeta table is not used.
- Fix – Payment method box fixes e.g. maintain previously selected payment method after update.
- Fix – Prevent multiple password validation methods at once on my account page.
- Fix – Ship to specific counties option had no effect.
- Fix – Broken Webhook delivery due to use of post_date_gmt which does not exist for drafts.
- Fix – Use method title in admin shipping dropdown.
- Fix – Fixed downloadable variable product URL.
- Fix – Handle object when generate_cart_id is used to prevent notices.
- Fix – Set header link color in emails.
- Fix – Rest of the world ID 0 zone handling when using CRUD classes.
- Fix – Cast prices as decimal when querying prices in price filter widget.
- Fix – API – Fix coupon description field.
- Fix – API – ID needs to be capitalized to allow correct sorting.
- Fix – API – Fixed undefined order ID.
- Fix – API – Allow API to save refund reason.
- Fix – API – Resolved encoding issues with attribute and variation slugs.
- Fix – API – get_attributes should return term name, not slug.
- Fix – API – Product “filter” and “sku” paramaters.
- Fix – Handle info notices in cart, not just error messages.
- Fix – Don’t remove hyphens in attribute labels.
- Fix – Start sales on variations after they are saved, if applicable.
- Fix – Made the text showing max variations you can link match the actual filtered value.
- Fix – Add missing tables to wpmu_drop_tables function.
- Fix – When syncing variation stock, ensure post is a variation.
- Fix – Resolved some sales by date sum issues.
- Fix – Fix cart update in IE when enter key is pressed.
- Fix – Variation is_on_backorder when parent manages stock.
- Fix – Fix variation script malfunctioning when show_option_none arg is set to false.
- Fix – Fire tokenisation event on load for pay page.
- Fix – Populate attribute dropdown when empty.
- Fix – Fix email check on my account page.
- Fix – Send processing email on on-hold to processing transition.
- Fix – Incompatibility with SQLite databases.
- Fix – KGS and ISK currency symbols.
- Tweak – Password reset now uses WP functions.
- Tweak – Format US 9-digit postcodes.
2.6.4 – 2016-07-26
- Fix – Security – Only allow image MIME type upload via REST APIs.
- Fix – Shipping method title display in COD settings.
- Fix – Order date input in Edge browser.
- Fix – Ensure value is not null in variations to support empty show_option_none setting.
- Fix – get_the_title does not need escape in grouped template file.
- Fix – Ensure WC_ROUNDING_PRECISION is defined and use it as a low precision boundary in wc_get_rounding_precision().
- Fix – Response body should be a string in webhook class.
- Fix – Use h2 instead of h3 headings in profile screen.
- Dev – API – Allow Allow meta_key/value filters for products.
- Dev – CLI – Explode tags and category IDs to allow multiple comma separated values.
- Dev – add $order arg to woocommerce_admin_order_item_class and woocommerce_admin_html_order_item_class filters.
2.6.3 – 2016-07-19
- Fix – Security – Escape captions in product-thumbnail and product-image templates (template versions have been bumped).
- Fix – Fixed how we calculate shipping tax rates when using more than one tax class.
- Fix – When duplicating product variations, set title, name, and guid.
- Fix – Normalized ‘read more’ buttons.
- Fix – Add to cart notices for grouped products.
- Fix – Do not sanitize passwords in the settings API.
- Fix – Handle shipping zone location range conversion during update (dashes to …).
- Fix – Always remove commas while processing flat rate costs.
- Fix – Ensures account page layout is only applied to desktop-sized displays.
- Fix – When getting layered nav counts, take search parameters into consideration.
- Fix – Strip hash characters when exporting reports.
- Fix – Use permission id to revoke access to downloads to prevent removing wrong rows.
- Fix – When duplicating product variations, set title, name, and guid.
- Fix – Set more appropriate default rounding precision based on currency decimal places.
- Fix – Fix message styles for empty carts.
- Fix – Fixed the load of the WC_Email_Customer_On_Hold_Order class.
- Fix – Don’t perform cart update on search submit.
- Dev – API – Added support for WP REST API with custom URL prefixes.
- Dev – API – Delete variations when deleting a variable product.
- Dev – API – Fixed how we check for product types.
- Dev – Added woocommerce_cart_id filter.
- Dev – Add shortcode name param to shortcode_atts function calls.
- Dev – Post custom data when fetching a variation via ajax.
- Dev – Include child prices in grouped_price_html filter.
- Dev – Allow filtering of variation stock quantity.
- Dev – Added $_product argument to ‘woocommerce_restock_refunded_item’ hook.
- Dev – Added a filter hook for the wc_ajax endpoint url.
- Tweak – Include account page link in new customer account emails.
- Tweak – Updated all URLs from WooThemes.com to WooCommerce.com.
- Tweak – Cache the result of WC_Comments::wp_count_comments() in a transient (improves performance).
2.6.2 – 2016-06-30
- Fix – Set max index length on woocommerce_payment_tokenmeta table for utf8mb4 support.
- Fix – is_available check for legacy shipping methods.
- Fix – wc_add_to_cart_message() when non-array is passed.
- Fix – Maximum coupon check should allow the ‘maximum’ value.
- Fix – Product coupon logic to avoid applying non-applicable coupons.
- Fix – Potential notices when leaving out ‘default’ field for shipping instances.
- Fix – wp_cache_flush after term meta migration/update.
- Fix – wc_add_to_cart_message() when non-array is passed.
- Fix – woocommerce_redirect_single_search_result type check was incorrect.
- Fix – Convert ellipsis to three periods when saving postcodes.
- Fix – Prevent get_terms returning duplicates.
- Fix – Removed non-existent country (Netherlands Antilles) from https://en.wikipedia.org/wiki/ISO_3166-1.
- Fix – Grouped product range display when child is free.
- Fix – Remove discount when checking free shipping min amount.
- Fix – Prevent blocking the same element multiple times on cart page.
- Fix – Don’t sync ratings right after a new comment to prevent rating sync whilst rating meta does not exist yet.
- Fix – Fix product RSS feeds when using shop base.
- Fix – woocommerce_local_pickup_methods comparison by stripping instance IDs before the check.
- Fix – During password resets, use cookie to store reset key and user login to avoid them being exposed in the URL/referer headers.
- Dev – API – Fixed variable product stock at product level.
- Dev – CLI – Introduces
- Dev – Allow notices to be grouped on checkout after certain events.
- Dev – API – Allows save images by ID with product variations.
- Tweak – Made customer pay link display if order needs_payment() rather than checking pending status.
- Tweak – Zones – Wording clarifications.
- Tweak – Zones – Match zones with postcodes but no country.
- Tweak – Zones – Match zones with no regions as ‘everywhere’.
- Tweak – Added view_admin_dashboard cap for disabling the admin access restriction in custom roles.
- Tweak – Revised stock display based on feedback to hide ‘in stock’ message if stock management is off and only show available on backorder if notifying customer.
- Tweak – Allow external product SKUs.
- Tweak – PT (Portugal) and JP (Japan) postcode formats.
- Tweak – Sort products from the
[product_category]shortcode by menu order.
- Tweak – Improve wc_orders_count() performance by running a query to count only posts of the given status.
- Tweak – To allow my account page tabs to be disabled without code, you can now set the endpoint value to a blank string.
2.6.1 – 2016-06-16
- Fix – Added missing localized format for line taxes in orders screen to prevent total miscalculation in manual orders.
- Fix – Improved the hour and time fields validation pattern on the orders screen.
- Fix – PayPal does not allow free products, but paid shipping. Workaround by sending shipping as a line item if it is the only cost.
- Fix – SKUs prop on products shortcode.
- Fix – Layered nav counts when term_id does not match term_taxonomy_id (before splitting).
- Fix – Fixed referer links from cart messages in WP 4.4.
- Fix – Fix the showing/hiding of panels when terms do not exist by using wc_get_product_types() for retrieving product types.
- Dev – content-product.php and content-product_cat.php contained the wrong version.
- Dev – Show “matching zone” notice on the frontend when shipping debug mode is on.
- Dev – Restored missing WC_Settings_API::init_form_fields() method to prevent potential errors in 3rd party gateways.
- Dev – API – Fixed returned data from product images (changed
- Dev – API – Fixed products schema for
- Dev – API – Fixed products attribute options when contains
- Tweak – Hide ‘payment methods’ screen if no methods support it.
- Tweak – If shipping method count changes, reset to default.
- Tweak – Avoid normalization of zone postcodes so wildcard matching can be performed on postcodes with spaces. E.g. SP1 *
- Tweak – Allow max_fee in addition to min_fee in flat rate costs fields.
- Tweak – Wrap order_schema_markup() output in hidden div in case script tag is stripped.
2.6.0 – 2016-06-14
- Feature – Introduced Shipping Zone functionality, and re-usable instance based shipping methods.
- Feature – Tabbed “My Account” area.
- Feature – Cart operations now use ajax (item quantities/remove, coupon apply/remove, shipping options).
- Feature – Layered nav; filter by rating.
- Feature – On-hold order emails.
- Dev – All new REST API based on the WP REST API. The old WC REST API is still available, but the new one is preferred.
- Dev – Added ability for shipping methods to store meta data to the order.
- Dev – Added Payment Gateway Tokenization API for storing and retrieving tokens in a standardized manner.
- Dev – Migrated custom term meta implementation to WP Term Meta.
- Dev – Added new wc_get_orders() function to get order objects and ids instead of direct get_posts() calls.
- Dev – Made coupon optional in cart has_discount() method.
- Dev – Made the review template more editable.
- Dev – Allowed product constructors to throw exceptions if invalid.
- Dev – Wrapped currency symbols in a span to allow styling or replacement.
- Fix – Update download permission user and email when changed.
- Fix – Fixed shipping method unregistration.
- Fix – Stopped create and update webhooks firing at the same time for products.
- Fix – Allow COD to set on-hold status if the order contains downloads.
- Fix – Force CURL to use TLS 1.2 for PayPal connections.
- Tweak – Improved lost password flow.
- Tweak – Show payment dates on order screen.
- Tweak – Ignore catalog visibility on products shortcode when specifying IDs or SKUs.
- Tweak – Added context to checkout error messages.
- Tweak – Added SKU field to grouped products.
- Tweak – Moved SKU field to inventory tab.
- Tweak – Support qty display in cart messages.
- Tweak – Hide min order amount field when not needed in shipping settings.
- Tweak – If shipping < 999.99, use ‘shipping’ arg when passing values to PayPal.
- Tweak – Show net sales on dashboard.
- Tweak – Replaced credit card icons with SVG.
- Tweak – Enqueue scripts on pages with checkout shortcodes.
- Tweak – Color code the manual, system and customer notes.
- Tweak – Layered Nav Refactoring to improve performance.
- Tweak – Removed tag/cat classes from loops since WP does the same.
- Tweak – Added hash check for orders so that if the cart changes before payment, a new order is made.
- Tweak – Removed unused ‘view mode’ under screen options.
- Tweak – Added 110 new currencies (including Bitcoin).
- Tweak – New background updater for data upgrades.
- Tweak – Blank slates in admin post screens.
- Tweak – Added blockui when variations are being retrieved via ajax.
- Tweak – Hide empty taxes by default (filterable).
- Tweak – Allow failed orders to be edited.
- Tweak – If there are no shipping methods setup, don’t prompt for shipping at checkout.
- Tweak – Allowed country exclusion, rather than just inclusion, in ‘sell to’ setting.
- Lots, lots more – see the comparison here.