=== Autoship Cloud for WooCommerce Subscription Products ===

Plugin Name: Autoship Cloud powered by QPilot
Contributors: patternsinthecloud,crispdesign
Donate link: https://autoship.cloud
Tags: woocommerce subscriptions, subscribe and save, repeat delivery, subscription box, subscriptions
Requires at least: 4.6
Tested up to: 6.9
WC requires at least: 3.4.1
WC tested up to: 10.4.3
Requires PHP: 7.4
Stable tag: 2.14.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Use one plugin to automate repeat orders, product subscriptions, and scheduled deliveries for your WooCommerce subscriptions products.

== Description ==

**Upgrade your subscribe and save, product subscriptions, and repeat deliveries with Autoship Cloud for WooCommerce Subscription products** - a flexible and scalable program that customers love! The [**Autoship Cloud plugin**](https://autoship.cloud) powered by QPilot is **free to connect and test.**

This is a **single plugin** that allows you to enable any of your WooCommerce products for subscriptions, subscribe and save, repeat ordering, and delivery. Once enabled, the "Autoship and Save" or "Subscribe and Save" **automatically appears on your products and variations**, and can also be displayed in your cart!

WooCommerce subscriptions are quick to launch, so you can start offering your customers an **incredibly flexible subscription portal** where they can manage their upcoming repeat deliveries in My Account.

Seamlessly supports recurring payments with over 10+ popular payment gateways including [Authorize.net](http://authorize.net/), Stripe, Braintree, PayPal and more!

Automate your business with **[notifications](https://support.autoship.cloud/category/451-notifications)** (powered by SendGrid), repeat order processing, and shipping rules with carrier integrations. Autoship Cloud automatically syncs with your inventory to make things easy.

Offer dynamic coupons on recurring orders, automate shipping, sync inventory & stock status, upsell products into orders, and keep on top of everything with our incredible reporting and forecasting suite.

[youtube https://www.youtube.com/watch?v=ncPrmTAI3pI]

Have a question about how you can operate your subscribe and save program at scale with Autoship Cloud? [**Ask us here.**](https://autoship.cloud/contact-us/)

### **Live Demo Stores**

- ["Subscribe and Save" Demo Store](https://beautyloop.wpengine.com/): see how quickly you can add subscription options to your existing products)
- ["Meal Delivery" Demo Store](https://weeklyfresh.co/): see how Meal and Food Delivery sites can customize WooCommerce and the Autoship Cloud plugin to craft the best customer experience.  Includes a [full tutorial](https://autoship.cloud/tutorials/meal-subscription-boxes-customer-journey/) - with code examples for developers - for [how we designed and developed this store here](https://autoship.cloud/tutorials/meal-subscription-boxes-customer-journey/).
- ["Autoship" B2B Demo Store](https://traderjoeys.com/): see how Autoship Cloud makes it easy to automate repeat ordering by offering Autoship for raw materials & food supplies

### **★★★★★ 5 Star Support for Merchants and Developers**

Launch & scale with confidence!  All of our 5 star plugin reviews mention our excellent support.

- Fully documented Install & Launch Guide
- Detailed Documentation for Features, FAQ's and Plugin Code
- Fast and Responsive Online Support
- Backed by a team of experts in WooCommerce, Autoship, Advanced Integrations and Business Automation!

### Fully Documented Help Guides for Merchants and Plugin Code Docs for Developers

See the full [documentation and support site for the Autoship Cloud plugin here.](https://support.autoship.cloud)

- Tested with the latest versions of WooCommerce - see our plugin changelog ([https://wordpress.org/plugins/autoship-cloud/#developers](https://wordpress.org/plugins/autoship-cloud/#developers))
- Fully illustrated Install & Launch Guide
- Plugin documentation for templates, filters actions and hooks ([https://support.autoship.cloud/collection/598-developers](https://support.autoship.cloud/collection/598-developers))
- API and Webhook documentation for QPilot, the hosted service that powers the Autoship Cloud plugin ([https://docs.qpilot.cloud/reference/introduction](https://docs.qpilot.cloud/reference/introduction))

### **Customer Reviews with Examples**

"QPilot has been extremely helpful & supportive throughout the various stages of support."

 - [iHeartDogs](https://iheartdogs.com/)

"They are there for you, don’t matter how small or large your issue is. They are attentive, effective and will follow up with you. And they do provide customizations! We couldn’t be happier! Highly recommended!" - [BlueMoonHemp](https://bluemoonhemp.com/)

"Autoship Cloud and the Qpilot team provide an amazing plugin with some of the best support I have ever received. They have developers in the USA that write amazing, fast, and clean code and they will continue to support your custom modifications after its been paid for. These guys are top notch, you will not regret this plugin." - [AlgaeBarn](https://www.algaebarn.com/)

This is how [Nuleaf Naturals](https://nuleafnaturals.com) used the Autoship Cloud plugin powered by QPilot to add 2,000 repeat orders in their first 2 months:

[youtube https://www.youtube.com/watch?v=WgkPWbWiBT4]

### **Customer Subscription Portal that is Easy and Flexible**

"It’s easy for customers to choose autoship options at checkout and manage their autoship shipments (including adding and removing products)." - [Mintun Media](https://www.mintunmedia.com/)

Your customers can quickly view & manage upcoming Autoship orders in My Account.  Managing upcoming repeat orders is easy, intuitive, and beautifully branded to match the shopping experience of your online store.

You control which products your customers can add to their repeat orders. Automatically disable out of stock products, allow backorders, or simply select which products should not be allowed to be added to repeat orders.

Display upcoming orders using WordPress Templates (which can be further styled and customized), or use one of our embedded display portals that we host for you!

- Change products & future order dates/frequencies
- Change shipping & delivery locations
- Update saved payment methods
- Customers can pause or cancel orders
- Customers can easily see and fix failed scheduled orders (like a payment failure)

![Product Subscription Customer Portal](https://autoship.cloud/wp-content/uploads/2021/07/ProductSubscriptionCustomerPortal.png "Product Subscription Customer Portal")

See our documentation on **[How Customers Manage Scheduled Orders](https://support.autoship.cloud/article/461-how-customers-manage-scheduled-orders)**.

### Quickly Launch Subscribe and Save and Repeat Deliveries

Autoship syncs with your existing WooCommerce product inventory, so all you have to do is choose what products you want to turn on for Autoship. No additional plugins or setup needed to launch product subscriptions and repeat delivery options

- Enable only specific products and variations
- Bulk enable all products & variants globally
- Option to offer pricing discounts at checkout, recurring orders, or both
- Sync product prices in real-time and optionally update product prices for existing Scheduled Orders and product subscriptions

See how easy this is to do with our [**Install and Launch Guide**](https://support.autoship.cloud/article/448-7-enabling-products-for-autoship)

![Quickly Launch Product Subscriptions & Repeat Deliveries](https://autoship.cloud/wp-content/uploads/2021/07/QuicklyLaunchProductSubscriptions&RepeatDeliveries.jpg "Quickly Launch Product Subscriptions & Repeat Deliveries")

Once a product is enabled for Autoship, you will see options on the product page for your customers to select "Autoship" (or another label you choose) and pick their repeat order frequency.

You can also choose to display the same options in your Cart as an "upsell" option before customers checkout. Use our preset templates that match your theme's styling, or customize it for the buying experience you want!

**Autoship in the Cart:**

![Autoship Products In Cart](https://autoship.cloud/wp-content/uploads/2021/07/AutoshipProductsInCart.png "Autoship Products In Cart")

### **Customer Email Notifications [powered by SendGrid®](https://sendgrid.com/)**

Send customers detailed email notifications about their repeat orders and subscription products.  Easily customize to your brand using our free template customizer and excellent deliverability rates thanks to our built-in integration with SendGrid® - included free with your subscription to Autoship Cloud's hosted service, QPilot.

![Customer Email Notifications by SendGrid](https://autoship.cloud/wp-content/uploads/2021/07/CustomerEmailNotificationsbySendGrid.jpeg "Customer Email Notifications by SendGrid")

- **Advanced Notices for Upcoming Orders:** Send customers email notifications about upcoming order (Option to add 10-Day, 2-day, 1-day and Custom Day advance email notifications.)
- **Failed Orders and Payments:** Let customers know about issues with payments, products or shipments so they can self-service their repeat orders.  Our customer email notifications even include steps in each message to help customers solve their own issues!
- '**Changeable Before' Order Notices:** Let customers know how many days they have to make changes to upcoming orders.  This feature is for site's using the advanced order processing option for "Lock Duration".
- **Option to BCC your support team on Customer Emails:** want to keep track of customer email messages yourself?  Enter a BCC email to include your support team's email with each notification!

### Automate Payments seamlessly with WooCommerce

Connect the same payment gateways that you use for WooCommerce Checkout to offer Autoship Customers a seamless payment experience.

Autoship Customers can save payment methods to pay for future orders at checkout automatically as well as add new payment methods saved in My Account whenever they need to update their upcoming Autoship Scheduled Orders.

- Over 10+ Popular Payment Gateways Supported (Stripe, Authorize.Net, CIM, Square, PayPal Express Checkout, Braintree, and NMI)
- Automated Customer Email Notifications
- Deep knowledgebase of support articles to help customers and merchants solve payment issues
- Manual Payment Method Entry Supported

See our documentation on the [**Payment Integrations**](https://support.autoship.cloud/article/334-payment-integrations) we support and how we manage them.

### Automated Shipping and Delivery for the Best Customer Experience

Automate shipping & delivery for Autoship Customers!   With Autoship Cloud, customers always receive the best shipping rate for their shipping address or delivery location automatically.  If an Autoship Customer's repeat order is changed, their shipping rate is automatically recalculated and applied for them.

- Flat Rates, Table Rates, and carrier integrations
- Shipping zones and multi-postcode support
- Product shipping classes
- New! Use ShipperHQ to integrate over 50+ global carriers
- Merchant can update available shipping method at any time
- Any order or address changes recalculate shipping every time

Please visit our documentation for more information on [**How Shipping Rates Work**](https://docs.qpilot.cloud/docs/shipping-rates).

### Zapier Integration & Webhooks

- Zapier Integration - [see how to power amazing email campaigns](https://autoship.cloud/news/automate-your-win-back-campaigns-using-klaviyo-and-qpilots-zapier-app/) in Klaviyo using Autoship Cloud + Zapier.
- Extend Automations and Integrations using the QPilot API and over 12 Webhook Triggers
    - [API](https://docs.QPilot.cloud)
    - [Webhooks](https://docs.qpilot.cloud/reference/annex-d-working-with-webhooks)
        - For example: fire Webhook whenever a Scheduled Order is Created, or when an item on a Scheduled Order is updated

### How Autoship Processes Repeat Orders: Advanced Automation

The Autoship Cloud plugin's hosted service, QPilot, processes orders using your site's the WooCommerce REST API (link to WC REST API). This enables repeat order processing to take place in the cloud so that your site doesn't get bogged down running tons of code and cron jobs just to process repeat orders. It's also a really nice backup just in case your site has any issues - your repeat orders are still hosted & protected in the cloud!

When a repeat order is due to process, the order shows up in your WooCommerce Orders just like an order that came through the checkout - process, fulfill and track repeat orders just as you normally do.

- Notify customers (n) days before their order processes
- Only a few functions on the checkout page to keep your site load speed fast!
- Set time of day to process repeat orders daily
- Start processing orders in advance of their next occurrence date.  Great for business that need a day or two to fulfill and ship orders.
- Set a custom "changeable before" option for your site to prevent changes to upcoming orders X days before they ship.  Includes a feature to send a custom email notification to let your customers know how much time they have to make changes!
- Orders processed via the [WooCommerce REST API](https://docs.woocommerce.com/document/woocommerce-rest-api/) means that your site can easily scale to process many repeat orders without stressing your WordPress site or hosting!  No more headaches with the WordPress Cron or Action Schedulers dragging your site performance.

![Advanced Automation of WooCommerce Products](https://autoship.cloud/wp-content/uploads/2021/07/AdvancedAutomationofWooCommerceProducts.png "Advanced Automation of WooCommerce Products")

It's easy to view and track checkout orders that originate Autoship and Product Subscriptions as well as orders created (via the WooCommerce REST API) from processing repeat Scheduled Orders. See an explanation of that in-depth on our documentation: [**How Scheduled Orders are Linked to WooCommerce Orders**](https://support.autoship.cloud/article/463-how-scheduled-orders-are-linked-to-woocommerce-orders).

For detailed and technical information on how Autoship Cloud's hosted service, QPilot, processes orders with WooCommerce, please see our full documentation here: [**How an Autoship Scheduled Order is Processed**](https://support.autoship.cloud/article/535-how-an-autoship-scheduled-order-is-processed).

### Customizable Order Scheduling & Repeat Frequency Options

Craft the subscriber experience you want for repeat orders and deliveries with standard or customized order dates and frequency options. Control what customers see at checkout or what is available to be changed through the customer portal.

Customer can change their upcoming order dates or frequency to get products delivered on their schedule. Lower your subscription order churn by letting customers use the frequencies that best match their need.

With Autoship Cloud, your customers have complete control & flexibility within the rules that you set for repeat ordering dates & frequencies.

- Customer can update at any time
- Daily, weekly, or monthly options
- Customize the frequencies you offer
- Limit options or leave them wide open
- Options by specific products, category, or storewide

![Customizable Scheduled Order Frequency & Next Occurrence](https://autoship.cloud/wp-content/uploads/2021/07/CustomizableScheduledOrderFrequency&NextOccurrence.png "Customizable Scheduled Order Frequency & Next Occurrence")

### Product & Inventory Sync

Autoship Cloud automatically syncs with your WooCommerce product data, stock status & inventory so that you can offer Autoship options and product subscriptions for the products you already sell.

Product data is synchronized with your WooCommerce store in real-time, so you have full control over which products are available to Autoship Customers on your product pages and on future scheduled orders.

- Real-Time sync for stock status and Inventory Count
- Out-of-stock products automatically excluded from repeat order processing
- Allow Backorders? We support that too!
- Enable specific products or variations for Autoship and exclude others

### Coupons for Repeat Customers and Ordering

Incentivize the buying behavior you want with coupons created by Autoship Cloud. Increase conversions, average order value, and reward repeat customers in the ways that match your business needs.

Whether you want to win a new customer or reward your best ones, Autoship Cloud makes coupons flexible and easy.

See all of the ways [**coupons can be configured**](https://docs.qpilot.cloud/docs/coupon-reference-guide) with Autoship Cloud.

- Apply to subtotal, shipping, or individual products
- Discounts can be one-time or repeat, and limited by use
- Give flat amount or percentage coupons
- Set minimums on item count, price, or weight
- Coupons created in Autoship only apply to Autoship items

### Marketing Tools to Upsell & Retain Repeat Customers

[youtube https://www.youtube.com/watch?v=wWRrU_-J3Kc&t=5s]

Increase the value of repeat customers with Autoship's upsell capabilities. A no-code solution that lets you create a link to any product in your store. When customers click that link, that product is added to their upcoming scheduled order.

Send the link via email, text, or chat. Make it one-click easy to upsell your existing customers.

- Offer single-use or subscription items
- Increase average order size with a single click
- Gift loyal customers one-time products
- Reduce friction on upsells for repeat customers: Add products subscriptions right to the cart with frequencies already applied
- Add products on repeat to existing subscription orders
- And more... get creative with how you upsell to your Autoship Customers!

### Reports & Forecasting So You Can Plan for Repeat Customers

Growing repeat revenue and managing customer relationships requires effective reporting. Autoship Cloud makes it possible to see the following:

- Inventory Forecasting - see what items are upcoming on scheduled orders
- See which products have high Total Scheduled quantities that are Active versus products with high Total Scheduled quantities that are paused or failed
- Customer metrics like LTV, when an order was first created, order count, and more!
- Event logs to see when scheduled orders are changed and by whom
- Total revenue dashboard

**See all the [reports and information](https://docs.qpilot.cloud/docs/introduction-to-reports) available on Autoship Cloud.**

== Screenshots ==

1. “Subscribe and Save” is quick to offer for any product or variation. Offer discounts for subscribing to products at checkout and an future repeat orders.
2. Product subscriptions can be displayed in your cart.  Upsell repeat orders with scheduling choices to customers about to checkout.
3. Customer portals display upcoming orders and deliveries to your subscribers.  Simple, flexible and look great on with your theme.
4. Set default and customized frequency options for all of the products that you offer on Autoship.  Offer the same frequency to all customers or set unique frequencies for specific products and variable products.
5. Product subscription options are easy to customize and style for the best customer experience.  Fully documented and well structured templates help your custom layouts shine!
6. Autoship Cloud’s plugin extension framework enables developers to add unique solutions.  See how products can be added to an upcoming subscription order.

== Frequently Asked Questions ==

**What plugins does Autoship Cloud replace?**

The Autoship Cloud plugin replaces:

- WooCommerce Subscriptions
- All Products for WooCommerce Subscriptions
- WooCommerce Product Bundles

****What is the difference between Autoship and QPilot?****

QPilot is a service provider designed for scheduled commerce. It is the engine powering the Autoship Cloud plugin. See more information at [QPilot.cloud](https://qpilot.cloud/) Both are created and managed by the same company.

**What payment integrations do you support?**

Stripe, [Authorize.Net](http://authorize.net/) CIM, PayPal Express Checkout, Braintree, and NMI are pre-configured to work with Autoship Cloud, but do need to be setup and tested. We support many more. If you don't see yours listed, please contact us: customers@qpilot.cloud.

See our docs for more information about [payment integrations.](https://support.autoship.cloud/article/334-payment-integrations#payments)

**What shipping integrations do you support?**

We currently integrate with the United States Postal Service directly. We support flat rate, table rate, and shipping rules as well. You can also access 30+ carrier integrations via our partner ShipperHQ.

**Do you work with Zapier?**

Yes! Autoship Cloud integrates with Zapier for custom triggers around important subscription events.

****Can I migrate from my current subscription software?****

Yes! Most migrations can easily be managed using a CSV upload. Our support team is very experienced at doing this and we are happy to help get it done for you.

launch product subscriptions and repeat delivery options!

Offer dynamic coupons on recurring orders, automate shipping, sync inventory & stock status.

**Where do I report security bugs found in this plugin?**

Please report security bugs found in the source code of the Autoship Cloud for WooCommerce Subscription Products plugin through the [Patchstack Vulnerability Disclosure Program](https://patchstack.com/database/vdp/af5bd7af-07d8-4932-afde-ee01e0882f0c). The Patchstack team will assist you with verification, CVE assignment, and notify the developers of this plugin.

== Changelog ==

= 2.14.4 - 2026-06-10 =

  - Fixed: The "Click here to update your shipping address on all Scheduled Orders" link on the Scheduled Orders page now correctly propagates the updated shipping address to all existing Scheduled Orders — matching the behavior of the "Update shipping address for all my scheduled orders" checkbox on My Account > Addresses.

  - Fixed: PaymentGatewayRegistry initialization no longer triggers `wc_doing_it_wrong` stack traces caused by payment gateways (such as WooCommerce Square) that check cart or session state during their own init.

  - Fixed: Added capability and nonce checks to the product-sync enable/disable/update AJAX handlers and the bulk-update-products handler so they can no longer be triggered by Subscriber-role users. Addresses Patchstack PSID b24b65e0d50f.

= 2.14.3 - 2026-06-01 =

  - Fixed: QuickLinks Two-Step Confirmation table now installs successfully on MyISAM and legacy InnoDB sites. The slug column on the confirmation table has been narrowed from VARCHAR(255) to VARCHAR(191) so the composite index stays within the 1000-byte key limit, and the DB version bump triggers dbDelta to repair existing installs.

  - Fixed: Stripe SEPA Direct Debit (`stripe_sepa_debit`) payment methods saved at WooCommerce checkout are now synced to the QMC customer, keeping saved payment methods consistent between WooCommerce and QPilot and reusable for scheduled orders.

  - Fixed: PayPal Payments (PPCP) gateway no longer hidden at checkout when an Autoship item is in the cart on merchants who enabled vaulting via PPCP 4.x's "Subscriptions mode = Vaulting API" setting rather than the legacy Vault checkbox.

= 2.14.2 - 2026-05-26 =

  - Improved: Authenticating with Patchstack VDP for continuous application security scanning.

= 2.14.1 - 2026-05-26 =

  - Fixed: Resolved a 2.14.0 regression that could trigger PHP warnings and break redirects on pages where customers manage their scheduled orders.

= 2.14.0 - 2026-05-20 =

  - New! Added WooPayments as a supported payment gateway with end-to-end vault, off-session charging, and 3DS recovery so subscribers can pay for their scheduled orders with WooPayments-backed cards.

  - New! Snooze is now available directly in the Native UI Scheduled Orders view. Subscribers can pause an order with an automatic resume date — chosen from merchant-configured durations or a custom date — and resume early from an inline confirmation panel. Merchants control the action label, whether Snooze appears alongside or instead of Pause, the duration source (QMC Site Snooze Frequencies or plugin defaults), and the maximum allowed snooze length from the Autoship Cloud > Settings > Options page.

  - Fixed: PayPal vault flow critical issues that prevented payment methods from being saved and reused for scheduled orders.

= 2.13.0 - 2026-05-05 =

  - New! Completed the payment gateway architecture migration started in 2.12.0. The legacy `src/payments.php` file (4,300+ lines) has been fully removed in favor of the modular `app/Modules/Payments/` architecture, with all payment method synchronization now flowing through dedicated integration classes for each gateway.

= 2.12.6 - 2026-04-08 =

  - Fixed: Wholesale minimum order requirement notice no longer appears for non-wholesale and guest users when Autoship items are in the cart.

= 2.12.5 - 2026-04-07 =

  - Fixed: Autoship price display now updates correctly for variations hidden by other plugins (e.g. Germanized).

  - Fixed: Center aligned scheduled order add-ons message and improved notice display animation.

= 2.12.4 - 2026-04-02 =

  - Fixed: Resolved duplicate and stale wholesale requirement notices appearing on classic and block-based cart and checkout pages.

  - Improved: Wholesale pricing now works seamlessly within the Scheduled Order management page, including product dropdowns, quantity fields, and price displays.

= 2.12.3 - 2026-03-13 =

  - Fixed: QPilot API URL construction that caused "Could not resolve host" errors by ensuring a proper path separator between the base URL and endpoint paths.

= 2.12.2 - 2026-03-12 =

  - New! Migrated the health check system to the modern module architecture with dedicated REST and AJAX controllers, a centralized health check service, and full legacy compatibility.

  - New! Added a Labels service for centralized management of UI labels and display strings.

  - Improved: Reorganized legacy code files (logger, deprecated functions, languages, health checks) into a dedicated `src/legacy/` directory with proper deprecation notices.

  - Improved: Removed the chatbot (WebChat) feature and its dependencies.

  - Improved: Cleaned up unused legacy code including WC-Autoship dead code, export/import utilities, and upgrade routines.

  - Improved: Updated positioning of event logs and product dropdown on the scheduled order deletion modal.

  - Improved: Added `is_tracing_enabled` support on logs for better debugging control.

  - Improved: Updated translations and composer configuration.

  - Fixed: Stripe gateway metadata fees compatibility for Stripe plugin versions earlier than 8.8.0.

= 2.12.1 - 2026-03-04 =

  - New! Extended the centralized payment gateway module with support for Braintree, Square, CyberSource V2, NMI, Paya V1, TrustCommerce, Sage, Checkout.com, and Airwallex. All payment gateways are now managed through the modern architecture with full backward compatibility.

  - Improved: Refactored the bulk frequency updates utility for better reliability.

= 2.12.0 - 2026-02-16 =

  - New! Payment gateway integrations are now managed through a centralized module with support for Stripe, PayPal and Authorize.NET. This provides a unified, modern architecture for handling payment method synchronization with QPilot.

  - New! Added a payment compatibility layer that bridges the new modular payment system with existing WooCommerce payment hooks, ensuring a seamless transition with no disruption to existing store configurations.

  - New! Payment gateways can now be remotely enabled or disabled via QPilot feature flags, giving merchants and support teams centralized control over which payment methods are active without requiring code changes.

= 2.11.0 - 2026-02-03 =

  - New! The new Admin Portal is now integrated into the WooCommerce plugin, making it easier for teams to update and manage Scheduled Orders directly within the plugin pages.

  - New! Built-in Quick Actions that allow customers to easily and quickly update their Scheduled Orders. Quick Actions also empower upsells and retention campaigns. Check it out under Retain and Grow and keep an eye out for more actions coming soon.

= 2.10.5.3 - 2026-01-15 =

  - Fixed: Resolved a critical error on product pages when viewing variable products with variations that have missing or empty regular prices.

= 2.10.5.2 - 2025-12-03 =

  - Fixed: Resolved a critical error when the v2 Subscriber Portal was enabled on WordPress 6.9.0.

= 2.10.5.1 - 2025-10-31 =

  - Fixed: Corrected an issue where multiple notices were shown on the checkout page for wholesale customers.

= 2.10.5 - 2025-10-31 =

  - Fixed: Corrected an issue where updating cart quantities did not trigger notifications when wholesale minimum quantity requirements were not met.

  - Improved: Integration with FunnelKit Payment Gateway now supports ACH payments.

= 2.10.4 - 2025-09-24 =

  - Fixed: Resolved an issue where updating the order status on the _WooCommerce_ > _Edit Order_ page would cause a critical error.

  - Fixed: Corrected a problem where Airwallex payment methods were not being deleted from QPilot customer profiles  or Scheduled Orders as expected.

  - Fixed: Fixed an issue where an Airwallex payment method was not being assigned to a customer’s Scheduled Order during checkout if they were a first time customer.

= 2.10.3 - 2025-09-16 =

  - New! New integration with [Nextime.Ai](https://nextime.ai), which is a shipping and last-mile delivery solution used by Subscription Apps to increase Subscriber Value and Retention by communicating delivery dates to Subscribers and optimizing upcoming order dates, delivery methods, and shipping rates for Merchants whenever an upcoming Subscription Order is changed.

  - New! Admins can now sync customer updates from _WP-Admin_ > _Users_ > _Edit_ directly to all existing Scheduled Orders for that customer.

  - Improved: Performance enhancements on _My Account_ and _WP-Admin_ pages which increase loading speeds for admins and customers.

= 2.10.2 - 2025-09-05 =

  - Fixed: Resolved a site wide critical error when updating a user from the User Management page.

= 2.10.1 - 2025-09-03 =

  - Fixed: Resolved an issue in the quick launch registration page that prevented new merchants to start the installation.

  - Improved: Schedule Orders page enhanced for faster loading times.

= 2.10.0 - 2025-08-28 =

  - Improved: Increased WordPress compliance for improved platform compatibility.

  - Improved: Applied key security fixes to strengthen protection and reliability.

  - Improved: Payment Methods page enhanced for faster loading times.

  - New: Recurring product sync is enabled by default for new WooCommerce sites.

= 2.9.4 - 2025-07-31 =

  - Improved! The plugin onboarding "Quicklaunch" now requires a Merchant's phone number, enabling merchants to receive faster support and timely updates.

= 2.9.3 - 2025-07-29 =

  - Fixed: Resolved an issue with the Autoship discounted price displaying twice on some product pages.

  - Fixed: Resolved a site wide critical error when upgrading to WooCommerce version 10 through a file upload.

  - Fixed: Resolved an issue with prices reflecting incorrectly when switching between one-time purchases and Autoship on product pages.

= 2.9.2 - 2025-07-08 =

 -  New! [FunnelKit Payment Gateway for Stripe WooCommerce](https://wordpress.org/plugins/funnelkit-stripe-woo-payment-gateway/) is now a supported payment integration for Autoship Cloud. Merchants using the FunnelKit Payment Gateway for WooCommerce can now use Autoship with the FunnelKit integration to securely save payment methods during an Autoship Checkout and for processing Autoship Scheduled Orders.

= 2.9.1 - 2025-06-30 =

  - Fixed: Resolved an issue with Stripe pay by link payment methods not saving to Scheduled Orders after checkout.

= 2.9.0 - 2025-06-25 =

  - New! The plugin [Airwallex Online Payments Gateway](https://wordpress.org/plugins/airwallex-online-payments-gateway/) by Airwallex is now supported with Autoship! Merchants using the Airwallex Online Payments Gateway for WooCommerce can now use Autoship with the Airwallex integration to securely save payment methods during an Autoship Checkout and for processing Autoship Scheduled Orders.
  - Fixed: Resolved an issue where [Authorize.net](http://authorize.net/) payment methods were not being saved after checkout to Scheduled Orders when using WooCommerce block checkout options.

= 2.8.10.1 - 2025-06-16 =

 - Fixed: Fixed versioning issue with the plugin.
 
= 2.8.10 - 2025-06-12 =

 - Improved! The Settings page link in the Autoship Cloud plugin menu now directs to `/wp-admin/admin.php?page=autoship` instead of `/page=settings`, preventing conflicts with other plugin settings pages.
 - Improved! Merchants using the plugin onboarding flow will now see an alert if they attempt to register a QPilot account with an email address that already exists.
 - Fixed: Shipping address updates made via _My Account > Addresses_ in WooCommerce now correctly sync with Scheduled Orders.

= 2.8.9.2 - 2025-06-02 =

 - Fixed: Resolved an issue that prevented sites using legacy storage file systems from loading the plugin for the first time.

= 2.8.9.1 - 2025-05-29 =

 - New! Streamlined and improved onboarding experience for new plugin installs to make setup faster, clearer, and easier than ever.

= 2.8.9 - 2025-05-23 =

 - Fixed: Unable to check "Save Card" when using block checkout style and a new payment method is added.
 - Fixed: Incorrect "Autoship and Save" Discount Displayed in Cart for Wholesale Product.

= 2.8.8 - 2025-05-14 =

 - Fixed: Autoship checkouts completed with Stripe Payment Links are now successfully saving to Scheduled Orders for future processing.

= 2.8.7 - 2025-04-30 =

- Improved! Merchants can now control product syncing directly from _Autoship Cloud > Settings > Utilities_, ensuring their product data syncs on a regular, smart cadence that prioritizes unsynced products.

- New: Merchants can easily monitor and troubleshoot issues with product syncing using detailed error logging in _Autoship Cloud > Settings >> Logs_.

- New: Added the ability to customize the "No Scheduled Orders" message shown to customers in _My Account > Scheduled Orders_ when no Scheduled Order exists. This can be managed directly from the QPilot Merchant Center when the v2 portal display option is enabled.

= 2.8.6 - 2025-04-15 =

- Fixed: Resolved an issue where wholesale prices were not showing on product pages when a wholesale customer selected Autoship options.

- Fixed: Resolved an issue where the Save Card for payment methods option was not enabled by default when using WooCommerce block-style checkout and Autoship items are in the cart.

= 2.8.5 - 2025-03-27 =

- New! Change your site wide frequency options in bulk from _WP-Admin > Autoship Cloud > Settings > Utilities_
  - Updating the site-wide settings will automatically update the frequency options displayed on product pages and offered to customers at checkout.
  - If you have overridden the frequency options on a specific product in _WP-Admin > Products > Edit_ then those settings will remain active as well.

= 2.8.4 - 2025-03-24 =

- Fixed: Improved the customer experience when adding and updating Items in My Account > Scheduled Orders when using the Native Ui. This is due to corrected HTML properties verification when loading products in the Native Ui over JS.
 
- New! Added a new bulk utility in Autoship Cloud > Settings >> Utilities that enable wholesale suite customers to sync wholesale pricing rules to existing Scheduled Orders
 
- Fixed: Resolved an issue where the wholesale customer product price was missing after making changes to a Scheduled Order in My Account > Scheduled Orders

= 2.8.3 - 2025-03-06 =

- Fixed: Resolved an issue where several terms (including Scheduled Order status, the Next Occurrence Date month, and the "Months" for the frequency) could not be translated within the Native UI when using Loco Translate.

= 2.8.2 - 2025-02-21 =

- Fixed: Resolved an issue where a customer would not receive the WooCommerce product sale price when adding a one-time item to the cart

= 2.8.1 - 2025-02-17 =

- Fixed: Resolved a vulnerability related to Cross-Site Scripting (XSS).

- Fixed: Resolved an issue with the WooCommerce Wholesale Prices integration where, in My Account > Scheduled Orders, if a customer updated a product to a quantity below the minimum item count, the warning notification included the product name twice.

- Fixed: Resolved an issue with the WooCommerce Wholesale Prices integration where a critical error occurred in My Account > Scheduled Orders when both the Dynamic Pricing Extension and the legacy product sync option were enabled.

- Fixed: Resolved an issue with the Dynamic Pricing Extension where updated pricing was not displayed when switching between the one-time purchase and Autoship options in the cart, even though the correct price was applied at checkout.

= 2.8.0.1 - 2025-01-09 =

- Fixed: Resolved an issue that prevented product data from syncing with QPilot when the _WooCommerce Wholesale_ plugin was in use.

- Fixed: Resolved an issue with the _WooCommerce Wholesale Prices_ integration when requiring minimum item quantities for wholesale customers was not being validated and enforced by the Native UI Display of Scheduled Orders in My Account.  Now, when a wholesale customer is logged in and managing their Scheduled Order in My Account, and attempts to update their Scheduled Order to an item quantity that is less than the minimum required, they will be shown an error and the update will not succeed until the minimum item quantity is met.

- Functions updated:
  - **autoship_sync_product** - Passes a new parameter for **WC_Product**
  - **autoship_push_product** - Passes a new parameter for **WC_Product** or boolean and logic to check if the new param is not false
  - **autoship_product_dropdown_get_price_range** - Calls a new function that filters the prices in the Add product dropdown
  - **autoship_validate_wholesale_price** - Fixed logic that checks if the product meets the Minimum order quantity if set.
  - **autoship_update_schedule_items_wholesale_price** - Fixed bug with an undefined variable
  - **autoship_product_dropdown_get_price_range** - Calls a new function to filter the prices in the Add product dropdown
  - **autoship_validate_wholesale_price** - Fixed logic for checking if MOQ or MOS rules are set and whether to display a message if any of the rules are not met.
  - **autoship_update_schedule_items_wholesale_price** - Fixed an undefined variable

- Functions created:
  - **filter_woocommerce_quantity_input_args** - Adds min attribute to quantity input if the product has a minimum order quantity set
  - **autoship_filter_add_schedule_items_wholesale_price** - Filter function for Add product dropdown items

= 2.8.0 - 2024-12-09 =

- NEW! Autoship Cloud now has a direct integration with the [WooCommerce Wholesale Prices plugin](https://wordpress.org/plugins/woocommerce-wholesale-prices/) which enables B2B merchants to manage wholesale prices and customers with the features of Autoship: Subscription Products, Scheduled Orders, Recurring Payments, and more!

  - Merchants using the "Autoship Cloud Wholesale Pricing Extension" plugin to integrate with WooCommerce Wholesale Prices should deactivate the "Autoship Cloud Wholesale Pricing Extension" plugin after updating the Autoship Cloud plugin to version 2.8.0 or higher.

- Fixed: Resolved an issue in the WordPress Admin Menu ( _WP- Admin > Autoship Cloud >> Retain & Grow_ ) where navigation to "Retention Workflows" and "Dunning" pages was broken. "Retention Workflows" and "Dunning" features are now directly accessible in the plugin.

= 2.7.0 -  2024-10-31 =

- New!  The plugin [_NMI Payment Gateway for WooCommerce_ by Pledged Plugins (Enterprise)](https://pledgedplugins.com/products/nmi-payment-gateway-woocommerce/) is now supported with Autoship!  Merchants using the Enterprise version of _NMI Payment Gateway For WooCommerce_ can use this plugin with the [NMI integration](https://docs.qpilot.cloud/docs/nmi) to save payment methods during an Autoship Checkout and for processing Autoship Scheduled Orders.

- Fixed: Resolved an issue with the Woo Stripe Plugin that would cause some Credit Card payments not to save their tokenized ids to the Scheduled Order after an Autoship Checkout.

- Functions updated:
  - **autoship_filter_skyverge_tokens** - Check if the provided **$token** variable exists and if instance of **WC_Payment_Token_CC** before calling
  - **autoship_get_stripe_order_payment_data** - if the Stripe token is not available in DB, then try to get the token from the Stripe API

- New Functions added:
  - **autoship_get_stripe_payment_method_data_by_id** - Gets payment data from the Stripe API
  - **autoship_stripe_intent_request_filter** - Adds additional params to the Stripe payment intent request
  - **autoship_stripe_force_save** - Forces saving the Stripe payment

= 2.6.9 -  2024-09-12 =
- Fixed: Resolved compatibility issues Scheduled Order metadata  and HPOS (High Performance Order Storage)
  - Functions updated:
    - **autoship_register_edit_order_metaboxes** - Added code that checks if HPOS is enabled and based on that register the metabox in the correct screen ID.
    - **autoship_add_scheduled_order_ids_metabox** - Added code that checks if $post param is an instance of WP_Post before getting WC order.
    - **autoship_maybe_save_new_scheduled_order_ids** - Added call to **remove_action** to prevent loop on metadata saving

- Fixed: Resolved compatibility issues with versions of PHP 8.3 by adding parameters required by the sprintf function.
  - Functions updated:
    - **autoship_log_qpilot_client_response_errors** - Added missing placeholder for sprintf function
    - **autoship_get_coupon_by_code** - Removed undeclared and unused variable
    - **autoship_upsert_scheduled_order** - Added missing parameters to sprintf function
    - **autoship_delete_scheduled_order_endpoint_wrapper** - Added missing parameters to sprintf function
    - **autoship_confirm_delete_schedule_notice_html** - Added missing parameters to sprintf function

= 2.6.8 -  2024-09-05 =

- Improved: Increased plugin compatibility when the Woo PayPal Payments plugin is active by refactoring the functionality to get tokens for advanced card processing when vaulting credit cards with PayPal.  This improvement removes all uses of WC Subscriptions classes from within the Autoship plugin which are listed below.
  - Functions updated:
    - **autoship_force_save_card** - Includes PayPal Payments Advanced card processing "Save card" into list of card fields to force saving
    - **autoship_adjust_sepa_order_payment_method_data** - Added check for whether the param is set to prevent warning
    - **autoship_get_ppcp_order_payment_data** - Added default values for variables
    - **autoship_get_ppcp_cc_order_payment_data** - Updated functionality to retrieve token for card payment
  - Functions deprecated:
    - **autoship_woocommerce_subscription_patch**
  - Functions removed:
    - **autosip_product_woo_subscription**
    - **autoship_woocommerce_subscriptions_is_renewal_order**
  - Classes removed:
    - **WC_Subscriptions_Cart**
    - **WC_Subscriptions_Synchroniser**
    - **WC_Subscriptions**
    - **WC_Subscriptions_Admin**
    - **WC_Subscriptions_Product**


= 2.6.7 -  2024-08-30 =

- Fixed: Resolved critical errors caused by adding classes for WC Subscriptions by migrating code for the Woo PayPal Payments plugin to be enabled by a setting in the Options tab of the plugin ( _WP-Admin > Autoship Cloud > Settings >>  Options (tab)_ ).  This allows the additional classes required to support the Woo PayPal Payments to be included only when the option to support Woo PayPal Payments is enabled.

= 2.6.6 -  2024-08-27 =

- Improved: Credit Cards saved as payment methods by the [WooCommerce PayPal Payments plugin](https://woocommerce.com/products/woocommerce-paypal-payments/) now display a description of the Credit Card to customers in the format [Brand] ending in [Last Four Digts] (expires MM/YY).  For example: _Visa ending in 4321 (expires 12/29)_.
- Fixed: Critical error that would occur when the [WooPayments plugin](https://wordpress.org/plugins/woocommerce-payments/) was active.

= 2.6.5 -  2024-08-22 =

- **New!** Support for the plugin [WooCommerce PayPal Payments by Woo](https://woocommerce.com/products/woocommerce-paypal-payments/) is now available.  This integration features support for Vaulting PayPal Standard Accounts and Debit and Credit Card processing, integrated Order Item Details when Scheduled Orders are processed via PayPal, and support for customers adding new saved payment methods in My Account > Payment Methods.
  - Merchants using the PayPal Checkout plugin should refer to our documentation and follow the steps for [How to Transition to PayPal Payments from PayPal Checkout](https://support.autoship.cloud/article/1114-woocommerce-paypal-payments).  
- **New!** Retain & Grow features including surveys & offers that can be automatically triggered when subscribers select to "Cancel" or "Pause" their Scheduled Order are now available.
- Improved: The WordPress Admin menu for Autoship Cloud in _WP-Admin > Autoship Cloud_ has been organized to provide a better admin experience and includes access to new reports available in _WP-Admin > Autoship Cloud > Reports_
- Improved: Developers can now filter the URL for scripts used by the v2 Portal
  - Functions updated:
    - **autoship_enqueue_scripts** - Uses function to get URL instead of hardcoded value
  - Functions created:
    - **autoship_get_v2_portal_scripts_url** - Function that returns URL for V2 scripts

= 2.6.4 -  2024-07-03 =

* Improved: The URL for the WooCommerce Store's Payment Methods page in My Account ( _My Account > Payment Methods_ ) is now dynamically updated in its Connected QPilot Site's Properties.  This improves the ability for customer notifications and subscriber portals to send customers to the correct page when directing them to update their payment method.

* Functions updated:
  * **autoship_enqueue_scripts** - Gets the URL instead of a hardcoded value
  
= 2.6.3 -  2024-06-20 =

* **New! v2 Subscriber Portal:** The v2 Portal is a new option for displaying Scheduled Orders to customers in _My Account > Scheduled Orders_ and offers the most flexible subscriber experience of Autoship ever.  The v2 Portal is an application that is securely embedded in the _My Account > Scheduled Orders_ page without the use of an iFrame, and its display and style can be completely customized within your connected [QPilot Site's settings](https://docs.qpilot.cloud/docs/v2-subscriber-portal).  To display the v2 Portal in your WooCommerce store, navigate within your WordPress Admin to _WP-Admin > Autoship Cloud > Settings >> Options (tab)_ and then scroll to "Displaying Scheduled Orders in My Account".

= 2.6.2 -  2024-06-10 =

* **New! Product Upsell Carousel:** Sites using the Native UI to display Scheduled Orders to customers in _My Account > Scheduled Orders_ can now enable a new template that displays one or more Upsell Products within a Carousel that are linked to items already included in each Scheduled Order.  This new option called the "Product Upsell Carousel" can be enabled in the WordPress Admin ( _WP-Admin > Autoship Cloud >> Settings >> Options (tab)_ ) and will populate with any Products that are linked in WooCommerce ( _Products > Edit Product > Product Data (tab) >>> Linked Products >>> Upsell_ ) and enabled for Autoship.
* Improved: The options for **Displaying Scheduled Orders in My Account** are now better organized so that additional options related to each display option are easier to identify and enable/disable.
  * Functions updated:
    * **autoship_get_scheduled_order_item_add_url** - Added redirect param
    * **autoship_add_to_scheduled_order_endpoint_wrapper**- Added redirect param
    * **autoship_get_scheduled_order_link_params** - Added redirect param
    * **autoship_enqueue_scripts** - Includes new JS scripts for Carousel and v2 Portal display Option
    * **autoship_options_section** - Added HTML for new v2 Portal display option
  * Functions created:
    * **autoship_scheduled_order_upsell_products_template_display** - Displays the Upsell products widget
    * **autoship_scheduled_order_upsell_products_template_heading** - Filters Woo product upsells section heading
    * **autoship_scheduled_order_upsell_products_template_loop_add_to_cart**- Filters Woo After Shop loop item
    * **autoship_scheduled_orders_v2_portal_display** - Function for displaying v2 Portal template

= 2.6.1 -  2024-05-09 =

* Improved: The loading page speed is now about 25%-30% faster for the My Account > Scheduled Order page when using the Native UI Display option.  This decrease in load time was achieved by improving the code that fetches product variations shown in the Add Products dropdown.
* Fixed: a styling issue with the "Add product" dropdown in the Native UI Display option where the dropdown list was not displaying to the full width of the screen size when including a product or variation with a very long title. This was causing a display issue with the responsive layout on smaller screens.
  * Functions updated:
    * **autoship_activate_sync_bulk_action_handler - Added code that updates variants metadata for **_autoship_sync_active_enabled**
    * **autoship_deactivate_sync_bulk_action_handler** - Added code that updates variants metadata for **_autoship_sync_active_enabled**
    * **autoship_get_available_schedulable_variations** - Updates code for querying variants
    * **autoship_save_product_custom_fields** - Added code that updates variants metadata
  * Functions created:
    * **autoship_handle_dissable_schedule_order_options_meta_query** - Adds new metadata key for custom query
    * **autoship_update_product_variants_sync_active_flag** - Handles updating product variants metadata for **_autoship_sync_active_enabled** meta
    * **autoship_update_product_add_to_scheduled_order_flag** - Handles updating product variants metadata for **_autoship_schedule_order_enabled**

= 2.6.0 -  2024-04-04 =

* New!  Support for Cart and Checkout Blocks has been added.  Now sites can use Block elements to display the Cart or Checkout on their storefront work with Autoship Checkout.  There is a limitation for displaying Autoship Options for products in the Cart Block, and more options will be included in the future as additional properties are available for WooCommerce Block elements.
  * Functions updated:
    * **autoship_checkout_create_order_line_item** - Updated logic for checking where the order was created
    * **autoship_create_scheduled_orders_on_checkout** - Updated logic for checking where the order was created
    * **autoship_create_scheduled_orders_on_payment_status_changed** - Updated logic for checking where the was order created
    * **autoship_create_scheduled_orders_on_payment_captured_hook** - Updated logic for checking where the order was created
    * **autoship_get_scheduled_order_data** - Updated logic for checking where the order was created
    * **autoship_woocommerce_hpos_compatibility** - Added blocks compatibility
  * Functions created:
    * **autoship_woocommerce_uses_blocks** - Utility function that checks if cart and checkout pages are using blocks
    * **autoship_get_cart_item_data** - Adds information about the Autoship Item Schedule and Next Order into the Cart Item Data so that information displays in the Cart and Checkout blocks

* New: Added support for the **BackordersAllowed** property to the product data synced with QPilot.  This enables QPilot to use its improved support for avoiding unwanted Backorders when processing Autoship Scheduled Orders by checking if the Quantity In Stock for a Product or Variation is lower than the Quantity for an Item included in an upcoming Scheduled Order.
  * Functions updated:
    * **autoship_generate_product_upsert_data** - Added BackordersAllowed property

= 2.5.3 -  2024-02-29 =

* Improved: The endpoint for retrieving Scheduled Order Metrics has been updated in the plugin to use the latest version of the Scheduled Order Metrics report in the WordPress Admin _WP-Admin > Autoship Cloud >> Reports >>> Scheduled Order Metrics (tab)_
  * Functions updated:
    * **autoship_admin_reports_tabs_content** - Updated endpoint used
* Fixed: Restored the ability to use the function that retrieves product data from QPilot and returns an array.  This function was changed in Verison 2.5.2 to retrieve product data from WooCommerce.    A new filter has been added for developers to use when they want to return product data from QPilot, and a new setting option has been added to _WP-Admin > Autoship Cloud >> Settings_ that a WordPress Admin can enable in order to retrieve product data from QPilot without the need to change the filter directly with code.
  * Functions updated:
    * **autoship_get_schedulable_products_script_data** - Updated with the logic that checks if **autoship_filter_schedulable_products_use_wc_data** filter is true or false and depending on that pulls data from WooCommerce or QPilot
    * **autoship_get_schedulable_products_display_labels** - Updated with the logic that checks if **autoship_filter_schedulable_products_use_wc_data** filter is true or false and, depending on that, passes proper data to filter
    * **autoship_filter_schedulable_products_data** - Updated with the logic that checks if **autoship_filter_schedulable_products_use_wc_data** filter is true or false and depending on that handles accessing data in a proper way
    * **autoship_filter_schedulable_products_data_skip_variable** - Updated with the logic that checks if **autoship_filter_schedulable_products_use_wc_data** filter is true or false and, depending on that, handles accessing data in a proper way
    * **register_autoship_settings** - Added new setting key
    * **autoship_get_settings_fields** - Added new setting key
    * **autoship_get_legacy_support_qpilot_products_data** - New function that retrieves setting for whether to enable QPilot data usage
    * **autoship_legacy_qpilot_products_data_default_init** - New function that sets the default value for setting
    * **autoship_filter_schedulable_products_use_wc_data** - New function that defines **autoship_filter_schedulable_products_use_wc_data** with the value based on the settings
    * **autoship_get_schedulable_products_from_qpilot** - New function that contains code for pulling data from QPilot
    * **autoship_get_schedulable_products_from_wc** - New function that contains code for pulling data from WC
* Fixed: A case where a recursion error would occur when refreshing a product page that had previously selected the "Autoship and Save" option was reloaded. To fix the issue, the code that adds the "active" class to the "Autoship and Save" option runs first in the "triggerVariation" function.

= 2.5.2 -  2024-01-30 =

* Improved: Products now load faster with the Native UI Display Option which displays Scheduled Orders to Customers that are logged in to _My Account > Scheduled Orders_ using WordPress templates.  This improvement is due to Product Data now being loaded directly from WooCommerce instead of the QPilot API.
  * Functions Updated:
    * **autoship_get_schedulable_products_script_data** - Updated code to query products from WooCommerce store
    * **autoship_get_schedulable_products_display_labels** - Updated code to use **WC_Product** object getters
    * **autoship_filter_schedulable_products_data** - Updated code to **WC_Product object** getters and skip converting to array
    * **autoship_filter_schedulable_products_data_skip_variable** - Updated code to **WC_Product** object getters
  * New Functions Added:
    * **autoship_get_available_schedulable_variations** - Gets product variations that are enabled for Scheduled Orders.

* Improved: Better handling of displaying Scheduled Orders when they are entered directly via URL and do not belong to the site specifically with the Native UI Display Option.  Now, an appropriate "Not Found" error is displayed to the user when they attempt to view a Scheduled Order that is not assigned to them as a Customer.

* Fixed: Issue that was causing a fatal error when editing a user account in the WordPres Admin ( _WP-Admin > Users_ ) page.
  * Functions Updated
    * **autoship_after_update_customer_autoship_action** - Updated with to check if the code is running in the  WP-Admin and, if so, use the **WC_Admin_Notices** function to display the notice.

= 2.5.01 - 2023-12-05 =

* Fixed: Issue where sites extending WooCommerce Coupon functionality encountered an error when attempting to run functions related to WooCommerce Coupons or access Coupons in the WordPress Admin ( WP-Admin > Marketing >> Coupons )
* Fixed: Issue that was preventing the re-activation of Autoship Sync for variable products with QPilot. Previously, an error would occur when a WordPress Administrator would use the action to "Activate Autoship Sync" for a variable product after using the action to "Deactivate Autoship Sync" when updating Products in the WordPress Admin (WP-Admin > Products).

= 2.5.0 -  2023-11-27 =

* New!  Compatibility for High Performance Order Storage (HPOS) has been added.
    - HPOS introduces significant changes to how eCommerce data is managed in your WordPress Site, so we strongly suggest that sites enabling HPOS for the first time [learn more about HPOS](https://woo.com/document/high-performance-order-storage/) and carefully test this change before enabling HPOS with their Live Site.
* New!  Support for Upzelo integration has been added to the Native UI Display Option.  Now, any connected QPilot Site that has enabled the Upzelo Retention Platform can display Upzelo Cancelation Popups, Cancelation Challenges, and Surveys without manual code changes.

= 2.4.3 -  2023-10-26 =

* Improved: Removed a function that would convert order dates to be formatted in ISO 8601 for use in WooCommerce REST API responses, and that was causing compatibility issues with the WooCommerce mobile app for iOS.
* Removed Functions!  The following functions have been removed from the plugin:
  - **autoship_woocommerce_rest_fix_data** - Removed the call to the **'autoship_woocommerce_rest_fix_dates'** function that converts date formats.
  - **autoship_woocommerce_rest_fix_dates** - Removed the function because it is legacy code and no longer in use

= 2.4.2 -  2023-10-11 =

* Improved: All QPilot Coupon discount types will now render as Virtual Coupons on WooCommerce Orders created from processing Scheduled Orders.  Previously, only some coupon discount types would be rendered as Virtual Coupons on WooCommerce Orders.
* Fixed: The Bulk Update Utility to Enable Autoship Options has been fixed to update the options for Variable Products to enable or disable the display of Autoship Options on Product Pages for Variable Products and their Variations.  Previously, the Bulk Utility would not update this option on Product Variations.
* Fixed: The Tax amount is now included in Order Total Calculation for Scheduled Orders in the Native UI display option.
* Fixed: The pricing and discounts for items displayed in the Native UI display option now display correctly when Items are discounted by valid QPilot Coupons that disable the discounting of a Scheduled Order Item's Sale Price.
* Fixed: The Shipping Line Subtotal now displays 'No Shipping Options Found' when no Shipping Rate is applied to a Scheduled Order and 'Free' when a Shipping Rate is applied to the Scheduled Order in the amount of 0.00.
* Fixed: Coupons that apply their discount to the Items in a Scheduled Order now correctly apply their discount to their corresponding Item(s) in WooCommerce Orders created from processing Scheduled Orders.
* Fixed: Coupons that apply their discount to Item(s) that belong to a QPilot Product Group coupon now apply their discount to their corresponding to all Item(s) in WooCommerce Orders created from processing Scheduled Orders.
* Fixed: The Native UI display option has been updated so that a Scheduled Order can still be updated when a Scheduled Order Item contains a "Max Cycle" value.  Previously, when a Scheduled Order contained an item with a value for Max Cycle (Example: a "one-time purchase" item), the Scheduled Order would not update.
* Fixed: An issue that would cause the Embedded App Display Option to not load due to a 404 error.

= 2.4.1 -  2023-06-16 =

* New!  A new option for Merchants has been added to the Autoship Settings that enables Merchants that accept Cash On Delivery (COD) payments to easily add support for COD during Autoship Checkouts ( *WP-Admin > Autoship Cloud >> Settings >>> Options (tab)* ).  This new option is Disabled by default for all Merchants.
* Improved: We've optimized the loading speed of The Native UI Display Option, that displays upcoming Scheduled Orders to Customers using WordPress templates so that Autoship Customers can quickly view and make changes to their Scheduled Orders.
* Improved: Additional translation filters have been added to include the Frequency Display Name referenced by the Native UI Display Option in the *My Account > Scheduled Orders* view.
* Fixed: Autoship Orders paid for with Braintree Credit Cards and Braintree PayPal saved payment methods now successfully refund from the WooCommerce Edit Order page.  This fix addresses updates to the Braintree for WooCommerce plugin by WooCommerce.
* Fixed: The Native UI Display Option has been updated to correctly display the Regular Price of items when no Sale Price is applied.  Previously, when an item on a Scheduled Order was discounted by a Sale Price, but a coupon conditionally disabled the Sale Price for that item, the Sale Price would still be displayed to the Customer.
* Fixed: The Native UI Display Option has been updated to accurately display a Subtotal that accounts for discounts applied to items in the Scheduled Order by Coupons that apply discounting to a Product's or Product Group's price. 
* Fixed: The Embedded App Display option has been updated to enable customers to make changes to Scheduled Orders that have a Next Occurrence Date and Time that after the connected QPilot Site's Processing Time.

= 2.4.0 -  2023-03-21

* Fixed: "Square Refund Failed: Invalid API error" error when trying to refund SO via Square
* Fixed: Edit Schedule native UI Datepicker now respects Lock Window and Processing offset days set in the Site settings and doesn't allow selecting earlier days.

= 2.3.9 - 2023-01-25

* Improved: Autoship Product Sync error notices for WordPress Admins displayed on the _WooCommerce > Products > Edit Product_ screen when a variation is saved via AJAX will now be cleared when the page is refreshed in the browser.
* Improved: A check has been added for returned errors and a notice is now displayed in the _WooCommerce > Products > Edit Product_ page if an error occurs for one or more Product Variations during the Autoship Product Sync process.

* Fixed: The Add to Cart action shown on the Shop Catalog now supports WooCommerce themes that do not include a Quick View.  Previously, WooCommerce Themes that do not include a Quick View would add duplicate items to the cart when a product was added from the Shop Catalog and from the Single Product page with the One-Time Purchase option selected.

= 2.3.8 - 2022-11-16

* Fixed: the check for invalid products in the WordPress admin page(s) when a site is first connected to Qpilot.  Previously, starting in v2.3.7, a fatal error would occur when the Autoship Cloud plugin is first activated on a new site.

= 2.3.7 -  2022-11-09

* New! We've added a new notice for WordPress Admins that will now be displayed on the WooCommerce Edit Product screen whenever a product that is enabled for Autoship Cloud is saved or updated and an error occurs when attempting to sync the WooCommerce Product or Variation with QPilot.

* Improved: A warning notice will now be displayed at the top of the Autoship Cloud Products page ( _WP-Admin > Autoship Cloud > Products_ ) when one or more invalid products exist in QPilot.

* Fixed: the "API Health Check" ( displayed in _WP-Admin > Autoship Cloud >> Settings_ ) will now display the "Unhealthy" badge warning in the WordPress Admin in both the Autoship Cloud main menu item and the Autoship Cloud > Products sub-menu item when one or more invalid products exist in QPilot.

* Fixed: the Bulk utilities found in the _WP-Admin > Autoship Cloud > Settings >> Utilities ( tab )_  so that all default options are correctly selected.

= 2.3.6 -  2022-10-03

* Improved! Product data synchronization between WooCommerce Products and QPilot has been improved by removing redundant synchronization calls sent to QPilot when a product is saved.

* Fixed: the link offered in the alert notification for "No Autoship Payment Gateways Enabled" has been updated to a new URL

= 2.3.5 -  2022-09-20

* Improved: Support for Product-Level Discount Coupons has been improved for the Native UI Display Option ( for displaying Scheduled Orders to customers in _My Account > Scheduled Orders_  using native WordPress / WooCommerce templates ). The individual item price and subtotals will now reflect any discount applied to the Scheduled Order using a "Reduce Product By Amount" or "Reduce Product By Percentage" discount type for coupons assigned to one or more products.

* Improved: Support for the _WooCommerce PayPal Payments_ plugin has been improved by changing when the Autoship Cloud plugin triggers the **'woocommerce_subscription_payment_complete'** action -- which is how the _WooCommerce PayPal Payments_ plugin tokenizes the payment method used during the WooCommerce Checkout.

* Improved: A new option has been added to the Update Product Synchronization bulk utility that can be checked to enable the Add to Scheduled Order and Enable Schedule Options options for all products synchronized with QPilot.

* Improved! Product data synchronization between WooCommerce Products and connected QPilot Sites has been improved by automatically enabling the options for "Add to Scheduled Order" and "Enable Schedule Options" when a product's "Activate Product Sync" setting is enabled in the _WooCommerce > Edit Product_ screen.

* Fixed: starting in version 2.3.2, Scheduled Order data could be inadvertently removed from cart items when the scheduled item was updated in the cart and the option for "Enable to Display Autoship Options" -- located in  _WP-Admin > Autoship Cloud > Settings >> Options ( tab )_  -- for each product in the cart was unchecked.

* New Filters! The following new filters have been added to the plugin:
  * A new **'autoship_exclude_product_coupon_discounts_in_saleprice'** filter has been added to the **autoship_get_calculated_scheduled_order_item_sale_price()** function in the _src/scheduled-orders.php_ file and passes a single boolean parameter which can be used to disable the inclusion of product-level coupon discounts in the displayed product price in the Native UI Display Option ( for displaying Scheduled Orders to customers in _My Account > Scheduled Orders_ )

= 2.3.4 -  2022-08-09

* Improved: the Checkout.com Payment gateway integration has been updated to create Scheduled Orders after completing a checkout using the **'checkout_com_payment_captured'** action which was newly added to the Checkout.com Payment Gateway plugin.
* Improved: the **autoship.pot** file has been updated to include all new versions of the text strings displayed in the My Account, Product, and Cart pages.
* Improved: the Authorize.net refund metadata assigned to WooCommerce orders generated by QPilot has been updated to now include the charge captured value ('yes') as well as all of the gateway response field names.

* Fixed: Updated to load Autoship Cloud's translated strings when the plugins loaded action fires.  Previously, starting in v1.2.38 a minimum version requirement check was added which inadvertently changed the load order of the plugin files and prevented the translated strings from being loaded.

= 2.3.3 -  2022-07-06

* Fixed: Updated to include the new order-shipping-rate-form.php file for the selectable Shipping Rates support that was added in v2.3.2.

= 2.3.2 -  2022-06-28

- New! Added support for selectable Shipping Rates in the Native UI, Cart, and Checkout. A new option to **Enable Selectable Shipping Rates** can be selected in the WordPress Admin that allows customers to change the assigned Default Shipping Rate for their Scheduled Order when using the **Native UI Display Option** to display Scheduled Orders to Customers in _My Account > Scheduled Orders_ to a Preferred Shipping Rate. This new option is disabled by default and can be enabled in the WordPress Admin ( _WP-Admin > Autoship Cloud > Settings >> Options ( tab )_ ).
  - When a Scheduled Order is viewed by a Customer in the _My Account > Edit Scheduled Order_ screen, and the Scheduled Order has more than one available Shipping Rate option, a new **Edit** link will be displayed next to the Shipping total line. When the link is selected, a new **Preferred Shipping Rate** modal is displayed with a select drop-down menu displaying all of the available Shipping Rates and associated cost as well as the following options:
    - a. **Refresh Rates** - When clicked, the Scheduled Order is re-freshed via the API to see if any new Shipping Rates are available for the Scheduled Order
    - b. **Cancel** - When clicked, no changes are made to the Scheduled Order and the modal is closed
    - c. **Update Shipping Method** - When clicked, the new selected Shipping Rate will be assigned to the Scheduled Order as the Preferred Shipping Rate
  - When a Scheduled Order is viewed by a Customer in the _My Account > Edit Scheduled Order_ screen, and the Scheduled Order has only one available Shipping Rate option, a new **Refresh Rates** link will be displayed next to the Shipping total line. When selected, the Scheduled Order will be refreshed and all of the available Shipping Rates will be re-loaded into the _My Account > Edit Scheduled Order_ screen.
- Improved: the [Checkout.com Payment Gateway](https://wordpress.org/plugins/checkout-com-unified-payments-api/) integration has been updated to support version 4.4.0+ of the Checkuot.com Payment Gateway plugin. Previously, starting in Checkout.com Payment Gateway version 4.4.0 a PHP Fatal error message could occur after checkout and prevent the corresponding Scheduled Order(s) and saved Payment Method from being created successfully in QPilot.
- BETA: Added support for the new [WooCommerce PayPal Payments plugin](https://wordpress.org/plugins/woocommerce-paypal-payments/). Support for the WooCommerce PayPal Payments plugin is only enabled when a new **(Beta) Experimental Support for WooCommerce PayPal Payments** settings option, found in the new Experimental ( Beta ) Options section in _WP-Admin > Autoship Cloud > Settings >> Options ( tab )_ is checked.  The option is unchecked by default and, when checked, the following functionality is enabled:
  - The **Autoship Cloud Supported Payment Gateways** icon is displayed next to the **PayPal** and **PayPal Card Processing** gateways in the _WooCommerce > Settings > Payments ( Tab )_
  - If 1 or more products scheduled for Autoship are in the cart, and **PayPal** and/or **PayPal Card Processing** are enabled as gateways in the _WooCommerce > Settings > Payments ( Tab )_, then PayPal checkout will be enabled for the cart.
  - When the customer checks out, and 1 or more products scheduled for Autoship are in the cart, and they selected the **PayPal | Credit Card** option, the **Save Your Credit Card** checkbox will be checked by default and can not be unchecked by the customer unless all items scheduled for Autoship are removed from the cart.
  - When the customer places their order and selects either the **PayPal** or **PayPal Card Processing** gateways, the payment method used will be tokenized and saved in the WooCommerce Order Metadata under the value **payment_token_id**
  - The Scheduled Oder data sent to QPilot will include the new **PayPal** or **PayPal Credit Card** token and either a **gatewayPaymentType** set to '25' ( PaypalFundingPaypal ) or '26' ( PaypalFundingCard )
  - Scheduled Orders can be processed by QPilot with these tokenized saved payments, and the resulting WooCommerce Order will include the payment method set to _ppcp-gateway_
  - IMPORTANT NOTE: The WooCommerce PayPal Payments plugin does not support the creation of new saved payment methods by Customers in _My Account > Payment Methods_

= 2.3.1 -  2022-06-21

- Fixed: starting in v2.3.0, a Fatal Error that could occur in the My Account > Payment Method screen when adding a new payment method for one of the following Payment Gateways; Authorize.Net, Square, Braintree, and NMI.

= 2.3.0 -  2022-05-04

- Improved: We enhanced the Update Product Data Retrieval Functions to check for invalid products.  Previously a fatal error would occur when 1+ products were invalid, and now a log entry is added to the Autoship Cloud Logs when a product is being retrieved but is invalid.
- Improved: We updated the **autoship_scheduled_order_quantity_input()** function found in _src/scheduled-orders.php_ to avoid a PHP 8.0 deprecation notice that was being added to the debug log.
- Improved: We Added a check for Coupons that use Product Groups instead of Products to avoid a PHP Warning when customers are accessing the _My Account > Scheduled Order_ and _My Account > Scheduled Orders_ screens.
- Improved: We updated our integration with Stripe to handle and record data (including Fees) that is returned by the Stripe Payment Intents API for WooCommerce Orders generated by QPilot when a Scheduled Order processes.

- Fixed: The subtotal and totals displayed in the **Native UI Scheduled Order** display option under _My Account > Scheduled Orders_ to correctly include discounts applied to a Scheduled Order when using a coupon set to Reduce Product Price By Amount as the discount type.

= 2.2.9 -  2022-03-29

- New! **Checkout.com** is now available as a supported payment integration.  Merchants using the *Checkout.com Payment Gateway plugin by Checkout.com* ([https://wordpress.org/plugins/checkout-com-unified-payments-api/](https://wordpress.org/plugins/checkout-com-unified-payments-api/)) can now add this integration for their connected QPilot Site via *WP-Admin > Autoship Cloud > Payment Integrations*.

- Improved! Accessibility to the Autoship Cloud plugin in the Plugins page ( *WP-Admin > Plugins* ) has been improved by adding links in the Autoship Cloud plugin's description.
- Improved! Product data synchronization between WooCommerce Products and QPilot has been improved by including the Parent Product Id for WooCommerce Product Variations in the data sent to QPilot.
- Improved! Support for the legacy QPilot Scheduled Order processing version has been improved by including a new "downgrade option" via a link that allows for the Autoship Cloud plugin stored processing version to be rolled back as a method for merchants that need to downgrade the plugin to versions that use older processing versions.

- New Filters! The following new filters have been added to the plugin:
  - A new **'autoship_checkout_supported_payment_gateway_save_method_ids'** filter has been added to the **autoship_force_save_card()** function in the _src/checkout.php_ file and can be used to filter the id's of the save payment method checkout in the checkout form.

= 2.2.8 - 2022-02-09

- Fixed: the Embedded App Display option has been updated to resolve an error that would occur when a customer would attempt to update a Scheduled Order and no timezone (UTC offset) was selected in the connected QPilot Site.
- Fixed: the Embedded App Display option has been updated to resolve a 400 error that would occur when a customer would attempt to update the Next Occurrence Date on a Scheduled Order after the Processing End Time (defined on the connected QPilot Site) had already passed.

= 2.2.7 - 2022-01-28

- Fixed: the Embedded App Display option has been updated to work with the new Date/Time format used by version 2.2.5+

= 2.2.6 - 2022-01-18

- Improved: the display of customer-facing notifications in the Native UI Display Option has been updated to use the customer-friendly version of the failure messages supplied by the QPilot API for lock window and order processing window validation errors.  This makes it easy for customers to understand that they cannot make changes to a Scheduled Order while it is being processed.
- Improved: the checkout page integration has been updated to use the **wp_doing_ajax()** function instead of the deprecated **is_ajax()** function.
- Improved: currency support has been added to the creation of new Scheduled Orders that are created when using the Native UI Display Option by setting the currency associated with the new Scheduled Order to the same currency selected in the WooCommerce Site Settings (found in _WP-Admin > WooCommerce > Settings >> General (tab)_)
- Improved: the option labels used in the "Displaying Scheduled Orders in My Account" section (found in _WP-Admin > Autoship Cloud > Settings >> Options ( tab )_) to be more descriptive.
- Improved: The minimum required version of PHP has been changed from 5.6 to 7.3 in order to help reduce risks of security vulnerabilities possible with older versions of PHP and to support the latest versions of PHP code as recommended by WordPress.

- Fixed: the ability to add a product to the cart with a scheduled frequency using links generated from the Autoship Link Builder. Previously, starting in v2.2.5 products added to the cart using a link generated from the Autoship Link Builder would be added to the cart but only as one-time purchases and not as products scheduled for Autoship.
- Fixed: the Embedded App Option customer display header Schedule summary text and action button labels so that they are correctly displayed and visible to the customer.  Previously, starting in v2.2.5, these elements were no longer visible to customers.
- Fixed: a Fatal Error that could occur in the *My Account > Scheduled Orders* edit screen when attempting to add a product that has the "Sold Individually" flag selected (set in _WP-Admin > Products >> Edit Product_) to an existing Scheduled Order.

- New Actions! The following new actions have been added to the plugin:
  - A new 'autoship_customer_user_metrics_refreshed' action is now available in the autoship_refresh_customer_metrics_for_user() function found in the src/customers.php file and can be used to fire custom functions after the customer metrics data for a customer has been updated.

= 2.2.5 - 2021-12-29

- New! This update introduces a change to the Date/Time format that is used for each Scheduled Order’s Next Occurrence Date.  **After updating the plugin, it is very important to run the additional action to update the Date/Time format used for existing Scheduled Orders**. After updating the plugin, admins will see an Important Notice to complete the upgrade process: **"Update to Autoship Scheduled Orders Required!"** When the **Upgrade Processing Version** button is clicked, existing Scheduled Orders will be updated to work with the new compatible Date/Time format.
- New! Scheduled Orders can now include Time in their Next Occurrence Date.  For example: 2022-01-15 13:15:00
- New! A Customer Timezone can now be set for a Scheduled Order! This new setting helps with integrations that want to display the Date for upcoming Scheduled Orders in the timezone that the customer is in.
- New! Merchants can now set a Start Time and End Time for Site Processing to control when Scheduled Orders can be automatically processed.  The Autoship Cloud plugin has been updated so that the integration with QPilot will take into account the Scheduled Order Processing Start and End time ( set within your connected QPilot Site  **_Qpilot > Edit Site > Options ( tab )_** ).  If a Next Occurrence date-time falls outside the site's Processing Start and End Time, it will be automatically adjusted to the Scheduled Order Processing Start time.  The following functionality has been updated to take the Scheduled Order Processing Start and End time into account:
  - How the Relative Next Occurrence date and time is calculated when the “Set Next Occurrence Date Relative to Checkout” feature is set a product in the **_WP-Admin > Edit Product > Autoship ( tab )_**.
  - How the Next Occurrence date and time is calculated when using the Create Scheduled Order shortcode.
  - How the Next Occurrence date and time is set when using the Update Schedule functionality in the **_My Account > Edit Scheduled Order_** screen on the native Autoship Scheduled Orders template.

- Improved! The performance of the Edit Scheduled Order(s) screen when using the Native UI display option (viewable by customers in the *My Account > Scheduled Orders* screen) now loads faster by caching the Site Settings options retrieved from the QPilot API.
- Improved: The integration of the Autoship Cloud plugin with the WooCommerce Cart by updating the **superglobal** used from the **$_REQUEST** variable to the **$_POST** variable to apply the Schedule to the cart items.  This allows developers to customize the **$_POST** variable during the Add to Cart call.
- Improved: The Offset Processing feature that enables you to process Scheduled Orders days in advance of their Next Occurrence Dates has been improved so that Customers will see that their upcoming Scheduled Order's status is “Processing” during the day(s) ahead of their Next Occurrence Date.
- Improved: The Lock Duration feature has been updated to work with the new Date/Time format and also improves the customer experience by showing customers that their Scheduled Order is “Processing” during the time that they are not allowed to make changes. This way your customers see that their Scheduled Order is processing all the way up until their Next Occurrence Date, and are free to make changes only after the Scheduled Order has completed processing.

- New Filters! The following new filters have been added to the plugin:
  - A new **'autoship_site_settings_expiration_duration'** filter has been added to the new autoship_get_remote_site_settings() function found in the _src/admin.php_ file and can be used adjust the expiration duration used for caching the QPilot Site Settings values in the WordPress database.
  - A new **'autoship_create_scheduled_order_next_occurrence_offset'** filter has been added to the autoship_get_scheduled_order_data () function found in the _src/orders.php_ file and can be used adjust the utcOffset value assigned to Scheduled Orders created and upserted to QPilot.

- New Actions! The following new actions have been added to the plugin:
  - A new 'autoship_api_site_created' action is now available in the autoship_oauth2_connect_site() function in the src/admin.php file and can be used to perform custom actions after a site is created in Qpilot.

- Deprecated: the **autoship_get_formatted_date () function**. The **autoship_get_formatted_local_date() function** found in *src/utilities.php* should be used instead.
- Deprecated: the **autoship_get_next_available_date () function**. The **autoship_get_next_available_nextoccurrence() function** found in *src/utilities.php* should be used instead.

= 2.2.4 - 2021-11-18 =

- New! Customer Metrics data synchronization features have been added to ensure that merchants can retrieve customer metrics data from the QPilot API and store that data in their connected site's WordPress database.
  - The customer metrics data includes the following data fields from the Qpilot API by default:
    - 'customerCreatedDateUTC'
    - 'firstScheduledOrderCreatedUTC'
    - 'totalScheduledOrdersActive'
    - 'totalScheduledOrdersActiveValue'
    - 'totalScheduledOrdersPaused'
    - 'totalScheduledOrdersPausedValue'
    - 'totalScheduledOrdersFailed'
    - 'totalScheduledOrdersFailedValue'
    - 'totalScheduledOrdersDeleted'
    - 'totalScheduledOrdersDeletedValue'
    - 'totalScheduledOrdersLifetimeValue'
    - 'averageProcessingCycleValue'
    - 'lastSuccessfulProcessingCycleDate'
    - 'lastFailedProcessingCycleDate'
    - 'lastPausedScheduledOrderDate'
    - 'totalSuccessfulProcessingCycles'
    - 'totalProductsPurchased'
    - 'firstProductsPurchased'
    -  'allProductsPurchased'
  - The customer metrics data will be stored in the following usermeta database fields by default:
    - 'autoship_customer_created_date_utc'
    - 'autoship_first_scheduled_order_created_utc'
    - 'autoship_total_scheduled_orders_active'
    - 'autoship_total_scheduled_orders_active_value'
    - 'autoship_total_scheduled_orders_paused'
    - 'autoship_total_scheduled_orders_paused_value'
    - 'autoship_total_scheduled_orders_failed'
    - 'autoship_total_scheduled_orders_failed_value'
    - 'autoship_total_scheduled_orders_deleted'
    - 'autoship_total_scheduled_orders_deleted_value'
    - 'autoship_total_scheduled_orders_lifetime_value'
    - 'autoship_average_processing_cycle_value'
    - 'autoship_last_successful_processing_cycle_date'
    - 'autoship_last_failed_processing_cycle_date'
    - 'autoship_last_paused_scheduled_order_date'
    - 'autoship_total_successful_processing_cycles'
    - 'autoship_total_products_purchased'
    - 'autoship_first_products_purchased'
    - 'autoship_all_products_purchased'
  - A new **Bulk Update Customer Metrics** utility has been added to the _WP-Admin > Autoship Cloud > Settings >> Utilities ( tab )_ and can be used to batch synchronize customer metrics data with the WooCommerce database.
  - A new **Refresh Autoship Customer Metrics** checkbox option has been added to the _WP-Admin > Users > Edit User_ screen and , when this option is enabled/checked and the "Update" button is selected, the Autoship Cloud plugin will synchronize customer metrics data from the QPilot API with the WooCommerce database and update this data for the current user. In addition, the date and time that the data was last synchronized for the current user will be displayed under the option.

- Improved: the **autoship_search_available_customers()** function with a new option that allows developers to specify if the function should retrieve just the specified page of results or iterate through all pages starting with the supplied page number.

- Improved: the Autoship Cloud WooCommerce REST API integration functions that adjust WooCommerce Orders being updated via the REST API were improved to check if the supplied WooCommerce Order is a WordPress Error object and, if so, to skip processing that object.

- Improved: the organization of checkout-related functionality has been improved by moving the **autoship_create_scheduled_orders_on_checkout()** function from the *src/scheduled-orders.php* file to the *src/checkout.php* file.

- New Filters!  The following new filters have been added to the plugin:
  - A new **'autoship_customer_metrics_fields_mapping'** filter has been added to the **autoship_get_customer_metrics_fields()** function in the *src/customers.php* file and can be used to modify the names of the usermeta database fields within which the customer metrics data is stored for each customer.

- New Functions! The following new customer metrics functions have been added to help developers and merchants extend and use the Autoship Cloud plugin customer metrics functionality:
  - A New **autoship_get_customer_metrics_data()** function has been added to the *src/customers.php* file and takes a customer id and optional list of metrics fields to retrieve the customer metrics data from the usermeta table. The function is pluggable and can be overridden in order for developers to change where the customer metrics data is retrieved from.
  - A New **autoship_save_customer_metrics_data()** function has been added to the *src/customers.php* file and is used to save customer metrics data to the usermeta table.  The function takes a customer id, an array of customer metrics data, and an optional translate flag as parameters, and is pluggable, and can be overridden in order for developers to change where the customer metrics data is saved.
  - A new **autoship_refresh_customer_metrics_for_user()** function has been added to the *src/customers.php* file and can be used to refresh / synchronize the customer metrics data for a specific customer.  The function takes a single customer id as a parameter and will retrieve the customer metrics data from the QPilot API for the supplied customer, and use the **autoship_save_customer_metrics_data()** function to save the retrieved data to the database.

- New Actions! The following new actions have been added to the plugin:
  - A new **'autoship_create_scheduled_order_failure'** action is now available in the **autoship_create_scheduled_orders()** function in the *src/orders.php* file and can be used to perform custom actions when a scheduled order creation call fails.  The new action passes the Scheduled Order data for the Scheduled Order attempting to be created and the WooCommerce Order ID from which the Scheduled Order was created.
  - A new **'autoship_create_scheduled_order_success'** action is now available in the **autoship_create_scheduled_orders()** function in the *src/orders.php* file and can be used to perform custom actions when a scheduled order creation call succeeds.  The new action passes the Scheduled Order data for the Scheduled Order that was created and the WooCommerce Order ID from which the Scheduled Order was created.
  - A new **'autoship_create_scheduled_order_by_link_success'** action is now available in the **autoship_create_scheduled_order_endpoint_wrapper ()** function in the *src/scheduled-orders.php* file and can be used to perform custom actions when a Scheduled Order creation call made via a link succeeds.  The new action passes the result, link data, and Customer ID for which the Scheduled Order was created.

= 2.2.3 - 2021-09-02 =

- New! An upgrade warning that *PayPal Payments* is not supported by Autoship Cloud will now be displayed for WordPress Admins under the *WooCommerce PayPal Checkout Gateway* plugin when they are prompted to upgrade to *PayPal Payments* in the **WP-Admin > Plugins** page.

- Improved: the Shipping Rate integrations for Scheduled Orders when the shipping address entered at checkout and in the _My Account > Addresses_ screen include a US territory as the Country.  United States territories will now be treated as States in the QPilot API in order to retrieve valid shipping rates for Scheduled Orders.
- Improved: formatting and validation for non-US Shipping Addresses with custom postcode formats in the Shipping Address form displayed to customers in _My Account > Scheduled Orders_ on the _Edit Scheduled Order_ screen.
- Improved: the Stripe fee and refund data recorded for WooCommerce Orders generated by QPilot when a Scheduled Order processes so that the Stripe Fee and Stripe Payout lines will now be displayed on the created WooCommerce Order.
- Improved: security for the **Native UI Scheduled Order** display option.  The display includes additional security checks when retrieving Scheduled Order data from the QPilot API.

- Fixed: the "Add a Product" drop down in the Native UI Edit Scheduled Order Display so that all available products will now be included in the drop down. Previously, only the first 100 products returned by the QPilot API were displayed.

- New Filters! The following new filters have been added to the plugin:
  - A new 'autoship_filter_schedulable_products_display_labels' filter has been added to the _templates/scheduled-orders/order-items-form.php_ file and can be used to filter the available products in the Add Product Dropdown menu displayed in _My Account > Scheduled Orders_ on the _Edit Scheduled Order_ screen.

= 2.2.2 - 2021-07-01 =

- New! Support for non-US Shipping Addresses has now been added to the Shipping Address form on the Edit Scheduled Order screen when using the Native UI display option (viewable by customers in the *My Account > Scheduled Orders* screen).

- Improved: Support for Product Level Discount Coupons in the *My Account > Scheduled Orders* screen when using the Native UI display option.
- Improved! Product data synchronization between WooCommerce Products and QPilot will now continue to synchronize data for WooCommerce Products that are 'Out of Stock' when the **Hide out of stock items from the catalog** in **_WP-Admin > WooCommerce > Settings > Product > Inventory ( tab )_** is selected.
- Improved: the Autoship Cloud plugin's readme.txt file now includes a more comprehensive overview of the plugin features with a new title, tags, short description, long description, frequently asked questions, and updated screenshot gallery.

- Updated: the "Powered By QPilot" footer reference displayed in product page tooltips and modals to be a link with a nofollow tag and points to the QPilot.cloud website when displayed.
- Updated: the **Create a free QPilot Merchant Account** link displayed in the header of the *WP-Admin > Autoship Cloud > Settings* page to point to QPilot's Registration page.

- New Filters!  The following new filters have been added to the plugin:
    - A new **'autoship_disable_schedule_order_options_in_cart'** filter has been added to the **autoship_display_cart_item_options()** function in the *src/cart.php* file and can be used to disable / enable the Autoship Options by cart item.
    - A new **'autoship_product_custom_fields_options_tab_clases'** filter has been added to the **autoship_product_autoship_tab()** function in the *src/product-page.php* file and can be used to add additional classes to the Autoship Cloud option tab in the Edit Product screen.
    - A new **'autoship_simple_product_custom_fields_options_clases'** filter has been added to the **autoship_product_autoship_tab()** function in the *src/product-page.php* file and can be used to add additional classes to the Autoship Cloud option tab content section in the Edit Product screen.
    - A new **'autoship_simple_product_display_scheduled_order_enabled_edit_fields'** filter has been added to the **autoship_print_product_custom_fields()** function in the *src/product-page.php* file and can be used to force the Simple Product's Autoship Cloud settings for non-simple products.
    - A new **'autoship_discount_strings_components'** filter has been added to the **autoship_checkout_recurring_discount_string()** function in the *src/product-page.php* file and can be used to filter all components of the displayed discount string for the Autoship option on the Shop pages.

= 2.2.1 - 2021-05-28 =

- Fixed: the WooCommerce payment gateway integration for payment gateway plugins that use the SkyVerge framework.  This fixes a bug introduced in version 2.2.0 that caused a fatal error that prevented the Scheduled Order from getting created and the customer from being redirected to the order confirmation page.
- Fixed: the **Autoship Schedule Options** label displayed on WooCommerce product pages for simple products.  This fixes a bug introduced in version 2.2.0 where the Autoship label was inadvertently removed for simple products.

= 2.2.0 - 2021-05-26 =

- New! Support for the *CyberSource Payment Gateway* plugin (developed by SkyVerge) version 2.2.0 has been added to the *My Account > Payment Methods* screen. Previous support was only added for versions of the WooCommerce Payment Gateway plugin that did not use the WooCommerce Token Tables.

- Improved: Retrieval of the Autoship Recurring and Checkout Prices for products in the Shop pages to reduce the number of function calls and streamline the shop integration.
- Improved: Synchronization of saved payment methods with QPilot for new Customers that are not Autoship Customers using the new SkyVerge payment gateway framework.
- Improved: Support for the *Authorize.Net* plugin (developed by SkyVerge) with additional checks and adjustments for dealing with malformed expiration dates saved to WooCommerce Orders at checkout.  Previously, dates that were either malformed or missing could cause notices to be written to the WordPress debug log.

- New Filters!  The following new filters have been added to the plugin:
    - A new **autoship_group_order_items_data** filter has been added to the **autoship_group_order_items()** function in the *src/orders.php* file and can be used to customize the line item data when Scheduled Order(s) are created from existing WooCommerce Orders.

- Updated Functions!  The following functions have been updated in the plugin:
    - The **autoship_group_order_items()** function in the *src/orders.php* file has been updated to take a WooCommerce Order Object as a secondary optional argument and is passed to the newly included filter. This argument will be included by default when used at checkout.

- Deprecated: the **autoship_recurring_price() function**.
    - The **autoship_get_product_recurring_price() function** found in *src/products.php* should be used instead.

= 2.1.9 - 2021-04-08 =

- New! Support for the **Braintree for WooCommerce** plugin version 2.5.0 has been added to the *My Account > Payment Methods* screen for PayPal payment methods. Previous support was only added for versions of the **Braintree for WooCommerce** plugin that did not use the WooCommerce Token Tables.  Merchants planning to update the  **Braintree for WooCommerce** plugin version to 2.5.0 or higher should update to *Autoship Cloud powered by QPilot* plugin to version 2.1.9 (or higher).

- Improved! Support for the **Authorize.Net** plugin (developed by SkyVerge) has been updated to allow for saved payment methods to be applied to all Scheduled Orders in the *My Account > Payment Methods* screen.

= 2.1.8 - 2021-03-31 =

- New! Support for the **Braintree for WooCommerce** plugin version 2.5.0 has been added to the *My Account > Payment Methods* screen. Previous support was only added for versions of the **Braintree for WooCommerce** plugin that did not use the WooCommerce Token Tables.

- Improved: Enhanced the *Autoship Cloud powered by QPilot* plugin with additional hooks, filters, and script callbacks for better customizability in the Native UI Display Option.
- Improved: the Braintree Credit Card transaction data recorded for WooCommerce Orders generated by QPilot when a Scheduled Order processes.

- Fixed: a Notice that was included in the Error log when a Scheduled Order with a Braintree Credit Card payment was processed in QPilot.

- New Script Enhancements! The following new script enhancements have been added to the plugin:
    - A new **autoshipSchedulerData** data object is now available in the *js/scheduled-orders.js* script file used in the Native UI Scheduled Order template.  The new data object can be used to define custom call back functions for the Add and Remove Scheduled Order item jQuery functions.
    - The **addItemSuccess()** function in the *js/scheduled-orders.js* script file used in the Native UI Scheduled Order template has been updated to allow for customization of how successfully added new Scheduled Order items are handled.
    - The **addItemFailure()** function in the *js/scheduled-orders.js* script file used in the Native UI Scheduled Order template has been updated to allow for customization of how the failure of adding new Scheduled Order items are handled.

- New Actions! The following new actions have been added to the plugin:
  - A new **autoship_create_scheduled_orders_success** action is now available in the **autoship_create_scheduled_orders()** function in the *src/orders.php* file and can be used to perform custom actions upon the successful creation of Scheduled Order(s).  The new action passes the Scheduled Order Ids for the newly created Scheduled Order(s) and the WooCommerce Order ID from which the Scheduled Orders were created.
  - A new **autoship_create_scheduled_orders_failure** action is now available in the **autoship_create_scheduled_orders()** function in the *src/orders.php* file and can be used to perform custom actions when the creation of Scheduled Order(s) fail.  The new action passes the Scheduled Order Id(s) for any successfully created Scheduled Order(s), the WooCommerce Order ID from which the Scheduled Orders originated, and the WordPress Error.
  - A new **autoship_post_create_scheduled_orders_on_checkout** action is now available in the **autoship_create_scheduled_orders_on_checkout()** function in the *src/orders.php* file and can be used to perform custom actions after Scheduled Orders are created at checkout.  The new action passes the Scheduled Order Ids for any successfully created Scheduled Order(s) and the WooCommerce Order ID from which the Scheduled Order(s) originated.
  - A new **autoship_after_handler_success** action is now available in the **autoship_update_scheduled_order_handler()** function in the *src/scheduled-orders.php* file and can be used to perform custom actions after an action is performed on a Scheduled Order in the Native UI Scheduled Order template.  The new action passes the Scheduled Order ID, the name of the action being performed, and the array of data originally passed to that action's handler.

- New Filters!  The following new filters have been added to the plugin:
    - A new **autoship_payment_method_gateway_type** filter has been added to the **autoship_get_payment_method_gateway_type()** function in the *src/payments.php* file and can be used to customize the default classes used by our **Schedule-Options** script to select various html elements. In addition, the filter can be used to change the gateway type for the available Payment gateways from custom to standard WooCommerce token table supporting gateways.
    - A new **autoship_update_scheduled_order_handler_call_back_data** filter is now available in the **autoship_update_scheduled_order_handler()** function in the *src/scheduled-orders.php* file and can be used to modify the array of data that's passed to the different action callback functions in the Native UI Scheduled Order template.  The filter passes the original array of data being passed to the action handler, the Scheduled Order ID, and the name of the action being performed as arguments.
    - A new **autoship_update_scheduled_order_{$action}_handler_call_back** dynamic filter is now available in the **autoship_update_scheduled_order_handler()** function in the *src/scheduled-orders.php* file and can be used to modify the name of the callback function for handling the different actions available in the Native UI Scheduled Order template.  The filter passes the original callback function name, the Scheduled Order ID, the name of the action being performed, and the original array of data being passed to the action handler as arguments.

= 2.1.7 - 2021-02-22 =

- New! **CyberSource** is now available as a supported payment integration.  Merchants using the *CyberSource Payment Gateway* plugin ([https://woocommerce.com/products/cybersource-payment-gateway/](https://woocommerce.com/products/cybersource-payment-gateway/)) can now add this integration for their connected QPilot Site via *WP-Admin > Autoship Cloud > Payment Integrations*.  Merchants must use the **Token Management Service** for CyberSource in order to create and manage saved payment methods for Autoship Scheduled Orders.

- Improved: the **Autoship Checkout Price** and **Autoship Recurring Price** fields have been updated to support any value entered in the Currency Options > Decimal separator field found within the **WooCommerce > Settings > General ( tab )**.  Previously, the **Autoship Price** fields could only be used with decimal point separated values.
- Improved: all references to the term "QPilot Dashboard" now use the proper "QPilot Merchant Center" nomenclature.

- Fixed: The **autoship_cart_has_valid_autoship_items()** utility function has been updated to check that the **wp_loaded** action has been fired before utilizing the WooCommerce **get_cart()** method.
- Fixed: the grammar used in the "success" notice displayed when one or more items are added to a Scheduled Order for a single cycle using the **Autoship Cloud Link Builder** found in *WP-Admin > Products >> Edit Product >>> Product Data >>> Autoship (tab)*.

= 2.1.6 - 2021-01-14 =

- New! Now only enabled Payment Methods that are supported by Autoship Cloud will be displayed in the WooCommerce Checkout screen when the Cart contains one or more items scheduled for Autoship.  Previously, the ability to enable or disable the display of Payment Methods when the WooCommerce Cart contains one or more items scheduled for Autoship required custom code.
- New! We've added a new notice for WordPress Admins that will now be displayed on the WooCommerce admin screens whenever there are no active Autoship Cloud supported payment gateways in the **WP-Admin > WooCommerce > Settings >> Payments ( tab )**.
- New! An "Autoship Cloud" icon will now be displayed next to Payment Methods that are supported by Autoship Cloud in the Payment methods table found in the **_WP Admin > WooCommerce > Settings >> Payments ( tab )_**.  In addition, the Payment methods table description has been updated to include a reference to the Autoship Cloud icon and includes a link for merchants to learn more in the Autoship Cloud online help documentation.
- Added: Updated version support for WooCommerce 4.9.0.  This version of the *Autoship Cloud powered by QPilot* plugin was tested with WooCommerce 4.9.0 RC2.

- New Functions! The following new payment functions have been added to help developers and merchants extend and use the Autoship Cloud plugin functionality:
  - A New **autoship_get_payment_method_gateway_type()** function has been added to the *src/payments.php* file and take a gateway id as an argument and returns **"standard"** if the gateway is a standard WooCommerce token table gateway.  Otherwise, the **gateway id** is returned if the gateway uses a custom token storage method.
  - A new **autoship_get_general_payment_method_data()** function has been added to the *src/payments.php* file and takes two arguments: a WooCommerce token id, and a payment gateway id. The function returns an array containing the Autoship payment data used to create Scheduled Orders via the QPilot API.
  - A new **autoship_get_available_valid_gateways()** function has been added to the *src/payments.php* file and returns an array of all available Autoship Cloud supported payment gateways that are currently active for the site.
  - A new **autoship_get_available_valid_customer_saved_methods()** function has been added to the *src/payments.php* file.  This function takes a customer id as an argument and returns an array of all saved payment methods for that customer associated with Autoship Cloud supported payment gateways.
  - A new **autoship_filter_saved_methods()** function has been added to the *src/payments.php* file and takes an array of saved payment methods as an argument and returns the Autoship Cloud supported payment methods that have active payment gateways for the site.

= 2.1.5 - 2020-12-04 =

- New! **Autoship Term Overrides** offer enhanced language customizability without custom code.  These new override fields have been added to the _WP-Admin > Autoship Cloud > Settings > Options ( tab )_ and can be used to specify alternate wording to use in place of the default "Autoship" terms on all customer-facing screens.  The following terms can be overridden:
  - Autoship
  - Autoship and Save
  - Scheduled Order
  - Scheduled Orders
- New! **Product Data Overrides**: the Override Defaults option is now available on the Autoship tab in the Edit Product and Edit Variation screens located in *WP-Admin > Products > Edit Product*. When selected, the Title and/or the Units of Measurement for the associated WooCommerce Product can be customized and synchronized with QPilot.
- New! **Product Group IDs**: One or more Group IDs can now be assigned to a WooCommerce Product or Variation using the new **Autoship Group IDs** field in the WooCommerce Edit Product or Edit Variation screens located in *WP-Admin > Products > Edit Product*.
- New! The **Product Page Autoship Info Link** option is now available under the _WP-Admin > Autoship Cloud > Settings > Options (tab)_ and will be enabled by default for all new installations.  This new option can be enabled to display a custom message with information specifically about Autoship on the Product and Cart Pages. The message can display Autoship information as a Tooltip, Modal Dialog, Hyperlink, or not displayed at all. The following additional options are available to customize the customer experience further depending on the display type chosen:
  - **Product Page Autoship Info Link Url** display option is only available when the **Display as Link** option is selected and can be used to specify the url to which the customer should be redirected when the link is selected in the Product and Cart Pages.  _NOTE: If the **Display as Link** Option is selected and no url is entered in the **Product Page Autoship Info Link Url** Option field, the info link will not be displayed on the Product and Cart pages._
  - **Display Product Page Autoship Info Tooltip Link as Modal on Mobile** Option can be used to display Autoship info in a modal window on devices with a width less than 1024px when using the **Display as Tooltip** option.  When unselected, the Tooltip will continue to display on all screen sizes.  This option will be selected by default.
  - **Product Page Autoship Info Link Type** Option can be used to set how the link should be displayed on the Product and Cart Pages.  When set to **Icon** the link will be displayed as a help icon ( ? ) that when either hovered or selected, the user either sees the custom html content or is taken to the specified URL (based on the display type chosen).  When set to **Text Link** the link will be displayed as a text link on the Product and Cart pages so that when hovered or selected, the user either sees the custom html content or is taken to the specified url based on the display type chosen.
  - **Product Page Autoship Info Link Label** Option is only available when the **Product Page Autoship Info Link Type** Option is set to **Text** and can be used to customize the Text displayed as the link on the Product and Cart Pages.  _NOTE: If the **Product Page Autoship Info Link Type** Option is set to **Text** and no custom text is entered in the **Product Page Autoship Info Link Label** Option field the info link will not be displayed on the Product and Cart pages._
  - **Product Page Autoship Info Link Content** Editor field is available with the **Display as Tooltip** or **Display as Modal** options are selected.  Any custom content entered in the **Product Page Autoship Info Link Content** Editor field will be displayed in the Modal or Tooltip.

- Improved: Site Metadata synchronized with QPilot now includes custom term overrides from the *Autoship Cloud powered by QPilot* plugin under a new language key.
- Improved: Elements on WooCommerce Product templates have new classes that improve the ability to customize the display and style of Autoship options when the Autoship options are selected or unselected (between One-Time Purchase and Autoship) on the Product and Cart pages.  The following enhancements have been included:
  - An **autoship-no** class has been added to the HTML element that wraps the One-Time Purchase radio option and can be used to target the HTML element that wraps the One-Time Purchase option more directly using CSS and/or Scripts.
  - An **autoship-yes** class has been added to the HTML element that wraps the Autoship ( or Autoship and Save ) radio option and can be used to target the HTML element that wraps the Autoship option more directly using CSS and/or Scripts.
  - An **autoship-not-active**  class will now be added dynamically to the WooCommerce Products HTML element when the One-Time Purchase radio option is selected for that product.
  - An **autoship-active**  class will now be added dynamically to the WooCommerce Products HTML element when the Autoship ( or Autoship and Save )  radio option is selected for that product.
  - An **frequency_select_change**  jQuery trigger will now be fired when a product is loaded via ajax and when the Autoship option for a Product changes.
- Improved: browser performance for sites using the hosted Scheduled Orders iFrame display option by adjusting the iFrame javascript that adjusts the height of the hosted Scheduled Orders iFrame to only fire when the window size is changed.
- Improved: the display of customer-facing notifications in the Native UI Scheduled Order templates to use the customer friendly version of failure, warning, and error messages when supplied by the QPilot API.

- New Functions! The following new functions have been added to the plugin:
  - A new  **autoship_set_full_cart_schedule()**  is now available in the *src/cart.php* file and can be used to apply a frequency and frequency type to all items in the cart at the same time.  The function takes two parameters, a frequency integer parameter that defaults to 1, and a frequency type string parameter that defaults to Months.
  - A new  **autoship_get_full_cart_schedule()**  is now available in the *src/cart.php* file and can be used to retrieve all schedules currently applied to the cart.  The function takes no parameters and returns an array that includes each unique schedule ( frequency + frequency type ), the display name, and the total number of cart items with that schedule.

* New Actions! The following new actions have been added to the plugin:
  * A new **'qpilot_remote_request'** action is now available in the **QPilotClient::get()**, **QPilotClient::post()**,  **QPilotClient::put()**,  **QPilotClient::patch()**, and  **QPilotClient::delete()**  methods in the *src/QPilot/Client.php* file and can be used to fire custom functions before the HTTP Request is made to the QPilot API.  The action passes the details of the HTTP Request, including the method, body, endpoint, and header information.
  * A new **'qpilot_remote_request_response** action is now available in the **QPilotClient::get()**, **QPilotClient::post()**,  **QPilotClient::put()**,  **QPilotClient::patch()**, and  **QPilotClient::delete()**  methods in the *src/QPilot/Client.php* file and can be used to fire custom functions after the HTTP Request is made to the QPilot API.  The action passes the details of the HTTP Request, including the method, body, endpoint, and header information, as well as the response from the QPilot API.

= 2.1.4 - 2020-10-09 =

- Added: new Regular Price and Sale Price radio options have been added to the **Bulk Update Autoship Checkout Price** and **Bulk Update Autoship Recurring Price** utilities found in *WP-Admin > Autoship Cloud > Settings > Utilities ( tab )*.  These options can be used to specify which product price to calculate the optional Autoship Checkout and/or Autoship Recurring price(s) in a bulk update.

- Improved: the **Bulk Update Autoship Checkout Price** and **Bulk Update Autoship Recurring Price** utilities found in *WP-Admin > Autoship Cloud > Settings > Utilities ( tab )* now allow the clearing of the Autoship Checkout and/or Autoship Recurring price(s) by clearing the "Discount Percent" field and selecting the "Update Products" button.

- Fixed: additional WooCommerce Product Variation data ( added by the *ShipperHQ* plugin ) will now be sent to the connected QPilot Site's Product(s) including Shipping Group, Ship Separately, Warehouse, Freight Class, and more.

= 2.1.3 - 2020-09-23 =

- Added: support for version 3.3.0 of the *Authorize.net* payment gateway plugin which now utilizes the standard "WC Payment Token API" for saved payment methods.

- Fixed: a Fatal Error that could occur in the *WooCommerce > Orders* view when the "Display Ship by Date in Order Management" option is enabled in the *WP-Admin > Autoship Cloud > Settings >> Options ( tab )* and one or more WooCommerce Orders were created by QPilot using the legacy REST API Endpoint.

= 2.1.2 - 2020-09-16 =

- Improved: calls made by the *Autoship Cloud powered by QPilot* plugin to the QPilot API now use the "Merchant Scope" by default when a scope is not specified and include a new source HTTP request header that will be used by QPilot to track the source of the API call.

- New Filters! The following new filters have been added to the plugin:
  - A new **'autoship_default_client_token_scope' filter** is now available in the **autoship_get_default_client() function** in the *src/api.php* file and can be used to change the default scope used for creating the QPilot API Token when a scope is not supplied to the function.

= 2.1.1 - 2020-09-12 =

- Added: Updated version support for WooCommerce 4.5

- Improved: the **Native UI display option** to use the "Lock" flag supplied by the QPilot API to determine if a Scheduled Order is within the Processing Lock window defined by the connected QPilot Site. Previously, this was determined by dynamically calculating if the current date fell within the number of days to the next occurrence.
- Improved: calls made by the *Autoship Cloud powered by QPilot* plugin to the QPilot API to now use the "Customer Scope" when customers ( non-administrators ) are creating or updating Scheduled Orders, adding or removing saved Payment Methods, and editing Billing or Shipping Addresses.
- Improved: synchronization of site metadata in QPilot now occurs immediately upon a WooCommerce site's successful Oauth connection with QPilot.
- Improved: the **autoship_search_all_scheduled_orders function** now allows for searching Scheduled Orders across customers. Previously, this function could only be used to search for Scheduled Orders by one customer.
- Improved: the "Autoship Health Check" and "Product Availability" endpoints now include a permissions callback function when registered. Previously, starting in WordPress version 5.5 a **_doing_it_wrong notice** would be included in the debug log.
- Improved: the "Autoship Cloud Logs" entries have expanded to include the function parameters ( where possible ) and log errors in the same exact format.
- Improved: the Native UI Scheduled Order template to use the autoship_get_formatted_price() function in place of the deprecated autoship_get_formatted_amount() function.

- Fixed: The "Autoship Cloud Logs" system download button in *WP-Admin > Autoship Cloud > Settings >> Logs (tab)* to download the most recent log file if the "Autoship Log File Download" drop-down is not changed. Previously, the oldest file would be downloaded if the tab is selected and the Download button was selected without changing the select dropdown.
- Fixed: a Fatal Error that could occur when creating Scheduled Orders on sites running a version of WordPress lower than version 5.3 and have set the Timezone setting in *WP-Admin > Settings* to a manual positive offset ( i.e. UTC+1 ).

- Deprecated: the **autoship_check_is_order_locked() function**. The **autoship_check_lock_status_info() function** found in *src/scheduled-orders.php* should be used instead.

= 2.1.0 - 2020-08-10 =

- New! *ShipperHQ for WooCommerce* now works with *Autoship Cloud powered by QPilot*!  Merchants using *ShipperHQ for WooCommerce* will now send additional WooCommerce Product data (added by ShipperHQ) to their connected QPilot Site's Products including: Shipping Group, Ship Separately, Warehouse, Freight Class, and more.  Requires the *ShipperHQ for WooCommerce* plugin ([https://wordpress.org/plugins/woo-shipperhq/](https://wordpress.org/plugins/woo-shipperhq/))
- New! *Opayo (Formerly SagePay)* Direct is now available as a supported payment integration.  Merchants using the *Opayo (formally SagePay)* Direct Gateway for WooCommerce plugin can now add this integration for their connected QPilot Site via *WP-Admin > Autoship Cloud > Payment Integrations*.

- Added: Refunding Autoship Orders in the *WooCommerce > Edit Order* view is now supported for the *PayPal powered by Braintree* Payment Gateway Plugin for payments via PayPal and Credit Card.
- Added: Refunding Autoship Orders in the *WooCommerce > Edit Order* view is now supported for the *TrustCommerce gateway* Payment Gateway Plugin.
- Added: Refunding Autoship Orders in the *WooCommerce > Edit Order* view is now supported for the *XL NMI Gateway for WooCommerce* Payment Gateway Plugin.
- Added: Refunding Autoship Orders in the *WooCommerce > Edit Order* view is now supported for the *Paya for WooCommerce (formerly Sage Payments USA)* Payment Gateway.

- Fixed: bug in the Native UI Scheduled Order template that would cause products that did not have the "Add To Scheduled Order" option checked to be included in the "Add a Product" drop down.
- Fixed: the support for add/delete Stripe Payment Methods to retrieve the Stripe Customer ID from the user options rather than the user metadata. Previously, starting with Stripe for WooCommerce v4.3.2, the gateway started saving the Stripe Customer ID in the user options which prevented the Stripe Customer ID to be synchronized with QPilot for Payment Methods added via the *My Account > Payment Methods* screen.
- Fixed: conflict with PayPal Checkout gateway support WooCommerce Smart Coupons plugin.  Previously, when these two plugins were active, a Fatal Error was thrown when a customer attempted to checkout using PayPal.
- Fixed: the "API Health Check" (found in *WP-Admin > Autoship Cloud > Settings*) to only display the "Unhealthy" badge warning in the WordPress Admin menu item ( found in *WP-Admin > Autoship Cloud* ) when the WC REST API connection is "Unhealthy". Previously, the badge was displayed when a health check had not been performed for 15 minutes and would clear whenever the Autoship Cloud menu item was selected.

- New Filters!  The following new filters have been added to the plugin:
    - A new **'autoship_shipperhq_product_fields'** filter is now available in the new **autoship_attach_product_shipperhq_metadata()** function in the *src/products.php* file and can be used to customize the ShipperHQ fields included in the product upsert.
    - A new **'autoship_braintree_paypal_descriptor_flag'** filter is now available in the new **autoship_add_adjusted_gateway_metadata_braintree()** function in the *src/payments.php* file and can be used to customize the value searched for in the Braintree Payment Method description to determine if the payment method is a Braintree PayPal or Braintree Credit Card method. The default value used in the filter is "PayPal".
    - A new **'autoship_is_paypal_payment_method_scheduled_order'** filter is now available in the new **autoship_add_adjusted_gateway_metadata_braintree()** function in the *src/payments.php* file and can be used to specify if a Braintree payment method sent by QPilot and attached to a WC Order is a Braintree PayPal method or not.
    - A new **autoship_disable_admin_health_checks** filter has been added to the **autoship_admin_health_status_menu_bubble()** function in *src/api-health.php*. The filter allows the disabling of the periodic API health check feature when set to 'true'. When the periodic API health check is disabled, the health check will only occur when the menu item is selected in the WordPress Admin (*WP-Admin > Autoship Cloud*).

= 2.0.9 - 2020-07-17 =

* Improved: performance for WooCommerce Order Creation via the WC REST API.  Performance is improved specifically for WooCommerce sites that have enabled the 'Prices entered with tax' option in WooCommerce Settings with the option "Yes, I will enter prices inclusive of tax".  Now, all WooCommerce Sites using this setting can accurately create multiple Orders in WooCommerce within milliseconds of each other when QPilot is processing Scheduled Orders.
* Improved: page load and reduced js code calls by migrating the autoship.js code to the scheduled-orders.js file and only firing the related functionality when the **Displaying Scheduled Orders in My Account** option is set to **Use the hosted Autoship Scheduled Orders iframe** under the *WP-Admin > Autoship Cloud > Settings >> Options tab*.
* Improved: page load by only enqueuing scripts and styles for the **Web Chat (Beta)** and **Dynamic Scheduled Orders Cart** features when they are enabled.
* Improved: src/checkout.php file contents by moving all "add filter" and "add action" calls to the footer so that developers can more easily find, use, and understand the *Autoship Cloud powered by QPilot* plugin functions and integrations with WooCommerce and WordPress.
* Improved: template directory organization by adding additional **scheduled-orders-cart** and **webchat** subdirectories to contain the related template files.
* Improved: plugin maintainability by migrating functions and code from several legacy files into the related core files. This also resulted in removing the **templates.php**, **text.php**, **widgets.php**, and **routing.php** files from the **src** directory.

* Fixed: the Authorize.net Payment Gateway refund data attached to Orders in WooCommerce generated by QPilot Scheduled Orders so that those WooCommerce Orders can be refunded through the WooCommerce Edit Order screen.

* Deprecated: the **'autoship_render_widget( )' function**. The function references a legacy feature that is not called anywhere in the *Autoship Cloud powered by QPilot* plugin.

= 2.0.8 - 2020-06-11 =

* Fixed: the Autoship Schedule Options script to initialize Variable products added to a page dynamically via Ajax as is done with many Quick View theme features.
* Fixed: the **Update Product Synchronization** button displayed in the Autoship Cloud Upgrade Notice dialog to correctly redirect users to the **Autoship Cloud > Settings >> Utilities** tab. Previously, any user upgrading from an Autoship Cloud version 1.2.31 or lower would be taken to the **Autoship Cloud > Settings >> Migrations** tab instead.

= 2.0.7 - 2020-06-02 =

* Added: the Order data that is shown to customers in the *My Account > Orders* (History) Page now includes additional data for Autoship Orders created by processing a Scheduled Order and for orders that generated Autoship Orders.  These Orders now show the Scheduled Order ID(s), the frequency, as well as a link for the customer to view the Scheduled Order directly in My Account > Scheduled Orders. *My Account > Scheduled Orders*.

* Improved: the Autoship Schedule Options JS code and functionality work with Ajax loaded product templates and dynamic content more efficiently.

* Fixed: a Notice that was included in the Error log when WooCommerce is deactivated while Autoship Cloud is active.
* Fixed: synchronization of Autoship Cloud version information, Scheduled Order display options, and active Autoship Cloud Extensions with other site metadata in QPilot when a Scheduled Order is processed and a resulting WC Order is created. Previously, starting in v1.2.44 a change to prevent other plugin conflicts with order created inadvertently removed from the site metadata when sending orders to QPilot.

* New Functions! The following new functions have been added to the plugin:
  * A new **autoship_order_customer_dashboard_column_location** filter is now available in the new **autoship_order_customer_dashboard_icon_column()** function in the src/orders.php file and can be used to customize the location of the new Autoship column in the My Account > Orders screen.
  * A new **autoship_populate_order_customer_dashboard_icon_tooltip_components** filter is now available in the new **autoship_order_customer_dashboard_icon_column_content()** function in the src/orders.php file and can be used to customize the tooltip content displayed when hovering over the Autoship icons in the My Account > Orders screen.
  * A new **autoship_populate_order_customer_dashboard_icon_tooltip** filter is now available in the new **autoship_order_customer_dashboard_icon_column_content()** function in the src/orders.php file and can be used to customize the tooltip html when hovering over the Autoship icons in the My Account > Orders screen.
  * A new **autoship_populate_customer_view_order_header_attribution** filter is now available in the new **autoship_customer_view_order_header_attribution()** function in the src/orders.php file and can be used to customize the sub header text displayed in the My Account > View Order screen.
  * A new **autoship_populate_customer_view_order_header_attribution_html** filter is now available in the new **autoship_customer_view_order_header_attribution()** function in the src/orders.php file and can be used to customize the sub header HTML used in the My Account > View Order screen.

* Updated Filters: The following filters have been updated in the plugin:
  * **autoship_maybe_update_item_relative_next_occurrence_date** filter found in the **autoship_maybe_update_cart_item_relative_next_occurrence()** function in src/products.php has been updated to include the frequency and frequency type as pass through parameters. This filter can be used to adjust the Relative Next Occurrence for a Scheduled cart item after a change has been made in the cart.
  * **autoship_calculate_relative_next_occurrence_date_from_basedate** filter found in the **autoship_get_product_default_relative_next_occurrence()** function in src/products.php has been updated to include the frequency and frequency type as pass through parameters. This filter can be used to adjust the base date used from which the Relative Next Occurrence is calculated for Scheduled Items added to or updated in the cart.
  * **autoship_calculate_relative_next_occurrence_date** found in the **autoship_get_product_default_relative_next_occurrence()** function in src/products.php has been updated to include the frequency and frequency type as pass through parameters. This filter can be used to adjust the Relative Next Occurrence for Scheduled Items added to the cart.

* New Actions! The following new actions have been added to the plugin:
  * A new **autoship_order_customer_dashboard_icon_column_content_maybe_scheduled_order** action is now available in the new **autoship_order_customer_dashboard_icon_column_content()** function in the src/orders.php file and can be used to output custom content in the new Autoship column when an order generated an error creating a Scheduled Order or may not have created a scheduled order when it should have.
  * A new **autoship_customer_view_order_header_attribution_maybe_scheduled_order** action is now available in the new **autoship_customer_view_order_header_attribution()** function in the src/orders.php file and can be used to output custom content in the sub-header for a WC Order that generated an error creating a Scheduled Order or may not have created a scheduled order when it should have.

* Deprecated: the **autoship_woocommerce_rest_insert_shop_order_object()** function. The **autoship_woocommerce_rest_insert_shop_object_add_note()** function found in src/api-wc.php should be used instead.
* Deprecated: the **handle_custom_qpilot_meta_query()** function. The **autoship_handle_meta_query_by_scheduled_order_processing_id()** function found in src/api-wc.php should be used instead.

= 2.0.6 - 2020-05-05 =

* Fixed: Updated to include the latest schedule-options.js file for the new Multi-Product page template support.

= 2.0.5 - 2020-05-05 =

* Added: a new minimum requirement of WooCommerce 3.4.1

* Improved: the Autoship integration with the WooCommerce Cart template and Order Preview templates for better visibility and organization. The Autoship Schedule Options (form) will now be displayed under the Product Name in the Cart.
* Improved: the Autoship data available for customizing and dynamically changing the Product page layout by adding an additional **show_discount_str** flag included in the data returned by the **autoship_product_discount_data()** function found in *src/products.php*. The new flag will be set to true by default if the associated product/variation has either a discounted Autoship Checkout Price or a discounted Autoship Recurring Price.
  * The flag can be used by extensions and custom code to enable/disable the Autoship Discount string on a variation level and is used by developers to add additional support for plugins that integrate with WooCommerce Product prices (for example: *WooCommerce Dynamic Pricing*).
* Improved: the display of Autoship options to work with WooCommerce templates that display multiple products, both simple and variable, enabled for Autoship on the same page. Previously, this was only possible with a limited number of themes.
* Improved: the Autoship Schedule Options JS code and functionality is more adoptable and customizable for Developers to include Autoship options for products displayed on custom templates.
* Improved: the loading performance of Autoship Cloud scripts onto WordPress pages by setting the default behavior to load the scripts in the footer rather than in the header.
* Improved: The "Autoship Cloud Logging" system naming convention used in the Autoship Log File Download drop down found in *WP-Admin > Autoship Cloud > Settings >> Logs (tab)* to include the Day of the Month in addition to the Day of the Week, Month, and Year ( for example: "Tuesday, May 5th 2020" ). Entries are added to daily log files and the latest 30 log files are retained.

* Fixed: a Fatal Error that could occur when a website on a version of WordPress lower than version 5.3, and using *Autoship Cloud powered by QPilot* version 2.0 or higher, receives the REST request for a previously processed Scheduled Order from QPilot. Starting in Autoship Cloud v2.0, the new wp_timezone() WordPress function was used to adjust the date time format for the Next Occurrence value.

* New Functions! The following new functions have been added to the plugin:
  * A new **autoship_product_variations_discount_data()** function has been added to the *src/products.php* file which takes a WC Variable Product or Variable Product ID and retrieves all the Autoship Discount and Options data for that product's variations.
  * A new **autoship_display_cart_item_data** function has been added to the *src/cart.php* file and is used to display the Autoship Schedule and Associated Data for a cart item on the cart pages and order review page.
  * A new **autoship_display_cart_item_options** function has been added to the *src/cart.php* file and is used to display the Autoship Options template on the Cart pages.

* New Filters! The following new filters have been added to the plugin:
  * A new **'autoship_default_template_data'** filter has been added to the **autoship_head_scripts()** function in the *src/scripts.php* file and can be used to customize the default classes used by our Schedule-Options script to select various html elements. In addition, the filter can be used to specify custom functions to use in place of our functions giving more advanced control over the functionality.
  * A new **'autoship_header_script_data'** filter has been added to the **autoship_head_scripts()** function in the *src/scripts.php* file and can be used to add to or completely change the JS code we output to the head of the page.
  * A new **'autoship_frequency_cart_order_item_schedule_display'** filter has been added to the **autoship_display_cart_item_data** function found in the *src/cart.php* file. The filter can be used to change the Autoship Schedule html displayed for items selected for Autoship in the Cart and Order preview page.
  * A new **'autoship_frequency_cart_order_item_schedule_next_occurence_display'** filter has been added to the **autoship_display_cart_item_data** function found in the *src/cart.php* file. The filter can be used to change the Autoship Next Occurrence html displayed for items selected for Autoship in the Cart and Order preview page.

* Deprecated: the **autoship_cart_item_name()** function. The **autoship_display_cart_item_data()** function found in *src/cart.php* should be used instead.
* Deprecated: the **autoship_get_item_data()** function. The **autoship_display_cart_item_options()** function found in *src/cart.php* should be used instead.

= 2.0.4 =

* Fixed: bug in version 2.0.3 where creating Scheduled Orders after checkout resulted in defaulting the frequency and frequency type to every 1 month. This was caused by the QPilot API Class incorrectly overriding the selected values with the default Months and a frequency of 1.

= 2.0.3 =

* New! The Autoship Cloud Logging system is useful for troubleshooting issues with your Autoship Cloud and QPilot Integration. Entries are added to daily log files and the latest 30 log files are retained.   You can locate this new feature in *WP-Admin > Autoship Cloud > Settings >> Logs (tab)*.
* Added: Updated version support for WooCommerce 4.0.1
* Improved: the Product data synchronization with QPilot by updating the maximum length of the values upserted to the API when saving a product: title, sku, length, width, height, weight, shippingClass, taxClass, type, url, imageUrl, and imageThumbUrl.
* Improved: the QPilot Client Class used by the Autoship Cloud Plugin to be independent from WordPress and WooCommerce preventing changes to WordPress and WooCommerce from affecting the QPilot Client Class and allowing for the Class to be used external to the Autoship Cloud plugin.
* Fixed: a polyfill issue within the Embedded App display UI that prevented the Embedded App from displaying in Internet Explorer.
* Deprecated: the "Import WC Autoship Data" utility found on *Autoship Cloud > Settings >> Migrations (tab)*. The "Export WC Autoship Schedules to CSV" utility found on the *Autoship Cloud > Settings >> Migrations (tab)* should be used instead.

* New Filters! The following new filters have been added to the plugin:
  * **autoship_log_file_download_select_display_name** filter has been added to the Logs template file found in templates/admin/logs.php. The filter allows for modifying the name displayed for log files in the *Autoship Cloud > Settings >> Logs (Tab) >>> Select Dropdown*
  * **autoship_file_name_handle** filter has been added to the new **autoship_get_log_filename()** function in src/logger.php. The filter allows the hash and file name for the Autoship Cloud Logs to be changed.
  * **autoship_keep_logger_files_count** filter has been added to the new **autoship_get_logs_keep_count()** function in src/logger.php. The filter allows the number of log files kept at any one time to be changed. By default only the 30 latest log files will be kept.
  * **autoship_logs_directory_path*** filter has been added to the new **autoship_get_logs_directory()** function in *src/logger.php*. The filter allows for changing the location of the logs directory. By default the log directory path will be set to a autoship-logs folder within the wp upload directory.
  * **autoship_log_entry** filter has been added to the new **autoship_log_entry()** function in *src/logger.php*. The filter allows the ability to disable logging for either all autoship log entries or based on context and/or error message.
  * **autoship_clean_logger_files** filter has been added to the new **autoship_log_entry()** function in *src/logger.php*. The filter allows to enable or disable the deletion of old log entries.

* New Actions! The following new actions have been added to the plugin:
  * **autoship_before_log_entry** action has been added to the new **autoship_log_entry()** function in src/logger.php. The action allows for the ability to perform various actions before the log entries are added or the directory is created. For example, this would allow merchants to intercept our logging and add it to the WP Debug Log instead of our custom logs.
  * **autoship_after_log_entry** action has been added to the new **autoship_log_entry()** function in *src/logger.php*. The action allows for the ability to perform various actions after the log entries are created. For example, this would allow merchants to fire an email to notify themselves when an issue comes up.
  * **autoship_before_autoship_admin_logs** action has been added to the new **logs.php** template file in *src/templates/admin/ directory*. The action allows for the ability to output content before the log tab content.
  * **autoship_after_autoship_admin_logs** action has been added to the new **logs.php** template file in *src/templates/admin/* directory. The action allows for the ability to output content after the log tab content.

= 2.0.2 =

* New! The Autoship Cloud plugin now supports the *Price display suffix* field option found in *WooCommerce > Settings > Tax*, on the Product, and Native UI Scheduled Order template pages.
* New! The Autoship Cloud plugin now supports the WooCommerce display format for sale prices on the Product, and Native UI Scheduled Order template pages when the checkout price or recurring price is less than the current price. By default WooCommerce displays the sale format as the non-discounted price with a strikethrough followed by the discounted Autoship Checkout or Recurring Price.
* New! The Next Occurrence date for a Scheduled Order can now be set to the current date. Previously, the Next Occurrence must always be a 1+ days in the future.

* Improved: the consistency of the Next Occurrence localization in the Native UI Scheduled Order template by changing the format of the Next Occurrence value to:
  * Take the current local time into account before converting to the date to Coordinated Universal Time.
  * Only send the date value and not the time portion of the Next Occurrence value
* Improved: the Hosted iFrame and QPilot Merchant Center have been updated to display and save dates using the Merchant Timezone defined in for the QPilot Site instead of the Local Browser's Timezone.
* Improved: Scheduled Orders created at checkout and via the Native UI will now include the origin value for the API.  Scheduled Orders created at checkout will have **CustomerCheckout** set as the origin field value and Scheduled Orders created anywhere else in the Autoship Cloud plugin ( i.e. Native UI, Embedded App, Hosted iFrame, etc ) will have **CustomerApi** set as the origin field value. See #817
* Improved: the Scheduled Order attribution by now including the **"origin"** field in the order data used to create the Scheduled Orders at Checkout and via the Native UI.  If an order is created at checkout the value of the **"origin"** field will be set to **CustomerCheckout**, otherwise the value will be **CustomerApi**.

* Fixed: the Native UI Scheduled Order template so that it correctly displays the "Addt'l Tax & Fees" label in place of the existing "Tax" label when the "Display prices in the shop option" is set to "Including tax" in the WooCommerce > Settings > Tax tab. Previously, starting in version 2.0.1 the label was not updating.
* Fixed: the upgrade functionality so that a fatal error will no longer be thrown when attempting to upgrade from the legacy WC Autoship plugin to Autoship Cloud v2.0.1 or higher.

* Deprecated: the autoship_get_formatted_amount() function.  The autoship_get_formatted_price() function should be used instead.  Note the function also includes a deprecated autoship_get_formatted_amount filter which is being replaced by the autoship_get_formatted_price filter.

* New Filters! The following new filters have been added to the plugin:
  * autoship_get_formatted_price filter in the autoship_get_formatted_price() function in src/products.php. The filter allows the formatted autoship display prices to be adjusted.

= 2.0.1 =

* New!  The Native UI Scheduled Orders and Scheduled Order templates have been updated to support the 'Prices entered with tax option' and the 'Display prices in the shop' option from the *WP-Admin > WooCommerce > Settings >> Tax* tab.
  * When the 'Prices entered with tax' option is set to "No, I will enter prices exclusive of tax" and the 'Display prices in the shop' option is set to "Including tax", the Native UI will adjust the displayed prices for existing scheduled order items, newly added scheduled order items, and the Subtotal and Total to include tax calculated using the **woocommerce wc_get_price_to_display()** function.
  * When the 'Prices entered with tax' option is set to "Yes, I will enter prices inclusive of tax" and the 'Display prices in the shop' option is set to "Excluding tax", the Native UI will adjust the displayed prices for existing scheduled order items, newly added Scheduled Order items, and the Subtotal and Total to exclude tax calculated using the **woocommerce wc_get_price_to_display()** function.
  * When the 'Display prices in the shop option' is set to "Including tax" the "Tax" label in the totals section will change to "Addt'l Tax & Fees" since the prices and totals already include the tax and there may be additional tax ( i.e. shipping tax ) and/or fees added when the Scheduled Order is processed.

* Improved: the Migrations tab (*WP-Admin > Autoship Cloud > Settings >> Migrations*) has been improved to provide a simpler layout of actions with easy to follow help text for each action displayed.
* Improved: the general customer information synchronization with QPilot by removing the length restrictions imposed on the following customer api fields: email, firstName and lastName.  Previously, these fields might be truncated when the corresponding customer information was sent to QPilot.
* Improved: the customer shipping information synchronization with QPilot by removing the length restrictions imposed on the following customer shipping api fields: shippingFirstName, shippingLastName, shippingStreet1, shippingStreet2, shippingCity, shippingState, shippingPostcode, shippingCountry, and company.  Previously, these fields might be truncated when the corresponding customer information was sent to QPilot.
* Improved: the customer shipping information synchronization with QPilot by removing the length restrictions imposed on the following customer billing api fields: billingFirstName, billingLastName, billingStreet1, billingStreet2, billingCity, billingState, billingPostcode, billingCountry, phoneNumber, and company.  Previously, these fields might be truncated when the corresponding customer information was sent to QPilot.

* Fixed: the ability to remove coupons from Scheduled Orders in the Native UI when the coupon code contains an ampersand.
* Fixed: the "Import WC Autoship Data" Bulk Action has been updated to work with the 2.0 version of the QPilot API.  This fix addresses previous issues where some Scheduled Orders would not be created successfully.
* Fixed: issue that caused "Locked" status Scheduled Orders to reference the old Pascal case. Starting in 2.0 the reference to the old name for the Customer object would cause a Notice to be included in the error log.

* New Filters! The following new filters have been added to the plugin:
  * autoship_enable_wc_tax_settings_for_prices_display_default filter has been added to the autoship_enable_wc_tax_seetings_for_prices_display() function in src/scheduled-orders.php. The filter allows the disabling of the WC Tax support in the Native UI.
  * autoship_get_calculated_scheduled_order_totals filter has been added to the autoship_get_calculated_scheduled_order_totals() function in src/scheduled-orders.php. The filter allows the subtotal, shipping, taxes, and total values displayed in the Native UI Scheduled Orders and Scheduled Order templates to be adjusted,

* New Actions! The following new actions have been added to the the autoship_print_product_custom_fields() function in src/product-page.php to allow developers to output content in various locations on the Autoship tab on the Edit Product page:
  * autoship_before_print_product_custom_price_fields
  * autoship_after_print_product_custom_price_fields
  * autoship_after_print_product_custom_order_settings_fields
  * autoship_before_print_product_custom_frequency_option_fields
  * autoship_after_print_product_custom_frequency_option_fields

* New Actions! The following new actions have been added to the the autoship_print_variable_product_custom_fields() function in src/product-page.php to allow developers to output content in various locations on the Autoship tab on the Edit Product Variation page:
  * autoship_before_print_variable_product_custom_price_fields
  * autoship_after_print_variable_product_custom_price_fields
  * autoship_after_print_variable_product_custom_order_settings_fields

= 2.0.0 =

* New! You can now use your connected QPilot Site to edit email templates for Customer Email Notifications.  Start by adding your own custom logo, changing colors and even customize the default notification text to better fit your brand and Autoship customer experience.
* New!  The 2.0.0 plugin integrates with the latest version of the [QPilot API](https://docs.QPilot.cloud).  The 2.0.0 QPilot API brings significant performance improvements that increase the power and efficiency of Autoship Cloud.  **Important:** The 2.0.0 QPilot API is a major version update and includes **non backwards compatible changes that have been made to the core QPilotClient class found in src/QPilot/Client.php** -- this is used to make direct api calls to the QPilot endpoints.  Any integrations or use of this class or its methods should be fully tested prior to upgrading.
* New! The Autoship Cloud plugin now supports the different combinations of Shop Tax settings found in *WooCommerce > Settings > Tax*, on the Product, Cart, and Checkout pages as well as on Autoship Orders in WooCommerce that are created from processing Scheduled Orders.  This includes support for Prices Entered With Tax options, the different Shipping Tax Class options, as well as the Display Prices in the Shop and Display Prices During Cart and Checkout options.
* New! PHP Unit Testing framework is now implemented with the Autoship Cloud plugin so that plugin developers can automatically test changes locally.
* New! Automated Testing has now been implemented for the Autoship Cloud plugin using the PHPUnit framework and WP-CLI to improve release and development efficiency, plugin maintainability, and to build the foundation for open source developer contributions.

* Added: QPilot now displays dates and times in the user’s local time.
* Added: Autoship Cloud now supports the display of dates and times in the local WordPress site’s time for sites running WooCommerce version 3.5 or higher.  When using Autoship Cloud with WooCommerce version 3.5 or higher, the WordPress Timezone setting found in WordPress General Settings will be used to determine which timezone the dates displayed within the Native UI Display in *My Account > Scheduled Orders* will be shown in.
* Added: Autoship Frequency Options and the “isFeatured” flag for WooCommerce Products are now included as product metadata being synchronized with QPilot.

* Improved: Searches made in Scheduled Orders (*WP-Admin > Autoship Cloud > Scheduled Orders*)  and Customers (*WP-Admin > Autoship Cloud > Customers*) will now persist so that search results are not lost when navigating away from the report page and then revisiting the report page.
* Improved: List views have been improved to load faster with fewer calls to the 2.0.0 QPilot API.
* Improved: the display of Autoship Options has been updated to work with WooCommerce templates that display multiple products enabled for Autoship on the same page.
* Improved: the Autoship Cloud Settings Page (*WP-Admin > Autoship Cloud > Settings*) has been cleaned up and organized with additional tabs for “Utilities” and “Migrations”. The following bulk update actions have been moved from the legacy “Migrations” page to the new “Utilities” tab: Update Product Synchronization, Bulk Update Autoship Checkout Price, Bulk Update Autoship Recurring Price, Bulk Enable WooCommerce Products to Display Autoship Options, and Bulk Enable Product Availability.  The Export WC Autoship Schedules to CSV and Import WC Autoship Data migration actions have been migrated from the legacy “Migrations” page to the new “Migrations” tab.
* Improved: the integration with the *WP-Admin > WooCommerce > Orders* page by adding additional Order ID validation to avoid issues when attempting to display Autoship related information for Order IDs that are not actually valid WooCommerce Orders.
* Improved: source code readability, maintainability, and administrative overhead by removing unused legacy functions and adding extensive source code documentation.
* Improved: the handling of deprecated functions with the addition of a deprecated source file in which all functions be deprecated will be listed along with their replacements.  In addition, any reference to a deprecated function will invoke an Error Notice to be displayed if WP_DEBUG is true.
* Improved: the Embedded App display option has been improved to work with the 2.0 QPilot API and the overall number of calls to the API has been greatly reduced to improve performance.

* Fixed: the Embedded App display option now correctly displays featured WooCommerce Products within the “Featured” tab of the Embedded App.
* Fixed: Autoship Cloud Coupons correctly validate the usage of multiple coupons to Scheduled Orders.  Previously, coupons that were not stackable would sometimes replace stackable coupons and vice versa.
* Fixed: the Bulk Delete action in the Products report (*WP-Admin > Autoship Cloud > Products*) is now working as expected.
* Fixed: an issue when trying to delete a connected Site in QPilot.

* Deprecated: the autoship_discounted_price function.  The autoship_checkout_price function should be used instead.

* New Filters! The following new filters have been added to the plugin:
  * autoship_log_api_health_error_details filter has been added to the autoship_integration_statuses_check() function in src/api-health.php. The filter allows the disabling of the health check errors that get logged into the error log when a site is unhealthy.

= 1.2.47 =

* New! Processing actions for merchants to manage Scheduled Orders now include: Process Now (for all Scheduled Order statuses) and Continue Processing (for paused or failed Scheduled Order statuses)

* Improved: customer email notifications now include subtotal lines for coupon discounts
* Improved: customer email notifications now include an Out of Stock indicator for line items

* Fixed: Issue where custom Frequencies added via the WordPress filter in code for default frequency options could break the display of frequency options on the cart screen if added in an unexpected format.
* Fixed: Issue where creating a new scheduled order using a Frequency Type of DayOfTheWeek or DayOfTheMonth would cause the resulting scheduled order to be assigned an empty frequency type and frequency as well as a Next Occurrence date of January 1st 1970.
* Fixed: 404 error with Scheduled Orders by Product report when applying filters to sort or resort the report results.

= 1.2.46 =

* New! Create Scheduled Order shortcode.  This new shortcode will place an action on the page to create a new Scheduled Order.  The shortcode takes options for element classes, button text, setting frequency type with frequency, adding products with quantities, and even setting the minimum and maximum cycles for products.  The shortcode is now added by default to the “No Scheduled Orders” template area (configured in WP-Admin > Autoship Cloud > Settings >> Options tab) and can also be added and displayed throughout your WooCommerce site’s pages.

* Added: The “Create Scheduled Order” action is now added to the Native UI Display in My Account > Scheduled Orders.  With the Native UI Display option enabled, customers can use this action to create a new Scheduled Order right from My Account.
* Added: Support for “Quickview” templates for simple products so that selecting an Autoship option updates the product price displayed in the Quickview.  Previously the display product price only updated for product variations displayed in Quickview templates.
* Added: Updated version support for WooCommerce 3.8.
* Added: Preparation for upcoming version 2.0 plugin update.

* Improved: Scheduled Order specific notices displayed in the Scheduled Orders table will now be truncated to 200 characters in order to prevent extremely large responses from QPilot being displayed.  The full responses will be logged in the WordPress debug log if enabled.

* Fixed: Custom frequency names entered in the Edit Product screen will now be correctly displayed in the cart and checkout pages.

* New Filters! The following new filters have been added to the plugin:
  * autoship_is_add_to_scheduled_order_endpoint_redirect_action filter has been added to the autoship_add_to_scheduled_order_endpoint_redirect() template redirect function in src/pages.php. The filter can be used to enable or disable the user from being redirected when an Autoship scheduled order action is being performed.
  * autoship_create_scheduled_order_endpoint_redirect_validation filter is available in the new autoship_create_scheduled_order_endpoint_redirect() template redirect function in src/pages.php. The filter can be used to dynamically enabled or disable the ability for a link to create a scheduled order.
  * autoship_is_create_scheduled_order_endpoint_redirect_action filter is available in the new autoship_create_scheduled_order_endpoint_redirect() template redirect function in src/pages.php. The filter can be used to enable or disable the user from being redirected when an Autoship scheduled order action is being performed.
  * autoship_get_all_valid_order_create_frequencies filter has been added to the autoship_get_all_valid_order_create_freqencies() function in src/scheduled-orders.php. The filter can be used to dynamically adjust the Frequencies available to a customer when editing or creating a scheduled order.
  * autoship_get_create_scheduled_order_url_params filter is available in the new autoship_get_scheduled_order_create_url() function in src/scheduled-orders.php. The filter can be used to customize the create scheduled order link created by the function.
  * autoship_create_scheduled_order_endpoint_quary_vars_defaults filter is available in the new autoship_get_create_scheduled_order_link_params() function in src/scheduled-orders.php. The filter can be used to customize how and what url parameters are retrieved when a create scheduled order link is clicked.
  * autoship_create_scheduled_order_endpoint filter is available in the new autoship_create_scheduled_order_endpoint_wrapper() function in src/scheduled-orders.php. The filter can be used to customize when the endpoint function is or is not fired. By default the endpoint function will be fired when the url includes the create-scheduled-order action.
  * autoship_create_scheduled_order_url_redirect filter is available in the new autoship_create_scheduled_order_endpoint_wrapper() function in src/scheduled-orders.php. The filter can be used to customize the url a user is redirected to when the create scheduled order link is processed.
  * autoship_create_scheduled_order_url_notice filter is available in the new autoship_create_scheduled_order_endpoint_wrapper() function in src/scheduled-orders.php. The filter can be used to customize the notice html displayed to a user when the create scheduled order link is processed.
  * autoship_hide_scheduled_orders_header_actions_on_no_orders filter is available in the new autoship_scheduled_orders_header_actions() function in src/scheduled-orders.php. The filter can be used to enable or disable the header actions from being displayed in the Scheduled Orders screen. By default the header actions are hidden for customers with no scheduled orders.
  * autoship_scheduled_orders_header_actions filter is available in the new autoship_scheduled_orders_header_actions() function in src/scheduled-orders.php. The filter can be used to customize the header actions displayed to a customer in the Scheduled Orders screen.
  * autoship_shortcode_create_scheduled_order_action_link filter is available in the new autoship_shortcode_create_scheduled_order_action() function in src/shortcodes.php. The filter can be used to customize the resulting html generated from the autoship-create-scheduled-order-action shortcode.
   
* New Actions! The following New Actions have been added:
  * autoship_pre_create_scheduled_order_link_handler action is available in the new autoship_create_scheduled_order_endpoint_redirect() template redirect function in src/pages.php to allow developers to perform custom actions directly before the create scheduled order method is called.
  * autoship_post_create_scheduled_order_link_handler action is available in the new autoship_create_scheduled_order_endpoint_redirect() template redirect function in src/pages.php to allow developers to perform custom actions directly after the create scheduled order method is called.

= 1.2.45 =

* New! Admins can now enable the display of a “Ship By Date” column within the WP-Admin > WooCommerce > Orders list table when the new “Display Ship by Date in Order Management” checkbox is enabled in the WP-Admin > Autoship Cloud > Settings >> Options tab.  This optional setting was added in order to provide visibility to merchants using the Next Occurrence Offset so that

* Added: 2 new columns have been added to the Scheduled Orders by Product Report to allow visibility into the Shipping Address(es) for the Scheduled Orders in the report 1) Shipping Address State and 2) Shipping Address Postcode

* Improved: Site URLs will now update when Site’s are being reconnected to QPilot using the same Site URL.  For example, if a Site was connected to QPilot previously using https://www.mysite.com, it can be reconnected to QPilot using the URL https://mysite.com and be recognized as the same site.

* Improved: The action to “Export WC Autoship Schedules to CSV” found in WP-Admin > Autoship Cloud > Migrations has been improved to include the export of Autoship Schedules that do not contain products and/or saved payment data.

* Improved: QPilot’s automated Product Synchronization will no longer updated and change the Product Type for a WooCommerce Product.   Only updates made to the Product Type in WooCommerce will update the Product Data in QPilot.

* New Filters! The following new filters have been added to the plugin:
  * autoship_populate_next_occurrence_offset_column_val filter has been added to the autoship_populate_next_occurrence_offset() callback function for populating the “Ship By Date” column. The filter can be used to adjust how the date and content is displayed in the WooCommerce > Orders list table.
  * autoship_populate_next_occurrence_offset_empty_created_date filter has been added to the autoship_populate_next_occurrence_offset() callback function for populating the “Ship By Date” column. The filter can be used to adjust how the column value is populated for orders that do not have a created date in the WooCommerce > Orders list table.
  * autoship_populate_next_occurrence_offset_empty filter has been added to the autoship_populate_next_occurrence_offset() callback function for populating the “Ship By Date” column. The filter can be used to adjust how the column value is populated for orders that do not have a Next Occurrence Offset in the WooCommerce > Orders list table.
  * autoship_rest_generated_order_offset filter has been added to the autoship_qpilot_orders_update_via_rest_set_next_occurrence_offset() callback function for populating the dynamically created _qpilot_next_occurrence_offset metadata on orders coming in over the rest api. The filter can be used to adjust how the newly created date gets formatted and adjust the value dynamically to increase/decrease or remove the Next Occurence UTC for specific orders with specific products.

= 1.2.44 =

* New! Square is now available as a supported payment integration.  Merchants using the Square for WooCommerce plugin can now add this integration for their connected QPilot Site via WP-Admin > Autoship Cloud > Payment Integrations.
* New! Merchants can now define a value for Processing Offset for their connected QPilot Site.  This new feature enables Scheduled Orders to begin processing ahead of their Next Occurrence date.

* Improved: Scheduled Orders including coupons that apply shipping discounts will now include the coupon on the created WooCommerce Order.  Previously, no coupon would be included with the WooCommerce Order if it only applied a discount to the Shipping Rate.

* Fixed: Issue where shipping rates were not recalculating and updating consistently when processing Scheduled Orders.  This issue would cause some Scheduled Orders to apply an incorrect shipping rate if not all items were valid or in stock when the Scheduled Order processed.
* Fixed: Conflicts with other plugins that also hook into requests to create Orders via the WooCommerce REST API.

* New Actions! The following New Actions have been added:
  * autoship_qpilot_orders_before_update_via_rest action has been added to the autoship_qpilot_orders_update() function in src/api.php.  This action can be used to perform actions when a QPilot generated order is first received by the WC Rest API wc-autoshipcloud/v1/orders endpoint. The action includes the WP_REST_Request object as a parameter.
  * autoship_qpilot_orders_after_update_via_rest action has been added to the autoship_qpilot_orders_update() function in src/api.php.  This action can be used to perform actions after a QPilot generated order is processed by the WC Rest API wc-autoshipcloud/v1/orders endpoint. The action includes the original WP_REST_Request object and WP_REST_Response object as parameters.


= 1.2.43 =

* Added: Changes in preparation of upcoming Square Payment gateway support.

* Added: Refunding Autoship Orders in WooCommerce > Edit Order is now supported for Stripe and Authorize.net CIM payments.

* Improved: Corrected a padding issue on the Autoship Link Builder Title so that the text will no longer be indented.

= 1.2.42 =

* Improved: Autoship Orders in WooCommerce (created from processing Scheduled Orders) now include full payment responses from the payment gateway.
* Improved: Refunds are now possible for Autoship Orders processed with PayPal Checkout.  Support for refunds is coming soon for additional supported payment gateways.
* Improved: Automatic product synchronization has been improved to handle errors that may occur during the sync process.  Previously, the automated product sync could be completely halted by a site that had errors and this has been improved moving forward.
* Improved: Scheduled Orders that have a 0.00 subtotal can now be processed with QPilot.  Previously, Scheduled Orders for 0.00 would fail because the amount is invalid for payment processing.  This is now improved so that 0.00 Scheduled Orders do not attempt to process a payment.
* Improved: the “Invalid” filter on the Autoship Cloud > Products report will now return only products with that are “Active” status.  This ensure that only products that are activated for Autoship in WooCommerce are flagged as invalid.
* Improved: the Bulk Update actions (in WP-Admin > Autoship Cloud > Migrations) have been improved to handle site errors.  Previously, site errors would cause a bulk update to stop or timeout without notice.
* Improved: the Bulk Update actions (in WP-Admin > Autoship Cloud > Migrations) have been improved to handle Simple products that have orphaned variations.  Previously, a simple product might be skipped during the bulk update if invalid variations exist in the database and include the simple product as a parent product.

* Fixed: Product synchronization warnings now correctly display a “Yellow Sync Warning” icon.
* Fixed: Empty Order Notes were being added to WooCommerce Orders.  This is removed moving forward.
* Fixed: Text and input labels throughout the plugin have been adjusted for spelling, spacing and other visual improvements.

* New Actions! The following New Actions have been added:
  * autoship_update_scheduled_orders_on_processing_{action}_gateway action has been added to the autoship_update_scheduled_orders_on_processing() function in src/orders.php.  This action can be used to perform actions when a QPilot generated order is updated to a processing status. The dynamic action portion of the action name is the value from the _payment_method metadata field for the associated order. If that field is empty then "general" will be used. The action includes the Payment Gateway response and the WC_Order object as parameters.

= 1.2.41 =

* New: Autoship Cloud now interprets Coupons applied to Scheduled Orders as Coupons for WooCommerce Orders.  Previously, Coupons on Scheduled Orders could only be included as Fee Line items on orders created in WooCommerce and this would sometimes result in inaccurate tax rate calculations.
  * The new functionality checks for the existence of Coupon Fee Lines in Orders created in WooCommerce by QPilot via the WC REST API and does the following:
    * Removes the Coupon Fee Lines and stores them into a _qpilot_legacy_fee_lines metadata field on the WooCommerce Order so that the Coupon Fee Lines can always be re-applied programmatically if needed as well as for auditing purposes.
    * Each Coupon Fee Line is converted to a “virtual” coupon via the new autoship_generate_virtual_wc_coupon() function. See the WooCommerce documentation for the virtual flag here. These virtual coupons are also stored with the Order in a new _qpilot_dynamic_coupons metadata field so that they can be applied in the future.
    * After the order is created in WooCommerce, the virtual coupons are re-applied one by one, letting WooCommerce calculate taxes, re-calculate totals, and deal with rounding natively on the line item level.
* New: Added a new Option within WP-Admin > Autoship Cloud > Settings to “Display QPilot Coupons as Fee Lines” in case a merchant prefers to limit Coupons included on Scheduled Orders to Fee Line items instead of using the new Coupon Fee Lines functionality.
* New: Added a new Option for WooCommerce Products activated for Autoship to override the default Next Occurrence behavior and choose to “Set Next Occurrence Date Relative to Checkout”.  This enables merchants to choose a number of Days, Weeks or Months after Checkout for when the Scheduled Order created for this product should be scheduled for (also known as the “next occurrence date”).

* Fixed: Removed old functions within Checkout.php that would cause some sites to send an incorrect Stock Status for products that allow backorders.

* New Filters! The following New Filters have been added:
  * autoship_qpilot_orders_via_rest filter has been added to the autoship_qpilot_orders_update() callback function for the Autoship Orders endpoint in src\api.php. This filter can be used to adjust the rest request data coming in through the endpoint prior to the call to WC_REST_Orders_Controller::create_item().
  * autoship_qpilot_orders_via_rest_enable_fee_lines filter has been added to the autoship_qpilot_orders_update_via_rest_convert_fees_to_coupons() function in src\coupons.php. This filter can be used to disable the virtual coupons functionality and re-enable the legacy fee line method for QPilot orders coming in on the Rest API.
  * autoship_qpilot_orders_update_via_rest_apply_coupons filter has been added to the autoship_qpilot_orders_update_via_rest_apply_coupons() function in src\coupons.php. This filter can be used to disable / enable the virtual coupons functionality by order for orders coming in on the Rest API.
  * autoship_rest_generated_virtual_wc_coupons filter has been added to the autoship_qpilot_orders_update_via_rest_convert_fees_to_coupons() function in src\coupons.php. This filter can be used to adjust the virtual coupons generated from the fee lines on the rest order.
  * autoship_generated_virtual_wc_coupon filter has been added to the autoship_generate_virtual_wc_coupon() function in src\coupons.php. This filter can be used to adjust a virtual coupon as it's generated and perform other tasks related to that coupon.
  * autoship_coupon_types_by_code filter has been added to the autoship_get_coupon_type_by_code() function in src\coupons.php. This filter can be used to adjust how QPilot Coupon Types are converted to WC Coupon types.

= 1.2.40 =

* Fixed: Issue where a Notice was being displayed incorrectly due to a reference to a legacy $error variable that was removed when the product metadata summary was refactored.
* Fixed: Issue when updating WooCommerce Products that allow backorders was sending an Out of Stock status for the product or variation to QPilot.  Products and variations that allow backorders now consistently send an InStock stock status to QPilot.
* Fixed: Issue where Stock QTY was sending an AbsInt value for the stock level which means that the stock level was always sent as a positive number.  This has been corrected so that Out of Stock and backordered products can send a negative number value for stock level.
* Fixed: Issue with Autoship Sync was not updating the product type correctly or including the parent ID for product variations.  The automatic sync process has been updated to so that product type synchronizes consistently and includes the parent ID for product variations.

* New Actions! The following New Actions have been added:
  * autoship_after_print_product_custom_fields action has been added to the autoship_print_product_custom_fields() function in src/product-page.php to allow developers to extend the Autoship Options on the Edit Product screen.
  * autoship_after_print_variable_product_custom_fields_group action has been added to the autoship_print_variable_product_custom_fields() function in src/product-page.php to allow developers to extend the Autoship Options on the Edit Product > Variations tab.
  * autoship_after_print_variable_product_custom_fields action has been added to the autoship_print_variable_product_custom_fields() function in src/product-page.php to allow developers to extend the Autoship Options on the Edit Product > Variations tab.

* Improved Filters: The following Filters have been improved:
  * autoship_total_product_summary_data action has been improved in the autoship_get_product_sync_summary() function in src/products.php to include a new summaries parameter that allows developers to use the QPilot API response in functions filtering the summary data.
  * autoship_total_variation_product_summary_data action has been improved in the autoship_get_product_sync_summary() function in src/products.php to include a new summaries parameter that allows developers to use the QPilot API response in functions filtering the summary data.

= 1.2.39 =

* Improved: Updated the API Health Check notification within WP-Admin > Autoship Cloud > Settings to show "UnHealthy" if any API tests return an unexpected error. This ensures that site owners are aware of errors that their site returns when an API request is made.
* Improved: Scheduled Order Attribution data has been expanded to track how many Scheduled Orders are expected to be created from an Autoship Checkout versus how many are actually linked to the WooCommerce Order.

* Fixed: The Autoship discount string has been updated so that it shows the recurring price instead of a "0" when a recurring price is entered and no checkout discount price.

= 1.2.38 =

* New! Scheduled Order Attribution has been added to WooCommerce Order data.  This enalbes merchants to quickly see when a WooCommerce Order contains products that are selected for Autoship as well as review which Scheduled Order(s) were created as a result.  We've also added notifications that will warn merchants if a Scheduled Order was expected to be created but does not appear to be associated with the WooCommerce Order.  In addition the following two functions have been added specifically to find the source of a WC Order generated by QPilot
  * autoship_get_scheduled_order_wc_source_id() function which takes the QPilot order ID and returns the ID for the original WC Order from which the Scheduled order was created.
  * autoship_get_wc_order_source_id() function which takes a WC Order ID or WC_Order object for an order generated by QPilot and returns the ID for the original WC Order from which the Scheduled order was created.

* Improved: An alert for "WooCommerce Required" will display in the WP-Admin when the WooCommerce plugin is not active.
* Improved: Orders.php has been organized to the same standard as product.php and product-page.php so that developers can more easily find, use, and understand the plugin functions.
* Improved: Scheduled Order display options and active autoship cloud extensions now synchronize their settings with other site metadata in QPilot in order to better track usage of customizations and extension usage.

* Fixed: The "!" warning badge displayed in the WP-Admin Menu (WP-Admin > Autoship Cloud) was not clearing after issues were resolved.  The badge now clears and displays as expected.
Updated support for WooCommerce 3.7

= 1.2.37 =

* New! Products that are activated for Autoship Sync now display a warning indicator when a product is not synchronized with QPilot within 48 hours.

* Improved: A warning indicator will now be displayed on the Autoship Cloud menu and Autoship Cloud Products Submenu options when one or more Invalid products exist in QPilot.

* Fixed: PayPal (Express) Checkout now does not require customers to create PayPal Billing Agreements for one-time purchases during WooCommerce checkout.  Previously, the Autoship Cloud plugin was enforcing the Billing Agreement workflow regardless if any products were selected or Autoship.

= 1.2.36 =

* Improved: Units of measurement for WooCommerce Products can now be synchronized with QPilot when the unit of measurement is unique to a specific WooCommerce Product or Variation. The following filters are now available to adjust the unit of measurement for weight and dimensions on a product by product basis: the ‘autoship_get_mapped_product_weight_unit' filter can be used to supply QPilot with the weight unit of measurement for a product and the ‘autoship_get_mapped_product_length_unit’ filter can be used to supply QPilot with the dimension unit of measurement for a product.

* Fixed: Issue with the Bulk Update Autoship Recurring price action where only the first batch of WooCommerce products were updated.
* Fixed: Updated support for WooCommerce PayPal Checkout version 1.6.16 and resolved issue where Smart Button payments were not functioning at WooCommerce Checkout
* Fixed: Issue where selecting "Update and Sync" after editing a WooCommerce Product would cause the browser to alert users about unsaved changes

= 1.2.35 =

* Fixed: Resolved a ReferenceError that occurs on the Edit Product page for Non-Active products starting in version 1.2.32 which prevents the ability to Edit variations.

* Improved: A warning modal will now be displayed when a user clicks on the "Edit" link to change the Status of a Product or the visibility of a product and that product is currently being synchronized with QPilot.

= 1.2.34 =

* Fixed: Resolved issue in version 1.2.32 where the Next Occurrence date was not being assigned to Scheduled Orders correctly and prevented Scheduled Orders from being created at checkout.

= 1.2.33 =

* Fixed: The "Update WooCommerce Product Synchronization" bulk action will now correctly Activate any products with Autoship options enabled.

= 1.2.32 =

* New! Product data synchronization features have been added to ensure that merchants can select which WooCommerce Products should be continuously synchronized with QPilot. Users who are updating the plugin will be prompted to run a bulk update action to ensure that only products that currently have Autoship options enabled continue to synchronize with QPilot. Running this update will help to ensure that your site can synchronize product data quickly and helps to improve general performance with data and reporting.
* New! Autoship Cloud now displays alerts & notifications within the WordPress Admin to inform administrators about the status of Autoship Cloud Product Data.
* New! [Customer Email Notifications](https://support.autoship.cloud/article/438-email-notifications) for specific Scheduled Order Errors have been added to QPilot Sites. These email notifications can be optionally enabled to notify customers to respond to a failed Scheduled Order.

* Improved: Scheduled Order Lock Notification email templates can now receive basic customizations like other customer email notification templates.
* Improved: The Autoship Cloud Products report (WP-Admin > Autoship Cloud > Products) now only displays Active products by default. "Active" products represent products that are actively synchronizing with WooCommerce. "Inactive" products can be displayed by enabling a new filter setting on the report.
* Improved: The Product and Product Page related code has been re-organized and will now reside in either the products.php file or the product-page.php source files. The product-page.php file will now contain all UI related code for the product screens while the products.php file will contain all supporting functions for data retrieval, saving, and API related calls.

* Fixed: Issue with 9 digit (5+4) postal/zip codes causing Scheduled Orders to fail when fetching USPS Carrier Rates. 9 digit postal/zip codes can still be added to Scheduled Orders but are now sent only as 5 digits to the USPS Webtools API.
* Fixed: The "autoship_create_scheduled_order_next_occurrence" filter has been updated to correctly assign the filtered Next Occurrence date to the Scheduled Order on Checkout.
* Fixed: Several functions were renamed to correct spelling inaccuracies.

= 1.2.31 =

* Fixed: Updated to include the order-address-form template file for the new Edit Shipping Address feature.

= 1.2.30 =

* New! Customers can now edit the shipping address of a Scheduled Order directly using the Native UI display option in My Account > Scheduled Orders.  This enables a customer to have Scheduled Orders addressed and delivered to different locations.  Previously, this was only possible using the Embedded App display option or by updating the Shipping Address in My Account > Addresses to apply the change to all Scheduled Orders instead of one.

* Added:  Error Codes have been added for Scheduled Order Processing.  This makes it easy for merchants to respond to issues that can cause Scheduled Orders to fail.   The Error Codes are displayed with the Processing Result on the WP-Admin > Autoship Cloud > Dashboard, as well as the History Event Logs and Processing Cycles that are viewable in WP-Admin > Autoship Cloud > Scheduled Orders.  Learn more about Scheduled Order Processing Error codes here: [https://support.autoship.cloud/article/543-scheduled-order-processing-errors](https://support.autoship.cloud/article/543-scheduled-order-processing-errors)
* Added: The “Retry Update Order” action is now available to Scheduled Orders that failed processing because of issues with the WooCommerce site failing to respond when trying to update the WooCommerce order status.  Using this action makes completing processing much simpler after resolving issues with the WooCommerce site. Learn more about this action here: [https://support.autoship.cloud/article/544-how-to-use-the-action-to-retry-update-order-for-error-3001](https://support.autoship.cloud/article/544-how-to-use-the-action-to-retry-update-order-for-error-3001)

= 1.2.29 =

* Added: processing cycles now show the Total amount of the scheduled order and the Total amount from the WooCommerce order for each cycle.
* Added: the Scheduled Order by Product report now includes a column for Quantity

* Improved: the API Healthiness Notifications have now been expanded to include and display additional details regarding the reason a REST API GET, PUT and POST request fails.

* Fixed: Coupons with a min quantity setting are no longer invalidated during processing
* Fixed: Export actions now function properly for reports after applying filters to the report in WP-Admin > Autoship Cloud > Reports
* Fixed: an issue where shipping and/or billing cities that exceeded 20 characters could cause payment methods and customers creation to fail.

= 1.2.28 =

* Improved: Un-checking the "Add One Time Only" checkbox on the Autoship Link Builder will now disable the minimum and maximum cycles fields, excluding the cycles from the generated link.

= 1.2.27 =

* New! Payment Type "Other" has been added as a Payment Type and Payment Method for Merchants who need to process Scheduled Orders without processing payments with a gateway.

* Added: Filter to change the display of the Frequency Option in the Native UI
* Added: Filter to change the display name of the Scheduled Order globally

* Improved: Failed Scheduled Order reasons will no longer display after a previously Failed Scheduled Order's status is updated.
* Improved: The Autoship Orders endpoint will now check that the WooCommerce REST API Orders Controller class exists and, if not, will return a "The WooCommerce REST API is either unavailable or not found." WordPress Error.
* Improved: The Autoship Orders endpoint's permissions callback function will now use the WooCommerce WC_REST_Orders_Controller class to check for additional permissions.  Previously, the callback function used the WC_REST_Orders_V2_Controller class which didn't exist until WC v3.5x.

* Fixed: Synchronization issue with WooCommerce Product Data that would cause some sites to update and overwrite previously synchronized Product Data due to the Order History synchronization process.
* Fixed: Using the Native UI Display for Scheduled Orders, an error would display to customers viewing only one Scheduled Order  in My Account > Scheduled Orders in the case where the Scheduled Order was created after other Scheduled Orders were deleted.
* Fixed: The Edit Payment Method Form displayed in the Native UI will now be correctly displayed when the Edit Payment Method button is selected within the Scheduled Orders screen.  Previously, starting in version 1.2.25, the Edit Payment Form was hidden for any Scheduled Orders with one or more scheduled items.
* Fixed: The Trust Commerce payment gateway integration will now save the payment token in the Gateway Customer ID field and set the Gateway Payment ID field to NULL on Scheduled Orders created at checkout.  Previously, the two values were flipped causing an error during payment processing.

= 1.2.26 =

* New! A custom endpoint has been added that helps prevent order duplication and interference arising from other plugins hooked into the WooCommerce Orders REST API. QPilot will now check for an existing WooCommerce Order using the new endpoint prior to hitting the WC_REST_Orders_Controller - previously, QPilot would hit the Create Order endpoint and then check for duplicate orders.

* Fixed: Issue with the Native UI display where viewing a single Scheduled Order in My Account > Scheduled Orders would also display additional templates

= 1.2.25 =

* New! When an item on a Scheduled Order is restricted by Min and Max Cycle values, the item is displayed to customers with text that explains how many times the item will be included on their Scheduled Order.  For example, "One Time Only" or "Two Times Only", etc.
* New! When no items exist on a Scheduled Order, the Native UI option to display Scheduled Orders now presents a message to the logged in Customer that prompts them to Add an Item, Pause the Scheduled Order or Delete the Scheduled Order
* New! A bulk action to update Product Availability settings for all Simple Products and Variations is now available in WP-Admin > Autoship Cloud > Migrations
* New! A bulk action to enable all Simple and Variable Products and Product Variations to display Autoship Schedule Options is now available in WP-Admin > Autoship Cloud > Migrations

* Improved: The Native UI option to display Scheduled Orders now displays the full Scheduled Order to the logged in Customer (within My Account > Scheduled Orders) instead of a summary of all Scheduled Orders when only 1 Scheduled Order exists for the customer.

* Fixed: the WC Autoship CSV Export now exports the correct value of "Days" for Frequency Type and no longer populates a value for Cycles
* Fixed: issue with Autoship Cloud > Coupons that was causing coupons to not apply when using a minimum quantity condition

= 1.2.24 =

* New! WooCommerce Order Notes are now updated by QPilot's Scheduled Order Processing Engine in order to provide maximum visibility into successful and failed processing events for Scheduled Orders.

* Improved: When a Scheduled Order fails due to payment, the WooCommerce Order Status is updated from "Pending Payment" to "Failed".

* Fixed: an issue where non-autoship orders created through the WooCommerce REST API could fail creation.

= 1.2.23 =

* Improved: the Cart Totals will now be recalculated when the Scheduled Order is changed in the cart.  Previously, the totals were not recalculated which might not allow other plugins to be notified of a price change.

* Fixed: malformed HTML on the Autoship tab under the WP-Admin > Products >> Product Data screen which could cause layout issues for custom tabs added after Autoship Cloud.

= 1.2.22 =

* New: The Scheduled Order Metrics report is now available in WP-Admin > Autoship Cloud > Reports >> Scheduled Order Metrics.  This report displays important Scheduled Order performance data and can be exported as a CSV for further analysis and marketing workflows.
* New: Autoship Link Builder is now available for Simple and Variable Products.  This helpful tool makes it easy to generate a URL link for adding Products and Variations to the Cart and to existing Scheduled Orders.  You can display this form by editing a WooCommerce Product in WP-Admin > Products >> Product Data >>> Autoship (tab)
* New: Customers can now see an item that is added as a one-time purchase to their next Scheduled Order in My Account > Scheduled Orders.
* New: Added a new field to WP-Admin > Autoship Cloud > Settings to enter text/html into the "Scheduled Orders Header Message".  Content entered into this field is displayed above all content in My Account > Scheduled Orders
* New: Added a new field to WP-Admin > Autoship Cloud > Settings to enter text/html into the "No Scheduled Orders Body Message".  Content entered into this field is displayed in My Account > Scheduled Orders when no Scheduled Orders exist for the customer.

* Improved: the autoship.pot file has been updated to include all of the text strings added to the Native UI Wordpress Templates
Fixed an issue where Autoship Cloud Coupons were not always applied when processing a Scheduled Order.

= 1.2.21 =

* Fixed: Bulk Update actions for enabling Autoship Options on Product Pages to correctly enable the option on Variable products.  Previously, the wc_get_products function was used which was preventing all variations from getting processed.

* Updated: The Bulk Update descriptions, completed and processing statements to better communicate which of the product types ( Simple, Variable, and Variation ) will or have been processed for each action.

= 1.2.20 =

* Improved: the query used to calculate the total number of simple, variable, and variations that will be batch processed to better handle larger data sets.

= 1.2.19 =

* New: The Bulk Update actions found in WP-Admin > Autoship Cloud > Migrations have been completely replaced with forms that allow admins to define batch processing size in addition to the changes they are updating in bulk.
* New: Bulk Update actions for Autoship Checkout Price are now handled separately from Autoship Recurring Price.
* New: Bulk Update actions for enabling or disabling the display of Autoship Options on Product Pages.

* Improved: The CSV Export of WC Autoship data is now more efficient and does not include the Product Description field since this is not required for import and will synchronize with the WooCommerce Product data anyways.

= 1.2.18 =

* New: Scheduled Orders now create & assign a unique processing ID to WooCommerce Orders for each Scheduled Order processing cycle. The unique processing ID is used to make updates to the WooCommerce Order during processing as well as updating incomplete WooCommerce Orders resulting from failed processing events.
* New: Processing Cycle Logs have been added to Scheduled Orders so that after a Scheduled Order processes, detailed results of the transaction can be reviewed from WP-Admin > Autoship Cloud > Scheduled Orders as well as WP-Admin > Autoship Cloud > Dashboard

* Added: the Native UI now includes a delete action for Scheduled Orders from the My Account > Scheduled Orders screen and My Account > Edit Scheduled Order screen.
* Added: the Native UI now displays a Tax total line. When Scheduled Orders do not include tax, the value of the total will display a "Tax TBD" placeholder.
* Added: an Additional Filter on Native UI Scheduled Order check
* Added: an Additional Filter on Variation Autoship Discount Information
* Fixed: scheduled orders will now only be locked when within the lock duration window. Previously, some scheduled orders might show locked when within double the lock duration length of the Next Occurrence date.

= 1.2.17 =

* New! Wordpress Admins can now display an "Origin" column on the WooCommerce > Orders report that displays the Scheduled Order ID that originated the WooCommerce Order. This column is sortable and optional to enable.
* New! Scheduled Orders now include new statuses of "Queued" and "Processing" in order to more easily track the events that lead up to processing Scheduled Orders. These statuses are filterable in WP-Admin > Autoship Cloud > Scheduled Orders
* New! QPilot's USPS integration will now offer a"Usps International" rate option for Autoship Cloud Shipping Rates.
* New! Payment methods can now be updated by Customers for "Locked" status Scheduled Orders in My Account, so that customers can resolve payment issues themselves.

* Improved: Custom Number frequency can now be used for the "Weeks" Frequency Type. Previously, only 1 to 4 weeks were available frequency options when editing Scheduled Orders
* Improved: Actions to update existing Scheduled Orders with payment and shipping address data will not display for users that have no Scheduled Orders
* Improved: WooCommerce customers that do not yet exist in Autoship Cloud will be added when visiting My Account > Scheduled Orders

* Added: The Native UI that displays Scheduled Orders to customers in My Account > Scheduled Orders now handles the Lock Duration option
* Added: The Native UI now provides a class to uniquely style and display items that are "Out of Stock" so that customers are aware when viewing/editing their Scheduled Order
* Added: The Native UI now displays a notification to customers in My Account > Scheduled Orders when a Scheduled Order fails to process that includes the reason for the failure.

* Fixed: The CSV Export action in WP-Admin > Autoship Cloud > Migrations now correctly includes all product properties
* Fixed: Minor issue where Wordpress Admin users could only select the "Native UI" option by selecting the radio button itself within WP-Admin > Autoship Cloud > Settings. Now the entire text area is selectable as well.
* Fixed: The Locked Customer Email Notification Template now correctly displays "TBD" for tax subtotal when no tax rate is applied to the Scheduled Order
* Fixed: Several minor styling issues have been updated with Customer Email Notification Templates.
* Fixed: Rounding issue occurring with some Stripe payments

= 1.2.16 =

* New! Merchants can now remove unwanted payment methods from Autoship Cloud > Customers so that they no longer appear on a Customer's Scheduled Order(s)

* Fixed: issue where a 0 value would appear on a product's autoship frequency after removing an autoship option that was set as a default selection

* Added: Scheduled Order failure reason will now display as an alert on the Native UI template for Scheduled Orders
* Added: Actions to pause and resume a Scheduled Order now appear on the Scheduled Order details screen for the Native UI template

= 1.2.15 =

* Fixed: an issue where payment results where not reflected on the WooCommerce order.

= 1.2.14 =

* Enhanced the WooCommerce order creation mechanism to prevent duplicate orders creation on retries due to timeouts and other site issues.

= 1.2.13 =

* New! Autoship Cloud > Settings now display as individual tabs for "Connection Settings", "Options" and "Extensions". The Extensions tab displays custom plugin add-ons that extend, modify, and customize your Autoship Cloud and QPilot integration
* New! Specific capabilities can now be assigned to the Autoship Cloud Admin Page and Sub Pages using new security filters to allow for non-administrators access.
* Improved: the Autoship Cloud > Settings page no longer displays a "Connected WP-Admin User" before setting up a connection with QPilot
* Fixed: updated the display of Autoship Options in the cart so that users can select the text next to the Autoship's radio button option
* Fixed: text errors in the Autoship Label on Product Pages and the update shipping options text in My Account > Addresses

= 1.2.12 =

* Improved: The templates cart/schedule-options.php, product/schedule-options.php and product/schedule-options-variable.php have been updated with additional filters and actions so that the labels, content, and look of all Autoship Options can be customized and extended by developers.
* Improved: The jQuery code used to default the Autoship options based on the 'autoship_default_product_schedule_options_choice_value' filter has been updated to work for Product templates loaded via ajax like in many theme's Quick View features.
* Fixed: The function that retrieves the Autoship Recurring Price from a product's metadata has been updated to return a NULL when the value is set to a string. Previously, the function would return the string which could be converted to a 0 unintentionally.

= 1.2.11 =

* New! Customers can now apply changes to Shipping Address to all Scheduled Orders from My Account > Addresses
* New! Customer can now apply a saved Payment Method to all Scheduled Orders from My Account > Payment Methods
* New! Support for the WooCommerce TrustCommerce gateway
* Improved: Re-organize & Re-built the Payment Method code to better handle the two main types of Gateways, Standard WooCommerce Token gateways and Non-Standard Skyverge Framework Gateways.
* Improved: Character limitations for product image URL and company names have been increased to reduce errors with the Import WC Autoship Schedules action
* Added: Documentation and inline comments to the Payment Method code for better maintainability and extendability.
* Updated: the Native UI option now uses the WordPress Transients for caching the WooCommerce Product list instead of the PHP Sessions. This helps mitigate issues that may arise on hosting setups which don't properly support Sessions.
* Updated: the Native UI Caching functionality now applies for both orders and Products to be extendable / modified to use custom caching setups. This includes the addition of custom functions to help manage, adjust, extend, and use the cache functionality.

= 1.2.10 =

* Added new supporting code for AddItemsToNextScheduledOrder endpoint and the GetNextScheduledOrder endpoint for example, these can be used to add a product and quantity to an upcoming scheduled order directly from a product page
* Updated the class name on the simple product screen for the autoship price to use the same class as that of the variable product to maintain consistency and style
* Updated the Create Order functionality to use the order id for the OriginalExternalId field. Previously, this used the Order Number which could be customized and in some cases too large for the upsert
* Increased the character limit accepted for OriginalExternalId to support up to 40 characters
* Added Scheduled Order data to Product Meta Data on WooCommerce Orders
* Added support for including the Company and Phone number fields on Scheduled Orders and Updated Customer information. The Company field is populated from the Shipping information and the phone number from the billing information
* Added functions devs can use to see if a user is a) autoship_is_active_autoship_customer in that they exist in QPilot and b) autoship_customer_has_scheduled_order which can be used to see if a customer has a scheduled order

= 1.2.0 =

* New! Native UI option to display scheduled orders in My Account using wordpress templates.  Enable this option in Autoship Cloud > Settings > Additional Options.
* New! Autoship Cloud Dashboard page.  Use the Dashboard to view recent Scheduled Order processing events.  Additional KPI's and reporting coming soon.
* Added: Autoship Cloud coupons can now be added, removed and managed by customers in the hosted Autoship Scheduled Orders iframe.

= 1.1.32 =

* Fixed issues caused by customized order numbers in WooCommerce by referencing WooCommerce Order ID instead of Order Number
* Improved theme support for templates that implement ajax add to cart

= 1.1.31 =

* Updated Embedded Scheduled Orders App to include Featured Products enabled for Add to Scheduled Orders in the products display
* Improved CSV Export for WC Autoship migrations to work  consistently
* Fixed Autoship options for WooCommerce Products so that product availability is not dependent on enabling Autoship Options on product pages
* Additional improvements in preparation for the version 1.2 update that will introduce a new My Account experience using native Wordpress Templates!

= 1.1.30 =

* New! QPilot email notifications can now be sent using your own email account. Setup and verify your sender email now in your QPilot Site Settings.
* Improved display of Scheduled Orders in My Account for browser compatibility with Safari and Microsoft Edge
* Fixed issue causing time information to not display in Safari browser
* Fixed issue with Paya V1 payments that was causing GUID values to store in the incorrect field.

= 1.1.29 =

* Fixed issue that was preventing the creation of orders since a file reference was broken

= 1.1.28 =

* Fixed issue causing Autoship options to be selected incorrectly

= 1.1.27 =

* Added the ability to disable specific varitiations from displaying Autoship Options
* Updated and enhanced the Autoship Order functionality for better expansion, maintainability, and customization. This includes documenting the functions, adding additional filters, splitting functionality into individual functions and moving the Create Orders functionality out of the Checkout file/functionality and into a new separate file.
* Fixed issue that was preventing the creation of unique scheduled orders when different frequent frequencies were selected at cart and checkout
* Updated the external id ( OriginalExternalId ) sent for each Autoship order from WooCommerce checkout. This is now a unique string consisting of the wc prefix followed by the woocommerce order id, then Frequency and finally Frequency Type connected using an hyphen. ( ex. wc-181-3-Months )
* Improved autoship price display functionality on product pages. Basically the js code couldn't always find the html price element for variable products and so it would add it which could cause the discounted price and regular price to be displayed at the same time

= 1.1.26 =
* New feature added for API Healthiness Notifications that will alert wordpress administrators if their WC REST API can successfully respond to GET, PUT and POST requests
* New payment integration added for Paya for WooCommerce (Version 1 API)
* New functions, filters, and actions have been added to the payments integration functionality that allow the supported gateways in Autoship to be extended by developers. This includes adding payment methods and removing payment methods. The new functions are autoship_add_general_payment_method, autoship_delete_general_payment_method, autoship_delete_tokenized_payment_method, autoship_add_tokenized_payment_method, and the autoship_gateway_id_types functions.
* New filter hooks added include the autoship_extend_gateway_id_types filter that can be used to extend the gateway ids and method types supported, the autoship_add/delete_tokenized_payment_method_gateway_id, autoship_add/delete_tokenized_payment_method_extend_gateway_types which can be used to extend the gateway ids and method types available to the delete and add payment method in Autoship.
* New action hooks added include the autoship_add_tokenized_payment_method_extend_gateway and autoship_remove_tokenized_payment_method_extend_gateway which fire directly before the generic Autoship add payment method and remove payment method functions to allow for custom methods to be fired.
* Fixed the inclusion of support for XL WooCommerce NMI Gateway payments plugin
* Fixed the Scheduled Orders menu link in My Account

= 1.1.25 =
* Added new autoship functions and filters to the plugin for better extendability and customization.
* Added new autoship filter enabling the selection of the Autoship option on Product Pages as a default option
* Changed the function autoship_get_product_ids to use the term slug instead of the term name
* Updated product page templates to display Autoship Checkout Price in place of regular or sale price when an Autoship frequency is selected on a simple or variable product page
* Improved multiple autoship functions used within the plugin for speed, modularity, and reusability.
* Fixed an issue where an unhandles exception during guest checkout caused an error
* Fixed an issue causing some custom frequencies to not qualify for Autoship Free Shipping

= 1.1.24 =
* Added support for XL WooCommerce NMI Gateway payments plugin
* Fixed issue where some theme builder extensions would not display the Scheduled Orders menu link in My Account correctly
* Improved synchronization of WooCommerce customer data fields with QPilot

= 1.1.23 =
* Improved handling of product variations to include switching between simple and variable product types
* Improved Autoship Free Shipping option to enable and disable in shipping zones
* Improved Autoship options within WooCommerce Product Data

= 1.1.22 =
* Fixed bug that prevented the creation of new product variations

= 1.1.21 =
* Improved display of Autoship Options when editing WooCommerce Products
* Fixed issue preventing new variable product creation
* Fixed issue that caused some themes to display unwanted debug messages for shipping methods

= 1.1.20 =
* New: View Autoship Cloud Availability Settings within WooCommerce Products
* New: The Embedded Scheduled Orders App now has additional features to improve loading and searching products
* Improved: Bulk Enable Products for Autoship actions have been simplified to a) Enable Al Products for Autoship and b) Enable All Products for

= 1.1.19 =
* New option to offer free shipping when a product selected for Autoship is in the cart
* New option to enable/disable display of coupons on the embedded scheudled orders app
* New event log report

= 1.1.18 =
* removed unnecessary text
* a new build of the embedded My Account UI

= 1.1.17 =
* temporarily disabled availability settings synchronization to QPilot
* option to display order note on the embedded My Account UI

= 1.1.16 =
* improved bulk update to apply a percent discount for autoship products so that prices are updated in batches

= 1.1.15 =
* fixed embedded scheduled orders app to respect product availability for child products

= 1.1.14 =
* added Autoship cloud availability settings to WooCommerce Product Data
* added export WC Autoship Schedules to CSV option as a fallback for upgrade migrations
* improved Embedded My Account UI to utilize Autoship Cloud product availability settings
* fix calculation for Bulk Update Autoship Discount


= 1.1.13 =
* added CSV export for WC Autoship migrations

= 1.1.12 =
* fix for Cybersource to pass correct payment id when adding payment methods via My Account
* minor improvements to the migrations page

= 1.1.11 =
* New: PayPal Express Checkout Smart Buttons can now be enabled for use with Scheduled Orders
* Added: Cybersource payment integration now supports Adding and Deleting payment methods to and from Scheduled Orders
* Improved: WC Autoship migration script will now log an error when deleted products are not able to be migrated to Autoship Cloud Scheduled Orders

= 1.1.10 =
* New report: Scheduled Orders by Product
* New script: Enable Autoship on all products
* Fixed: Issue where PayPal Express Checkout was causing an error on redirect

= 1.1.9 =
* Customer-provided notes are sent when Scheduled Orders are processed

= 1.1.8 =
* Improved Settings Page
* Updated Scripts for Migration
* Updated Scripts for Bulk Pricing Updates
* New template logic for Autoship Checkout and Autoship Recurring Price
* Increased Character Limits for Address Fields
* New Feature to limit changes to upcoming orders if within X days of processing

= 1.1.7 =
* Fixed bug with payment method migrations

= 1.1.6 =
* Minor bugfixes

= 1.1.5 =
* Styling issues on embedded Angular app
* Out of stock now displayed on Angular app
* Frequency not compatible now displayed on Angular app
* Warning on items that will be removed in X cycles

= 1.1.4 =
* Fixing issue with product availability

= 1.1.3 =
* New: Sync Product and Customer Data on Update
    * Now when wordpress admins add or update data for customers and products, the data is synchronized to Autoship Cloud on update.
* Fixed: Zero Total Quantity Scheduled Orders will not process
    * Scheduled Orders that contain a total quantity of 0 items will not process
* Added: Next Occurrence date (needs review)
    * Function for next occurrence calculates
* Improved: Autoship Cloud Settings Page
    * Cleaner organization for the settings found in WP-Admin > Autoship Cloud > Settings
* New: Autoship Cloud Coupons added to My Account > Scheduled Orders UI
    * Merchants can now share Autoship Cloud Coupons with customers to add to their own Scheduled Orders
* Added: Max Cycle for Autoship Cloud Coupons
    * Merchants can now set a coupon to expire after X cycles
* New: Option to lock all Scheduled Orders to prevent customer changes within X days of processing date
    * QPilot Merchant Sites now offer an option to “Lock” all Scheduled Orders relative to their Next Occurrence Date.
* Fixed: Removed javascript errors within wp-admin


= 1.1.2 =
* Bug fixes.

= 1.1.1 =
* Bug fixes.

= 1.1.0 =
* Added upsert method to send WooCommerce Order ID at checkout preventing duplicate Scheduled Order creation
* New My Account Scheduled Orders UI option: uses an app embedded within the Autoship Cloud plugin in place of the hosted iFrame.
* Added support for add/delete for Stripe, Braintree, PayPal Express and Authorize.net CIM Payment Methods
* New Settings Page
* New Coupons Page for Autoship Cloud
* Improved Migrations script

= 1.0.24 =
* Stock quantity now being synchronized as well as stock status

= 1.0.23 =
* Fixed issue that sometimes occurred when updating the cart

= 1.0.22 =
* Synchronizing stock status to QPilot Cloud
* Improved UI for disabled items in the scheduled orders (both merchant- and customer-facing)

= 1.0.21 =
* Added a new reports menu item.

= 1.0.20 =
* Search for QPilot customer when no reference is found.

= 1.0.19 =
* Force save payment for Braintree PayPal checkout.
* Improvements to admin UI.

= 1.0.18 =
* QPilot widgets styling.
* Implement Autoship Recurring Price for future orders at checkout.
* Truncate QPilot Product fields to max lengths.

= 1.0.17 =
* Add 20 second request timeout to QPilot client.

= 1.0.16 =
* Add settings field 'Product Message'.

= 1.0.15 =
* Bug fix for json_decode in admin messages.

= 1.0.14 =
* Bug fixes.

= 1.0.13 =
* Bug fix for variable product page.

= 1.0.12 =
* Add Cart Upsell feature.
* Update admin templates.
* Migrations bug fixes for import WC Autoship schedules.
* Updates for WooCommerce Stripe 4.

= 1.0.11 =
* Add frequency settings for products.
* Add bulk update feature for discounts.

= 1.0.10 =
* Bug fix for WooCommerce API keys.
* Add admin translations.

= 1.0.9 =
* Removed stray jquery file.
* Sanitize settings values with sanitize_text_field().
* Improved translation support.

= 1.0.8 =
* Updates for OAuth 2.0.
* Translation support.

== Upgrade Notice ==

= 1.0.0 =
Limited release has been deprecated. Users should upgrade to the latest stable release.
