Working on a store that is taking orders
Staging with real shapes of data
The first job is a staging store that behaves like the live one: same plugins, same theme, a recent copy of products and orders with customer details scrubbed, and gateways switched to sandbox keys. Emails are trapped so no customer hears from a test. Without this, every change is a guess. With it, your developer can place an order with each payment method, refund it, renew a subscription and watch what the store really does.
The opening two weeks
Expect a written map of your order flow before any large change. It shows which plugins hook into checkout, where prices are altered, what runs when an order status changes, and which template files the theme overrides and how far behind they are. This usually turns up two or three quiet problems, such as a webhook that fails once a day or scheduled actions stuck in a queue. Those get fixed first. They are small, they are low risk, and they show you how the developer communicates.
A week on a trading store
Requests come in as tickets with an example: an order number, a product, a screenshot of the cart. The developer reproduces the case on staging, makes the change in a branch and writes down what they tested. Anything that touches totals, tax, stock or payment gets a fixed checkout script run before release: guest order, account order, coupon, each gateway, refund. Releases go out at your quiet hours, never just before a campaign, and we agree a freeze around your peak dates. Your project manager keeps that calendar.
Who reviews and who deploys
If you have a technical lead, pull requests go to them. If you do not, another developer on our side reads every change that touches checkout or orders before it is released. Custom code lives in a plugin of its own, not in the theme functions file, so a theme switch never takes your pricing rules with it. For bigger pieces of work, such as a new extension, see how we approach WooCommerce plugin development.
Signs you picked the right person
A good store developer asks what should happen when things go wrong: payment declined, item out of stock mid-checkout, sync target down. They push back on a plugin when twenty lines of code would do, and on custom code when a maintained extension exists. After a month, the number of surprises from your own store should be going down.