=== Recast Subscriptions: Find Old Prices and Failed Renewals, Preview Bulk Changes ===
Contributors: recastsubscriptions
Tags: woocommerce subscriptions, subscriptions, bulk edit, price increase, failed renewals
Requires at least: 6.4
Tested up to: 7.1
Requires PHP: 7.4
Requires Plugins: woocommerce
Stable tag: 0.1.9
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Find WooCommerce Subscriptions customers on old prices and renewals that will fail. Filter subscriptions in bulk, export to CSV, preview every change.

== Description ==

Recast is a subscription health check and bulk change preview for WooCommerce Subscriptions. Use it to plan a price increase for existing subscribers, find renewals that will fail, check next payment dates and export subscriptions to CSV.

When you change a subscription product, only new customers get the new terms. Existing subscribers keep their old price, dates and settings. To change hundreds of subscriptions by hand takes days.

Recast checks your subscriptions for money you are not collecting, selects the ones to fix, and shows every change for each subscription before anything is written.

= Health check =

Recast reads your active and on-hold subscriptions and reports:

* **Subscribers on old prices**: subscriptions that pay less than the product's current price, with the revenue per month they would add at current prices.
* **Renewals that will fail**: automatic renewals through a payment method that is not installed or is turned off.
* **Overdue renewals**: active subscriptions more than a day past their next payment, or with none.
* **Renewals that send an invoice**: manual renewals where the customer has a saved card that could pay automatically.
* **The next 30 days**: renewals due each day, with the amount to charge, and recurring revenue a month, per currency.

Each finding opens the matching subscriptions, and a preview of the fix. The health check only reads data.

= How it works =

1. **Select subscriptions.** Use filters: product, variation, payment method, status, renewal, currency, tax class, billing period, next payment date and customer. The count and the table update as you change them.
2. **Choose a change.** Example: set a new recurring price, or move the next payment date.
3. **Preview.** Recast shows each subscription with its values before and after. Nothing changes yet.
4. **Apply, with Recast Pro.** Recast Pro, a separate plugin, changes the subscriptions in the background and can undo the whole batch.

A batch is one change on one selection. Recast records every batch in History.

= What this plugin does =

* **Health check**: find subscriptions on old prices, renewals that will fail, overdue renewals and manual renewals that could charge automatically, and see the renewals due in the next 30 days.
* **Select subscriptions** with filters. Live count and a table of the selection.
* **CSV export** of the selection. Recast exports large selections in the background.
* **Preview** of every change: each subscription, each field, the value before and after, and the effect on recurring revenue. Every change type can be previewed: recurring price, next payment, trial end, end date, billing period, status, renewal, payment method, tax class and custom fields.

= Recast Pro =

Recast Pro is a separate plugin, available at https://recastsubscriptions.com. It applies the changes you preview with this plugin:

* **Apply** a change to the whole selection, in the background and in small steps, with pause and stop.
* **Undo** a whole batch: Recast Pro records the values before and after each batch.
* **Skip after change**: if a subscription changed between the preview and the apply, Recast Pro skips it and tells you.

= What Recast does not do =

* It does not write to the database directly. Every read and write goes through WooCommerce and WooCommerce Subscriptions. High-Performance Order Storage (HPOS) works.
* It does not change products or past orders.
* It does not send emails to your customers. You decide how to tell them.
* It does not move saved cards between payment methods.

= Requirements =

WooCommerce 8.0 or newer and WooCommerce Subscriptions 5.0 or newer. WooCommerce Subscriptions is sold separately.

= External services =

Recast can use Freemius (https://freemius.com) for optional usage data. Recast sends nothing unless you opt in on the welcome screen. You can skip it, and every feature of this plugin keeps working. When you opt in, Recast sends the site URL, the WordPress and plugin versions and, if you choose, your admin email to Freemius. Freemius uses them for usage data and to deliver updates. Freemius also sells Recast Pro. See the Freemius privacy policy (https://freemius.com/privacy/) and terms (https://freemius.com/terms/).

= Trademark note =

WooCommerce is a trademark of its owner. This plugin is an independent product and is not affiliated with or endorsed by the owner of that trademark.

== Installation ==

1. Upload the plugin folder to /wp-content/plugins/, or install it from the Plugins screen.
2. Activate it. WooCommerce and WooCommerce Subscriptions must be active.
3. Go to WooCommerce > Recast.

== Frequently Asked Questions ==

= How do I update the price of existing WooCommerce subscriptions? =

When you change a product's price, WooCommerce Subscriptions keeps existing subscribers on their old price. The Recast health check finds the subscriptions that pay less than the current price. Select them, choose "Increase or decrease recurring price" and preview the new price for each subscription. To apply the change, use Recast Pro, a separate plugin.

= How do I find subscriptions whose renewals will fail? =

Open the health check. "Renewals that will fail" lists the automatic renewals that use a payment method that is not installed or is turned off. "Overdue renewals" lists the active subscriptions that are more than a day past their next payment.

= Can I change the next payment date of many subscriptions at once? =

Recast selects the subscriptions with filters and previews the new next payment date for each one. You can also preview changes to the trial end, end date, billing period, status, payment method and tax class. Recast Pro, a separate plugin, applies the change.

= How do I export WooCommerce subscriptions to CSV? =

Select subscriptions with filters, then choose Export CSV. Recast exports large selections in the background.

= Which payment methods does it work with? =

Any payment method that WooCommerce Subscriptions supports, for example Stripe, PayPal and WooPayments. Recast reads the payment method of each subscription. It does not connect to the payment provider.

= Does it support High-Performance Order Storage (HPOS)? =

Yes. Every read and write goes through the WooCommerce Subscriptions API. Both storage modes work.

= Does a price change affect new customers? =

No. Recast changes only existing subscriptions. Product prices do not change.

= Does Recast charge customers at once? =

A price change applies on the next renewal. If a date change puts the next payment less than 24 hours away, Recast skips that subscription. You can permit immediate charges. Recast asks you to confirm first.

= Can I undo a batch? =

Yes, with Recast Pro, a separate plugin. It can undo every applied batch. Recast skips subscriptions that changed after the batch, so it does not overwrite newer changes. You can choose to restore them anyway.

= Is the free version limited by the size of the selection? =

No. Count, preview and export work on a selection of any size.

= What are the column names in the CSV file? =

The column names are fixed English keys, for example subscription_id and recurring_total. Scripts can rely on them. They do not change with the site language.

= Can Recast use the whole screen? =

Yes. Recast opens inside the WordPress admin, with the WordPress menu on the side. To give the steps more room, open the menu under your avatar and choose Full screen. The WordPress menu and toolbar then hide, like in the block editor. The exit button in the side rail takes you back to WordPress, and messages from WordPress and other plugins stay available under the bell icon. Choose Exit full screen in the same menu to go back. Without JavaScript the page keeps the normal WordPress admin.

= My exports folder is public on nginx =

On Apache an .htaccess file protects the folder. On nginx, add a rule that denies access to /wp-content/uploads/recast/.

== Third-party resources ==

* Poppins font by the Poppins Project Authors, licensed under the SIL Open Font License 1.1. Files and licence are in assets/fonts/poppins/.

== Screenshots ==

1. Subscription health check: subscribers on old prices, renewals that will fail and overdue renewals.
2. Select WooCommerce subscriptions in bulk with filters, a live count and a table.
3. Choose a change: recurring price, next payment date, status, payment method and more.
4. Preview the price increase for each subscription, with the values before and after.
5. History of every batch.
6. Export subscriptions to CSV.

== Changelog ==

= 0.1.9 =
* History: a batch that was only previewed shows "None" in the Changed column.
* History: the page text no longer mentions undo, which only Recast Pro can do.

= 0.1.8 =
* First release on WordPress.org.

== Upgrade Notice ==

= 0.1.9 =
Clearer History page for batches that were only previewed.

= 0.1.8 =
First release on WordPress.org.
