Changelog

Everything we changed, in public.

Straight from the readme that ships with the plugin, so this page cannot drift from what you actually installed. Every entry below went out to every site running Milo.

Current version
1.8.23
Last released
2026-08-27 2:36pm
Releases
43
Changes shipped
196

1.8.23

4 changes

  • Fixed

    two links in this readme pointed at pages that no longer exist (the add-ons bundle and Any Gateway).

  • Fixed

    the dashboard’s “This week” chart drew a decorative shape; it now draws the store’s real per-day sign-ups.

  • Fixed

    a product on sale showed its price in the Products list as a run-on sentence; it now shows the struck-through original beside the sale price.

  • Changed

    updated links to documentation and support pages.

1.8.22

2 changes

  • Fixed

    Virtual and Downloadable are no longer offered on a variable subscription’s parent, where a tick was dropped on save. They belong to each variation.

  • Fixed

    a lifetime plan no longer honours a free trial, which credited its full price at checkout with nothing ever scheduled to collect it; a lifetime price now also names its sign-up fee.

1.8.21

1 change

  • Changed

    the opt-in usage report now includes which payment gateways a store has connected, alongside the ones already billing subscriptions. Gateway slugs only, as before: no account identifiers, no keys, nothing about individual customers.

1.8.20

6 changes

  • Fixed

    paying the renewal order of an expired subscription flipped it back to active with its end date in the past and nothing scheduled to bill, because two handlers decided what a paid renewal was worth and the one without a rule always won. The considered rule now stands alone: a payment recovers on-hold, cancelled and pending-cancel subscriptions, expired stays expired, and the merchant filter that narrows the list finally takes effect.

  • Added

    the pay page now states what paying a renewal order will do before taking the money. A cancelled or on-hold subscription’s invoice says it will reactivate and names the next renewal date; a fixed-length subscription near its end says it will not be billed again; an expired subscription’s invoice is refused with the reason and a link to subscribe again, since that payment would buy nothing.

  • Fixed

    a customer who fixed their payment method after a renewal failed kept being declined. The renewal order carries a copy of the payment details taken when it was created, and every later attempt charged that copy, so the subscription showed a good card while each retry used the one that had already failed. With the retry add-on’s default schedule that is up to sixteen days of declines and dunning emails ending in a cancellation, for someone who did exactly what they were asked. A renewal order is now brought up to date with the subscription’s current payment method before each attempt, and the gateway it is addressed to follows the subscription too.

  • Added

    a subscription now records what became of its emails, in its own notes: the ones handed to the mail server, and the ones the mail server refused. Answering “did this customer get told?” no longer needs a third-party email logger, and an email refused by the mail server is named as the site-wide problem it is rather than looking like a subscription fault. Admin copies are left out of the successful ones, so the record stays readable.

  • Fixed

    a subscription with no customer email address dropped every one of its emails in silence. Nothing was recorded on the subscription or anywhere else, while WooCommerce’s own order emails kept arriving because those are addressed from the order rather than the subscription, so there was no way to tell an email that was never attempted from one that was attempted and lost in delivery. The subscription now says so in its notes, naming the email and how to fix it.

  • Fixed

    on a site detected as staging, subscription emails were held back silently. WooCommerce > Settings > Emails kept showing every one of them as enabled, because the block is applied on top of those settings rather than through them, and the staging notice listed renewal payments and scheduled events but never mentioned emails. A store whose payments were working read that notice as irrelevant and had nowhere left to look. The email settings screen now says so, next to the toggles it contradicts, and the notice names emails among what staging holds back.

1.8.19

9 changes

  • Fixed

    the Subscriptions list showed the gateway name for a subscription that had no payment details stored, so one that could not renew read exactly like one that could. The Payment column now marks a subscription set to renew automatically with nothing on file, using the same rule the Health Check uses so the two screens cannot disagree.

  • Added

    import subscriptions from Easy Digital Downloads Recurring Payments. Statuses, billing periods (including EDD’s quarterly and semi-yearly), trials, sign-up fees, fixed-length plans and downloadable files are carried over, each download becomes a draft subscription product, and variable price tiers get one product each because the tiers can bill on different schedules and because EDD gates files per tier. Imported subscriptions arrive on manual renewal, so each renewal is invoiced until the customer re-authorizes payment: EDD keeps the payment agreement in its own gateway profile, which Milo cannot charge. They are added to the re-authorization audience so that request can be sent in bulk.

  • Fixed

    importing from Easy Digital Downloads with the plugin deactivated attached every subscription to nobody. Customer records were read through EDD’s API, which does not exist once EDD is switched off, so a whole store arrived as guest subscriptions with no accounts, silently, and only visible when subscribers could not find their subscription in My Account. Customers are now read from EDD’s table like everything else the import reads.

  • Fixed

    an Easy Digital Downloads subscription whose date columns held MySQL’s zero date was imported with a next payment date in the year -1, which made it permanently overdue and invoiced the customer the moment the store migrated. Those columns are declared NOT NULL with no default, so rows written without a value carry a zero date rather than nothing at all.

  • Fixed

    the import preview counted the subscriptions it had sampled rather than all of them, so a store with more subscriptions than the sample limit was shown the size of the sample as its total.

  • Fixed

    a subscription bought without a WordPress account never had its download access changed. Cancelling one left the customer able to keep downloading its files indefinitely, and reactivating one never gave the access back. Access now follows the subscription’s status whether or not there is an account behind it.

  • Fixed

    the Health Check reported every subscription renewing through Milo Payments as set to renew automatically with nothing on file to charge. Its lists of what counts as a stored payment method knew the third-party gateways but not Milo Payments’ own, so the plugin’s main payment path was flagged as broken while it renewed perfectly well. Stripe, Mollie, Square and PayPal details saved by Milo Payments now count, and a half-stored method (a card with no customer) is still flagged, because that one genuinely cannot be charged.

  • Fixed

    a subscription whose end date had passed was invoiced again instead of expiring. The expiry event is only ever scheduled for a future date, so a subscription imported with a term already behind it had no expiry scheduled at all, while an overdue payment did get a catch-up renewal: a fixed-length plan whose term ended months ago billed the customer for a cycle they never bought.

  • Fixed

    a subscription could not serve the files it holds. WooCommerce only allows a download when the order behind it is completed or processing, and a subscription is neither, so a file attached to the subscription itself was refused with “Invalid order”. An active subscription now permits its own downloads; nothing else is widened, and the drip schedule still applies.

1.8.18

3 changes

  • Fixed

    a subscription could inherit a saved card without the customer account it was saved against, which cannot be charged off-session. The renewal tried anyway, so the customer got a declined-payment email for a card that was never chargeable and the merchant saw a payment problem. Payment details now travel complete or not at all, and a renewal will not attempt a charge against details it can already tell are incomplete: it sends an invoice and says why on the subscription.

  • Added

    milo_subscriptions_gateway_meta_dependencies and milo_subscriptions_incomplete_gateway_meta filters, so a gateway can declare which of its keys belong together and answer for itself whether stored details are usable.

  • Added

    Health Check now flags a subscription that is set to renew automatically with nothing stored to charge. Such a subscription passed every existing check, so the first visible sign was a renewal that never happened. Free plans, manual-renewal subscriptions and lifetime plans are deliberately left alone, and the fix offered is the re-authorization email.

1.8.17

3 changes

  • Fixed

    a subscription was listed under its billing address rather than the customer account that owns it. On an order paid through a finance address, the admin showed “Accounts Payable / invoice@example.com” for a subscription that actually belongs to the customer’s account, which is what decides who sees it in My Account. Guest checkouts still show the billing name, and the invoice details remain on the subscription.

  • Fixed

    paying a renewal order after the subscription had been cancelled took the money and left it cancelled. The retries give up and cancel, the customer pays the link still sitting in a dunning email, and Milo recorded the payment and scheduled the next cycle while access stayed revoked. Paying an outstanding renewal now reactivates the subscription, and a cancelled or expired subscription can be reactivated from the admin instead of only over WP-CLI. Reported from production, where it cost a subscriber twelve days of access.

  • Added

    milo_subscriptions_valid_status_transitions filter, so a store can forbid a status change it does not want or allow one this plugin does not.

1.8.16

8 changes

  • Added

    a variation of a variable subscription can now have its own billing period, interval, expiry, sign-up fee and free trial, so one product can offer a monthly option beside a yearly one. Leave a field empty and it keeps using the parent’s value.

  • Fixed

    a variation ignored the parent’s “Expire after” setting and never expired. Every other setting inherited correctly; this one read 0, which does not mean “unset” but “never expires”.

  • Fixed

    a variable subscription whose variations bill on different schedules advertised a price nobody could buy. The range took the cheapest variation’s period and applied it to the whole range, so $9 monthly beside $90 yearly read as “$9 – $90 / month”. Schedules are now listed separately.

  • Fixed

    choosing a variation showed a bare price with no billing period beside it.

  • Fixed

    switching to a variation that uses the parent’s schedule left the subscription on its old billing period. A customer moving from a yearly option to a monthly one stayed billed yearly.

  • Fixed

    switching did not move the expiry date onto the new plan, so an upgrade kept the old plan’s end date and a downgrade left access nobody was charging for.

  • Fixed

    migrating from WP Swings or YITH dropped a variation’s expiry, sign-up fee or free trial when the variation kept its parent’s billing interval. The affected variations arrived inheriting the parent instead.

  • Fixed

    the product editor stored whatever billing period it was sent. The fields are dropdowns so this was not reachable by hand, but an unrecognised period is not rejected anywhere downstream and would schedule renewals in the past.

1.8.15

1 change

  • Fixed

    the product editor offered an empty “General” tab. It appeared on load, vanished when you ticked Virtual, and came back with Downloadable, which made it look like the checkboxes controlled it. Subscription and variable subscription products were affected, and so was every plain variable product on sites running this plugin.

1.8.14

1 change

  • Fixed

    a cancelled or expired subscription still showed a next payment date, and “Auto-renew: Yes”, on both the admin screen and My Account. Nothing was going to be charged, but the display said otherwise. Existing subscriptions are cleaned up on upgrade.

1.8.13

2 changes

  • Fixed

    number settings added by add-ons were never saved. The screen reported success and the value reverted on the next load; twenty fields across eleven add-ons behaved this way.

  • Fixed

    a decimal setting lost its fractional part before it left the browser, so a 12.5% commission was stored as 12.

1.8.12

2 changes

  • Fixed

    most “Get it” buttons on the Add-ons screen led to a “Page not found”. 34 of the 44 links pointed at addresses the website does not use.

  • Fixed

    Stripe Bridge was listed twice on the Add-ons screen, under two different prices.

1.8.11

4 changes

  • Fixed

    before the setup wizard was completed, it redirected every admin page to itself, so editing a product or opening any other screen landed on the wizard instead.

  • Added

    orders created by hand, in the admin or over the API, now create their subscriptions once they are marked processing or completed. Previously only a customer checkout could produce a subscription, so a phone order or an invoiced plan charged once and left nothing behind.

  • Added

    a “Create subscription” action on the order screen, so orders placed before this can be completed without rebuilding them.

  • Added

    a subscription can now be linked to an order that already exists, or unlinked from one, which is what an imported or hand-built subscription needs to be complete.

1.8.10

1 change

  • Fixed

    creating a variable subscription product failed with “Missing parameter(s): price, period”. A variable subscription has no price or period of its own, since both belong to each variation.

1.8.9

1 change

  • Fixed

    subscription email toggles appeared to switch themselves back off on staging sites. The setting was being saved correctly; the screen was showing whether the site is currently allowed to send, not what you had chosen. Staging clones still send nothing, and now say so instead of looking broken.

1.8.8

1 change

  • Fixed

    the Subscriptions tab in My Account returned a 404 when the plugin had been activated before WooCommerce, because the account endpoint’s rewrite rule was never written. Sites already in that state now repair themselves, with no need to re-save permalinks.

1.8.7

3 changes

  • Fixed

    admin links (Configure payments, Open wizard, Add product, Back to WP Admin) pointed at a root relative /wp-admin/ path, so they returned the theme’s “Page not found” on installs where WordPress lives in a subdirectory, such as the Bedrock and roots.io stack. They now use the admin URL WordPress reports.

  • Fixed

    the migration progress bar could display more than 100% after an out-of-band (CLI) migration.

  • Fixed

    a PHP deprecation notice (strip_tags on a null title) on the setup wizard screen with PHP 8.1+.

1.8.6

1 change

  • Fixed

    the Attributes tab was hidden on regular (non-subscription) products, including plain variable and simple products.

1.8.5

1 change

  • Fixed

    the “Used for variations” checkbox stayed hidden on variable subscription products after WooCommerce’s attribute AJAX renders, blocking variation generation.

1.8.4

1 change

  • Added

    Milo Stripe Bridge in the add-ons marketplace (catalog at 42): keep the official WooCommerce Stripe gateway, saved cards, and mandates when migrating from WooCommerce Subscriptions.

1.8.3

1 change

  • Added

    Stripe Bridge, Pass, and Digest add-on cards in the marketplace (42 add-ons); unique colors restored on the Any Gateway and Webhooks cards.

1.8.2

5 changes

  • Fixed

    fatal error on every wp-admin page when WooCommerce is not installed (standalone mode): the first-run wizard’s existing-data check called WooCommerce functions unconditionally; it now falls back to the standalone subscriptions table.

  • Fixed

    the settings snackbar no longer overlaps the admin shell frame.

  • Added

    the milo_subscriptions_user_has_active_subscription filter, so add-ons (such as the upcoming Teams add-on) can grant active-subscriber access to users who inherit it rather than owning a subscription directly.

  • Added

    time-released (drip) downloads for WooCommerce downloadable products.

  • Added

    Teams, Cancellation Flows, Box Builder, Elementor Connector, Webhooks, Referrals, Loyalty, Invoices, Payment Plans, Trials Pro, Pricing Tables, Winback, Waitlist, NPS, Store Credit, Slack, Gift Cards, Onboarding, Affiliates, Fulfillment, Compliance, Social Proof, Transfer, Discord, Calendar, Age Check, and Milo TV add-ons in the marketplace.

1.8.1

5 changes

  • Fixed

    a subscription whose first payment is $0 (for example a 100% coupon) is no longer cancelled when WooCommerce’s unpaid-order stock cron cancels the still-pending parent order. Subscription parent orders are now exempt from that cron, and the order _subscription_ids list no longer starts with an empty string.

  • Changed

    plan switching now prorates by direction. An upgrade charges only the prorated difference immediately (it used to overcharge close to the full new price); a downgrade charges nothing now and credits the overpaid remainder to the next renewal; a same-price switch charges nothing.

  • Changed

    switching a plan no longer re-charges the plan sign-up fee (it is a one-time onboarding charge the customer already paid). Opt in via the milo_subscriptions_charge_signup_fee_on_switch filter for plans with a genuine per-switch setup cost.

  • Fixed

    switching a plan during a free trial no longer applies a proration credit (nothing has been charged for the current period yet). The switch still bills the new plan at the trial end.

  • Added

    standalone plan downloads can be time-released (drip). Each file has an “available after N days” setting in the plan editor; it unlocks that many days after the subscription starts, and the account/shortcode list shows a “Available on ” label until then.

1.8.0

Feature

6 changes

  • Added

    standalone plans can offer downloadable Media Library files, gated to active subscribers and listed with the [milo_subscriptions_downloads] shortcode.

  • Added

    a unified “My Account” area for standalone subscribers (subscription details + downloads + licenses), available as the [milo_subscriptions_account] shortcode and the My Account block.

  • Added

    standalone plans can grant a license via the Milo License Server, issued to active subscribers and revoked on cancellation; license keys appear in the account area.

  • Added

    developer hooks on the standalone download endpoint (milo_subscriptions_download_allowed filter, milo_subscriptions_download_served action) so add-ons can gate or meter downloads (e.g. per-period quotas).

  • Fixed

    add-on settings sections with multiple fields now have proper spacing between fields.

  • Added

    a per-plan meta layer so add-ons can attach settings to standalone plans (milo_subscriptions_plan_fields filter renders fields in the plan editor; milo_subscriptions_get_plan_meta() reads them).

1.7.0

Feature

3 changes

  • Fixed

    the Products admin list now spans the full width like the other list screens (it was capped at 1200px).

  • Fixed

    removed a dormant, mismatched internal data-store mapping for subscriptions (hardening; no behavior change).

  • Added

    subscription fields now round-trip through the WooCommerce product CSV import and export.

1.6.0

Feature

8 changes

  • Added

    support for gateways that schedule their own recurring payments (e.g. WooPayments, Stripe Billing); Milo no longer creates a competing renewal order for them, and they can record renewals via record_external_renewal().

  • Added

    one-click Health Check fixes (enable auto-renew, recalculate the next payment date, process a missed renewal, or email the customer to update payment).

  • Fixed

    on the subscription detail screen, the customer email no longer overlaps the action buttons at narrow widths.

  • Fixed

    the migration dry-run no longer warns about remapping to Milo Payments when the Any Gateway keep-existing-gateway path is active.

  • Added

    read-only WordPress Abilities API endpoints (get, list, count subscriptions, and stats) for AI and agent tools.

  • Improved

    the first-run setup wizard no longer hijacks admin pages on a site that already has subscriptions or subscription products.

  • Fixed

    switch and resubscribe related orders now appear on the subscription detail screen (they were previously never returned).

  • Added

    native analytics in standalone mode (active subscribers, MRR, new/canceled this month, and plan distribution), computed without WooCommerce.

1.5.0

Feature

3 changes

  • Fixed

    usage tracking no longer sends from local sites, even when confirmed as production.

  • Added

    with the Any Gateway add-on, migration can keep a subscription’s existing gateway (via the milo_subscriptions_migrate_payment_method filter) instead of remapping to Milo Payments.

  • Improved

    dry-run and verification reports now flag subscriptions that will not auto-renew because their mapped gateway is not installed or connected.

1.4.0

Feature

8 changes

  • Added

    import subscriptions from Flexible Subscriptions (WP Desk).

  • Fixed

    Milo no longer pauses when another plugin ships a WooCommerce Subscriptions compatibility shim.

  • Added

    import subscriptions from Sublium Subscriptions for WooCommerce.

  • Added

    export subscriptions to JSON or CSV.

  • Added

    WP-CLI commands to manage subscriptions and run migrations.

  • Added

    failed background jobs are logged and shown on Health Check.

  • Improved

    gateways now advertise per-feature subscription support.

  • Improved

    the subscriptions REST endpoint now publishes an item schema.

1.3.0

Feature

26 changes

  • Added

    admin “Request payment update” action that emails the subscriber a secure link to update their payment method.

  • Added

    import from YITH WooCommerce Subscription (products, subscriptions, schedule, statuses, renewal orders), with preview and rollback.

  • Added

    standalone lifecycle emails (activation, payment failure, cancellation) for customers and merchant, editable in Settings > Emails.

  • Added

    Products view in the Milo admin to list, create, and open subscription products.

  • Added

    “Plan call to action” block pattern (Patterns > Milo).

  • Added

    free trials and one-time sign-up fees on standalone plans.

  • Added

    customers can change a subscription’s shipping address from My Account.

  • Added

    “Plans” entry in the WordPress admin menu in standalone mode.

  • Added

    all Milo blocks now live in a dedicated “Milo” block category.

  • Added

    review prompt on the plugin’s own screens, 7 days after install.

  • Added

    warning when a WooCommerce-only add-on runs in standalone mode.

  • Improved

    migration preview now reports exact totals for the whole store.

  • Improved

    standalone Plans page rebuilt on DataViews (search, sort, grid).

  • Improved

    Restricted Content, My Subscription, and Subscribe Button blocks now use a native, theme-styled editor preview.

  • Improved

    Health Check findings stored per subscription (no more 5,000-row cap).

  • Improved

    setup wizard verifies the Milo Payments download before activating it.

  • Improved

    plan switches now save the subscription fewer times.

  • Fixed

    a plan switch no longer attaches to an unrelated product added to the cart.

  • Fixed

    synchronized-renewal proration now follows the real schedule for quarterly and yearly plans.

  • Fixed

    standalone dashboard now reports real numbers instead of zeros.

  • Fixed

    the WooCommerce-mode Health Check banner no longer shows in standalone mode.

  • Fixed

    migrated subscriptions correctly relink their parent order.

  • Fixed

    comma-decimal amounts (e.g. “12,50”) now save correctly in the standalone plan editor.

  • Fixed

    standalone nav and sidebar no longer surface WooCommerce-only add-ons.

  • Fixed

    plan editor side-by-side fields are now top-aligned.

  • Fixed

    the standalone Subscribe Button now uses the theme’s native button styles.

1.2.0

Feature

8 changes

  • Added

    migrations can now be reverted (schedule restored, renewal orders relinked, the Milo copy trashed).

  • Added

    WordPress Export/Erase Personal Data tools now cover WooCommerce-mode subscriptions.

  • Added

    configurable lead times for renewal, expiration, and trial-ending reminder emails.

  • Added

    standalone mode reconciles against Stripe twice a day to recover from missed webhooks.

  • Fixed

    the New Product modal now confirms before discarding a draft.

  • Fixed

    a plan switch no longer silently replaces the recurring payment method unless it can recur.

  • Fixed

    migrating an active subscription now applies the subscriber role right away.

  • Dev

    the codebase is now lint-gated in CI (PHPCS + PHPStan), at zero coding-standard errors.

1.1.2

4 changes

  • Fixed

    the dashboard setup checklist no longer marks “Run the setup wizard” as done when the wizard is opened and then exited before finishing.

  • Fixed

    editing a subscription via the REST API in standalone mode now returns a clear error instead of failing when WooCommerce is not active.

  • Fixed

    migrating from WooCommerce Subscriptions now carries over each subscription’s original sign-up fee.

  • Fixed

    on stores that enter prices inclusive of tax, the sign-up fee and free-trial credit are no longer taxed twice, so a free-trial cart correctly totals zero today.

1.1.1

1 change

  • Fixed

    subscriptions that renew for $0 (free or fully-discounted plans) now complete the renewal automatically and keep running, instead of attempting a payment and being put on hold.

1.1.0

Feature

11 changes

  • Note

    Customers can add a payment method from My Account to a subscription that has none yet (for example after importing subscriptions that need a card).

  • Note

    Restoring a subscription’s payment method now reactivates an on-hold subscription and reschedules its next renewal automatically.

  • Note

    Imported subscriptions that were already past due now resume billing instead of silently stopping.

  • Note

    Migration now carries over Stripe details stored on the original order, so imported subscriptions keep charging on their first renewal.

  • Note

    Migration now clearly explains card portability: Stripe, PayPal, Mollie, and Square transfer without interruption, while WooPayments cards must be re-confirmed once by each customer.

  • Note

    The health check now flags subscriptions whose saved card has expired, so you can ask those customers to re-authorize payment.

  • Note

    Added a “Check payment methods” action on the Health Check screen that verifies saved cards in the background and flags any that have expired.

  • Note

    Added a one-click way to email customers whose subscription needs a payment method (imported without a usable card, or expired card) a secure, sign-in-protected link to add or update their card.

  • Note

    Added customer reminder emails sent a few days before a subscription renews, expires, or its free trial ends (each can be turned on or off under WooCommerce → Emails).

  • Note

    Customers now receive a confirmation email when they switch their subscription to a different plan.

  • Fixed

    the “Change payment method” action no longer dead-ends on gateways that don’t support it yet (Mollie, Square, PayPal), and the saved-card list is now limited to the subscription’s own payment provider so a card can’t be assigned to the wrong gateway.

1.0.9

9 changes

  • Fixed

    cancelling a subscription with prepaid time remaining no longer charges another renewal at the end of the term; the cancellation is now finalized correctly.

  • Note

    Tightened the admin header spacing on medium and small screens so it matches the desktop layout.

  • Note

    Hardened output escaping on the add-on license screen.

  • Note

    Opt-in usage tracking now uses a non-reversible random site identifier instead of a hash of the site URL.

  • Note

    Uninstall now removes all of the plugin’s options and scheduled tasks when “remove data” is enabled.

  • Note

    Subscription scheduling degrades gracefully when Action Scheduler is unavailable.

  • Note

    Removed a daily scheduled task that had no effect.

  • Note

    Stopped creating an internal database table that was never used.

  • Note

    Release packages no longer include a stray empty internal folder.

1.0.8

18 changes

  • Note

    Sign-up fees are itemized as a taxable line in cart and checkout totals.

  • Note

    Admin schedule edits validate dates and reschedule the next renewal automatically.

  • Note

    Subscription switch links are hardened with nonce protection.

  • Note

    Custom email content keeps its HTML formatting and line breaks.

  • Note

    Add-on activation respects the plugin-management capability.

  • Note

    Renewals keep each subscription’s locked-in price, with an opt-in to re-price.

  • Note

    The “last payment” date reflects actual paid orders.

  • Note

    Subscription emails pause automatically on staging and development sites.

  • Note

    Subscription creation at checkout is atomic across multi-subscription orders.

  • Note

    Standalone mode loads its tables and REST routes only when enabled.

  • Note

    REST API documentation lists the exact available endpoints.

  • Note

    Customers can securely update their subscription card, with SCA/3DS and off-session setup handled by the gateway.

  • Note

    Buying several subscriptions that bill on the same schedule creates one grouped subscription.

  • Note

    The Payments screen guides you to install Milo Payments when it isn’t active.

  • Note

    The Add-ons page installs the free Milo Payments plugin in one click.

  • Note

    The block Site Editor stays available when WooCommerce is inactive.

  • Note

    Add-on cards show a “View details” button to open each add-on’s information.

  • Note

    The add-on details view shows a branded header instead of an empty screenshot placeholder.

1.0.7

6 changes

  • Note

    Failed renewal recovery: the on-hold email now includes a pay link, and paying it reactivates the subscription.

  • Note

    The “Create & send invoice” action now emails Milo’s branded renewal invoice instead of the generic WooCommerce one.

  • Note

    Block cart and checkout now show the recurring subscription total.

  • Note

    Import preview notices use the native WordPress notice style, and the “Milo Payments not active” notice links to install it.

  • Note

    Free trials and other $0 first payments now save a payment method, so the first renewal charges automatically.

  • Note

    Clarified the migration FAQ: imported renewals route through Milo Payments (connect the same gateway account), and the Any Gateway add-on keeps a third-party gateway.

1.0.6

6 changes

  • Note

    Import no longer requires connecting a payment gateway first.

  • Note

    Support for longer billing intervals (e.g. every 10 days).

  • Note

    Standalone mode blocks live billing on staging and development sites (test mode still works).

  • Note

    Switching a plan no longer resets the renewal date.

  • Note

    Buying a variable subscription now creates the subscription with the correct billing period.

  • Note

    Variations and Attributes tabs now always show for variable subscription products.

1.0.5

3 changes

  • Note

    Fixed a conflict with WooCommerce Subscriptions when both are active.

  • Note

    Setup wizard and import improvements.

  • Note

    Standalone mode (without WooCommerce) fixes.

1.0.4

3 changes

  • Note

    Fixed free-trial billing so trial products are not charged before the trial ends.

  • Note

    Improved renewal reliability.

  • Note

    Improved migration reliability.

1.0.3

1 change

  • Note

    Standalone mode (without WooCommerce) improvements and fixes.

1.0.2

3 changes

  • i18n

    the plugin is now fully translation-ready. Added missing translator comments, corrected plural string placeholders for languages with complex plural rules, and resolved all wp i18n make-pot warnings.

  • Note

    Added bundled translations for 17 locales: Arabic, Danish, German, Greek, Spanish, Finnish, French, Hebrew, Indonesian, Japanese, Korean, Dutch, Brazilian Portuguese, Russian, Swedish, Turkish, and Simplified Chinese.

  • Note

    Fixed the “Configure payments” dashboard links so they open the Payments screen correctly when Milo Payments is active.

1.0.1

1 change

  • Note

    Packaging fix: removed a stray file left over from the initial release. No functional changes.

1.0.0

Feature

2 changes

  • Note

    Initial public release.

  • Note

    Subscription product type …

Want it before everyone else?

Every release goes out on WordPress.org first. Updates arrive in your plugins screen like any other, with no licence key for the free core.