1. Documentation /
  2. Introduction to Order Delivery for WooCommerce /
  3. Order Delivery in Subscriptions

Order Delivery in Subscriptions

Order Delivery is compatible with the extension WooCommerce Subscriptions. That means customers can select a delivery date at checkout when purchasing a subscription product and define the delivery preferences for its renewals.

Requirements

↑ Back to top
  • WooCommerce 3.5+
  • WooCommerce Subscriptions 3.0+

Setup and Configuration

↑ Back to top

Once the WooCommerce Subscription plugin is active in your store, a new section called “Subscription Options” will appear under the “Shipping & Delivery” settings tab.

This section is intended for handling the delivery of the subscriptions, and its settings are the following:

Limit to billing interval

↑ Back to top

Forces the customers to select a delivery date inside the subscription’s billing interval (weekly, monthly, etc.) at checkout. Dates beyond the Next Payment date are not available in the calendar.

On order renewal

↑ Back to top

This setting controls how to proceed when calculating the delivery details of a subscription’s renewal. It allows two options:

Assign the first delivery date

It’s the default option, and it assigns the first available date for delivery starting from the “Next payment” date of the subscription.

Keep the billing interval

Unlike the previous option, this one keeps the subscription’s billing interval between delivery dates.

This option is especially useful for subscriptions whose billing interval is larger than a week. E.g., A monthly subscription.

Same weekday

↑ Back to top

This setting works in combination with the setting “On order renewal“, and it lightly modifies the calculated delivery date to adapt it to the same weekday as the previous order delivery date.

So, enabling this setting and combining it with the option “Assign the first delivery date“, will calculate the first available date that matches the same weekday as the previous order delivery date.

On the other hand, when combined with the option “keep the billing interval“, will calculate the date that keeps the subscription’s billing interval (a month, three weeks, etc.) from the previous order delivery date and matches the same weekday.

Note: The number of days between the delivery dates of two adjacent renewals may differ a few days from the subscription’s billing cycle due to the date that exactly accomplishes the interval rarely matching the same weekday as the previous order delivery date.

Setup examples

↑ Back to top

To illustrate how the settings described above may affect the delivery date of a subscription’s renewal, let’s see some examples:

Suppose we have a monthly subscription that renews on January 1st, 2023 (Sunday). The order doesn’t need any processing time (same-day delivery), and Sundays are not available for delivery.
The delivery date of the previous order was December 14th, 2022 (Wednesday).

Now, let’s see how the renewal delivery date varies for the different configurations:

1 – First delivery date

↑ Back to top

The delivery date will be January 2st, 2023 (Monday) because it’s the first date for delivery (Sundays are not available).

2 – First delivery date + Same weekday

↑ Back to top

In this case, the delivery date will be January 4th, 2023 (Wednesday) because it’s the first Wednesday starting from the first delivery date.

3 – Keep billing interval

↑ Back to top

The delivery date for this case will be exactly a month later than the delivery date of the previous renewal. So:

December 14th, 2022 + 1 month = January 14th, 2023

The assigned delivery date is a Saturday, which differs from the day of the week of the previous delivery date. To also adapt the delivery date to the same weekday, we have the last setup option.

4 – Keep billing interval + Same weekday

↑ Back to top

This is the more complex case for calculating the delivery date. What our extension does is follow the same process as in case 3. Once it calculates the date that accomplishes the subscription’s billing interval, it looks for the closest date that matches the same weekday as the previous order delivery date.

Following the example data, this date is January 11th, 2023 (Wednesday).

Note: In case this day is not available, our extension will assign the next Wednesday (January 18th, 2023).

Important: In all cases, the first delivery date is used as a fallback in case the calculated date for delivery is not available.

Checkout

↑ Back to top

At checkout, customers can select the delivery details for their order by using the delivery fields included in the form. The delivery date field displays a calendar that allows selecting a date from the current day to the number of days specified in the setting “Maximum delivery range“. For example, 60 days. Days after that limit are disabled in the calendar, and it cannot be selected.

When the order contains a subscription, and the setting “Limit to billing interval” is enabled, the number of days the customer can select in the calendar is restricted to the periodicity of the subscription. Thus, for a monthly subscription, instead of a limit of 60 days, this limit is restricted to 30 days, seven if it’s a weekly subscription.

This will prevent customers from moving the order delivery to the next renewal (don’t receive anything the first month and receive two orders the second month).

Note: If the cart contains two or more subscriptions, for example, a weekly and a monthly subscription, we will use the minimum subscription period. A week on this case.

Note: If the “Maximum delivery range” setting value is lower than the subscription billing interval. The extension will use the setting value. E.g., A yearly interval against a maximum of 30 days for delivery.

You can disable this behavior by turning off the setting “Limit to billing interval“. This is especially useful for allowing your customers to postpone their orders while on vacation. In any case, this setting never modifies the renewal date of the subscription. Just the range of available days to deliver a recurrent order.

Note: We don’t consider subscriptions with one-time shipping for this restriction.

Renewals

↑ Back to top

Every time a subscription is renewed, the extension automatically calculates the delivery details for the next order taking into consideration the subscription’s details, our plugin settings, and the customer preferences.

Manual Renewal

↑ Back to top

For manual renewals, the customer must log into your store and manually pay the order created during renewal.

This pending-payment order contains the delivery details assigned previously by the extension and will be used as the default values of the delivery fields in the checkout form. The customer is free to update them according to the available options. The process works as described in the “Checkout” section.

Early Renewal

↑ Back to top

This feature allows customers to pay a renewal before the order is created (without waiting for the next payment date). Order delivery is also compatible with this feature, and it works like any other renewal. The delivery details calculated previously for the renewal are used as the default values, and the customer can edit them in the checkout form.

Pay attention that an early renewal refers to a future order. So, the first available date for delivery in the calendar starts on the next payment date of the subscription and not on the current date. The “Maximum delivery range” setting also starts counting on this date.

E.g., Suppose we renew a weekly subscription whose next payment date is April 1, 2022, and the current date is March 28, 2022. During checkout, the available delivery dates on the calendar go from April 1, 2022, to April 7, 2022. There are no available dates between March 28, 2022, and March 31, 2022, because these dates are previous to the billing interval we are renewing.

Synchronized Renewal

↑ Back to top

WooCommerce Subscriptions allows you to synchronize the renewal date of your subscription products. You can get more info about it in this article.

Our extension calculates the delivery details for the next subscription order after the renewal process has been completed. Regardless of the renewal date, it makes the calculations based on the settings and the customer preferences at that moment.

Subscription Delivery

↑ Back to top

When customers visit the subscription details page under the “My Account > Subscriptions” section, they will see the delivery details for the next order at the end of the page. These values are generated automatically by the extension each time the subscription is renewed.

Delivery details for the next order of the subscription
Delivery details for the next order of the subscription

Additionally, a new action called “Change Delivery” will be available. This action will redirect customers to a new page to edit the subscription delivery details.

A button for changing the delivery details of the subscription
Change the delivery details of the subscription

Edit Delivery

↑ Back to top

On this page, customers can edit the delivery details for the upcoming order and define their delivery preferences.

Note: Our extension doesn’t include any functionality to make changes related to the shipping address or the shipping method of the subscriptions. This is handled by the “WooCommerce Subscriptions” extension. If you have any doubt about it. We recommend you read its documentation or contact the support team.

Note: There are some cases in which this page will not be available for a subscription:

  • The subscription has a daily billing interval.
  • The system couldn’t find a valid delivery date for the next order.
  • The merchant removes the delivery date manually.
  • The subscription status is On-hold.
  • The Checkout Options setting is set to “Display a text block” instead of a calendar.

Next order

↑ Back to top

This section contains the delivery details for the upcoming order of the subscription. Customers can modify its values before the subscription is renewed.

Edit the delivery details for the upcoming order of the subscription
Edit the delivery details for the upcoming order of the subscription

Delivery Preferences

↑ Back to top

To avoid customers the need to modify the delivery details for each order created for the subscription, they can set their preferred delivery days and time frames.

For example, if a customer doesn’t want to receive orders on Mondays, he can disable this weekday. Our extension will try to adapt the delivery details of future orders to the customer preferences always as possible.

Subscription delivery preferences
Subscription delivery preferences

Note: The customer can only set the weekdays that are enabled in the “Delivery Days” global setting and for which the shipping method of the subscription is available.

Note: If the delivery date cannot be adapted to the customer’s preferences, the first available date will be assigned.

Admin Screen

↑ Back to top

As the merchant, you can edit the delivery details for the next order anytime. You only have to edit the subscription in your store dashboard and change its values manually.

The “Next order delivery” meta box also contains a table with the customer preferences to help you to assign the best delivery details possible.

Edit subscription delivery details in the admin screen
Edit subscription delivery details in the admin screen

Delivery Notes

↑ Back to top

There are a few notes that the extension may add to a subscription:

The customer changes the delivery date

↑ Back to top

Every time the customer changes the delivery date for the next order, an internal note is added to the subscription. So, we have a log of all the changes.

Note added to the subscription after a date change by the customer

A change in the next payment date

↑ Back to top

If for any reason, the next payment date of a subscription has to be modified, the delivery details will be updated automatically if the current values are not valid. In this case, a customer note is added to the subscription.

A customer note after changing the next payment date

Note: If you don’t want that the extension sends this notification to the customer, you can update the delivery details manually at the same time that you change the next payment date (Before saving the changes).

Delivery date not found

↑ Back to top

When assigning a delivery date for the next order, if a valid date cannot be found, an internal note is added to the subscription. In this case, the delivery date is removed, and the customer cannot update the delivery preferences until a new date is assigned by the merchant.

Others

↑ Back to top

Any other change in the delivery date is up to the merchant to notify the customer. We have decided to leave this case empty to let the merchants explain the reason for the change on a more personal note.

Emails

↑ Back to top

The order emails that contain subscriptions will include additional information to the default delivery details. This info is a link to the page that allows the customer to change his subscription preferences.

An email with subscription delivery preferences

Additionally, when one of the previous notes is added to a subscription, an email notification will be sent to the merchant to keep him up to date.

An email with the new subscription delivery preferences