← All services

Custom Subscription Workflow for WooCommerce

WooCommerce Subscriptions handles the simple case: one product, one billing interval, renew forever. The moment you need pause-and-resume, usage-based billing, mid-cycle upgrades or a signup flow that talks to your fulfilment system, you need a custom subscription workflow WooCommerce can run reliably at scale. We design and build that workflow on top of the tools you already own, with fixed scope and fixed price.
scope my subscription build

what a custom subscription workflow WooCommerce build includes

Everything from the billing model through the renewal logic, the customer account screens and the failure handling, delivered as a versioned plugin you own.

get a quote
  • Billing logic and proration

    Custom intervals, trials, setup fees, mid-cycle upgrades and downgrades with proration, usage-based or seat-based pricing, and grouped renewals that bill once for several products on the same date.

  • Renewal and dunning automation

    Scheduled renewals through Action Scheduler, retry ladders for failed payments, tokenised cards via Stripe or PayPal, and the emails and account notices that keep involuntary churn down.

  • Integration and account tooling

    Hooks into your CRM, fulfilment or licensing system, custom My Account tabs, admin reporting and a WP-CLI command set so support staff can pause, resume or migrate subscribers safely.

how we build a custom subscription workflow in WooCommerce

where the default plugin stops

WooCommerce Subscriptions is a solid base. It gives you the shop_subscription post type, scheduled renewals through Action Scheduler and payment tokens for Stripe, PayPal and Braintree. What it does not give you is your business model. Typical requests we get: a trial that converts only after onboarding is complete, a plan that bills per active seat at the end of the month, a box subscription where the customer picks contents before each cut-off date, or an annual plan that has to sync to a licence server the moment payment clears. None of these are settings. Each one is a custom subscription workflow WooCommerce needs code for, and the quality of that code decides whether renewals run quietly for years or wake you up at 2am.

Signs that you have outgrown the defaults:

  • Support staff editing subscriptions by hand in wp-admin every week because the plugin cannot express the plan.
  • Failed renewals piling up in wp_actionscheduler_actions because the retry logic was never configured, or a snippet in functions.php throws on edge cases.
  • Customers charged twice, or not at all, after a plan switch because proration was approximated with a manual coupon.
  • A Zapier chain of five steps that usually tells your fulfilment or CRM system about a new subscriber.
  • Reporting done in a spreadsheet because MRR, churn and cohort data are not in the WooCommerce Analytics tables.

how we design the workflow

We start with a state diagram, not code. Every subscription status (pending, active, on-hold, pending-cancel, cancelled, expired) gets defined transitions, and every transition names the hook that fires it and the side effects that must run. WooCommerce Subscriptions exposes the hooks we need: woocommerce_subscription_status_updated, woocommerce_scheduled_subscription_payment, wcs_renewal_order_created, woocommerce_subscription_payment_complete and woocommerce_subscriptions_switch_completed. For pricing we filter woocommerce_subscriptions_product_price or register a custom product type that extends WC_Product_Subscription. For usage billing we record usage in a custom table (never in post meta at volume) and compute the renewal total in wcs_renewal_order_items before the gateway charges the token.

Every side effect that talks to an external system runs asynchronously through Action Scheduler with an idempotency key, so a CRM timeout never blocks a payment. If you also need the CRM side built, our WooCommerce CRM integration service covers HubSpot, Zoho and Salesforce sync in both directions.

what the build delivers

  • A single versioned plugin in its own Git repository, with PHPUnit tests around the pricing and transition logic. No snippets in the theme.
  • Custom My Account endpoints (added via add_rewrite_endpoint and woocommerce_account_menu_items) so customers can pause, skip, switch plan or update their card without contacting support.
  • A dunning ladder: configurable retry schedule, pre-dunning emails through WC_Email subclasses, and automatic on-hold after the final retry.
  • WP-CLI commands (wp swd-subs migrate, wp swd-subs reconcile) for bulk plan moves and for reconciling gateway records against local subscriptions.
  • Admin reporting: MRR, active count and churn per plan, queried from wp_wc_order_stats and the subscription tables rather than a spreadsheet export.

migrating existing subscribers

If you are coming from Chargebee, Recurly, MemberPress or an older WooCommerce setup, we import the payment tokens directly (Stripe supports cross-account payment method migration; PayPal reference transactions carry over with the billing agreement ID), create the subscriptions with wcs_create_subscription() and set the next payment date to match the old schedule. We rehearse the migration on a staging copy, compare the renewal calendar against the source system and only then run it live, usually in a maintenance window under an hour.

performance and checkout

Subscription checkouts are slower than one-off orders because the gateway has to create a customer and a payment method before the order is placed. We keep the extra work off the critical path and profile the checkout with Query Monitor before launch. If your store’s checkout is already slow, read about our WooCommerce checkout speed fix first; a subscription layer on a slow checkout only makes it worse. For stores being built from scratch, the subscription workflow is scoped as part of full website development so the catalogue and checkout are designed around it from day one.

timeline and pricing

A typical custom subscription workflow WooCommerce engagement takes three to six weeks: one week for the state diagram and technical spec, two to four weeks of build and testing, and a final week for migration rehearsal and go-live. You get a fixed scope and fixed price in writing before any code is written, and a straight answer on cost within 24 hours of our first call. We walk through the reasoning in more depth in Building a Custom Subscription Workflow in WooCommerce (Beyond the Default Plugin), or you can send us your plan structure and we will tell you what it takes to build.

how the engagement runs

Map the states

We interview you about every plan, trial, upgrade path and failure case, then produce a state diagram and a written spec naming each hook and side effect. You sign that off before any code starts.

Build and test on staging

The plugin is built in its own repository with unit tests around pricing and transitions. You test real signups, renewals and plan switches on staging using the gateway's sandbox keys.

Migrate and go live

We rehearse any subscriber migration, run it in a short maintenance window, monitor the first renewal cycle and hand over documentation plus 30 days of post-launch fixes.

questions we get asked about subscription builds

Do we still need the WooCommerce Subscriptions plugin?

Usually yes. It handles renewal scheduling, gateway tokens and the subscription post type well, and it costs far less to extend than to replace. We build on top of it. If your model is unusual enough that its assumptions get in the way, we will say so in the spec and quote a standalone approach instead.

How much does a custom subscription workflow cost?

It depends on the number of plan types, transitions and external systems. A single custom billing rule with proration is a small fixed-price job; a full usage-based platform with CRM sync and migration is a multi-week build. We give you a fixed price in writing within 24 hours of understanding your plan structure.

Which payment gateways can you work with?

Stripe, PayPal (reference transactions), Braintree, Authorize.net and any gateway that supports WooCommerce Subscriptions tokenisation. Stripe is the easiest for migrations and usage billing. If you use a regional gateway we check its subscription support before we quote, so there are no surprises later.

Can existing subscribers be migrated without re-entering card details?

In most cases, yes. Stripe and Braintree allow payment methods to move between accounts, and PayPal billing agreements carry over by ID. We rehearse the migration on staging, verify every next-payment date and then run it live. Where a token cannot move, we build a re-authorise flow and the email campaign around it.

related services and reading

Integrate Third Party CRM with WooCommerce

Two-way sync of subscribers, orders and lifecycle events into HubSpot, Zoho or Salesforce, built as a queue-backed plugin.
Explore

Fix WooCommerce Checkout Page Slow Loading

Profile and fix a slow checkout before you add subscription logic on top of it.
Explore

Building a Custom Subscription Workflow in WooCommerce (Beyond the Default Plugin)

The hooks, tables and design decisions behind subscription logic the default plugin cannot express.
Read the guide

ready to build the subscription model you actually sell?

Send us your plan structure, the gateway you use and what the default plugin cannot do. You will have a straight answer on scope, timeline and a fixed price within 24 hours, from the engineers who will write the code.
start a project