WooCommerce development
Work in code on a WooCommerce store, such as a change to the checkout, a payment or shipping method connected, a link to another system, or product pages laid out differently. Sold as developer time by the hour, in blocks, and quoted before work starts.
In short
- For a WooCommerce store that has to do something no setting and no ready-made extension does.
- Sold as developer time, by the hour, in blocks, with a quote before work starts.
- A checkout job depends on which checkout the store has, the Checkout block or the shortcode. The two are changed in different ways.
- Code that touches orders has to suit the way the store keeps them. Look at "Order data storage" in the settings.
- A template copied into a theme falls behind when WooCommerce updates its own. A hook does not.
- Upkeep, a broken checkout, search work and a move between platforms each have a page of their own.
WooCommerce development is work on a store that no setting and no ready-made extension does for you. Something has to be written or changed in code.
You can ask for things like an extra field or step in the checkout, a payment or shipping method connected to the store, a link between the store and the stock or accounting software you use, product pages laid out differently, or a store added to a WordPress site you already have.
We sell this as developer time: by the hour, in blocks, with a quote before work starts. Most of this page is what decides how such a job is done, so you can describe yours and judge a quote from anyone.
Who it is for, and who it is not
It fits a working WooCommerce store, or a WordPress site about to become one, that has to do something it does not do now.
A different page fits better in these cases.
- The checkout or a payment is failing now. See checkout not working, payment gateway errors or the checkout down runbook.
- You want updates, backups and a checkout test after each update. That is the Store plan: WooCommerce maintenance.
- Your products are missing from Google. See WooCommerce SEO.
- You are moving the store to or from another platform. That is a platform migration, such as Shopify to WooCommerce. Still deciding? Read should you leave WooCommerce for Shopify.
- The store is slow. Work through how to speed up WooCommerce first.
- You want the store's pages designed. See design and development.
- The job is code, and not about the store. A plugin of its own is WordPress plugin development. Anything else is custom development.
What decides how a job on your store is done
Two stores that look alike can need different work for the same request. This is what decides it, from WooCommerce's own documentation.
Which checkout the store has
WooCommerce has two checkouts: the newer Checkout block, and the older shortcode, [woocommerce_checkout]. The documentation says the Cart and Checkout blocks are the default for stores started after version 8.3, released in November 2023.
To see which you have, edit the Checkout page: under Pages on a classic theme, or under Appearance, then Editor, then Pages on a block theme. The List View shows the Checkout block, or the shortcode. A page switched back from the block shows a block named "Classic Shortcode".
The two are changed in different ways. The shortcode checkout is changed with PHP hooks, named points where code can add or alter something. For the Checkout block, the documentation says extensions "must use JavaScript" to extend the front end, and that some hooks from the shortcode checkout work with the block too, "but not all of them".
For an extra field, the block has its own Additional Checkout Fields API. It takes text, a dropdown, a checkbox or a date, placed with the contact information, the addresses or the order information. A field placed with the addresses appears in both the shipping and the billing address.
A quote for checkout work should say which checkout it is for.
Where the store keeps its orders
High-Performance Order Storage, or HPOS, keeps orders in database tables of their own, not in the tables WordPress uses for posts. It is on by default for new installations from WooCommerce 8.2, and the documentation says an existing store is not moved over automatically. To see which yours uses, go to WooCommerce, then Settings, then Advanced, then Features, and look at "Order data storage".
This matters for any code that reads or writes orders. WooCommerce's guide for developers says that reading the old tables directly "may mean reading an outdated order", so code has to use WooCommerce's own functions for orders. An extension declares whether it is compatible, and the switch to HPOS is disabled while an incompatible one is in use. An older store's orders are copied across by scheduled actions, the work of Action Scheduler.
A template copied into the theme, or a hook
On a classic theme, the store's pages are drawn from PHP template files inside the WooCommerce plugin. There are two ways to change one.
- A copy in the theme. A copy of the template in a child theme's
woocommercefolder is used in place of the original. - A hook. Code adds or moves content at a hook, and the template file is left alone. The documentation says this "avoids upgrade issues".
A copy does not change when WooCommerce updates its own template. The System Status report then notes it as outdated, in a line the documentation gives as "version 3.5.0 is out of date. The core version is 3.7.0", and someone has to bring it in line by hand. How to update WooCommerce safely shows where to look.
An edit inside the plugin's own files is worse: such changes "will disappear when the plugin or theme updates itself". On a block theme the templates are HTML, changed in the Site Editor.
Whether the store exists yet
WooCommerce is a plugin, and its Setup Wizard creates the Shop, Cart, Checkout and My Account pages on a site you already have. The documentation says a theme has to integrate with WooCommerce for more control over the layout. Before opening, read about coming soon mode and email notifications.
Connecting the store to something else
Stock, accounting and other systems
WooCommerce gives another system two ways in.
- The REST API. The other system asks the store. The REST API reads and writes store data such as orders, products, coupons and customers. Access is by keys made under WooCommerce, then Settings, then Advanced, then REST API. Each key belongs to a WordPress user and has a permission: "Read", "Write" or "Read/Write".
- Webhooks. The store tells the other system. A webhook is a notification sent to an address you choose when something happens, such as an order being added or edited.
WooCommerce switches a webhook off after more than five delivery failures in a row, so a link built on webhooks needs someone to notice when one stops.
A way to pay or to ship
A payment method reaches WooCommerce as a plugin, called a gateway. The documentation describes four kinds: one sends the customer to the payment company's own site, one loads the company's form in a frame on your store, one shows the payment fields on your own checkout page, and one is offline, such as a bank transfer.
It says the first two post the data off your site, and that the third requires server security and "may also require a level of PCI compliance". Ask about that when a quote proposes that kind.
A gateway made for the shortcode checkout needs a further integration, partly in JavaScript, before it works in the Checkout block. For shipping, a plugin adds its own rates through WooCommerce's Shipping Method API.
What you get
- The cost known first. We quote the job in hours, and you have the quote before work starts.
- A written quote for a larger job. Anything too large to price as a few hours gets one.
- Nothing started without your yes. Work starts only after you agree to the quote.
- Extra work quoted first. Extra hours are quoted before they are worked.
- What was quoted, built. We build what is quoted.
The hourly price is shown on this page.
How it works
Step 1: Describe the job
Write to us on the contact page. Give the store's address and say what it should do that it does not do now.
Step 2: Get a quote
We quote the job in hours. A larger job gets a written quote.
Step 3: Agree before anything starts
Work starts only after you have the quote and say yes to it.
Step 4: Further work is quoted the same way
If the job grows, or you want more done, the extra hours are quoted before they are worked.
What we need from you to start
The contact form asks for your name, an email address and your message. We reply by email. A clear description gets a closer quote, so include:
- the store's address
- what the store should do that it does not do now
- which checkout it uses, and what "Order data storage" is set to, if you looked
- the theme and the extensions the job touches, if you know. The platform and theme detector shows a site's theme folder and the plugins that show.
- the name of the other system, for a job that connects one
- your deadline, if there is one
Leave passwords and API keys out of the message.
What it does not cover
- A delivery date. This page promises no timeline.
- Paid extensions, licenses and other companies' fees. What a payment or shipping company charges is between you and them. Developer time pays for the work only.
- An account with a payment company. You open it.
- Compliance of any kind. This page promises none.
- Upkeep afterward. That is a care plan: WooCommerce maintenance.
- A store that is broken now. Ask for a free diagnosis, or emergency support if it cannot take orders.
- A move between platforms. See platform migrations.
- Results in sales. We build what is quoted. We do not promise more orders from it.
Before you buy: do it yourself, or check first
Custom code is for what is left once a setting and an existing extension have been ruled out.
- Look for a setting. A webhook and a REST API key are both made in WooCommerce's settings.
- Look for an extension that already does it. WooCommerce's own page on checkout fields opens by pointing to an extension for people who would rather not write code. On WooCommerce.com, an extension's page says whether it is compatible with the Cart and Checkout blocks. How to choose a WordPress plugin shows how to read a listing.
- Try it on a copy. How to set up a WordPress staging site includes how to stop the copy from emailing customers or taking payments.
If a sale is coming, read the sale readiness checklist first. The WooCommerce topic lists everything we have on stores.
What it costs
Developer time
$49
Start with a free diagnosis
Common questions
How much will my job cost?
The hourly price is on this page. The total depends on how many hours the job takes, and you get that number as a quote before work starts.
How do I tell which checkout my store uses?
Edit the Checkout page and open the List View. It shows the Checkout block or the [woocommerce_checkout] shortcode.
Will the work survive a WooCommerce update?
It depends on how it was done. An edit inside the plugin's own files is lost. A template copied into a child theme stays, and falls behind. Code on a hook stays. All of it needs checking after an update, which is what a staging copy is for.
Do I need a care plan to buy developer time?
No. Developer time is bought on its own. Decide who will check the new code when WooCommerce is updated.
How is this different from custom development?
Both are sold as developer time, with a quote first. Custom development is code for any WordPress site. On a store, the checkout, the order tables and the payment method decide how it is done.

