WooCommerce was built around physical products, but a growing share of the real stores I audit in 2026 sell services. Consulting hours, agency retainers, maintenance plans, photography packages, tutoring, legal advice, fractional CFO work. Selling services on WooCommerce works well when you understand which WooCommerce building blocks map to which service-selling pattern, and it goes sideways fast when you try to force a service business into a product-store template.
I have set up a dozen service-based WooCommerce stores in the last eighteen months, some as a quick side-build for a freelancer leaving Upwork, some as full agency implementations with retainer billing and multi-consultant scheduling. The patterns are surprisingly consistent. This guide covers the three main patterns, fixed-price packages, hourly billing, and quote-based sales, and the specific plugins and settings that make each one actually work rather than just look like they work on the admin dashboard.
The three service-selling patterns
- Packaged services. Tiered, fixed-price offerings: Starter, Growth, Enterprise. Customer picks a tier, pays, work begins. Best for standardized services where the scope is well-defined and you have done the work often enough to price it confidently.
- Hourly and time-based services. Customer books a block of time, one hour, four hours, a day, at a defined rate. Best for consultations, coaching, support retainers, and anything where the deliverable is your attention rather than a specific artifact.
- Quote-based services. Customer describes the project, you respond with a custom quote. Best for bespoke work where scope varies per client and a standardized price would either leave money on the table or lose the deal by being too high on the simple jobs.
Most service businesses I have worked with need at least two of these patterns. A freelance web developer sells Growth and Enterprise packages for standard builds, hourly blocks for ongoing maintenance, and custom quotes for the occasional enterprise migration that cannot be boxed into either. The right answer is usually to pick the dominant pattern, build the store around it, and add the other patterns as secondary flows.
Pattern 1: packaged services, the simplest setup
The simplest configuration, and the one I recommend to anyone just starting out. Each package is a WooCommerce Simple product with these settings:
- Product name, the package name, for example “Growth Plan, WordPress Care”
- Short description, what is included, written as a bulleted list of deliverables
- Price, the package price, and be specific about what it covers and what it does not
- Virtual and Downloadable, check both, because Virtual skips shipping calculation and Downloadable lets you attach a welcome PDF or onboarding link as part of the product file
- Category, “Services,” which you will use later for reporting and tax purposes
- Cross-sells, linked to the next higher-tier package for natural upsells
If your three tiers are very similar, same deliverable but different volumes, use a Variable Product with one variation per tier. Otherwise three Simple products linked as related products is cleaner for reporting, because you get one row per package in your sales summary instead of a single product with opaque variation breakdowns.
Post-purchase automation is where most stores stop thinking and leave money on the table. WooCommerce fires the woocommerce_order_status_completed action when a payment clears. Hook into that event to create the client in your project management tool, send the onboarding email with an intake form, and drop a calendar hold on your dedicated project start day. A single custom plugin file does this in 50 lines, and once it is set up, the store does the entire intake flow for you. I have seen this automation alone save a solo consultant five hours a week of manual client-onboarding work.
Pattern 2: hourly and time-based services
For selling hours, consultations, coaching calls, and support retainers, the base product setup is the same as packaged services, but you need one of these approaches to handle the scheduling layer, because a customer paying for a consultation call wants to pick a time, not wait for you to email them a Calendly link three hours later.
Option A: sell time blocks as products plus manual scheduling. Create a “1-hour consultation” product at your rate. After purchase, send the client a Calendly or SavvyCal link in the order email. Fastest to set up, requires the least plumbing, but the scheduling experience feels disconnected and some clients will never actually book the call. I would only use this for a very low-volume store.
Option B: WooCommerce Bookings at $249 per year. The official extension. Customer picks a date and time from a calendar during the product page interaction, pays, and the booking is confirmed in one flow. Supports multiple resources, so if you have three consultants, three separate calendars book independently. The cleanest integrated experience on the list, but the pricing is real and the plugin is showing its age in a couple of places.
Option C: BookingPress plus WooCommerce integration, free core with Pro around $79 to $149. The modern contender. Native booking calendar, Google Calendar and Outlook sync, Zoom integration for auto-created meeting links. Usually the right balance of price and features for a solo practitioner or small team. I have used it on three recent client projects and been happy with all three.
Option D: Amelia Booking at around $149 to $299 per year. More polished UI, good for multi-location or multi-staff setups where you need fine-grained control over who can be booked when. Overkill for a solo consultant, appropriate for a small agency.
Whichever booking plugin you use, the tax setup is non-trivial. Many jurisdictions treat services differently from physical goods, and some require the customer’s billing address to determine the correct tax rate. Set your tax classes carefully and test a sample checkout with addresses in every major jurisdiction you sell into. I have lost hours debugging tax issues that turned out to be a missing “services” tax class in the WooCommerce configuration.
Pattern 3: quote-based services
Some services cannot be priced off the shelf. Website redesigns, custom development, specialized consulting engagements, anything where the scope genuinely varies by client and a fixed price would be either embarrassingly wrong or uncompetitive. For those, the WooCommerce pattern is a “request a quote” flow, where the customer configures or describes what they want, submits the request, and the store owner responds with a custom price.
Plugins that implement this pattern:
- YITH WooCommerce Request a Quote at around $129 per year. Mature, flexible, supports bulk quote requests for multiple products, and integrates cleanly with the standard WooCommerce order flow once the quote is accepted.
- Quotes for WooCommerce, free. Basic version, suitable if your needs are simple and your volume is low.
- WooCommerce PDF Quotes at around $79. Emits proper PDF quote documents with custom branding, useful if your clients expect formal quotes on letterhead.
The typical quote flow is: customer browses services, adds items to a “Quote Request” cart, submits the quote request with project details and contact information, store owner reviews and sends a formal quote or quote link, customer accepts and pays, and the accepted quote becomes a real WooCommerce order in the system. The gap in most of the cheaper plugins is converting the accepted quote into a proper WooCommerce order automatically. YITH handles this cleanly. Some others require manual re-entry, which defeats the point of selling through WooCommerce in the first place.
If you are building a full marketplace where multiple service providers operate under one roof, the quote flow gets even more interesting, and I covered the full pattern in my guide to building a Fiverr-like service marketplace with WordPress and WP Sell Services. For a solo provider, the simpler plugins above are enough.
Deposits and recurring retainers
Many services require a deposit up front with the balance on completion, or a recurring retainer paid monthly. Two patterns to know:
WooCommerce Deposits at around $179 per year lets you configure products with deposit plus balance or full-payment options. The deposit creates an order now. The balance is scheduled, with an email reminder and payment link sent when the balance is due. Essential for any service business where the work takes weeks and you need cash flow before delivery.
WooCommerce Subscriptions at around $256 per year is the right tool for recurring retainers. A $2,000 per month care plan becomes a Subscription product, and the customer is charged automatically every month until they cancel. For any agency that runs on retainer income, this is non-optional. I have one client running an entire $340,000 per year care-plan business on WooCommerce Subscriptions alone, and it is genuinely hands-off once the initial setup is done.
For a solo service business just starting out, Deposits plus manual invoice reminders may be enough. For a retainer-heavy agency, Subscriptions is required and the $256 per year is trivial compared to the cost of manual billing.
Tax treatment, where most stores get it wrong
Services are taxed differently from physical goods in almost every jurisdiction I have worked in, and this is where most service stores on WooCommerce start leaking compliance problems.
- GST in India, services typically attract 18 percent GST, some categories lower. Set up a separate Tax Class for services so the calculation runs correctly at checkout.
- VAT in the EU and UK, services to consumers are often taxed at the customer’s location, not the provider’s location. Use the EU VAT Assistant plugin or a compliance solution like Quaderno to handle the cross-border complexity.
- US sales tax, services may or may not be taxable depending on the state, and the rules change every year. TaxJar or Avalara integration via WooCommerce is the right path once you sell into multiple states, and doing this work manually is not sustainable past about twenty orders a month.
The single most common mistake I see on audits is treating service sales the same as physical goods for tax purposes. Configure separate tax classes, test a sample checkout with an address in each major jurisdiction you sell into, and save the transaction receipts so you have evidence you validated the calculations. Is this tedious? Yes. Is getting audited by a tax authority more tedious? Also yes.
Invoicing and documentation
Services often need proper invoicing beyond the default WooCommerce order confirmation email, especially for B2B clients who need invoices with your GST number or VAT ID on them.
- WooCommerce PDF Invoices and Packing Slips, free core with Pro around $79. Generates proper invoices with your tax registration details, and the Pro version adds templates you can customize for your brand. Essential for any B2B service sales.
- Document uploads via Gravity Forms or Fluent Forms integration, so clients can upload project briefs, contracts, or existing assets as part of the checkout flow. This one is underused and it makes a real difference to onboarding quality.
For contract-heavy services, consider redirecting clients from the WooCommerce thank-you page to a DocuSign or PandaDoc flow that captures the signed service agreement before work begins. You can do this with a simple redirect on the order-received page and a saved contract template on the DocuSign side. The extra friction is worth it for the legal clarity on larger engagements.
Reporting that actually tells you what you are selling
Stock WooCommerce reports are designed for product stores, which means they are not particularly useful for service stores without some adjustment. The changes I make on every service-business install:
- Filter reports by the “Services” category to isolate service revenue from any product revenue that happens to be on the same store
- Use Metorik, a SaaS layer on top of WooCommerce at around $40 per month, for deeper reporting. Customer lifetime value on recurring services, retention cohorts, and the revenue breakdowns the default reports do not provide
- Export monthly to a spreadsheet and track four numbers: services sold, revenue by service type, average order value, and repeat rate
The financial shape of a service business is fundamentally different from a product business. Lower volume, higher per-order margin, more dependence on retention and upsells. Your reporting needs to reflect that reality, and the default WooCommerce dashboard will not do it for you.
A minimal setup that works from day one
If you are just starting to sell services on WooCommerce and want the smallest possible stack that actually works, this is what I recommend:
- WooCommerce, free
- Three Simple products for Starter, Growth, and Enterprise packages, each in the “Services” category
- A Fluent Forms “Request a Custom Quote” form on a dedicated page, connected to an autoresponder that notifies you on submission
- A Calendly link in the post-purchase email for hour-based add-ons or kickoff calls
- WooCommerce PDF Invoices plugin for proper invoicing
- Manual deposits via a Stripe deposit product, which you can create and send to the customer as a direct-checkout link for larger engagements
That covers Patterns 1 and 3 at zero added plugin cost beyond the invoice plugin and minimal setup time. Upgrade to booking or quote plugins when volume justifies them. And if you are still deciding between different service-selling plugins before committing to this stack, I compared the main options in my breakdown of WP Sell Services vs Jetonomy Services vs WooCommerce Bookings, which should save you a few hours of plugin-shopping.
If you are moving off a platform like Upwork and want to understand the broader financial and operational picture of running your own service store rather than paying marketplace fees, I wrote a separate piece on how to move your freelance services from Upwork to your own WordPress site that walks through the revenue math and the client-acquisition implications.
Bottom line
WooCommerce is a perfectly viable platform for service businesses in 2026, and on the right stack it can be genuinely better than Upwork, Fiverr, or standalone booking tools because you own the customer relationship and the data. The trick is picking the right pattern, packages, hourly, or quote-based, configuring the right plugin stack for that pattern, and getting the tax and invoicing details right at the start rather than fixing them after the first accountant complains. Do that once, and the store will run itself, freeing you to focus on delivering the service you are actually selling rather than fighting the admin dashboard every day.
