Feedback request: Adding order fulfillments to WooCommerce

Order fulfillment is a critical daily task for every ecommerce business, but WooCommerce’s current order interface can make it difficult to manage efficiently. Merchants have told us they spend hours each day trying to identify which orders need attention and managing partial fulfillments. Better visibility into order status, improved tools for processing shipments, and streamlined customer delivery updates would transform this time-consuming process.

Through your feedback, we’ve identified several critical challenges in the current fulfillment workflow:

  • Needing to quickly understand which orders require action.
  • Wanting to add tracking information directly in WooCommerce.
  • Keeping customers automatically updated about their orders.

Furthermore, there is no native support for sending multiple shipments for a single order, often forcing merchants to duplicate and modify orders to ship available items while other items are out of stock.

Introducing order fulfillments

We plan to implement fulfillments into WooCommerce core! This will create a standardized database structure for order fulfillments, enabling each order to have multiple associated fulfillment records. By storing fulfillments in their own database table, we’ll provide a consistent way for both WooCommerce core and extensions to create and manage fulfillments.

Additionally, the new fulfillments interface will bring everything together in one place. As a merchant, you’ll be able to see which orders need fulfillment at a glance and select specific items to fulfill. Each fulfillment can include tracking numbers to share with your customers.

For digital and virtual products, the system will automatically create a fulfillment when the order is placed, while physical products will require manual fulfillment. This ensures your fulfillment list only shows items that need your attention.

Orders will automatically show as Unfulfilled, Partially Fulfilled, or Fulfilled based on how many items in the order have been fulfilled. Customers can view the fulfillment status and tracking information in their account area, and receive email notifications when fulfillments occur.

This approach streamlines order management while improving transparency for both merchants and customers.

Proposed design

We are proposing to add a new fulfillment column with status label buttons that serve as an entry point to the order fulfillment side panel. This helps merchants add or view fulfillments while keeping the context of the order list, making it easier to process orders one by one without losing track of progress.

Screenshot of the WooCommerce orders list, with a new "Fulfillment" column added.

Creating fulfillments

One of the key additions in this proposal is the fulfillments sidebar. Accessed by clicking on the fulfillment status button, here is a preview of the initial state in the sidebar for different type of orders.

  1. Creating simple fulfillment
    In this example, all order items have been selected. When the merchant clicks “create fulfillment”, all of the items in the order will be marked as fulfilled. The merchant can also optionally choose to notify the customer of the fulfillment. The order fulfillment status will automatically become “Fulfilled”.
  1. Creating partial fulfillment
    In this scenario, the merchant is only fulfilling 2 of the 3 items from the order. They select the items to fulfill, then click “create fulfillment,” and the selected items are marked as fulfilled. The order fulfillment status will automatically become “Partially Fulfilled”.
  1. Shipment tracking added
    In either scenario, you can attach shipment tracking information, which will be saved with the specific fulfillment and shared with the customers in the email notification and via the account area.

Fulfilment flow — video preview

This example demonstrates an order split into two fulfillments, both with shipment tracking added.

Viewing and editing fulfillments

The following is how the fulfillments sidebar appears after 1 or more fulfillments have already been created. These examples also show what shipment tracking looks like after it has been attached to a fulfillment.

  1. Partially fulfilled (1/2)
    The first fulfillment includes 2 out of 3 order items, with the remaining item ready to be fulfilled in the second fulfillment.
  1. Fully fulfilled (2/2)
    All items in the order have been fulfilled across two fulfillments.
  1. Editing fulfillment
    Any fulfillment can be edited. I.e. the merchant may want to remove a fulfillment, or add an unfulfilled item to an existing fulfillment.

Order edit/detail page

The fulfillment status can also be managed directly from the order detail/edit page through an actionable status label that opens the fulfillments side panel.

Fulfillment status and action button added to the order edit screen.

Your feedback

We’re excited to bring fulfillments to WooCommerce core and want to ensure it works well for all merchants. We’d particularly value your feedback on:

  • Specific use cases we should support, especially any complex fulfillment workflows.
  • How you currently handle fulfillment and any concerns about migrating.
  • Which shipping providers you may need integration with.
  • Features that would make this especially valuable for your business.

Please share your thoughts in the comments below by March 1st, 2025. We plan to begin development in Q2 2025. Your input now will directly shape how we build this feature.


Keep yourself in the loop!

This field is hidden when viewing the form
This field is hidden when viewing the form
This field is hidden when viewing the form


22 responses to “Feedback request: Adding order fulfillments to WooCommerce”

  1. Sounds good, but why is this different to the existing order status – does marking the order fulfilled then change the order status to ‘completed’.

    Personally think the order status is sufficient.

    Is the order tracking going to be based on the existing extension, as a few our warehouses already interact with the API for sending tracking details back to the site.

    1. jameskemp Avatar

      does marking the order fulfilled then change the order status to ‘completed’.

      Yes, it would do.

      Personally think the order status is sufficient.

      Using the order status alone can be complicated, and many merchants end up having to add a tonne of intermediate custom statuses to accomodate their workflows.

      Having the logic separated enables at-a-glance understanding of an orders status. I.e. it’s paid for and partially fulfilled. It’s partially refunded and fully fulfilled. There are numerous combinations which would require a plethora of unique order statuses.

      This is why modern ecommerce platforms utilise statuses for fulfillment, payment, and a more general Open/Completed/Archived state.

      Is the order tracking going to be based on the existing extension, as a few our warehouses already interact with the API for sending tracking details back to the site.

      Yes, it will be based on the existing Woo-owned extension.

  2. I am surprised to see this treated outside of the standard Order Status. I know I’m going to get a lot of merchants asking “What is the difference between the order’s status and fulfilment?” or mistakes being made due to it.

  3. Looks good to me.

    Is there some sort of relationship between “Order status” and “Fulfillment status” e.g. I’d expect a not-fulfilled order cannot be completed unless you fulfill it?

    Other than this clarification, I like the fulfillment sidebar, nice touch, Will there be a “partial payments” sidebar as well, once you implement multiple payments per order? If yes, maybe only one sidebar can be visible at the same time. Just food for thought

    Well done

    1. jameskemp Avatar

      Is there some sort of relationship between “Order status” and “Fulfillment status” e.g. I’d expect a not-fulfilled order cannot be completed unless you fulfill it?

      It’s a good thought! I’ll put that to the engineers when it comes to development.

      Will there be a “partial payments” sidebar as well, once you implement multiple payments per order?

      Possibly not. To me, multiple payments assigned to an order is a behind-the-scenes kind of thing. It would be more of a “transactions” database, so could include payments, fees, refunds, etc. So each item might appear in different UIs/contexts.

      That’s just theoretically though, we haven’t officially planned any of it yet!

  4. Small business owner here selling physical goods. This is so long overdue.
    Specific use cases we should support, especially any complex fulfillment workflows:
    Apart from what you have listed above,
    1. Consider option to populate a Fulfill by date so that sorting / focus is easier.
    2. Please look at item replacement in an order with multiple items. It could be because of damage during transit OR any other reason.

    How you currently handle fulfillment and any concerns about migrating:
    1. So far almost all would have created workarounds using Custom Orders Status Manager. How would you consider this when we switch over.
    2. What about older orders which have been updated with tracking details using some plugin or the other. How would this get converted over?
    3. Consider provision for a free text field for any specific message that the store owner would want to add – to be sent to the customer – for each fulfillment.
    4. Completed IS NOT THE SAME AS Delivered. Please think this through.
    5. Cash On Delivery Orders required payment from shipping providers to be transferred to store after x days. Please think this through.

    Which shipping providers you may need integration with:
    Allow store owners to add own details of shipping providers. Keep it lean and simple and do not bloat it. Please!

    Features that would make this especially valuable for your business:
    Sorry, you cannot anything new here. All have found workaround in some way or the other. You have woken up pretty late.
    Please CLEARLY THINK through Order Status which is DIFFERENT from Order Payment which is DIFFERENT from Fulfilment. Each have a different flow.
    Please CLEARLY THINK through impact on Analytics while doing all this.

    Hopefully this will not be a long drawn project in itself.

    All the best!

  5. I would suggest adding the ability to add custom shipping companies. Let the tracking number in the URL be represented by a placeholder like %tr or other. These custom shipping companies should be selectable when fulfilling the order. This is also good when using fulfillment partners that don’t offer standard tracking. In those cases we can still include a tracking number (or reference number) along with a URL pointing to the fulfillment provider.

    1. jameskemp Avatar

      Good comment! You will already be able to add custom tracking URLs via manual input – there are designs for that but I didn’t post them here. Happy to share somewhere if you’re interested!

  6. Edith Allison Avatar
    Edith Allison

    How will the system cope with partial fulfilment of one order line? 10x Foo ordered, 5x Foo shipped? This is a common requirement in the B2B shops I work with.

    Will there also be tracking of replacements possible when customer reports an item as damaged? 10x Foo ordered, 10 shipped, 1x damaged, 1x replacement shipped.

    1. jameskemp Avatar

      How will the system cope with partial fulfilment of one order line? 10x Foo ordered, 5x Foo shipped? This is a common requirement in the B2B shops I work with.

      We only showcased single items here, but the qty label becomes a picker, so you can choose how many of the same item to fulfill.

      Will there also be tracking of replacements possible when customer reports an item as damaged? 10x Foo ordered, 10 shipped, 1x damaged, 1x replacement shipped.

      No, at least not in this first iteration. this should act as a base of essentials for third-party tools to build more complex senarios like this on top of.

      1. Edith Allison Avatar
        Edith Allison

        thank you for answering my query! i’m also curios if the new functionality will be available to shops using the legacy order storage?

        1. jameskemp Avatar

          I’m unsure, currently. There needs to be a point where we stop supporting the legacy order storage, as HPOS is far superior. Are you actively using the legacy method? If so, why haven’t you migrated?

  7. Peter Viszt Avatar
    Peter Viszt

    Hi!

    How would creating shipping labels fit into this solution? In our use case, the shop owner generates a shipping label for the order in one of these ways:

    automatically based on order status
    with bulk actions
    one by one using a custom “Shipment” column in the orders table
    inside the order details page

    After that the tracking automation(check the tracking info every hour in the background for each shipment/order) switches the order status automatically once the order is dispatched, delivered or returned. I see often store owners creating custom order statuses to handle these actions. And we have custom emails setup that are sent based on the tracking status to the customer.

    So the fulfilment starts with generating a shipping label basically. I can only vouch for the Hungarian market(i develop shipping and invoicing plugins for the local market, 5000+ stores), but i don’t think partial fulfilment ever came up to me as a feature request.

    I think the majority of users are generating shipping labels directly in Woo(see WooCommerce Shipping as an example), so the tracking number is already available after that. But i don’t think any plugins currently handle partial fulfillments, eg creating a new shipping label for the same order that already has one.

    “Notify customer once fulfilled” should be a fixed option in settings imo, i don’t see the use-case where i would change this per customers.

    1. jameskemp Avatar

      How would creating shipping labels fit into this solution?

      We’re wokring closely with WooCommerce Shipping to integrate it into this workflow. The idea for other providers will be to make this flexible enough for them to integrate directly into the fulfillments workflow.

      Shipping integrations at that level would be implemented by the third party using whatever new methods we make available to them.

      I think the majority of users are generating shipping labels directly in Woo(see WooCommerce Shipping as an example), so the tracking number is already available after that.

      Yes, so whatever those plugins create should assign that tracking number to a fulfillment – it takes the burden of managing tracking info away from third parties and creates a consistent way to do it.

      “Notify customer once fulfilled” should be a fixed option in settings imo, i don’t see the use-case where i would change this per customers.

      I believe there are scenarios where merchants might create fulfillments without needing to notify the customer, but I will see what the feedback is like on that.

  8. pacmanito Avatar

    These changes are higly welcome. Implementation seems nice as long as it works smooth. Adding tracking details from main orders screen is a good idea, less clicking and going back and forth this way.
    Separate fulfillment statuses are always a proper way to go as currently order status contains all the different information including payment, fullfillment and general order status. So maybe few tags reflecting order condition would be better and this way it would be easier to pull information.
    Will tracking numbers be available via REST API endpoint?
    And how you gonna store them in DB, in order item meta?

    1. jameskemp Avatar

      Will tracking numbers be available via REST API endpoint?

      Yes!

      And how you gonna store them in DB, in order item meta?

      Fulfillments will get their own database structure, so tracking would become fulfillment meta, most likely.

  9. My initial thought, based on countless hours of customization we’ve implemented to make our order fulfillment work the way we need, is that your efforts may require a lot of work for us in the future. We work with ShipStation and UPS, and have developed our own code to handle all of this. I’m hoping that whatever is done will be optional, and then we can move towards the new fulfillment at our convenience.

    1. jameskemp Avatar

      Yes, you could continue using whatever methods you use currently and just ignore the new fulfillments UI. Ideally those other integrations will move to new methods as well.

  10. seems the customer side is in the scope 😉

    “Keeping customers automatically updated about their orders.”
    and
    “Customers can view the fulfillment status and tracking information in their account area, and receive email notifications when fulfillments occur.”

    how do you imagine this side, so it is easy for a customer to understand what’s going on in case of partial ?
    – It’s frequent the user, after we give him a call, finally cancels the partial that cannot be delivered on time (on the first delivery). In that case, a partial fullfillment becomes a completed order, and a refund has to be done
    – The customer will ask to see the estimated delivery time for each partial also…

  11. Current workflow if customer has an order where one orderline cannot be fulfilled:

    Order: 2x foo 1x bar 1x baz
    Bar cannot be fulfilled

    order status change to pending to be able to edit
    Bar orderline set to 0 / deleted
    Order totals updated, some payment gateways requires an updated order object to their API
    Completion of order (fulfillment of rest of order)

    The zeroed / removed orderline will disappear, no history of order originally containing Bar

    Will this work include a proper «partial cancellation» workflow?

  12. You are not approving detailed inputs from merchants, is it?

  13. I would like to have my fulfillment through Sellvia

Leave a Reply

Your email address will not be published. Required fields are marked *