In WooCommerce, a subscription is a billing and lifecycle agreement; a membership is an access entitlement. A subscription can sell recurring products without protected content, and a membership can be free, one-time, fixed-term, or lifetime. Use both when recurring payment status should control content, products, discounts, downloads, community, or services.
The clean comparison is time-based payment versus permission: a subscription answers what is charged and when; a membership answers who may access what and under which conditions.
Key takeaways
- Recurring payment does not automatically create a membership.
- Membership access does not inherently require recurring billing.
- Subscription-only fits replenishment and recurring services with no protected WooCommerce experience.
- Membership-only fits free, manual, one-time, fixed-term, or lifetime access.
- Combined models need a lifecycle map and a clear choice between a separate membership ledger and integrated entitlement evaluation.
What is a WooCommerce subscription?
A WooCommerce subscription is a commercial agreement and lifecycle record. It normally represents a product or service that renews on a schedule and connects the customer, product/variation, billing interval, dates, payment method, parent order, renewal orders, and statuses.
It answers questions such as:
- What amount is due?
- When is the next renewal?
- Is this a trial, active, on hold, pending cancellation, cancelled, or expired?
- Which gateway or customer action collects the next renewal?
- What order proves each charge?
- Does a plan switch happen immediately or at renewal?

A subscription does not require gated content. Coffee delivery, monthly website care, replenishment products, and recurring service invoices can all be subscriptions while the website remains public.
What is a WooCommerce membership?
A WooCommerce membership is an access relationship. It grants content, products, community spaces, discounts, downloads, features, support, or other privileges to an eligible person for a defined duration.
It answers different questions:
- Who qualifies?
- Which resources or privileges are included?
- When does access begin and end?
- Is access delayed or tier-specific?
- What happens when payment fails, the term expires, or an administrator revokes access?
- What does a denied user see?
WooCommerce Memberships can grant access by registration, manual assignment, or product purchase; its membership plans can be unlimited, fixed-duration, or fixed-date (WooCommerce Memberships Plans). Recurrence appears when it is connected with Woo Subscriptions (WooCommerce Memberships overview).
Membership therefore does not mean “monthly.” A free partner portal, manually assigned alumni group, one-time lifetime library, or six-month paid cohort can all be memberships without recurring billing.
WooCommerce membership versus subscription comparison
| Dimension | Subscription | Membership |
|---|---|---|
| Primary job | billing schedule and lifecycle | access and privileges |
| Typical source record | subscription plus orders/renewals | user-membership record or evaluated entitlement |
| Requires recurring charge | commonly, but implementations can include fixed structures | no |
| Can exist without gated content | yes | access/perks are normally the purpose |
| Typical states | trial, active, on hold, pending cancellation, cancelled, expired | active, delayed, paused, expired, revoked, tier/entitlement state |
| Typical targets | product/service delivery and renewal | content, community, products, discounts, downloads, features |
| Main operational risk | wrong charge, order, gateway, or schedule | access leak or wrongful lockout |
| Success test | correct charge/order/status/next date | correct person sees the correct resource at the correct time |
Implementations vary. The table describes concepts, not one universal database schema.

How do subscriptions and memberships overlap?
They overlap when a billing record becomes an access condition.
subscription state/product/variation
→ access policy
→ membership content, product, discount, download, role, or feature
That can be implemented in four valid ways.
1. Subscription only
Use when the merchant needs repeating charges and delivery but no protected WordPress experience.
Examples:
- coffee or supplements shipped monthly;
- monthly maintenance invoice;
- recurring donation with public content;
- software billing where authorization is enforced entirely in an external SaaS.
2. Membership only
Use when the merchant needs access or privileges but not repeating charges.
Examples:
- free registered resource library;
- manually assigned alumni or partner access;
- one-time lifetime community purchase;
- fixed six-month cohort paid once;
- staff access derived from role/capability.
3. Separate subscription and membership records
One system owns billing and a distinct user-membership record owns access. Synchronization links the records. This can be useful when staff need independent membership notes, manual dates, cohorts, suspensions, or access that outlives a particular subscription.
WooCommerce Memberships plus Woo Subscriptions is an example. Official integration documentation explains that a membership tied directly to a subscription can follow subscription status/expiration, while other length choices can decouple access after payments finish (WooCommerce Memberships Subscriptions integration).
4. Integrated entitlement evaluation
One rule engine evaluates current product, purchase, subscription, role, or feature data directly and grants access without a second membership ledger. Current ArraySubs uses this model.

The integrated model removes a common synchronization hop, but rule edits affect everyone in scope and access history is not automatically the same as a durable independent membership record.
Do you need subscriptions, memberships, or both?
Use this decision tree:
Do you need repeating charges?
├─ No → Do you need protected access or member privileges?
│ ├─ No → ordinary WooCommerce/account model
│ └─ Yes → membership/access model only
└─ Yes → Do you need protected access or member privileges?
├─ No → subscription model only
└─ Yes → combined model
├─ Need an independent membership ledger?
│ └─ separate billing + membership records
└─ Direct product/status/feature evaluation fits?
└─ integrated entitlement model
Then ask:
- Should access continue for a fixed duration after payments end?
- What does a free or paid trial include?
- What happens during grace and on hold?
- Does cancel-at-period-end preserve access through the paid-through date?
- What happens when the customer owns multiple qualifying subscriptions?
- When do upgraded and downgraded entitlements switch?
- How do refunds, chargebacks, and manual grants affect access?
Do not select a stack before those answers exist.
Which record should be the source of truth?
The most important architecture choice is not whether a settings page contains the word “membership.” It is which record can authoritatively explain the current commercial and access state.
| Decision | Strong source of truth | Risky substitute |
|---|---|---|
| Was this renewal paid? | renewal order and subscription timeline | a member role still attached to the user |
| Which plan is current? | qualifying product/variation plus effective switch state | the label shown on an old account screen |
| When should access end? | documented membership/subscription end source | the date a role happened to be removed |
| Can this user open a resource? | current membership record or evaluated condition | a cached page from an earlier session |
| How many seats or exports are allowed? | explicit entitlement value | plan name parsed inside application code |
In a separate-ledger architecture, the billing record and membership record can both be authoritative for different facts. The integration must define which events create, pause, extend, or end the membership record and what happens if synchronization fails. Staff may need a reconciliation report because “subscription active, membership expired” is possible when two records drift.
In an integrated-entitlement architecture, the access decision is recomputed from current commerce evidence. There is less duplicate state, but a shared rule or feature-key change can immediately affect every matching customer. That model needs versioned rules, dependency review, and a diagnostic view that shows the evidence used for the decision.
Neither design removes the need for an audit trail. Record the source subscription or purchase, the policy version, the target resource, the resolved result, and enough timing context to explain a support case. A user role may be one output of that decision, but it should not erase the evidence that produced it.
A practical system-of-record test
Give the team a real customer scenario and ask five questions:
- Which record proves the customer paid or otherwise qualified?
- Which policy converts that record into access?
- Which date or event changes the result next?
- Which user-facing route lets the customer recover or change the state?
- Which log, screen, or report lets support explain the result?
If the answers require inspecting unrelated roles, guessing from order notes, or asking the original developer, the architecture is not ready to scale.
How should subscription status affect membership access?
The subscription lifecycle is more detailed than paid/unpaid. WooCommerce documents distinct active, on-hold, pending-cancellation, cancelled, and expired meanings (WooCommerce Subscriptions status guide). The membership policy must map each state.
| Event or state | Billing question | Access question |
|---|---|---|
| Trial | Is payment due later and is a method required? | previews, onboarding, or full entitlement? |
| Active | When is the next charge? | which tier rights apply? |
| Renewal failed/grace | Is retry or customer recovery running? | full, reduced, or no paid access? |
| On hold | Is the unpaid obligation still recoverable? | which roles/features/content remain? |
| Cancel at period end | Will another charge occur? | does access remain until the paid-through date? |
| Immediate cancellation | Is refund involved? | does access end immediately? |
| Expired/fixed end | Is billing complete? | remove, alumni, or decoupled access? |
| Upgrade/downgrade | when is money charged/credited? | when do old/new entitlements switch? |
| Refund/chargeback | what financial record changed? | revoke, retain, or send to review? |
The answer depends on the selected architecture. Do not copy WooCommerce Memberships behavior into ArraySubs documentation without a versioned ArraySubs test.
How do combined subscription and membership models fail?
Most failures occur at transitions, not during the ordinary active state.
A renewal fails but access stays open forever. The billing system moved the subscription on hold, yet the access rule checks a persistent role that no current process owns. Fix the architecture by resolving access from current lifecycle evidence or by giving the role mapping an explicit recovery and removal policy.
Cancel-at-period-end removes access immediately. The cancellation request and the access end are treated as the same event even though the customer has paid-through time remaining. Store and test the effective end separately from “another renewal will not occur.”
A downgrade creates an entitlement gap. The old plan is removed before the future plan becomes effective. Define whether the change is immediate or next renewal, then make billing, level, and feature changes share that boundary.
Two subscriptions grant the same benefit, but cancelling one removes it. Authorization must consider every qualifying source before removing a shared role or entitlement. Test overlapping monthly/annual records, bundles, manual purchases, and legacy grants.
A refund changes the order but not the membership. Decide whether a refund is informational, automatically revokes access, or sends the account to manual review. The correct answer can differ for a consumed service, shipped product, lifetime library, or fraud case.
A member recovers payment but remains denied. The subscription may be active while a role, cache, remote community, or membership record is stale. Recovery testing must cover the entire path from payment evidence to the final protected surface—not only the subscription status label.
Turn those cases into acceptance tests before launch:
- capture the starting subscription, order, membership, role, and entitlement state;
- perform exactly one lifecycle event;
- verify the effective date and every derived access output;
- test both a fresh request and a previously cached session;
- confirm the account, payment, login, and support routes still work;
- reverse the event or use the documented rollback and verify recovery.
This transition-first method catches the distinction that feature checklists miss: a subscription engine can collect correctly while the membership experience is still wrong.
How does current ArraySubs model subscriptions and memberships?
Subscription record
ArraySubs core stores subscriptions as WordPress posts with customer, product/variation, status, billing period, dates, related orders, and lifecycle metadata. Core creates manual renewal invoices; Pro supports automatic collection with current Stripe, PayPal, and Paddle integrations.
Access model
ArraySubs does not currently create a separate membership-plan or user-membership custom post type. Members Access evaluates the current user against:
- subscription status;
- active/trial subscription, optionally for selected products;
- subscription variation;
- purchased product or variation;
- purchased category/tag;
- lifetime spend;
- WordPress role;
- nested AND/OR conditions;
- Pro Feature Manager values when available.
Active-subscription conditions currently treat active and trial as qualifying. Explicit status conditions can target on-hold, cancelled, expired, or pending states, which means a merchant can design unusual policies. “On hold always removes access” is not a universal ArraySubs rule.
Role mapping
Roles can be derived from subscription eligibility for compatibility with other WordPress components. Role Mapping can keep or remove roles on hold and remove ended-state roles when no other qualifying active subscription justifies them.

A role is still not the payment record or the complete membership plan. WordPress defines roles as bundles of capabilities (WordPress roles and capabilities). Use them deliberately as a downstream mechanism.
Worked examples
Subscription box
The subscription controls recurring orders, payment, inventory timing, and shipment. A member-only article archive is optional. Subscription-only is often sufficient.
Paid newsletter archive
The subscription controls billing. Membership rules control full articles, archive search, comments, and downloads. Use a combined model and keep login/payment recovery public.
One-time lifetime library
One completed purchase grants indefinite access under the merchant's terms. A recurring subscription is unnecessary, but refund, fraud, account closure, and support policy still need rules.
SaaS plan
The subscription controls price and renewals. Feature entitlements control seats, API access, storage, and support. If the external app is authoritative, synchronize entitlements reliably rather than relying on WordPress page visibility.
Course cohort
A one-time product can grant six months or a fixed period. A separate LMS may own prerequisites, completion, quizzes, and certificates; membership access alone is not a complete course engine.
When is a separate membership system a better fit?
Prefer a separate ledger when staff must manually manage a durable membership record independent of billing; when membership dates, notes, cohorts, certifications, or association status must survive product/subscription changes; when a CRM or external association is authoritative; when LMS/community records control access; or when a native metered newsroom paywall is required.
An integrated ArraySubs model fits when product, purchase, subscription, role, and feature evidence is an acceptable source of truth and the business wants one access engine across WordPress content, URLs, products, downloads, discounts, and roles.
For the complete planning sequence, read How to Create a WooCommerce Membership Site. For implementation patterns, use combined conditions, URL prefix lockdown, and inline content gating.
Final recommendation
Name the business job before choosing the plugin stack. Use a subscription for billing and lifecycle, a membership for access and privileges, and both only when payment state genuinely controls a protected experience. Then choose whether access needs an independent membership ledger or can be evaluated directly from WooCommerce and ArraySubs data.
After the decision and lifecycle table are complete, review ArraySubs Pro pricing and the wider member experience features.
Frequently asked questions
Is a WooCommerce membership the same as a subscription?
No. A subscription manages billing and lifecycle. A membership grants access or privileges. They overlap when subscription evidence becomes an access condition.
Can I create a membership without recurring payments?
Yes. Free registration, manual assignment, one-time purchase, fixed-term access, and lifetime access are all possible membership models.
Can I sell subscriptions without restricting content?
Yes. Replenishment products, subscription boxes, recurring services, and invoices do not inherently need membership gates.
Do I need WooCommerce Memberships and Woo Subscriptions together?
Only if that separate-record architecture fits. Other stacks, including ArraySubs' current integrated model, can evaluate subscription/product evidence directly for access.
Is a WordPress role a membership level?
Not by itself. A role is a capabilities bundle. It can represent or support a level, but payment, duration, lifecycle, and entitlement policy need a stronger source of truth.
Does ArraySubs create a separate membership record?
Current ArraySubs does not create a membership-plan or user-membership custom post type. It dynamically evaluates access from existing subscription, purchase, role, and feature data.
Author, technical review, and verification environment
Author: Emran, ArrayHash — product and editorial work across WooCommerce subscription and membership architecture.
Technical reviewer: ArraySubs Engineering Team — review scope includes subscription records, Members Access conditions, role mapping, lifecycle semantics, and core/Pro boundaries.
Verification environment: Source and live UI review of ArraySubs 1.8.11 and ArraySubs Pro 1.1.2 on July 16, 2026, plus current WooCommerce and WordPress documentation. No new live membership records or transactions were created on the mirror.
Disclosure, limitations, and update log
- Commercial disclosure: ArraySubs is an ArrayHash product. The official WooCommerce stack and integrated alternatives are described neutrally.
- Limitations: Plugin schemas and lifecycle behavior vary. Test trial, grace, hold, cancellation, expiration, switching, refund, cache, and multiple-subscription cases in the selected stack.
- July 16, 2026: First publication. Verified the conceptual comparison, official Woo separate-record model, current ArraySubs integrated model, role semantics, and lifecycle questions.
Continue from strategy to setup
Use a recipe when the model is settled
These articles own the decision and operating model. The ArraySubs feature map and recipes cover the exact product, billing, and customer-workflow configuration.
Written by
Emran // ArrayHash
Research and practical guidance for WooCommerce subscription operators and implementation teams.
Technical review
ArraySubs Engineering Team
Reviewed against current ArraySubs code, product documentation, and the linked primary platform sources.




