Split order into each product

Hello,

I’m building a Shopify store where, by business requirement, every single product (or unit of a product) in a customer’s cart must become its own Shopify order —complete with its own order number, fulfillment record, tracking link, invoice email, etc.

1. Current behavior

  • When a customer adds two T-shirts (or any two distinct products) and checks out, Shopify creates one order (e.g. #1001 ) containing a single line-item with quantity: 2 (or two separate line items if they’re different SKUs).
  • All fulfillment, tracking, notifications, and reporting are grouped under that one order number.

2. Desired behavior

  • If the cart contains 2 × T-shirt , I need Shopify to end up with two separate orders :
    • Order #1002 → 1 × T-shirt
    • Order #1003 → 1 × T-shirt
  • Each order must have its own:
    • Order number
    • Fulfillment record/tracking
    • Invoice/confirmation email
    • Reporting metrics

How to achieve this ?
Does Shopify currently offer any native setting or Checkout extension point to split a checkout into multiple orders automatically?

1 Like

Hey @Sivakumar :waving_hand: - right now, there’s not a native way of splitting a checkout into two separate orders automatically (either through the Storefront/Admin APIs directly or through a checkout extension), but it’s definitely possible to build functionality that could do this after an order is created.

For example, you could set up functionality on your end to listen for an orders/create webhook that triggers when the initial order is created, then programatically create two new orders (using the orderCreate mutation).

You could then archive the original order, making the newly created ones the “real” orders. This would allow you to have separate order numbers, fulfillment tracking/invoices and reporting.

One thing to note though is that this may make tracking product inventory a little difficult, unless you also removed the products from the original orders when you “split” them into separate ones (using the OrderEdit mutation here).

Hope this helps - let me know if I can clarify anything!