Skip to content

WooCommerce maintenance cost: why a store costs more, and what the extra should buy

A WooCommerce store costs more to maintain than a brochure site because more can break, a break costs money by the hour, and a careful update takes longer. The extra should buy a staging copy, a test order through each payment method, and backups that keep up with orders.

By
WP Ministry
Published

In short

  • A store's update is not finished until an order has gone through each payment method. A look at the pages does not show a checkout that has stopped taking money.
  • Count your extensions, payment methods and template overrides. Each one is read, updated and tested on every round, and that is where the extra hours go.
  • Ask how often the database is backed up, and what happens in a restore to the orders placed after the last backup.
  • Paid extensions carry yearly licenses. Hold them in your own account, and ask who renews them.
  • A test after an update covers that update. Ask who watches the checkout on the days between.
  • Put your own order counts and revenue into the two calculators linked below, then set the result beside the quote.

A WooCommerce store costs more to maintain than a brochure site for three reasons. More can break: a store adds a checkout, payment gateways, extensions and a database that changes with every order. A break costs money by the hour, because a store that cannot take payment earns nothing until it is repaired. And a responsible update takes longer: WooCommerce's own guide asks for a backup, a test on a staging copy and a test order afterward.

This page quotes no company's price list and ranks nobody. What every WordPress site pays for, and the three ways to pay for it, are in WordPress maintenance cost. This page covers only what a store adds, and what the extra money should buy.

What is different about a store

Seven things, each set out in WooCommerce's own documentation. They are where the extra hours go. The routine itself, week by week, is in how to maintain a WooCommerce store.

An update can change the database

On most plugins, an update replaces files. WooCommerce's update guide says some of its updates also need a database update afterward, started from a notice with the button "Update WooCommerce Database", and that a backup should be in place before it is selected. Since WooCommerce 9.9 that database update starts by itself in the background, according to the release's own notes, so the backup has to be in place before the plugin is updated at all. The database is where the guide says products, orders and settings are kept. So a WooCommerce update can be two changes, and the second is made to the data the store runs on.

Extensions state what they work with

Payments, shipping, tax and subscriptions are each a plugin, often from a different developer. The update guide puts extensions, the theme and the payment gateways in the same session as WooCommerce, because whether the store works depends on the whole set. Each one states what it works with, and someone has to read that before the round.

  • The WooCommerce version. Under WooCommerce, then Extensions, then My subscriptions, each item shows a "Tested up to WooCommerce version". Where that is older than the version you are moving to, the guide says to look for an update, read the release notes or contact the developer first.
  • Order storage. WooCommerce keeps orders in database tables of their own on stores first installed with version 8.2 or later, and older stores can switch. Each extension declares whether it supports this. WooCommerce warns on the Plugins screen about one that does not, and will not let a store switch while one is active.
  • The block checkout. The Cart and Checkout blocks are the default for stores started after version 8.3. WooCommerce's documentation says a payment gateway that is not compatible with them may not appear as a payment option.

Paid extensions also carry licenses. WooCommerce's marketplace sells each one as a subscription, most often billed yearly. When it expires, the extension stays installed and stops receiving new versions, security patches and compatibility updates included. One key covers one live site and one staging site.

Hold the licenses in your own account. WooCommerce's guidance for agencies notes that a client who buys directly owns everything from the start, with nothing to transfer later.

Templates copied into the theme go stale

A classic theme can replace one of WooCommerce's templates with its own copy, kept in a woocommerce folder inside the theme. Templates draw the store's pages and its emails. WooCommerce's documentation says its own templates update with new releases and the copies do not.

The status report under WooCommerce, then Status, notes the copies that are outdated. No button fixes them: WooCommerce says a one-click update is impossible because every theme is coded differently. Its method is to save the old file, copy the current one into the theme and make the changes again, and its own page calls that time-consuming. A theme's author usually does it for the theme's copies. A copy made for your store is yours to keep up.

Payment gateways are separate software, with accounts of their own

A gateway is a plugin with its own releases. Behind it is an account at a payment provider, and a connection between the two.

WooCommerce's documentation for its Stripe extension shows the parts. The extension sends requests to the provider, and the provider reports back to the store through webhooks. Live mode and test mode are connected separately. Two things follow.

  • A test on staging does not prove the live connection. A payment in test mode shows that the code works, not that the live account and its webhooks are in order. WooCommerce's update guide asks for a test order on the live store as well.
  • A broken connection can look like unpaid orders. WooCommerce's email troubleshooting guide says orders left in "Pending payment" after the money was received may mean the gateway is having trouble communicating with the site.

The account stays with the store's owner. WooCommerce's own support helps with the extension on the site, and sends questions about verification, payouts and compliance to the provider. Expect the same line in a maintenance quote.

Orders have to survive a restore

A brochure site restored to last night's backup loses nothing a visitor would notice. A store does. The database holds the orders, and WooCommerce reduces stock when an order is paid. A restore puts the database back as it was when the backup was made. The orders placed since are gone from the store, the stock counts go back with them, and the payments are still taken at the provider.

WordPress's general advice is a weekly backup for a small site and a daily one for a busy site. For a store, the measure is how many orders arrive between two backups. There are two ways to shrink that number.

  • Back up the database more often. The gap is whatever was ordered since the last backup.
  • Use a backup that records each order as it is placed. Jetpack VaultPress Backup, which WooCommerce's update guide gives as one option, documents this design: an order is not lost when the site is restored to a point before it was placed.

Either way, a restore on a store is a last resort. The checkout-down runbook leaves it until the end.

Customer data is in every copy

A store holds a name, an address and a history of purchases for each customer. WooCommerce's Accounts and Privacy settings decide how long they are kept, and WooCommerce says to make sure the periods comply with the laws that apply to you. Card numbers are separate: WooCommerce says it never stores card details. Its page on the card industry's security standard says the standard still applies to a site that serves a checkout page, and that compliance is the store owner's responsibility.

The cost is in the copies. A staging site is a copy of the live store, customers included. So is every backup. More backups and a staging copy mean more copies of personal data, and someone has to decide where they are kept, who can open them and when they are deleted. A copy can also write to customers: WooCommerce's guide to test orders says a test order triggers order emails like any other.

Nothing here is legal advice. Which rules apply to your store is a question for your payment processor and your own counsel.

Scheduled actions and email run out of sight

WooCommerce hands background work to a queue called Action Scheduler. Its documentation lists order notifications, payment processing, subscription payments and webhooks among the tasks. By default the queue is started by WP-Cron, which runs only when someone requests a page, so on a quiet store tasks run late. Failed actions are listed under WooCommerce, then Status, then Scheduled Actions, for whoever opens that screen.

Two more things fail quietly.

  • Webhooks. A store can report each order to another system through a webhook. WooCommerce disables a webhook after more than five consecutive delivery failures.
  • Email. WooCommerce sends mail through WordPress's own mail function, so delivery depends on the host. It logs every transactional email it attempts, with the outcome, under WooCommerce, then Status, then Logs.

None of this shows on the front of the store. Each is a screen that someone has to open on a schedule.

What moves the cost

These change the hours, whoever does the work. Count each one before you compare quotes.

FactorWhy it changes the workWhat to count or ask
Number of extensionsEach has its own releases and its own compatibility to read before a round, and each is one more thing to test afterward.The rows on the Plugins screen.
Order volumeMore orders arrive between two backups, so a restore removes more. WooCommerce's guide suggests Coming soon mode during an update so that nobody checks out while files and the database change. A busy store has fewer quiet hours for that.Orders on a busy day, and the quietest hour of the week.
Number of payment methodsEach gateway is its own plugin, with its own account, connection and test mode. A test order goes through each one.The enabled rows under WooCommerce, then Settings, then Payments.
Custom code and template overridesNobody publishes updates for code written for one store. WooCommerce's developer documentation says code that adds fields to the checkout usually needs work to support the block checkout. Outdated templates are redone by hand.The Templates section under WooCommerce, then Status. Ask who keeps the custom code working.
How often the catalog changesProducts, prices and stock sit in the database beside the orders. A staging copy made last month no longer matches the store, and a restore undoes the product changes made since the backup.Product and price changes in a week. Ask how the staging copy is refreshed.
Whether updates are tested on staging with a test orderWooCommerce's guide says to test on staging, then apply the same updates to the live store. The round is done twice, with an order placed each time.Who provides the copy, and what is tested on it and on the live store.
How often backups runEach extra backup is more storage and one more thing to check. In return, the gap a restore would open is smaller.The time between two database backups, and how long each is kept.
How fast a reply is promised when the store is downA reply promised within a set time means a person is kept available in those hours, and a store sells outside office hours.The days, the hours and the time zone, and what counts as down.
Subscriptions or bookingsRenewal payments are started by Action Scheduler, with no customer at the checkout to notice a failure. The Subscriptions extension stops automatic payments on a copy whose address differs from the live store's. A copy on the same address charges for real. Deactivating a gateway's plugin switches its subscriptions to manual renewal. Bookings requires a working WP-Cron.Whether either is installed. Ask how copies of the store are made, and how plugin conflicts are tested.

What it costs when nobody does this

No published figure can tell you, because the answer is your store's own revenue. Two calculators work it out from your figures. Both run in your browser, and nothing you type is sent.

  • Orders that were started and never paid. The WooCommerce failed orders calculator multiplies the orders left in "Pending payment" or marked "Failed" by your average order value. Some failure is normal. Run it for the week before an update and the week after: a share that rises after a change is the fault a test order would have caught on the day.
  • Hours the store could not sell. The downtime cost calculator divides what the store brings in over a month by the hours in which it earns, and multiplies by the hours it was down. Count from the fault to the repair. On a store the first stretch is the long one, because a checkout that fails looks normal from the home page.

A restore has a cost of its own. Count the orders between the backup and the restore: each is a customer who paid for an order the store no longer holds.

What the extra money should buy

A quote for a store should be higher than one for a brochure site by the price of this work:

  • A staging copy, refreshed before each round, where updates go first.
  • A test order through each payment method after every update, with the test orders deleted afterward.
  • Database backups frequent enough that you can afford the gap, and a stated way of keeping the orders placed after the last one.
  • Someone who reads the compatibility and release notes before the round, watches WooCommerce's advisories, and puts a security release on ahead of schedule, as WooCommerce's guide advises.
  • Someone who opens the failed orders, the scheduled actions and the logs between updates.
  • Template overrides and custom code kept current, or named as separate work.

If a quote for a store is no higher than one for a brochure site, ask which of these it leaves out.

WP Ministry's care plans draw the line between two tiers. Business tests updates on a staging copy first and includes 3 hours a month of fixes and edits. Store is for WooCommerce: it raises the allowance to 5 hours a month and adds a checkout and payment test after every update and more frequent backups for order data. The checkout test runs after updates. It is not constant monitoring of your payment provider. Both are described under WordPress maintenance.

What to ask anyone quoting for store maintenance

Send these in writing, and ask for a number or a yes for each.

  • Do you place a test order after every update? Through which payment methods, and on staging, on the live store or on both? What happens to the test orders? WooCommerce gives a test order no special status, so one left behind can be shipped or counted in the reports.
  • How often is the database backed up, and what happens to the orders placed after the last backup if you restore? A good answer gives the gap in hours and says how those orders are kept.
  • Who watches the checkout between updates? WooCommerce sends a "Failed order" notice when an order is marked failed, by default to the site administrator's address. A checkout that stops before an order exists marks nothing. Ask who reads those notices, the scheduled actions and the logs, and how often.
  • What counts as an emergency, and what does it cost? Ask for the definition in writing, the days and hours in which a person answers, and whether the repair is in the fee, comes out of an allowance or is billed on top.
  • Who holds the extension licenses and the payment accounts, and are renewals in the fee?
  • Are template overrides and custom code covered? If not, ask how that work is quoted.
  • Where are the staging copy and the backups kept, who can open them, and when are they deleted?
  • If the store sells subscriptions: how do you stop a copy of the store from charging customers?

How to choose a WordPress maintenance service has the questions that apply to any site, and what WordPress maintenance includes goes through the ordinary lines of a plan.

How to work out your own figure

  1. Step 1: Count what the store has

    Note the number of extensions, the payment methods that are enabled, the templates your theme overrides, and whether Subscriptions or Bookings is installed. The table above says where each is listed.

  2. Step 2: Measure the gap in your backups

    Find the time between two backups of the database. Then count the orders the store took in a stretch of that length on a busy day. That is what a restore would remove.

  3. Step 3: Price a broken checkout

    Put your own order counts into the failed orders calculator, and your revenue and hours into the downtime cost calculator. For the hours, use the time from an update going on to the first customer writing in. That is how long a broken checkout lasts when nobody places a test order.

  4. Step 4: Price the careful round

    A store's round is: refresh the staging copy, update it, place a test order through each payment method, apply the same updates to the live store, test again, and delete the test orders. If you do it yourself, time it once. The general cost guide shows how to turn timed rounds into a monthly figure. If you are being quoted, ask which of those steps the fee covers.

  5. Step 5: Set the figures side by side

    Line up three numbers: the fee for a plan that includes a store's extra work, the fee for one that does not, and what one bad day costs at your own figures. The difference between the first two is the price of the staging copy, the test orders and the more frequent backups. The third tells you whether that price is worth paying. The two plans priced below differ in that way, and the pricing page has every plan.

What we charge

  • Business

    $149 a month, per siteor $1,490 a year

    Everything in Care, plus 3 hours a month and updates tested on a staging copy first.

    • Everything in Care
    • 3 hours of fixes and edits a month
    • Updates tested on a staging copy first
    • Quarterly speed tune-up
    Start with a free diagnosis
  • Store

    $249 a month, per siteor $2,490 a year

    Everything in Business, plus 5 hours a month and a checkout test after every update.

    • Everything in Business
    • 5 hours of fixes and edits a month
    • Checkout and payment test after every update
    • More frequent backups for order data
    Start with a free diagnosis

Common questions

Why does WooCommerce maintenance cost more than WordPress maintenance?

Each round has more steps and more to check. WooCommerce's update guide asks for a backup, a test on a staging copy, a database update when one is needed, and then a test order with checks of shipping, tax, payment and email. A store also has payment gateways, extensions and background tasks that an ordinary site does not.

Can a store go on a maintenance plan made for ordinary sites?

It can, and the updates will go on. What such a plan usually lacks is the test order and the more frequent backup of orders. A checkout can stop taking money while every page looks right, so ask in writing whether anyone places an order after an update.

Does a small store need a staging copy?

WooCommerce's guide says to test on staging whenever possible, and not to test updates directly on the live store. The size of the store does not change what an update can break. It changes what a broken hour costs, and you can work that out from your own figures.

Are extension licenses part of a maintenance fee?

Do not assume so. Paid extensions carry licenses that renew, most often once a year, and when one expires the extension stops receiving updates, security patches included. Ask whether renewals are in the fee and in whose account each license is held.

How often should a store's orders be backed up?

Often enough that you could afford to lose the orders placed between two backups. On a store that takes orders through the day, a daily backup can be most of a day behind. A backup that records each order as it is placed closes the gap, so ask which kind a quote includes.

More on this subject

Would you rather we looked after it?

The Store plan is $249 a month. Everything in Business, plus 5 hours a month and a checkout test after every update. It starts with a free diagnosis.