WooCommerce development for stores that outgrew their plugins.
The day your pricing rule or your stock logic stops fitting anything you can buy from a marketplace, you are writing code either way. Whether that code is one plugin namespaced to you or forty extensions fighting over the same filter decides the next three years of cost.
WooCommerce development is writing your store's commercial logic — pricing rules, checkout behaviour, order workflow and back-office sync — as code inside WooCommerce, instead of stacking overlapping extensions on top of it. Canopus builds that layer on HPOS and Action Scheduler, with idempotent payment handling and stock that reconciles against your ERP.
Six handoffs, and the one your dashboard still calls a success
A WooCommerce order changes hands six times between the add-to-cart click and a line in your accounts. Five of them can fail without anybody being told.
Scroll the diagram sideways to follow all six handoffs.
All six share one root cause: the network is unreliable and money is not. A gateway that has already taken a card payment can time out before it manages to say so. So inbound payment events carry an idempotency key and their outcome is written before any downstream work starts, stock movements are transactional rather than a read followed by a write, and a nightly job flags every order the store and the ERP disagree about. The only decision you get is whether you find that disagreement, or your accountant does at month end. We saw exactly this on a multi-brand store replatform: webhook retries were creating duplicate orders until idempotency keys and an hourly reconciliation replaced the operations team's manual daily check.
WooCommerce, Shopify Plus, or headless
We build on all three and lose work to the other two regularly. Getting it wrong costs a replatform, so it belongs on the first call, not in a design review.
| The question | WooCommerce | Shopify Plus | Headless build |
|---|---|---|---|
| Unusual pricing or approval rules | Any rule you can express in PHP | Within what Shopify Functions and apps allow | Unlimited, at a build cost |
| Who carries uptime and PCI scope | You and your host | Shopify does | You, across two deployments |
| Ongoing platform cost | Hosting plus extension licences | Platform fee that scales with revenue | Two systems to run and patch |
| Content and commerce in one editor | Same WordPress editor as the site | Separate blog, or a second CMS | Whatever you wire together |
| Very large or highly variable catalogues | Needs deliberate work past ~50,000 SKUs | Handled by the platform | Handled by your search layer |
If the platform question is still open, start at eCommerce development. If you are not taking payment online at all, web development is the cheaper and better fit.
Five kinds of WooCommerce work
Named separately because they price and fail differently. Most engagements are one or two of these — a proposal quoting all five without asking which you need was written before the call.
Custom checkout
Multi-step flows, conditional fields, delivery-date selection, purchase orders alongside cards, and address validation that matches how you ship. We work inside WooCommerce's checkout blocks rather than replacing the flow, because a store with a forked checkout breaks on the next release and then stays three versions behind for fear of the upgrade.
B2B pricing and quote-to-order
Customer groups, contract pricing, quantity breaks, tax-exempt accounts, credit limits, and an approval step between a buyer's cart and a confirmed order. The hard part is never the discount field — it is the rule your sales team applies from memory, the one where a customer gets trade pricing on three categories but not the fourth. Discovery ends with that ruleset signed, because a rule nobody will write down cannot be built.
Subscriptions and recurring billing
Renewals, upgrades and downgrades with proration, dunning on failed payments, pauses and skips. Entitlement lives in your own database rather than being inferred from the gateway, because the two disagree more often than anyone expects and a gateway is no system of record for what a customer may access. Migrating live subscribers is quoted separately.
Payment gateway integration
Stripe, PayPal, Razorpay and regional gateways, including ones with no maintained WooCommerce extension. Idempotency keys on every inbound event, retry with exponential backoff, a dead-letter queue for what still fails, and a reconciliation report your finance team can read without an engineer. Card data never touches your server, so the store stays outside PCI scope by design rather than by hope.
ERP, stock and catalogue sync
Two systems both believing they own the stock number is how overselling starts, so ownership is settled field by field before any code is written. We connect to NetSuite, SAP Business One, Odoo, Zoho or an in-house system, with conflicts resolved by a stated rule rather than by whichever job ran last. The deeper patterns are covered in API and system integration.
The numbers, and the work we turn down
Published rather than held back for a proposal, so nobody spends a week on a conversation that was never going to work.
What we don't take on
- Theme-and-plugin store installs under $5,000. Our general website floor is $3,000 — see web development — and a store sits higher because it inherits payment testing and reconciliation a brochure site never needs. Below that, a good theme, a few extensions and a freelancer serve you better.
- Pricing rules nobody will commit to paper. If the rule lives only in a salesperson's head and no one will write it down, we cannot build it. Neither can the agency that quotes it anyway.
- Live subscription migrations priced as a line item. Payment tokens do not reliably move between gateways. That is its own project with its own risk, or nothing.
- Replatforming off Shopify without a reason. "We want to own it" is not one. If Shopify is doing the job, staying costs less than anything we would build — including our fee.
What usually goes wrong on a WooCommerce store
Four failure modes we plan against on every store. Worth asking whoever you hire how they handle each.
Forty extensions doing the work of six
Every extension adds queries, front-end assets and another update surface. Two of them hook the same price filter, and which wins depends on a load order nobody documented. It works until one ships a release.
How we handle it: an extension audit before anything new is installed, and your business rules built as one plugin namespaced to you rather than four bought ones competing for the same hook.
The store slows down exactly when it sells
Cart and checkout cannot be page-cached, so a peak trading day hits the database directly. An unindexed meta lookup that was invisible at 20 orders a day is very visible at 2,000, and theme optimisation never touches it.
How we handle it: profile with Query Monitor under load, add a Redis object cache, and move order storage onto HPOS so admin order screens stop competing with the posts table.
Scheduled jobs that quietly stop running
WooCommerce leans on Action Scheduler for renewals, emails, syncs and webhooks, driven by default from WP-Cron — which only fires when somebody visits the site. Go quiet overnight and the queue arrives all at once in the morning.
How we handle it: Action Scheduler on a real system cron, WP-Cron disabled, and queue depth plus last-successful-run on a screen someone actually looks at rather than in a log.
An extension update takes checkout down
A payment extension changes a hook signature and checkout starts failing silently. Nobody notices until the day's revenue is visibly wrong, and by then you cannot tell which of six updates did it.
How we handle it: staging that matches production PHP and cache layer, every update rehearsed there first, a rollback point kept live, and nothing shipped on a Friday.
What we build stores with
If you already run one of these, we default to it. What your team can maintain outranks what we would prefer.
Core commerce
Payments & tax
Platform & hosting
Back office & growth
Cost, timeline, ownership and what happens after launch
What does custom WooCommerce development cost?
Integration count and data quality drive it, not product count — a 40,000-SKU catalogue arriving as one clean feed costs less to build against than 400 products reconciling with an ERP that has no API. Our floor for custom WooCommerce engineering is $5,000, above the $3,000 website floor we publish elsewhere, because a store inherits payment testing and reconciliation a brochure site never needs. A paid discovery gets you a fixed written estimate and the ruleset document, either way.
How long does a WooCommerce build take?
Eight to fourteen weeks with a three-person team for a defined catalogue, one payment gateway and one back-office integration, after one to two weeks of discovery. B2B pricing and quote-to-order approval add three to five weeks, almost all of it spent getting the rules written down rather than coded. Live subscription migrations are their own project, because payment tokens do not always move between gateways.
Who works on the store, and how do you test payment changes?
A named technical lead who stays through handover, one or two WooCommerce engineers, and QA. Payment changes run against the gateway's own sandbox with a written plan covering four failure cases rather than the happy path: a card declined after stock is reserved, a webhook delivered twice, a webhook never delivered, and a customer who closes the tab mid-redirect. That is where money goes missing, and what nobody demos.
Do we own the plugins and code you write?
Code sits in your repository from the first commit, and IP assigns to you on payment for the milestone it was written in. Your business rules ship as one plugin namespaced to you rather than buried in the theme, so a redesign cannot delete your pricing logic. Commercial extensions such as WooCommerce Subscriptions are licensed in your name. Anything derived from WooCommerce inherits its GPL licence — true of every agency's work.
What support do you provide after the store goes live?
A 30-day defect warranty at no cost covers bugs in what we built. After that, stores need a retainer more than ordinary sites do: WordPress core, WooCommerce, your extensions and your gateway all release on their own schedules, and a payment extension update is not one to apply untested on a Friday. Retainers cover updates rehearsed on staging, monitoring of failed orders and stalled Action Scheduler queues, and a monthly reconciliation check.
When is WooCommerce the wrong choice?
When you want a hosted platform to own uptime and PCI scope for you, when the catalogue runs to hundreds of thousands of variable SKUs, when several regional storefronts each need their own tax and currency rules, or when nobody on your side wants hosting and updates. Then Shopify Plus or headless is the better answer and we say so on the first call — see eCommerce development for the full comparison.
Can you move our store to HPOS without breaking our extensions?
Usually, and the sequence matters more than the switch. We audit every active extension for HPOS compatibility first, run the store in synchronised mode so orders write to both the legacy post tables and the new order tables, verify the counts agree, and only then make the custom tables authoritative. Anything incompatible is updated, replaced or rewritten into your plugin, and the rollback point stays live until reconciliation is clean.
Will you work on a store another agency built?
Yes, and it is a large share of what we do. We start with a paid audit rather than a quote: active extensions and what each costs in queries and assets, where business logic lives, how orders reach your back office, and what the theme overrides. You keep that document whatever you decide next. We won't quote a fixed price on a codebase we haven't read.
Related services
Tell us the rule your store can't express.
The pricing logic that lives in a spreadsheet, the reconciliation that never balances, or the checkout step buyers keep abandoning. An engineer replies within one business day — and if Shopify Plus is the cheaper answer, that reply will say so.
- Email — [email protected]
- Phone / WhatsApp — +91 817 979 7732
- Existing store? Ask for a paid extension and performance audit