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
-
Build it with the Admin API (GraphQL)
-
Fetch original orders → create Draft Orders (
draftOrderCreate) replicating items, customer/shipping info, discounts, notes/tags where possible → optionallydraftOrderInvoiceSend/draftOrderComplete. -
Concern: Protected customer data (PII) on a Basic plan—what scopes/approvals are needed to copy names/addresses, and is approval realistic?
-
-
CSV export/import – not preferred (client wants to stay inside the Admin UI).
-
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!