=== ArraySubs - Effortless Memberships, Subscriptions, Content Restriction & Recurring Payments for WooCommerce ===
Contributors: emranio
Tags: woocommerce subscriptions, subscription, recurring billing, subscription management, membership, content restriction
Requires at least: 6.0
Tested up to: 6.9
Stable tag: 1.7.10
Requires PHP: 8.1
License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html

Free WooCommerce subscription manager plugin with recurring billing, membership access control, customer portal, retention flows, member discounts, and 16 email notifications.

== Description ==

ArraySubs is a free WooCommerce subscription manager and membership plugin that gives you everything you need to sell subscriptions, manage recurring billing, restrict member-only content, and reduce churn — without paying for multiple plugins or stitching together separate tools.

Turn any WooCommerce product into a subscription product, automate renewal invoicing with grace periods, let customers self-manage from a built-in portal, offer plan switching with proration, reduce cancellations with a retention flow builder, and control member access to content, URLs, downloads, and products — all included in the free version.

Whether you run a SaaS business, membership site, subscription box, content platform, online course, digital download store, or recurring service — ArraySubs replaces your entire WooCommerce subscription stack with one plugin.

🔗 [Visit ArraySubs](https://arrayhash.com/arraysubs) | 📖 [User Guides & Documentation](https://support.arrayhash.com/arraysubs/)

**What makes ArraySubs different?**

Most WooCommerce subscription plugins lock essential features like membership access control, retention flows, member discounts, and customer self-service behind expensive paywalls. ArraySubs includes all of these in the free version. You get a complete subscription management system — not a crippled demo that forces an upgrade before you can actually run your business.

= All Free Features at a Glance =

* **Subscription products** — simple and variable with per-variation billing configuration
* **Flexible billing** — daily, weekly, monthly, yearly, custom days, or lifetime subscriptions
* **Free trials** — configurable trial days with one-trial-per-customer enforcement
* **Signup fees** — one-time charges at checkout alongside any billing cycle
* **Different renewal pricing** — change the recurring amount after a set number of cycles
* **Renewal sync** — align all renewals to a shared calendar date (monthly, weekly, or yearly)
* **Automated recurring billing** — renewal invoices, trial conversion, and grace period enforcement
* **Two-phase grace periods** — configurable active grace and on-hold grace before cancellation
* **Skip next renewal** — let customers skip upcoming cycles with max skip and cutoff rules
* **Pause / vacation mode** — temporary subscription freeze with auto-resume and cooldown
* **Plan switching** — upgrades, downgrades, and crossgrades with 3 proration methods
* **Retention flow builder** — cancellation reasons, 4 retention offer types, and save-rate analytics
* **Customer subscription portal** — full self-service inside WooCommerce My Account
* **Member access control** — 6 rule types, 9 condition types, 12 operators, nested AND/OR logic
* **Role mapping** — assign WordPress roles based on subscription status
* **Member-only discounts** — percentage or fixed discounts by product, category, or cart
* **Members-only commerce** — hide products, block purchases, or restrict visibility for non-members
* **Content restriction** — restrict posts, pages, custom post types with content dripping
* **URL restriction** — block URLs by exact match, prefix, contains, or regex pattern
* **Download restriction** — secure downloadable files with signed URLs and access tracking
* **16 email notifications** — 13 customer + 3 admin emails with 50+ placeholders
* **Refund management** — prorated refunds, full refunds, and configurable cancellation refund policy
* **Subscription management admin** — list, search, create, edit, filter, and export subscriptions
* **Subscription notes** — 4 author types and 21 automated note events
* **Retention analytics** — 8 KPI cards, churn reasons chart, save rate tracking
* **Reports hub** — central dashboard with 40+ report links across 12 categories
* **Easy setup wizard** — 9-step guided configuration with 7 business type profiles
* **Settings export and import** — JSON backup with section-level import control
* **Custom profile fields** — 6 field types on My Account and admin user profiles
* **Avatar upload** — custom profile photo that replaces Gravatar site-wide
* **My Account editor** — reorder, rename, hide menu items, add custom endpoint pages
* **Content restriction shortcodes** — `[arraysubs_restrict]` with 15 attributes for content gating
* **Visibility shortcodes** — `[arraysubs_visibility]` for login-state-based content control
* **Account shortcodes** — `[arraysubs_login]`, `[arraysubs_logout]`, `[arraysubs_user]`
* **Hide admin bar** — clean frontend for non-admin users
* **Restrict wp-admin access** — block customer roles from the WordPress dashboard
* **Login page redirect** — redirect `/wp-login.php` to WooCommerce My Account
* **Login as User** — admin impersonation from 6 locations with nested session support
* **One-click checkout** — skip the cart and send customers straight to checkout
* **Block checkout and classic checkout** — full support for both WooCommerce checkout types
* **CSV and JSON export** — export subscription data with 15 fields
* **Price locking** — product price changes never affect existing subscribers
* **WooCommerce HPOS compatible** — works with High-Performance Order Storage

= Subscription Products =

Turn any WooCommerce simple or variable product into a subscription product. Configure billing periods (daily, weekly, monthly, yearly, or custom day intervals), billing intervals from 1 to 12, subscription length for automatic expiration, free trial days, one-time signup fees, and a different renewal price that kicks in after a configurable number of billing cycles. Variable products support independent subscription configuration per variation — create tiered plans like Basic at $9/month and Premium at $29/month with different trial periods, signup fees, and billing schedules.

Subscription pricing is displayed clearly across the product page, cart, mini-cart, checkout, and order confirmation — so customers always understand what they are paying and when.

Product prices are locked at the time of purchase. If you change the price later, existing subscriptions continue at the original price.

= Recurring Billing and Renewal Engine =

ArraySubs automates your entire billing workflow with three background jobs that run continuously:

* **Generate Upcoming Renewals** — creates renewal invoices 6 hours before the due date
* **Check Overdue Renewals** — enforces the two-phase grace period on unpaid invoices
* **Process Trial Conversions** — converts expired trials to active paid subscriptions daily at 2 AM

Renewal invoices are standard WooCommerce orders linked to the subscription. Customers receive an email with a Pay Now link. When they pay, the subscription is automatically extended.

**Renewal sync** aligns all subscription renewals to a shared calendar date — perfect for subscription boxes, weekly delivery programs, cohort-based memberships, and annual billing cycles. Choose monthly (specific day 1-28), weekly (specific day), or yearly (specific day + month) sync with two first-payment options: prorate the first payment or extend the first billing period.

**Different renewal pricing** lets you override the recurring amount after a set number of cycles — ideal for introductory pricing, graduated pricing, or loyalty discounts.

= Two-Phase Grace Period =

When a renewal goes unpaid, ArraySubs does not cancel the subscription immediately. Instead, it moves through a configurable two-phase timeline:

* **Active grace** (default 3 days) — subscription stays fully active, customer retains full access
* **On-hold grace** (default 7 days) — subscription moves to on-hold with restricted access
* **Cancellation** — subscription is cancelled after both grace phases expire

Payment at any point during the grace period — active or on-hold — restores the subscription to active status.

= Skip and Pause =

Give subscribers flexibility without forcing cancellation:

* **Skip next renewal** — customers can skip 1-3 upcoming cycles (configurable), with a cutoff that prevents skipping too close to the renewal date. Customers can undo a skip or change the skip count at any time.
* **Pause / vacation mode** — freeze a subscription for up to 30 days (configurable) with a maximum of 2 pauses per subscription and a 30-day cooldown between pauses. Subscriptions auto-resume after the pause duration.

= Plan Switching =

Let customers upgrade, downgrade, or crossgrade between subscription products without cancelling and resubscribing. Configure upgrade/downgrade/crossgrade targets per product, choose from 3 proration methods (Prorate Immediately, Apply at Renewal, or No Proration), and set optional switch fees per direction.

Plan direction is determined automatically using a normalized daily rate comparison with 5% tolerance. Customers see a proration preview in the portal before confirming.

= Free Trials =

Offer free trial periods per product or per variation. Trials convert to active paid subscriptions automatically via a daily batch job. Add a signup fee during trial to offset risk. Enforce **one trial per customer** to prevent trial abuse. Configure whether a payment method is required for $0 trial orders.

= Retention Flow Builder =

When a customer clicks Cancel, they enter a guided 3-step flow designed to save the subscription:

1. **Select reason** — 7 default reasons (too expensive, not using, found alternative, missing features, technical issues, temporary break, other) plus unlimited custom reasons
2. **Retention offers** — targeted offers matched to the selected reason
3. **Confirm cancellation** — final confirmation if no offer is accepted

**4 retention offer types:**

* **Discount** — percentage off for a configurable number of cycles (one per subscription)
* **Pause** — temporary pause with automatic resume
* **Downgrade** — redirects to the plan switching flow
* **Contact Support** — links to a configurable support page

Each offer can be triggered by specific cancellation reasons, so "Too expensive" shows the discount offer while "Technical issues" shows the contact support offer. Eligibility conditions check subscription value, customer lifetime spend, and remaining days before showing offers.

Supports **end-of-period cancellation** with a "Keep My Subscription" button that lets customers undo a scheduled cancellation.

= Retention Analytics =

Track the effectiveness of your retention flows with a dedicated analytics dashboard:

* **8 KPI cards** — total cancellations, retention offers shown, offers accepted, save rate, discounts given, pauses given, downgrades given, support redirects
* **Churn reasons pie chart** — see why customers cancel
* **Retention offer distribution** — see which offers are most accepted
* **Trend line chart** — cancellations vs saves over time
* **Activity logs** — per-entry details with customer, subscription, reason, offer, and outcome
* **Product filter** — break down retention data by product

= Customer Subscription Portal =

Customers get a full-featured subscription management portal inside WooCommerce My Account:

* **Subscription list** — status badges, product name, recurring amount (with discount/coupon display), next payment date, start date, and View Details button with pagination
* **Subscription detail page** — 9-row overview table with status, product, recurring amount (showing original + discount), billing cycle, start date, end date, next payment date, trial end date, and last updated
* **Related orders** — all linked WooCommerce orders with Pay Now links for pending invoices
* **Refund history** — date and amount for each refund
* **Notes timeline** — chronological subscription events with Customer, Admin, System, and Gateway author badges

**Self-service actions available in the portal:**

* Cancel subscription (immediate or end-of-period)
* Undo scheduled cancellation
* Accept retention offers during cancellation
* Change plan (upgrade, downgrade, crossgrade with proration preview)
* Skip next renewal (with undo and modify)
* Pause subscription (with duration, auto-resume, and cooldown)
* Reactivate cancelled or expired subscriptions

= Member Access Control =

A powerful rules engine with 6 rule types, 9 condition types, 12 comparison operators, nested AND/OR condition groups, and scheduled content dripping — all in the free version.

**6 rule types:**

* **Role mapping** — assign or replace WordPress roles based on subscription status (7 status behaviors with Add Role or Replace Role modes)
* **Discount rules** — percentage or fixed discounts, per-item or per-cart, with "best discount wins" logic and product/category targeting
* **Ecommerce restriction** — allow purchasing, block purchasing, hide products, or modify pricing based on membership conditions
* **URL restriction** — restrict any URL using exact match, prefix, contains, or regex patterns with 4 actions (redirect, 404, access denied, login form) and a priority system (1-100)
* **Post type / content restriction** — restrict all posts of a type, specific posts, or taxonomy-based content with 3 archive behaviors (hide, show teaser, show normally), per-post overrides, and content dripping
* **Download restriction** — control access to WooCommerce downloadable files with signed URL delivery and usage tracking

**9 condition types:**

Subscription status, has active subscription, subscription variation, purchased product, purchased variation, purchased from category/taxonomy, lifetime spend, user role, and nested groups for recursive AND/OR logic.

**12 comparison operators:**

Equals, not equals, greater than, greater than or equal, less than, less than or equal, contains, not contains, in, not in, empty, not empty.

= 16 Email Notifications =

13 customer emails and 3 admin emails — all built on the WooCommerce email framework with configurable subject, heading, and additional content per email.

**Customer emails:**

1. New Subscription
2. Trial Started
3. Trial Converted
4. Renewal Reminder (configurable days before payment)
5. Renewal Invoice
6. Payment Successful
7. Payment Failed
8. Subscription On-Hold
9. Subscription Cancelled
10. Subscription Expired
11. Subscription Reactivated
12. Auto-Downgrade
13. Retention Discount Accepted

**Admin emails:**

1. Admin — New Subscription
2. Admin — Subscription Cancelled
3. Admin — Payment Failed

**50+ unique placeholders** across all email types. Template override support via your theme or child theme. HTML, Plain Text, and Multipart formats.

= Refund Management =

3 refund-on-cancellation policies: Allow Immediate, Refund at End of Period, or No Automatic. Configure automatic gateway refund, set a minimum refund amount, and offer prorated refunds calculated using a daily rate for the unused billing period with a preview before processing.

Refund history is recorded on the subscription with date, amount, and type for full audit visibility.

= Subscription Management Admin =

A dedicated admin interface for store owners, support teams, and operations staff:

* **Subscription list** — 5 columns with 7 status filter tabs (All, Active, Trial, On-Hold, Cancelled, Expired, Pending)
* **Search** — by subscription ID, customer name/email, or product name
* **Export** — CSV with 15 fields and JSON endpoint
* **Create subscriptions** — manually create subscriptions with customer, product, status, dates, and billing configuration
* **Edit subscriptions** — edit any field including status, dates, billing config, customer, and product
* **Subscription detail screen** — 17 information cards covering overview, customer, product, billing schedule, dates, orders, refunds, notes, and logs plus conditional cards for cancellation details, sync details, skip/pause history, and coupon discounts
* **Subscription notes** — 4 author types (Customer, Admin, System, Gateway) with 21 automated note events including status changes, payments, renewals, trial events, product changes, and plan switches

= Subscription Checkout =

A 3-phase checkout flow (Cart Validation → Payment Processing → Subscription Creation) with 5 cart validation rules:

* Mixed cart control — allow or disallow mixing subscription and regular products
* One per customer — prevent duplicate subscriptions for the same product
* One per product — limit one subscription per product in the cart
* Billing cycle compatibility — ensure compatible billing cycles in multi-subscription carts
* Gateway capability — verify the payment gateway supports subscriptions

**One-click checkout** with 3 modes (default product only, subscription products only, or all products) plus a Disable Cart Page option. Full support for both WooCommerce classic checkout and block checkout (Store API). Customer accounts are automatically created at checkout for subscription purchases.

= Easy Setup Wizard =

Configure your entire subscription engine in minutes with a 9-step guided wizard. Choose from 7 business type profiles (SaaS, Subscription Box, Membership, Digital Content, Professional Services, Nonprofit, or Custom) and answer questions about billing, checkout, cancellation, access control, emails, and features. Each profile preloads smart defaults that you can customize before applying.

**Settings export** downloads your entire configuration as JSON with automatic stripping of sensitive gateway credentials. **Settings import** lets you upload a JSON file and select exactly which sections to apply — subscription settings, retention flow, My Account layout, member access rules, emails, profile fields, and more.

= Profile Builder =

**Custom profile fields** — 6 field types (Text, Textarea, Select, Date, Checkbox, File Upload) that appear on WooCommerce My Account, WordPress admin user profiles, and the Add New User screen. Drag-and-drop reordering, enable/disable per field, and secure file uploads with configurable type and size limits.

**Avatar upload** — let customers upload a profile photo that replaces their Gravatar site-wide. Instant REST API upload with preview, configurable file size (1-20 MB), and automatic Gravatar fallback.

**My Account editor** — take full control of the WooCommerce My Account navigation. Reorder menu items with drag-and-drop, rename labels, show or hide built-in items, and add custom endpoint pages that link any WordPress page or post inside My Account with clean URLs. Compatible with Gutenberg, Elementor, and Bricks page builders. Optional Prevent Direct Access redirects the original page URL to the My Account endpoint.

= Shortcodes =

A complete shortcode library for content gating and member experiences:

* `[arraysubs_restrict]` — gate content by subscription status, products, variations, purchased products, lifetime spending, roles, and more with 15 attributes and AND/OR condition logic
* `[arraysubs_visibility]` — show or hide content based on login state with fallback content support
* `[arraysubs_login]` — login link that auto-hides for logged-in users
* `[arraysubs_logout]` — logout link that auto-hides for logged-out users
* `[arraysubs_user]` — display current user name or profile field with guest fallback

= Toolkit Settings =

Clean up the WordPress frontend for a polished member experience:

* **Hide admin bar** — remove the WordPress admin bar for all non-admin users
* **Restrict wp-admin access** — block non-authorized roles from `/wp-admin` with configurable redirect (My Account or 404) and safety rules for AJAX, REST API, and WP-Cron
* **Login page redirect** — redirect `/wp-login.php` to WooCommerce My Account or 404, while keeping password reset, email verification, and logout flows working
* **Login as User** — one-click admin impersonation accessible from 6 locations (Users list, User profile, WooCommerce order detail, Subscription detail, Member dashboard, and admin screens) with nested impersonation support and a notification bar for returning to the admin session

= Built for Every Subscription Business =

ArraySubs is designed for WooCommerce stores that need more than basic recurring payments:

* **SaaS and software** — monthly/yearly plans, free trials, plan switching, and self-service upgrades
* **Membership sites** — subscription-based content access, member discounts, and role mapping
* **Subscription boxes** — flexible billing, skip and pause, renewal sync, and customer self-service
* **Online courses** — gated content, content dripping, URL restriction, and download protection
* **Digital downloads** — recurring access, signed download URLs, and expiration control
* **Content publishers** — paywalls, member-only posts, taxonomy-based restrictions, and login gating
* **Service retainers** — recurring billing, payment reminders, and subscription lifecycle tracking
* **Private stores** — members-only product visibility, purchase blocking, and member-only pricing

= Why Store Owners Choose ArraySubs =

* **Generous free version** — subscriptions, memberships, billing, retention, portal, access control, discounts, 16 emails, admin tools, and profile builder all included
* **One plugin replaces many** — no need to buy separate subscription, membership, content restriction, and retention plugins
* **WooCommerce native** — built on WooCommerce orders, products, emails, and checkout without custom payment flows or external dependencies
* **Classic and block checkout** — works with both WooCommerce checkout types including the Store API
* **Reduces churn** — retention flow builder with 4 offer types, skip, pause, and plan switching keep more subscribers active
* **Self-service portal** — customers manage their own subscriptions, reducing support tickets
* **Powerful access control** — 6 rule types with nested AND/OR logic, content dripping, and 12 comparison operators
* **HPOS compatible** — works with WooCommerce High-Performance Order Storage
* **Easy setup** — 9-step wizard with 7 business profiles gets you running in minutes

🔗 [Learn more at ArraySubs](https://arrayhash.com/arraysubs) | 📖 [Read the User Guides](https://support.arrayhash.com/arraysubs/)

== Installation ==

1. Upload the plugin files to the `/wp-content/plugins/arraysubs` directory, or install directly from the WordPress plugin repository
2. Activate the plugin through the 'Plugins' menu in WordPress
3. Run the Easy Setup Wizard from the ArraySubs dashboard to configure your subscription settings in minutes
4. Create your first subscription product under Products > Add New

For detailed setup instructions, visit the [ArraySubs User Guides](https://support.arrayhash.com/arraysubs/).

== Frequently Asked Questions ==

= Is ArraySubs really free? =
Yes. ArraySubs includes subscription products, recurring billing, customer portal, plan switching, retention flow builder, member access control, member discounts, 16 email notifications, refund management, admin tools, profile builder, shortcodes, toolkit settings, and more in the free version. No trial period, no feature limit on number of subscriptions, no surprise paywall.

= How do I create a WooCommerce subscription product? =
Navigate to Products > Add New (or edit an existing product), and enable subscription mode. Configure the billing cycle, amount, free trial, signup fee, and other subscription parameters. ArraySubs supports both simple and variable subscription products with independent per-variation configuration.

= Can I create variable subscription products with different plans? =
Yes. Variable products support per-variation subscription configuration. Each variation gets independent billing period, interval, subscription length, free trial duration, signup fee, different renewal price, and pricing. Create tiered plans like Basic, Standard, and Premium with different pricing and trial periods.

= Does ArraySubs support free trials and signup fees? =
Yes. Configure free trial days per product or per variation. Add a one-time signup fee charged at checkout. Enforce one trial per customer to prevent trial abuse. Trials convert to active subscriptions automatically.

= How does recurring billing work? =
ArraySubs creates renewal invoices 6 hours before the due date via automated background jobs. Customers receive an email with a Pay Now link. When paid, the subscription extends automatically. Unpaid invoices enter a two-phase grace period (Active → On-Hold → Cancelled) with configurable days for each phase.

= Can customers manage their own subscriptions? =
Yes. The built-in customer portal in WooCommerce My Account lets customers view subscriptions, cancel (with retention offers), undo cancellation, switch plans with proration preview, skip renewals, pause subscriptions, reactivate expired subscriptions, and pay pending invoices.

= What is the retention flow builder? =
When a customer tries to cancel, they enter a 3-step flow: select a reason, see targeted retention offers (discount, pause, downgrade, or contact support), and confirm cancellation. Each offer can be matched to specific reasons. The retention analytics dashboard tracks save rate, churn reasons, and offer acceptance.

= Does ArraySubs support plan switching (upgrades and downgrades)? =
Yes. Configure upgrade, downgrade, and crossgrade targets per product. Choose from 3 proration methods: Prorate Immediately, Apply at Renewal, or No Proration. Set optional switch fees per direction. Customers see a proration preview before confirming.

= Can I let customers skip or pause their subscription? =
Yes. Skip next renewal lets customers skip upcoming billing cycles (configurable max skips and cutoff). Pause / vacation mode freezes subscriptions temporarily with auto-resume, max pause duration, max pauses per subscription, and cooldown between pauses.

= How does member access control work? =
ArraySubs includes a powerful rules engine with 6 rule types (role mapping, discounts, ecommerce restriction, URL restriction, content/post type restriction, download restriction), 9 condition types, 12 comparison operators, and nested AND/OR logic. Restrict content, products, URLs, and downloads based on subscription status, product ownership, lifetime spend, roles, and more.

= Can I restrict content to members only? =
Yes. Restrict posts, pages, and custom post types using 3 targeting modes (all of type, specific posts, or taxonomy-based). Choose archive behavior (hide, show teaser, or show normally). Support content dripping with date-based scheduling and per-post overrides.

= Can I create member-only discounts in WooCommerce? =
Yes. Create percentage or fixed discount rules targeted to specific products or categories. Discounts apply per-item or per-cart. When multiple rules match, the best discount wins automatically.

= Can I hide products from non-members? =
Yes. Ecommerce restriction rules let you allow purchasing, block purchasing, hide products, or modify pricing based on membership conditions. Target specific products or entire categories.

= How many email notifications are included? =
16 total — 13 customer emails (new subscription, trial started, trial converted, renewal reminder, renewal invoice, payment successful, payment failed, on-hold, cancelled, expired, reactivated, auto-downgrade, retention discount accepted) and 3 admin emails (new subscription, cancelled, payment failed). All emails support configurable subject, heading, content, and 50+ placeholders.

= Does it work with WooCommerce block checkout? =
Yes. ArraySubs fully supports both classic WooCommerce checkout (shortcode) and block checkout (Store API) for subscription purchases.

= Can I export and import settings? =
Yes. Export your entire configuration as a JSON file and import it on another site with section-level control. Sensitive gateway credentials are automatically stripped from exports.

= Does ArraySubs include an admin subscription management interface? =
Yes. List subscriptions with 7 status tabs, search by ID/customer/product, create and edit subscriptions manually, view detailed subscription screens with 17 information cards, review 21 automated note events, and export to CSV or JSON.

= Can I customize the WooCommerce My Account page? =
Yes. The My Account Editor lets you reorder menu items with drag-and-drop, rename labels, hide items, and add custom endpoint pages that link any WordPress page inside My Account. Compatible with Gutenberg, Elementor, and Bricks.

= Does ArraySubs have shortcodes for content restriction? =
Yes. Use `[arraysubs_restrict]` with 15 attributes for content gating by subscription status, products, roles, and more. Use `[arraysubs_visibility]` for login-based content control. Plus `[arraysubs_login]`, `[arraysubs_logout]`, and `[arraysubs_user]` shortcodes.

= Can I sync all subscription renewals to the same date? =
Yes. Renewal sync aligns all renewals to a shared calendar date — monthly (specific day), weekly (specific day), or yearly (specific day + month). Choose to prorate the first payment or extend the first billing period.

= Can I impersonate a customer as an admin? =
Yes. The Login as User feature lets admins impersonate any customer from 6 locations across the admin. Nested impersonation is supported, and a notification bar ensures you can return to your admin session.

= Is it compatible with WooCommerce HPOS? =
Yes. ArraySubs is fully compatible with WooCommerce High-Performance Order Storage.

= Who is ArraySubs best for? =
ArraySubs is built for WooCommerce store owners who sell SaaS, memberships, subscription boxes, online courses, digital downloads, premium content, service retainers, or any recurring product. It is a strong WooCommerce subscriptions free alternative for stores that need subscriptions, memberships, and access control without paying for multiple expensive plugins.

== Screenshots ==

1. Admin Dashboard view
2. Subscription List overview
3. Subscription Details page
4. Settings configuration

== Changelog ==

= v1.7.10 - 8 may, 2026 =
* Added: Loading state added to all action buttons on admin panel and My Account.
* Fixed: include error - order-subscriptions.php

= v1.7.9 - 2 may, 2026 =
* Added: Enhanced subscription action button styling and improved the customer portal layout.
* Added: Enhanced subscription status handling and payment processing logic.
* Added: Improved guest-customer subscription handling and status management.
* Added: Enhanced retention and skip management logic with improved order handling and validation.

= v1.7.8 - 29 april, 2026 =
* Added: Enhanced subscription cancellation logic and loading styles in activity audits.
* Added: Custom WooCommerce query vars for subscription endpoints and loading styles.

= v1.7.7 - 29 april, 2026 =
* Added: Payment retry controls with pre-retry charge verification, gateway-specific retry settings, manual retry actions, and gateway sync endpoints.
* Added: Pending cancellation workflow with customer portal indicators, undo support, and customer/admin email notifications.
* Added: Customer-facing subscription reactivation with a dedicated REST endpoint, portal button, and success/error handling.
* Added: Enhanced plan switching with server-side proration enforcement and explicit switch fee handling.
* Added: Pending switch details and cancellation controls in the subscription admin and customer portal.
* Improved: Plan switching now resolves product prices through the centralized proration calculator and handles quantities consistently.
* Improved: Renewal orders, notes, and timeline events now use structured event types for clearer tracking and display.
* Improved: Customer portal API calls now use REST URL building helpers for better permalink compatibility.
* Improved: Cancellation handling now consolidates subscription ID resolution and removes redundant meta updates.
* Improved: Renewal order creation now handles shipping context dynamically.
* Fixed: Scheduled cancellation checks now skip subscriptions that are already cancelled or expired.
* Removed: Legacy sync-renewal settings, helper functions, UI cards, and unused styles.
* Removed: Legacy portal action and suspension toggles from settings payloads and Easy Setup.

= v1.7.6 - 15 april, 2026 =
* Fixed: Suppression of add-to-cart success notice for one-click checkout.
* Fixed: One subscription per customer validation in cart and checkout processes.
* Fixed: Filter to hide cash on delivery for subscription checkout products.
* Fixed: Trial quantity validation for subscription products in cart.
* Fixed: Subscription gateway validation on reactivation to ensure proper billing setup.
* Fixed: Next payment date is now calculated automatically from the billing schedule; manual editing, related hooks, and admin UI were removed.
* Fixed: REST methods now use POST for retention offers and undo skip actions.
* Fixed: Cancellation reasons handling now uses a single source-of-truth function for consistency.
* Fixed: Customer portal settings no longer include menu title and position options.
* Fixed: Renewal sync alert in General Settings now displays conditionally based on sync_enabled status.
* ImpFixedroved: Localization for date and duration strings in formatting functions.
* Removed: arraysubs_next_payment_date_changed hook and its AutoNotes handler.

= v1.7.5 - 12 april, 2026 =
* Improved: All action buttons are now position-fixed at the bottom for better UX.
* Improved: Setup wizard next/prev navigation now auto-scrolls to the top.
* Fixed: Free trial subscription checkout now handles payment skipping or enforcement per setting, with trial-only cart and signup fee detection, $0 trial pricing during order processing, preserved $0 prices during checkout migration, and trial-started hook firing at the correct time.
* Fixed: Free trial label no longer shown with an incorrect 'every' prefix.

= v1.7.4 - 10 april, 2026 =
* Fixed: Header was sent before session start due to an unwanted newline.

= v1.7.3 - 5 april, 2026 =
* Improved: Added the user documentation URL.
* Fixed: Minor bug fix.

= v1.7.2 - 5 april, 2026 =
* Fixed: Minor bug fix.

= v1.7.1 - 28 march, 2026 =
* Improved: CSS improvements.
* Fixed: Minor bug fix.

= v1.7.0 - 24 march, 2026 =
* Added: [hot] [new] Automatic downgrade targets that can move a subscription to another plan when it expires or is cancelled.
* Added: [hot] Multiple-subscription cart controls with new mixed-cart and billing-cycle settings, classic cart and Store API validation, and General Settings UI toggles.
* Added: [new] A retention analytics page with overview and detailed logs.
* Added: Checkout-time subscription migration flow with an auto-migrate-on-checkout setting, cart and order migration handling, and migration processing safeguards.
* Improved: Settings sanitization and REST settings output for renewal sync, proration, automatic payments, feature manager options, and new multiple-subscription controls.
* Improved: Cart validation and checkout messaging for mixed carts, multiple subscriptions, differing billing cycles, distinct subscription products, and one-per-product quantity rules.
* Fix: A styled Help page with the correct help email address.
* Fix: Renewal payment failure hooks and gateway failure handling for emails, notes, and renewal processing.

= v1.6.0 - 20 march, 2026 =
* Added: [new] Subscription tag in the WooCommerce product list.
* Fixed: Product edit UI issues on larger screens.
* Fixed: Different time zones being shown in different places.
* Fixed: Duplicate note entries by standardizing subscription notes and the creation event.
* Removed: Default subscription fields settings.
* Removed: Place Order Text settings.

= v1.5.0 - 18 march, 2026 =
* Added: Toolkit settings for hiding the frontend admin bar and restricting `/wp-admin` and `/wp-login.php` access for non-admin users.
* Added: Member Access discount rules for subscriber-only product discounts across products, categories, tags, cart, and checkout.
* Added: Member Access ecommerce rules for members-only product visibility and purchase restrictions.

= v1.4.0 =
* Added: [hot] When a user accepts any retention offer, he will get an email confirmation as well.
* Improved: [hot] System notes are now more detailed.
* Improved: Separated retention flow.
* Improved: Better UX.
* Improved: Improved member access.

= v1.3.0 =
* Added: [new] Notes are added after a user takes an offer from the retention flow.
* Added: [new] Already taken options are hidden in the next retention flow step.
* Improved: CSS improvements.
* Improved: Improved the retention flow UI in the customer portal.
* Fixed: The retention flow secondary modal does not show up.
* Fixed: Taking a retention offer does not update the next scheduled price.
* Removed: Early renew due to payment gateway limitations.

= v1.2.0 =
* Improved: Improved the AJAX select field and its CSS in the Restriction page.
* Fixed: Customer search not working in the Add New Subscription page.
* Fixed: Product search not working in the Restriction page.

= v1.1.0 =
* Added: [new] Content restriction module.
* Fixed: JS error and styling issues.

= v1.0.0 =
* Added: Initial release.
* Added: Subscription product creation and management.
* Added: Recurring billing system.
* Added: Customer subscription portal.
* Added: Email notifications.
* Added: Refund and proration system.

== Support ==

For setup help, feature guides, and troubleshooting, visit the [ArraySubs User Guides](https://support.arrayhash.com/arraysubs/).

For product information, visit [ArraySubs](https://arrayhash.com/arraysubs).

== License ==

This plugin is licensed under the GPL v3 License. See the LICENSE file for more details.
