A weekly coffee subscription looks simple from the customer’s side: sign up once, get fresh beans every Friday. Behind the counter, it’s two separate promises—charge the customer correctly and deliver the right order on time. WooCommerce needs a plan for both.
The payment setup is only half the job. Before launching recurring orders in 2026, you’ll also need clear cancellation terms, a reliable renewal process, and a fulfillment workflow that doesn’t depend on someone remembering a spreadsheet. Here’s how to put those pieces together without confusing a billing schedule with a delivery schedule.
How WooCommerce Subscriptions Work—and When to Use Them
A subscription is an ongoing agreement to supply a product or service under defined terms. Recurring payments are the repeated charges that fund that agreement. They usually work together, but they aren’t interchangeable: a subscription can require customers to pay renewal invoices manually instead of charging a saved payment method automatically.
In WooCommerce, the subscription record holds details such as the customer, products, billing schedule, and status. The initial purchase creates an order, and subsequent billing cycles create renewal orders. Those orders record individual transactions; the subscription connects the ongoing relationship.
Consider a coffee roaster selling a bag of beans every week. The billing interval is weekly, the recurring product price might be $18, and each successful renewal produces an order that staff can pack. A monthly restaurant meal plan is different: one $160 payment might cover eight meals delivered across four weeks. One renewal order doesn’t automatically become eight kitchen tickets.
WooCommerce core doesn’t provide subscription billing on its own. You need a subscription extension to create recurring product types and manage subscription schedules, plus a compatible payment integration for automatic collection.
Subscriptions suit predictable repeat purchases: coffee, prepared lunches, pantry boxes, or a regular catering package. They’re less comfortable when every order needs extensive customization, a different delivery address, or an unpredictable total. Those workflows can be built, but they deserve more planning than a basic subscription product.
The distinction to keep in mind throughout this tutorial is straightforward: recurring billing does not automatically schedule fulfillment. A billing extension won’t necessarily reserve delivery capacity, select meal dates, or send daily orders to a kitchen. Decide how those jobs will happen before taking anyone’s first payment.
Choose a Subscription Plugin and Compatible Payment Gateway
This walkthrough uses the paid WooCommerce Subscriptions extension as its reference implementation. That name matters: similarly named third-party extensions have different settings, gateway support, and renewal behavior. Instructions for one aren’t reliably transferable to another.
Before committing to a license, verify its current price, renewal terms, support coverage, and supported versions of WordPress and WooCommerce. Prices and compatibility change, so an old screenshot isn’t a purchasing checklist.
Check these practical requirements against the current documentation for both the subscription extension and your exact gateway integration:
- Automatic recurring payments in your merchant country and settlement setup.
- Your store currency and the particular payment methods you want to offer.
- Compatibility with the Checkout Block if your checkout uses it.
- Customer cancellation, payment-method updates, and any required switching or suspension features.
- Support for changing recurring totals, retrying failed payments, and authenticating payments that need customer action.
Automatic renewals let the store request payment when a subscription becomes due, using a supported saved payment token or billing agreement. Manual renewals create an order that the customer must return to pay. Manual payment can be workable for an invoiced office lunch plan, but it’s a different customer experience from “subscribe and forget.”
Installing Stripe alone does not turn ordinary WooCommerce products into subscriptions. A gateway integration handles payment processing; the subscription extension manages the recurring agreement and renewal workflow. Also, “supports Stripe” doesn’t mean every payment method available through that integration supports automatic renewals.
The same caution applies to customer controls. Updating a card, moving a subscription to another payment method, changing its billing date, or adjusting a recurring amount can depend on the integration. Confirm the exact combination rather than assuming anything that processes a normal checkout will process an unattended renewal.
My preference is to start with one currency, one supported automatic-renewal payment method, and one subscription offer. Extra choices can wait until the first combination has survived a complete billing cycle.
Create Your First Subscription Product Step by Step
Install and configure the extension
Start on a protected staging site with a current backup. Install the licensed WooCommerce Subscriptions extension through Plugins → Add New → Upload Plugin, activate it, and complete any required update connection. Then configure your compatible gateway in its test environment.
Review the subscription settings under WooCommerce → Settings → Subscriptions. Labels can change between releases, but pay particular attention to manual renewals and customer permissions. Don’t enable suspension or switching simply because the option exists; each creates operational work.
Add a simple subscription
Go to Products → Add New, enter a descriptive product name, and select Simple subscription in the Product data dropdown. For delivered coffee, leave the product as a physical item so WooCommerce can collect shipping details and calculate applicable shipping charges.
Configure the core fields:
- Recurring price and interval: enter the amount and how frequently it’s billed, such as $18 every week.
- Subscription length: leave it ongoing or choose an available fixed duration. A fixed duration ends the agreement; it isn’t the same as letting customers cancel.
- Sign-up fee: optionally add a one-time charge for enrollment or an initial starter kit.
- Free trial: optionally delay the recurring product charge for the selected trial period.
A trial doesn’t necessarily mean the checkout total is zero. A sign-up fee can still apply, and shipping and tax behavior needs testing against your settings. For physical subscriptions, decide whether a trial includes an actual shipment. Otherwise, you can accidentally promise free goods when you only intended to postpone billing.
Worked example: a weekly coffee delivery
Create “Friday Coffee Club — 250g” at $18 every week, with a $6 sign-up fee, no trial, and no expiration. For this example, configure shipping at $4 per shipment, charged on each weekly order—not just the initial purchase.
The initial charge is $28 before any applicable tax: $18 coffee, $6 sign-up fee, and $4 shipping. Each ordinary renewal is $22 before applicable tax: $18 coffee plus $4 shipping. The sign-up fee does not repeat. Verify both totals in checkout rather than relying on the product editor.
Keep shipping zones and tax configuration separate from subscription setup. You can find related WPSlash guidance through the WooCommerce shipping tutorial search and WooCommerce tax tutorial search. Then check how those settings behave in the recurring cart.
A Variable subscription is useful when customers choose between options such as 250g and 1kg bags with different recurring prices. It doesn’t automatically give them a new flavor-selection form every week. Start with a simple subscription unless variation-specific pricing or options genuinely require the extra complexity.
[IMAGE: WooCommerce simple subscription product editor beside a weekly coffee example showing $28 initial payment and $22 recurring payment before applicable tax]
Set Up Customer Accounts, Renewal Expectations, and Fulfillment
Subscriptions require a customer account. In WooCommerce → Settings → Accounts & Privacy, review account creation during checkout and test what a first-time subscriber sees. Make sure customers receive the account-access email and can reach My Account without getting trapped in a password-reset loop.
Customers generally view their agreements under My Account → Subscriptions. Available actions depend on subscription status, store settings, and gateway support. Saved payment methods usually have their own account section, but adding a new card there doesn’t necessarily assign it to an existing subscription. Test the subscription-specific payment-change flow.
Before purchase, state the recurring amount, billing frequency, shipping charges, any sign-up fee, trial conversion terms, and how cancellation works. Put delivery expectations alongside them. “Billed weekly” says nothing about whether beans ship tomorrow or next Friday.
In the coffee example, a standard weekly schedule generally follows the subscription’s start time unless you configure supported synchronization behavior. Calling the product “Friday Coffee Club” does not make every renewal happen on Friday. Explain your cutoff and delivery rules explicitly.
Separate payment events from kitchen work
For a meal plan billed once a month with two deliveries each week, you need a fulfillment calendar or an equivalent allocation system. Record which deliveries the payment covers, customer choices, preparation deadlines, and whether individual meals have been dispatched.
For the restaurant-ordering side, FoodMaster’s WooCommerce restaurant ordering system provides delivery, pickup, and dine-in ordering alongside POS, kitchen display, QR table ordering, and automatic printing. It’s relevant when a restaurant needs ordering and kitchen tools beyond recurring billing.
That doesn’t establish an automatic subscription integration. Confirm and test how renewal orders reach those workflows. Turning one monthly payment into several dated kitchen orders may require custom integration or additional compatible scheduling tools.
Handle pauses with equal care. Skipping Tuesday’s lunch isn’t necessarily the same as suspending the entire subscription. Write down whether a missed delivery becomes a credit, moves to another date, or is forfeited under disclosed terms. Your software should implement that policy—not invent it.
Manage Failed Payments, Cancellations, and Subscription Changes
Administrators can inspect subscriptions under WooCommerce → Subscriptions. Open the relevant record to review its status, recurring totals, billing dates, payment method, related orders, and notes. Open the associated renewal order as well: it records the individual payment attempt and may contain the most useful gateway response.
Subscription statuses help narrow the problem. An active agreement is different from an on-hold subscription awaiting payment, a cancelled agreement, or an expired fixed-term plan. Don’t pack a shipment merely because a subscription exists; define the payment and order-status conditions that authorize fulfillment.
Supported failed-payment retry behavior depends on the extension’s configuration, gateway, and failure type. If you use the retry system, verify that it’s enabled and inspect what actually happens after a failure. A declined card, an expired authorization, and a payment requiring customer authentication may need different responses.
Give customers a clear route to settle a failed renewal or update the subscription’s payment method where supported. Avoid collecting card numbers by email or phone notes. Also test whether paying an outstanding renewal restores the subscription as expected.
For scheduling problems, check WooCommerce → Status → Scheduled Actions. Look for overdue or failed subscription-related actions and inspect the associated logs. Don’t repeatedly run an action just to see what happens; inspect the renewal order and gateway transaction first to avoid duplicate processing.
Cancellation is not a refund
Cancelling stops the ongoing agreement according to its cancellation behavior; it doesn’t automatically reverse previous charges. Where applicable, customer cancellation places the subscription into pending cancellation until the prepaid period ends. Confirm the result for your offer and cancellation route.
Physical goods need an explicit policy for paid but unfulfilled deliveries. If someone cancels after paying for eight meals and receiving two, explain whether the remaining six will arrive or whether an eligible refund adjusts that obligation. A status label alone cannot settle it.
Treat price changes similarly. Editing the catalog product doesn’t automatically rewrite every existing subscription’s recurring total. Changes to active agreements, billing dates, shipping charges, or plan sizes need supported administrative workflows, appropriate notice or consent, and a policy for handling orders already paid or prepared.
[IMAGE: Subscription management workflow showing a failed renewal order, customer payment update, pending cancellation, and a separate checklist for prepaid deliveries]
Test the Full Subscription Lifecycle Before Going Live
A successful first checkout proves only that the first checkout works. Renewals run without a customer sitting at the payment screen, which introduces different failure points. Test with an actual customer account as well as an administrator account.
Use the gateway’s supported sandbox and the extension’s documented testing methods. Depending on the setup, this may involve a supported administrator renewal action or adjusting a test subscription’s next payment date. Don’t change the server clock or assume a gateway’s own subscription simulator controls WooCommerce-scheduled renewals.
- Initial checkout: verify account creation, consent wording, saved payment setup, and the initial total, including fees, shipping, and tax.
- Successful renewal: confirm that one renewal order and one payment are created, the sign-up fee stays absent, and the next payment date advances correctly.
- Failed payment: use supported failure scenarios to inspect status changes, retry behavior, customer notices, and whether fulfillment is stopped.
- Customer controls: test cancellation and payment-method changes, checking that the subscription—not just the account wallet—uses the intended method.
- Emails and fulfillment: verify initial and renewal-related messages, successful and failed payment notifications where enabled, and exactly which orders reach packing or kitchen staff.
Also compare delivery addresses and recurring shipping totals against the original agreement. Test a paid cancellation with unfulfilled meals. These are the awkward cases that tend to surface after launch if nobody rehearses them.
Keep the scheduler healthy and staging isolated
WooCommerce Subscriptions relies on Action Scheduler for scheduled work. WordPress scheduling helps trigger that processing, and default WP-Cron depends on site requests. Low traffic, blocked loopback requests, or server problems can delay tasks. Have your host or developer configure reliable cron execution and monitor overdue and failed actions.
A sandbox can validate much of the application workflow, but it doesn’t perfectly reproduce bank declines, authentication decisions, settlement, or live webhook delivery. Confirm that your production webhook endpoint is reachable and that supported events are being processed.
Cloning production introduces another risk: two sites holding the same subscription records. WooCommerce Subscriptions has safeguards for duplicate or staging environments, but don’t rely on those alone. Verify staging mode, remove live payment credentials, route or disable outgoing customer email, and prevent test orders from reaching printers or delivery systems.
Before launch, check backups, current extensions, live gateway credentials, scheduler health, email delivery, cancellation wording, and staff ownership of failed renewals. Then open one small pilot offer with a manageable fulfillment schedule.
For that first coffee club, follow every order from checkout to payment to parcel. Once a complete renewal cycle works without improvised fixes, expanding the menu becomes a business decision rather than a troubleshooting exercise.
Commission-free ordering
Run restaurant orders on your own WordPress site
FoodMaster adds delivery, pickup, dine-in, POS, and kitchen tools — with zero per-order fees.