Practical ways to “bulk-duplicate” orders in the Shopify Admin?

Hi all,
My client wants to select multiple orders in the Admin and duplicate them in bulk. The Admin currently allows single duplication via Orders > More actions > Duplicate, but I can’t find an official way to perform this for multiple selected orders.

Context/constraints:

  • This is a recurring monthly workflow.

  • Many customers pay by bank transfer (manual payment), not only by credit card.

  • Store plan: Basic.

What I’m considering

  1. Build it with the Admin API (GraphQL)

    • Fetch original orders → create Draft Orders (draftOrderCreate) replicating items, customer/shipping info, discounts, notes/tags where possible → optionally draftOrderInvoiceSend / draftOrderComplete.

    • Concern: Protected customer data (PII) on a Basic plan—what scopes/approvals are needed to copy names/addresses, and is approval realistic?

  2. CSV export/import – not preferred (client wants to stay inside the Admin UI).

  3. Subscription apps – not suitable (the business relies heavily on manual bank transfers).

Questions

A. Admin bulk action:
Can an Admin UI Extension/Action add a custom bulk action to the Orders index that passes selected IDs to an embedded app, which then creates Draft Orders in bulk? Is this supported for Orders, not just Products/Customers?

B. PII access on Basic:
If we create a Partner-created app with proper scopes (e.g., read_customers, read_orders, write_draft_orders) and obtain Protected customer data access, can we legally/technically copy customer name/address to new Draft Orders on a Basic plan?
If approval is denied, which fields would be redacted—making a faithful duplicate impossible?

C. Fidelity limits:
What parts of an order can be reproduced reliably via API?

  • Shipping lines (copy title/price as is?)

  • Discounts (order-level vs line-level), fees, notes, tags, metafields

  • Inventory/Tax discrepancies between the original order and the new draft

  • Manual payments using Payment Terms + sending invoices from Drafts—best practice?

D. Alternatives / Best practices:

  • Any officially recommended pattern to “bulk copy orders to drafts”?

Proposed architecture:

  • Embedded app adds a bulk action to Orders index → passes selected IDs → server loops draftOrderCreate.

  • For large selections, use GraphQL Bulk Operations to fetch source data efficiently.

  • For bank transfers, attach Payment Terms, then draftOrderInvoiceSend.

Any guidance on feasibility, required approvals, and gotchas would be greatly appreciated. Thanks!

I’ve decided to try implementing the workflow using draftOrderDuplicate.
Also, I confirmed that accessing PII is possible when using a Custom App.
I’ll proceed with testing this approach, so I’ll close this thread for now.

Glad you found a solution for this and thanks for posting it here :slight_smile: