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

Free WooCommerce subscription plugin with recurring billing, membership access, customer portal, retention flows, audits & advanced analytics.

== Description ==

ArraySubs is a free WooCommerce subscription plugin and WooCommerce membership plugin for stores that want subscriptions, recurring billing, gated content, customer self-service, retention offers, and subscription analytics in one system.

If you are looking for a WooCommerce Subscriptions alternative, ArraySubs helps you start without assembling separate plugins for recurring products, memberships, content restriction, cancellation surveys, member discounts, customer portals, and reporting. The current ArraySubs feature catalog lists 67 feature areas: 41 work in the free core, and 26 Pro upgrades add automatic gateway billing, store credit, checkout builder workflows, advanced analytics, gateway health, and revenue automation when your store is ready.

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

= The Short Version =

ArraySubs turns WooCommerce into a subscription business platform:

* Sell simple and variable subscription products with trials, signup fees, intro pricing, coupons, and one-click checkout URLs.
* Run recurring billing with manual renewal invoices in the free core, or add automatic Stripe, PayPal, and Paddle renewals with Pro.
* Give customers a WooCommerce My Account subscription portal for invoices, details, cancellation, pause, skip, plan switching, and renewal actions.
* Build memberships with content restriction, member-only discounts, URL rules, gated downloads, Elementor container restriction, Gutenberg block restriction, and content dripping.
* Reduce churn with a 3-step retention flow, cancellation reason capture, targeted save offers, and retention analytics.
* Manage subscriptions from wp-admin with lifecycle notes, exports, refund tools, emails, reports, troubleshooting, and HPOS compatibility.

= Start Free. Upgrade for Autopilot. =

The free core is built for real launches, not a limited demo. You can publish subscription products, collect checkout payments, send renewal invoices, restrict member content, manage subscribers, run retention offers, and report on churn without a license key.

Upgrade to ArraySubs Pro when you need automatic off-session billing through Stripe, PayPal, or Paddle; failed-payment retry automation; auto-downgrade fallback plans; Store Credit; Checkout Page Builder; Feature Manager; Gateway Health; Member Insight; activity audits; scheduled-job logs; and advanced analytics. The website also offers a 10-day Pro trial with no credit card and a 30-day money-back guarantee.

= What You Can Build With ArraySubs =

* **SaaS and digital products** - tiered plans, free trials, plan switching, feature entitlements with Pro, and automatic billing with Pro gateways.
* **Membership sites** - gated communities, premium libraries, role mapping, member-only pricing, content dripping, and self-service account management.
* **Online courses and content platforms** - restrict lessons, posts, custom post types, page sections, downloads, URLs, Elementor containers, and Gutenberg blocks.
* **Subscription boxes and physical products** - recurring products, manual renewal invoices, WooCommerce tax, product guardrails, and Pro recurring shipping workflows.
* **Agencies and service retainers** - recurring service plans, admin-created subscriptions, support impersonation, notes, refunds, reports, and customer portal actions.
* **Stores replacing multiple plugins** - subscriptions, memberships, retention, profile tools, My Account customization, reports, and access control in one plugin.

= Subscription Products and Checkout =

Turn WooCommerce simple or variable products into subscription products. Each plan can have its own billing period, interval, trial, signup fee, subscription length, and renewal price behavior. Variable products can model Basic, Pro, Agency, monthly, annual, or other tiered pricing without duplicating product pages.

Core product and checkout features include:

* Simple subscription products with one recurring price.
* Variable subscriptions with per-plan price, billing cycle, and trial settings.
* Free trials before the first recurring charge.
* One-time signup or setup fees at checkout.
* Different renewal pricing after a configured cycle.
* Lifetime deals for one payment and ongoing access without renewal invoices.
* One-click checkout URLs for direct purchase flows.
* WooCommerce coupons on subscription purchases, recurring discounts, and cycle limits.
* Purchase guardrails for one-per-customer, one-per-product, mixed-cart, and migration rules.
* Classic checkout and WooCommerce block checkout support.
* WooCommerce tax handling on checkout and renewal orders.
* Price locking so existing subscribers keep their purchase-time rate.

= Recurring Billing: Manual in Free, Automatic in Pro =

ArraySubs uses WooCommerce orders for subscription checkout and renewal invoices. In the free core, renewals are manual invoices: ArraySubs creates the renewal order, sends the customer a payment link, and lets the customer pay through the available WooCommerce gateway.

That means the free plugin can work with the wider WooCommerce gateway ecosystem for checkout and manual renewal payments, including offline methods such as bank transfer. For automatic recurring payments, ArraySubs Pro adds supported gateway workflows:

* **Stripe** - ArraySubs-managed billing with saved payment methods, SCA / 3D Secure handling, card lifecycle events, refunds, disputes, and webhook reconciliation.
* **PayPal** - gateway-managed billing agreements with webhook sync back to ArraySubs subscriptions and renewal orders.
* **Paddle** - gateway-managed subscriptions, hosted payment flows, native tax/VAT handling as merchant of record, and webhook sync.

= Renewal Recovery, Grace Periods, Skip, Pause, and Plan Changes =

Subscriptions should not fail permanently because a payment is late or a customer needs temporary flexibility. ArraySubs includes recovery and self-service workflows designed to keep customers active:

* **2-phase grace period** - keep access alive during payment recovery before moving toward cancellation.
* **Skip Next Renewal** - let eligible customers or admins skip an upcoming billing cycle while keeping the schedule intact.
* **Pause / Vacation Mode** - temporarily pause a subscription instead of forcing cancellation.
* **Plan Switching** - support upgrades, downgrades, and crossgrades between allowed plans.
* **3 proration methods** - charge immediately, apply at renewal, or switch with no proration.
* **Trial conversion** - move trial subscriptions into the paid renewal flow.
* **Pro failed-payment automation** - add automatic retry schedules and auto-downgrade fallback plans.
* **Pro Flexible Renewal Sync** - align eligible new subscriptions to shared billing-cycle boundaries with full, prorated, or next-cycle first-charge behavior.

= Customer Subscription Portal =

ArraySubs adds a customer-facing subscription portal inside WooCommerce My Account, so subscribers can handle common actions without opening a support ticket.

The portal can show subscription lists, details, billing cycles, next payment dates, related orders, Pay Now links, refund history, notes, status badges, and available actions. Customer self-service covers cancellation, scheduled cancellation undo, reactivation where available, skip renewal, pause, and plan switching. Pro adds payment-method workflows for supported automatic gateways.

= Member Access, Content Restriction, and Member Discounts =

ArraySubs combines subscriptions and memberships in one plugin. Member Access can use subscription status, purchased products, purchased variations, categories, lifetime spend, WordPress roles, and nested AND/OR conditions to decide who gets access.

Use ArraySubs to:

* Gate pages, posts, and any custom post type.
* Restrict specific posts, all posts of a type, or taxonomy-based content.
* Protect URL paths by exact match, prefix, contains, or regex pattern.
* Restrict only part of a page with shortcodes, Elementor containers, or Gutenberg blocks.
* Drip content over time by date or member timing.
* Restrict WooCommerce downloadable files.
* Hide products, block purchases, redirect visitors, show access-denied messages, or protect shop areas.
* Create member-only discounts and pricing rules for products, categories, carts, and checkout.
* Map WordPress roles based on subscription status.
* Use advanced nested condition groups for real membership tiers.

= Retention Flow Builder and Retention Analytics =

The cancellation button becomes a save flow. Before cancellation is finalized, ArraySubs can collect the customer's reason, show a matching retention offer, and ask for final confirmation only after the save attempt.

The Retention Flow Builder supports 4 offer types:

* Discount offer.
* Pause offer.
* Downgrade offer.
* Contact support offer.

Retention Analytics reports cancellation reasons, offer acceptance, churn trends, product churn, and saved revenue so you can improve pricing, onboarding, plans, and support from real subscriber behavior.

= Admin Subscription Management =

Store owners and staff can manage subscription operations from wp-admin:

* Central subscription list, search, filters, status views, and detail screens.
* Create subscriptions from wp-admin for migrations, phone orders, support, and manual setup.
* Export subscription data to CSV or JSON.
* Subscription notes and lifecycle timeline.
* Refund management with prorated, full, and partial refund workflows.
* Lifecycle emails for customers and admins across signup, trial, renewal, payment, failure, cancellation, retention, card, gateway, and Pro store-credit events.
* Reports hub and WooCommerce Analytics extensions for subscription revenue, growth, churn, retention, and customer behavior.
* Troubleshooting guides for renewal failures, portal action failures, access conflicts, gateway issues, and scheduled jobs.
* HPOS compatibility for WooCommerce High-Performance Order Storage.

= Setup, Profiles, My Account, and Site Access Toolkit =

ArraySubs also includes store-building tools that normally require more plugins:

* **Easy Setup Wizard** - a guided 9-step setup flow with business profiles and settings import/export.
* **Profile Builder** - custom profile fields, avatars, and account profile controls.
* **My Account Page Builder** - reorder, rename, hide, and add WooCommerce My Account endpoints.
* **Shortcodes** - content restriction, login/logout links, visibility controls, and user profile output.
* **Admin Bar Visibility** - hide the frontend WordPress admin bar for customers.
* **Admin Dashboard Access** - redirect customer roles away from wp-admin safely.
* **WordPress Login Page controls** - route login and registration through WooCommerce My Account.
* **Login as User** - support customers without asking for their password.

= Pro Automation and Revenue Upgrades =

ArraySubs Pro adds the automation layer for stores that have outgrown manual renewal workflows:

* Automatic Stripe, PayPal, and Paddle recurring billing.
* Failed-payment retry automation and recovery emails.
* Auto-downgrade on failure to preserve the customer relationship.
* Store Credit wallets, credit purchases, refund-to-credit, history, expiry, and credit emails.
* Checkout Page Builder for branded classic checkout flows with conditional fields.
* Feature Manager for per-plan entitlements and "what's included" product displays.
* Feature-based member access conditions.
* Flexible Renewal Sync.
* Fixed-date subscriptions and subscription shipping workflows.
* Product page redirection controls.
* Multi-login prevention.
* Member Insight customer dashboards.
* Gateway Health, activity audit screens, and scheduled-job logs.
* Advanced analytics and reporting extensions.

== Frequently Asked Questions ==

= Is ArraySubs really free? =
Yes. The free core is built to launch real WooCommerce subscription and membership stores. The current ArraySubs feature catalog lists 67 feature areas, with 41 available in the free core. Free features include subscription products, manual renewal invoices, trials, signup fees, coupons, customer portal workflows, member access, content restriction, retention flows, retention analytics, emails, reports, setup tools, and HPOS compatibility.

= Is ArraySubs a WooCommerce Subscriptions alternative? =
Yes. ArraySubs is a free WooCommerce subscriptions alternative for stores that need recurring products, memberships, content restriction, customer self-service, and retention flows together. WooCommerce Subscriptions is more established and has broad official gateway coverage, but ArraySubs combines subscriptions and membership access in one plugin and lets stores start free.

= Does the free version support automatic recurring payments? =
The free core supports recurring billing through manual renewal invoices. ArraySubs creates renewal orders, sends payment links, and lets customers pay through WooCommerce checkout. Automatic off-session recurring payments require ArraySubs Pro with Stripe, PayPal, or Paddle.

= Which payment gateways work with ArraySubs? =
For checkout and manual renewal invoices, ArraySubs can use the WooCommerce payment methods available on your store, including offline methods. Automatic recurring billing is handled by Pro gateway workflows for Stripe, PayPal, and Paddle.

= Can I create simple and variable subscription products? =
Yes. You can create simple subscriptions or variable subscriptions with different plans, billing cycles, trial settings, signup fees, subscription lengths, and renewal price rules per variation.

= Can customers manage their own subscriptions? =
Yes. The WooCommerce My Account subscription portal lets customers view subscriptions, review invoices and details, pay manual renewal invoices, cancel through the retention flow, undo scheduled cancellation, skip a renewal, pause, and switch plans when enabled. Pro adds payment-method update workflows for supported automatic gateways.

= Can I restrict content to members only? =
Yes. ArraySubs can restrict pages, posts, custom post types, taxonomy-based content, URL paths, partial page sections, Elementor containers, Gutenberg blocks, and downloadable files by subscription status, plan, purchased product, role, lifetime spend, or nested AND/OR conditions.

= Can I create member-only discounts and protected products? =
Yes. Member Access includes discount rules, shop restrictions, product visibility rules, purchase-blocking rules, role mapping, and content rules. You can target products, categories, roles, subscriptions, purchases, and spend conditions.

= Can I let customers skip or pause their subscription? =
Yes. Skip Next Renewal and Pause / Vacation Mode give customers flexibility without forcing cancellation. Stores can also offer plan switching with upgrade, downgrade, crossgrade, and 3 proration methods.

= What is the Retention Flow Builder? =
It is a 3-step cancellation-save workflow: collect the cancellation reason, show a targeted offer, then ask for final confirmation. Offer types include discount, pause, downgrade, and contact support. Retention Analytics reports why customers cancel and which offers save revenue.

= Does ArraySubs support free trials, signup fees, and intro pricing? =
Yes. Products and variations can use trial periods, one-time signup fees, and different renewal prices after a configured cycle. This supports free trials, setup fees, introductory pricing, loyalty pricing, and tiered subscription plans.

= Can I sync renewals to the same billing date? =
Yes, with ArraySubs Pro. Flexible Renewal Sync can align eligible new subscriptions to shared billing-cycle boundaries and control the first checkout charge with full, prorated, or next-cycle behavior.

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

= Does ArraySubs work with WooCommerce HPOS? =
Yes. ArraySubs is compatible with WooCommerce High-Performance Order Storage (HPOS).

= Can I export subscriptions and settings? =
Yes. Subscription data can be exported to CSV or JSON. Setup settings can also be exported and imported as JSON with section-level control.

= Can I customize the WooCommerce My Account page? =
Yes. The My Account Page Builder lets you reorder, rename, hide, and add account endpoints, including custom endpoints linked to WordPress content. Profile Builder also adds custom fields and avatars.

= Does ArraySubs send subscription emails? =
Yes. ArraySubs uses WooCommerce email conventions for customer and admin lifecycle emails covering signup, trial, renewal, payment, failure, cancellation, retention, card, gateway, and Pro store-credit events where applicable.

= What does ArraySubs Pro add? =
Pro adds automatic Stripe, PayPal, and Paddle recurring billing; failed-payment retry automation; auto-downgrade; Store Credit; Checkout Page Builder; Feature Manager; feature-based access conditions; Flexible Renewal Sync; fixed-date subscriptions; subscription shipping; Gateway Health; Member Insight; activity audits; scheduled-job logs; and advanced analytics.

= Can I impersonate a customer as an admin? =
Yes. Login as User lets authorized admins enter a customer's account without asking for the customer's password, then return safely to the admin session.

= Who is ArraySubs best for? =
ArraySubs is built for WooCommerce stores selling SaaS, memberships, subscription boxes, online courses, digital downloads, premium content, service retainers, support plans, and recurring products. It is strongest when you need subscription billing, membership access, customer self-service, retention, and reporting in one plugin.

== Screenshots ==

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

== Changelog ==

= v1.8.9 - 9 july, 2026 =
* Improved: UI.
* Fixed: Renewal prorate issue.

= v1.8.8 - 30 june, 2026 =
* Improved: UI in classic checkout.
* Fixed: Double checkout button in cart page.

= v1.8.7 - 29 june, 2026 =
* Fixed: Fatal error when a third-party plugin changed the global `$product` value to a string and ArraySubs later called `is_type()` on it.

= v1.8.6 - 27 june, 2026 =
* Added: Gutenberg block UX improvement.

= v1.8.5 - 27 june, 2026 =
* Added: Gutenberg block support for content restriction and member access.
* Added: UX improvement.

= v1.8.4 - 25 june, 2026 =
* Added: Elementor widget controls for content restriction and member access.

= v1.8.3 - 20 june, 2026 =
* Fixed: CustomEndpoints status-counts and select-options REST routes now require `manage_woocommerce` or `manage_options`, preventing lower-privileged users from enumerating private admin data such as subscription counts, titles, and terms.
* Fixed: Admin input, select, and button heights now stay aligned under WordPress 7.0 across subscription lists, Activity Audits, Gateway Logs, Role Mapping, Grace Period, and related admin screens.
* Improved: Activity Audits table readability by allowing audit and renewal-failure columns to size to their content, replacing separate Author / Type / Visibility columns with a stacked Meta column, and restoring centered icon-and-label filter buttons.
* Improved: Restriction Rule Builder condition separators now align more cleanly with nested condition rows.
* Improved: Admin UI primary colors now follow the active WordPress admin color scheme through `--wp-admin-theme-color`, including DataList, FormBuilder, admin pages, shared components, and customer portal styles.
* Improved: FormBuilder and DataList theme variables now use WordPress admin color variables with safe fallback values for older WordPress and frontend contexts.
* Improved: Async CSS chunks now include a content hash in their filenames so rebuilt chunk styles invalidate browser caches correctly.

= v1.8.2 - 7 june, 2026 =
* Added: Renewal Sync settings in General Settings so new non-trial subscriptions can renew on the next billing-cycle boundary (next day, next store week, first day of next month, or January 1 for yearly plans).
* Added: Renewal Sync first-charge options for either a prorated signup charge until the synced renewal date or a full recurring charge at signup.
* Added: Easy Setup wizard questions for enabling Renewal Sync and choosing the first-charge behavior during initial store configuration.
* Improved: Checkout, cart, and subscription summaries now show synced first-charge wording, the first full renewal date, and the correct next charge amount/date when Renewal Sync is active.
* Improved: Renewal Sync now applies prorated signup pricing in cart and checkout, stores renewal-sync metadata on created subscriptions, and keeps future renewal dates anchored to the expected billing-cycle boundary.
* Improved: Renewal Sync checkout support is now limited to manual/offline gateways and Stripe, with unsupported automatic gateways hidden or blocked when a synced subscription is in the cart.
* Improved: Skip Renewal now accepts, stores, and returns a skip reason through the REST API and skip history metadata.
* Improved: General Settings save actions now show a spinner/loading state while settings are being saved.
* Improved: Updated readme product links from `arrayhash.com/arraysubs` to `arrayhash.com/deals/arraysubs`.

= v1.8.1 - 1 june, 2026 =
* Added: Add New Subscription now prefills customer information when an admin selects a user, including invoice email, billing email, billing phone, billing address, primary shipping address, shipping phone, and saved additional shipping addresses.
* Added: Manual subscription billing data now includes a dedicated Billing Email field, and shipping data now includes a Phone field.
* Added: Saved Shipping Address selector on the Add New Subscription form, allowing admins to switch between the customer's primary and additional shipping addresses before saving.
* Added: Manage Members profile editing UI for account details, billing address, primary shipping address, and multiple additional shipping addresses, with a shared SpinnerButton loading state during save.
* Improved: Manage Members displays additional shipping addresses in the Addresses panel.
* Improved: Core/pro customer profile data now stays aligned so member information edited in Manage Members can be reused by the manual subscription form.
* Improved: Stripe automatic payment sync support in the pro companion now creates and repairs the ArraySubs Stripe webhook connection through the official WooCommerce Stripe API, syncs test/live webhook secrets, and keeps Gateway Health aligned with the connected webhook.
* Fixed: Feature Manager invalid-row cancel leaves blank feature.
* Fixed: Pro Plan fixture price mismatches QA plan.
* Fixed: Feature Manager settings controls do not toggle from browser clicks.
* Fixed: Subscription detail missing Feature Log entry point.
* Fixed: Store Credit settings toggles do not persist from browser clicks.
* Fixed: Store Credit settings missing required guidance text.
* Fixed: Store Credit master switch does not hide module/product type.
* Fixed: Store Credit customer search shows no dropdown result.
* Fixed: Store Credit History REST route fails in browser.
* Fixed: Credit adjustment REST allows over-deduct.
* Fixed: Store Credit product edit reloads as Simple product.
* Fixed: Store Credit storefront purchase controls broken.
* Fixed: Store credit not shown/applied in cart totals.
* Fixed: Cart page lacks Proceed to Checkout button.
* Fixed: Checkout credit not applied to subscription order.
* Fixed: Checkout credit negative check blocked by plan switching.
* Fixed: Store-credit-zeroed renewal remains pending.
* Fixed: Renewal auto-apply ignores minimum credit threshold.
* Fixed: Refund-as-credit uses native dialogs.
* Fixed: Renewal reminder lacks trial/end-specific wording.
* Fixed: Admin emails ignore ArraySubs admin email override.
* Fixed: Store credit money placeholders render HTML in subject.
* Fixed: SCA renewal email lacks payment amount.
* Fixed: Subscriptions list columns differ from QA contract.
* Fixed: Subscription search by email returns no results.
* Fixed: Subscription filters and pagination do not update URL state.
* Fixed: Add subscription form layout and address controls differ from QA plan.
* Fixed: Add subscription product selector navigates away from form.
* Fixed: Subscription note composer lacks rich text bold control.
* Fixed: Subscription note author/type output does not match plan.
* Fixed: Woo order subscription link points to inaccessible legacy admin route.
* Fixed: Export REST payload shape differs from CSV/JSON contract.
* Fixed: Active-tab CSV export ignores status filter.
* Fixed: Documented pretty REST export URL returns site HTML.
* Fixed: Cancelled subscription keeps future renewal reminder action.
* Fixed: Status dropdown On Hold does not record on-hold date meta.
* Fixed: Cancelled subscription detail shows vacation mode as active.
* Fixed: Cancel Subscription modal cannot capture reason and details separately.
* Fixed: Manage Members search builds malformed REST URL.
* Fixed: Manage Members profile email is not a mailto link.
* Fixed: Impersonation banner missing on homepage after login-as-customer.
* Fixed: Pretty My Account subscriptions URL renders blog page.
* Fixed: Manage Members hash route change can show stale profile.
* Fixed: Manage Members Store Credit quick link is not scoped.
* Fixed: Reports Hub quick-nav does not update URL hash.
* Fixed: Reports Hub internal ArraySubs cards use inaccessible page slug.
* Fixed: Revenue at Risk KPI shows period delta.
* Fixed: Dashboard MRR uses 4.35 weekly multiplier instead of manual 4.333.
* Fixed: Dashboard cards with order filters navigate to access denied.
* Fixed: Subscription charts have no manual interval selector.
* Fixed: Credit Purchase order type label is lowercase.
* Fixed: Revenue analytics subscription amount cards are missing.
* Fixed: Orders list missing coupon/subscription filters and summary panel.
* Fixed: Activity Audits entity filter returns wrong Type badges.
* Fixed: Settings audit change details missing after settings save.
* Fixed: Customer cancellation modal fails for non-admin customer subscriptions.
* Fixed: Activity Audits filters hide shop-manager product update.
* Fixed: Logging Settings popover missing always-on entity note.
* Fixed: Email reactivation logs duplicate audit rows.
* Fixed: Failed process-renewal job is logged as Success.
* Fixed: Failed renewal creates orphan zero-value order.
* Fixed: Stripe card missing capability tags.
* Fixed: Webhook Event Log missing event-type filters.
* Fixed: Stripe test webhook not recorded in Gateway Logs.
* Fixed: Subscriptions list lacks gateway filter.
* Fixed: Renewal Failures troubleshooting screen missing.
* Fixed: Portal Action Failures screen missing.
* Fixed: Access-Rule Conflicts UI missing.
* Fixed: Documented renewal test users are not seeded.
* Fixed: Cancelling pending renewal order moves subscription on-hold.
* Fixed: Mail catcher or email content log unavailable.
* Fixed: Renewal order creation writes internal _payment_tokens meta.
* Fixed: Failed Stripe renewal bypasses active grace.
* Fixed: Renewal recovery leaves failure meta uncleared.
* Fixed: Failed renewal action is logged as success.
* Fixed: Overdue on-hold state lacks on_hold_date.
* Fixed: On-hold access check lacks Standard Weekly rule.
* Fixed: Overdue cancellation leaves failed renewal linked.
* Fixed: Trial conversion does not queue renewal reminder.
* Fixed: Auto-downgrade audit lacks structured change diff.
* Fixed: Customer portal skip and pause actions fail.
* Fixed: Skipped renewal requires extra generate at shifted date.
* Fixed: Renewal reminder hook sends duplicate emails.
* Fixed: Subscription expiring soon hook does not send email.
* Fixed: Fixed-period expiration overwrites configured end date.
* Fixed: Expired subscription keeps renewal reminder action.
* Fixed: Fixed-period access check lacks protected-content rule.
* Fixed: Refund behavior control is not accessible as radio/select.
* Fixed: Refund settings toggles do not change from browser clicks.
* Fixed: Prorated refund floors half-day usage.
* Fixed: Prorated refund action missing from subscription detail.
* Fixed: Stripe refund webhook audit records zero amount.
* Fixed: EOP cancellation has no refund handling or no-refund note.
* Fixed: Credit refund missing on customer order detail.
* Fixed: Credit-refunded order still allows gateway refund.
* Fixed: Cancelled subscription still exposes Update payment method.
* Fixed: Full refund must sync order and subscription status.
* Fixed: Pro-off scheduled gateway cleanup fails with no callback.
* Fixed: Scheduled actions run during cron stoppage.
* Fixed: Cancel and plan switch race both succeed.
* Fixed: Concurrent admin edit notes lose actor and first write.
* Fixed: Renewal order Stripe refund fails when transaction ID is PaymentIntent.
* Fixed: Auto-fill customer info on Add New Subscription form.

= v1.8.0 - 23 may, 2026 =
* Fixed: Shop Manager role can now access the ArraySubs admin menu and settings pages (required capability changed to manage_woocommerce).
* Fixed: Admin top-level menu now labeled "ArraySubs" instead of "Subscription".
* Fixed: Automatic Payments settings section is now hidden when ArraySubsPro is inactive.
* Added: General Settings now includes Customer Action controls (Allow Cancellation, Allow Pause/Suspension, Allow Reactivation) with a related info box.
* Fixed: Gateway Health dashboard webhook last-seen timestamp is now read from the correct event log, eliminating the "Never" display discrepancy.
* Fixed: Wizard profile switch from the Review screen now replaces prior profile defaults with the newly selected business-type defaults.
* Fixed: Wizard conditional fields for trial options and custom billing cycle are now shown/hidden correctly when the relevant toggles are activated.
* Fixed: Setup export now always includes all expected config groups even when some are absent or empty.
* Fixed: Setup import Subscription section now applies email and toolkit values instead of silently skipping them.
* Fixed: Recurring price format on product pages and catalog now renders as "9.99 / month" instead of "9.99 Every month".
* Fixed: Variable subscription variation price display no longer shows stale or incorrect billing schedule on initial load and after option changes.
* Fixed: Subscription product admin save is now blocked and a validation error is shown for invalid price, billing interval out of range, or missing renewal price.
* Fixed: Lifetime Deal product type no longer displays renewal schedule or billing cycle duration on the storefront or in cart/checkout.
* Fixed: Cart now renders the "Proceed to Checkout" button for trial product items.
* Fixed: Checkout subscription summary now shows the next charge date and authorization copy for trial, signup-fee, stepped-renewal, and fixed-length products.
* Fixed: Signup fee line in checkout summary now uses the label "Subscription Signup Fee" consistently.
* Fixed: Stepped renewal checkout summary wording now reads "X every Y for the first N payments, then X every Y" to match the user manual contract.
* Fixed: Mixed-cart, multiple-subscriptions-in-cart, one-per-product quantity, and different-billing-cycle cart error messages now match the documented exact copy.
* Fixed: Subscription guest checkout now forces the WooCommerce account-creation form when auto_create_account is enabled.
* Fixed: One-click all-items checkout mode now fully clears same-product quantities before adding the clicked item.
* Fixed: Non-subscription coupons are now rejected when applied to a subscription-only cart.
* Fixed: Plan-switch checkout wording now reads "Replaces your current [Plan Name] subscription" to match the user manual.
* Fixed: Active and Trial subscription rows in the admin list no longer show the Delete row action.
* Fixed: Subscription detail activity timeline no longer creates duplicate "Payment Received" entries for the same order/event (idempotency guard added).
* Fixed: Trial subscription rows in the My Subscriptions list now display the trial-end / next-payment date.
* Fixed: Account navigation "Subscriptions" count now matches the actual subscription count visible in the list.
* Fixed: Subscriptions pagination now loads the correct rows for page 2+ instead of repeating page 1.
* Fixed: Cancelled subscription detail page no longer renders the Subscription Actions section or any action buttons.
* Fixed: Skip Next Renewal and Pause Subscription controls now appear on the active subscription detail page when the respective settings are enabled.
* Fixed: Immediate cancellation now completes successfully after a reason is selected; end-date is written at cancellation time.
* Fixed: End-of-period (scheduled) cancellation now completes successfully after a reason is selected.
* Fixed: Undo Scheduled Cancellation now fully clears the pending-cancellation state (banner, status pill, and button) after the modal confirms.
* Fixed: Skip renewal confirmation now submits successfully and writes skip metadata to the subscription.
* Fixed: Pause subscription confirmation now submits successfully and writes pause metadata to the subscription.
* Fixed: Change Plan modal now loads Upgrade/Downgrade/Others plan options without a "Failed to load plan options" error.
* Fixed: Shipping address update from the customer portal now persists the new address successfully.
* Fixed: On-Hold subscription detail no longer exposes a Cancel Subscription action (only Resume is shown).
* Fixed: Expired subscription detail no longer exposes a Reactivate action; Subscription Actions section is hidden for terminal statuses (Expired, Cancelled).
* Fixed: Email previews in WooCommerce > Emails now populate with real sample data instead of blank/zero values.
* Fixed: Email template footer no longer displays literal placeholder tokens in previews.
* Fixed: Default cancellation reason list now includes "temporary_pause" / "Just need a temporary break" as the seventh default reason.
* Fixed: Customer cancel modal now fetches the current reason list from the server instead of using a stale JS-bundled copy.
* Fixed: Retention offer modal no longer gets stuck on "Loading..." when a retention offer is configured; discount card renders and is interactive.
* Fixed: Retention analytics Cancellation Reasons chart now segments by actual logged reasons instead of always showing "not_provided".
* Fixed: Role mapping now removes the assigned role when a subscription is cancelled, with a fallback to subscriber if no other roles remain.
* Fixed: URL restrict rules with require_login=true now redirect unauthenticated visitors to the login page instead of sending them directly to the configured redirect target.
* Added: All action buttons in the admin panel and My Account customer portal now show a loading spinner and disabled state while an AJAX/REST request is in flight.
* Fixed: Native window.confirm() dialogs replaced with the shared useConfirm() modal across all remaining admin React components.
* Fixed: include error for order-subscriptions.php template file resolved.

= 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/deals/arraysubs).
