Milo Split Shipping
Different billing and shipping schedules on the same subscription: charge annually, ship monthly, with $0 shipment orders created automatically for your fulfillment team.
Installation
- Install and activate the free Milo Subscriptions plugin (WooCommerce is required).
- Upload and activate Milo Split Shipping (Plugins → Add New → Upload).
- Enter your license key under Subscriptions → Licenses to enable updates.
Configuration
Under Subscriptions → Settings → Checkout & Payments → Split Shipping:
| Setting | Description |
|---|---|
| Enable split shipping schedules | On/off switch (on by default). Shows the split shipping fields on subscription products. |
Product setup
Edit a subscription product and find the Split Shipping Schedule section in the subscription product data panel:
| Field | Description |
|---|---|
| Separate shipping schedule | Checkbox. Turns on independent shipping for this product. |
| Ship every | Interval, 1 to 6. |
| Shipping period | Day(s), Week(s), Month(s), or Year(s). |
Example: a product billed yearly with “Ship every 1 Month(s)” charges once a year and creates a shipment order every month.
How shipments work between billings
When a customer buys a split-shipping product, the schedule is copied from the product onto the subscription and the first shipment is scheduled one shipping interval after the subscription start date. From there, every time a shipment fires the next one is scheduled one interval later, independent of the billing cycle.
Each shipment is a regular WooCommerce order:
- Status Processing, total $0.00, so it lands straight in your fulfillment queue without charging anyone.
- Line items and quantities are copied from the subscription (at $0) as a packing reference, along with the shipping method and the customer’s billing and shipping addresses.
- The order is linked back to the subscription, and a “Shipment order #X created” note is added to the subscription.
Because shipping is handled by these shipment orders, renewal (billing) orders have their shipping items removed automatically, with an order note explaining why. Shipments run on Action Scheduler (the milo_split_shipping_create_shipment action, visible under Tools → Scheduled Actions).
Status handling
- On hold, cancelled, or expired: the pending shipment action is removed; no more shipment orders are created.
- Reactivated: shipping resumes. If the stored next-shipment date is already in the past, it is recalculated from the current date.
- Pending cancel: shipments already due still fire until the subscription actually ends; nothing is scheduled past the end date.
What customers and admins see
- My Account → Subscriptions → View: a “Shipping Schedule” table (ships every, next shipment date while active) and a “Shipment Orders” history table listing the last 10 shipment orders with date and status.
- Admin subscription detail: a “Shipping Schedule” sidebar panel with the cadence and the next shipment date.
Email notification
Each time a shipment order is created, the customer receives a Shipment Order Created email with the order number, item list, and shipping address. Customize or disable it under WooCommerce → Settings → Emails; the template can be overridden in your theme like any WooCommerce email.
FAQ
Does the shipment order charge the customer? No. Shipment orders are always $0; payment only happens on the billing schedule’s renewal orders.
What if a product has multiple subscription items? The schedule is taken from the first line item that has split shipping enabled.
Can I trigger a shipment manually? Yes, run the pending milo_split_shipping_create_shipment action from Tools → Scheduled Actions; the next shipment is rescheduled automatically.
For developers
The milo_split_shipping_shipment_created action fires after each shipment order is created, receiving the shipment order and the subscription. Shipment orders carry the _milo_is_shipment_order meta and _milo_shipment_for_subscription (the subscription ID), handy for filtering them in exports or fulfillment integrations.
Billing modes
Requires WooCommerce; not available in standalone (Stripe-driven) mode.
Did this page miss something?
Tell us and we rewrite it, usually the same day.