Automation Test Runs, Order Edit Write-Off Enhancements, Bulk Ops Update

11/5/2026, 12:00:42 AM

Introduced a new mutation, automationWorkflowTestRunStart, that launches a single test run for the latest automation version using a chosen test event, returning a run ID and user errors. In bulkOperationRunMutation, the optional clientIdentifier field now requires 10–255 characters, tightening identification constraints. All order editing mutations (add line item discount, commit, remove shipping line, set quantity, update discount) now explain that if the order contains a write‑off, the edit will automatically reduce that amount when committed. Return mutations (approve, cancel, create, process, refund) similarly note automatic write‑off adjustment when the return reduces the order total. Several sort key enums (AdjustmentsSortKeys, CashTrackingSessionTransactionsSortKeys, InventoryBinSortKeys, LocationSortKeys, MetafieldDefinitionSortKeys, TransactionSortKeys) have gained a CREATED_AT option for more flexible ordering. StoreCreditAccount.transactions query arguments were expanded, enabling filtering by created_at and clarifying the meaning of the query field. New types AutomationWorkflowTestRunStartPayload and its user error type streamline responses for the test‑run mutation.

Mutation Changes

➕ Added Mutations (1)

automationWorkflowTestRunStart

Starts one test run of the latest automation version, the latest draft or otherwise the main version, with one saved test event. Steps with side effects are stubbed, and the test event selected in the automation editor doesn't change. The returned run is accepted, not completed: read the run by its ID for the outcome.

🔄 Modified Mutations (11)

bulkOperationRunMutation

Creates and runs a bulk operation to import data asynchronously. This mutation executes a specified GraphQL mutation multiple times using input data from a JSONL file that you've uploaded to Shopify.

The operation processes each line in your JSONL file as a separate mutation execution. The operation delivers results in a JSONL file when it completes. Bulk mutation operations and bulkOperationRunQuery operations can run at the same time per shop. The number of concurrent operations that an app can run depends on the API version. For the applicable concurrency limits, refer to the bulk operations guide.

Learn more about bulk importing data.

~ Modified argument: clientIdentifier
orderEditAddLineItemDiscount

Applies a discount to a LineItem during an order edit session. The discount can be either a fixed amount or percentage value.

To modify pricing on specific line items, use this mutation after starting an order edit with the orderEditBegin mutation. The changes remain staged until you commit them with the orderEditCommit mutation.

If the order has an existing
write-off,
mutations such as this one, which reduce the order total, can reduce the written-off amount
automatically when the edit is committed and the order total before write-offs falls below the
remaining written-off amount.

Learn more about editing existing orders.

orderEditCommit

Applies staged changes from an order editing session to the original order. This finalizes all modifications made during the edit session, including changes to line items, quantities, discounts, and shipping lines.

Order editing follows a three-step workflow: start with orderEditBegin to create an editing session, apply changes using various orderEdit mutations, and then save the changes with the orderEditCommit mutation. The mutation can optionally notify the customer of changes and add staff notes for internal tracking.

You can only edit unfulfilled line items. If an edit changes the total order value, then the customer might need to pay a balance or receive a refund.

If the order has an existing
write-off,
committing an edit which reduces the order total can reduce the written-off amount automatically when
the order total before write-offs falls below the remaining written-off amount.

Learn more about editing existing orders.

orderEditRemoveShippingLine

Removes a shipping line from an existing order. If the order has an existing write-off, mutations such as this one, which reduce the order total, can reduce the written-off amount automatically when the edit is committed and the order total before write-offs falls below the remaining written-off amount. For more information on how to use the GraphQL Admin API to edit an existing order, refer to Edit existing orders.

orderEditSetQuantity

Sets the quantity of a line item on an order that's being edited. Use this mutation to increase, decrease, or remove items by adjusting their quantities.

Setting the quantity to zero effectively removes the line item from the order. The item still exists as a data structure with zero quantity. When decreasing quantities, you can optionally restock the removed items to inventory by setting the restock parameter to true.

If the order has an existing
write-off,
mutations such as this one, which reduce the order total, can reduce the written-off amount
automatically when the edit is committed and the order total before write-offs falls below the
remaining written-off amount.

Learn more about editing workflows for existing orders.

orderEditUpdateDiscount

Updates a manual line level discount on the current order edit. If the order has an existing write-off, mutations such as this one, which reduce the order total, can reduce the written-off amount automatically when the edit is committed and the order total before write-offs falls below the remaining written-off amount. For more information on how to use the GraphQL Admin API to edit an existing order, refer to Edit existing orders.

returnApproveRequest

Approves a customer's return request.
If this mutation is successful, then the Return.status field of the
approved return is set to OPEN.

If the order has an existing
write-off,
calling this mutation can reduce the written-off amount automatically when it reduces the order total
before write-offs below the remaining written-off amount.

returnCancel

Cancels a return and restores the items back to being fulfilled.
Canceling a return is only available before any work has been done
on the return (such as an inspection or refund).

If the order has an existing
write-off,
calling this mutation can reduce the written-off amount automatically when it reduces the order total
before write-offs below the remaining written-off amount.

returnCreate

Creates a return from an existing order that has at least one fulfilled
line item
that hasn't yet been refunded. If you create a return on an archived order, then the order is automatically
unarchived.

Use the returnCreate mutation when your workflow involves
approving or
declining requested returns
outside of the Shopify platform.

The returnCreate mutation performs the following actions:

  • Creates a return in the OPEN state, and assumes that the return request from the customer has already been
    approved
  • Creates a reverse fulfillment order,
    and enables you to create a reverse delivery
    for the reverse fulfillment order

If the order has an existing
write-off,
calling this mutation can reduce the written-off amount automatically when it reduces the order total
before write-offs below the remaining written-off amount.

After you've created a return, use the
return query to retrieve the
return by its ID. Learn more about providing a
return management workflow
for merchants.

returnProcess

Processes a return by confirming which items customers return and exchange, handling their disposition, and optionally issuing refunds. This mutation confirms the quantities for ReturnLineItem and ExchangeLineItem objects previously created on the Return.

For returned items, you specify how to handle them through dispositions such as restocking or disposal. The mutation creates FulfillmentOrder objects for exchange items and records all transactions in the merchant's financial reports. You can optionally issue refunds through financial transfers, apply refund duties, and refund shipping costs.

If the order has an existing
write-off,
calling this mutation can reduce the written-off amount automatically when it reduces the order total
before write-offs below the remaining written-off amount.

Learn more about processing returns.

returnRefund

Creates a refund for items being returned when the return status is OPEN or CLOSED. This mutation processes the financial aspects of a return by refunding line items, shipping costs, and duties back to the customer.

If the order has an existing
write-off,
calling this mutation can reduce the written-off amount automatically when it reduces the order total
before write-offs below the remaining written-off amount.

Type Changes

➕ Added Types (3)

🏗️AutomationWorkflowTestRunStartPayload➕ AddedOBJECT

Return type for automationWorkflowTestRunStart mutation.

Fields: automationWorkflowRunId, userErrors
🏗️AutomationWorkflowTestRunStartUserError➕ AddedOBJECT

An error that prevented an automation test run from starting.

Fields: code, field, message
📋AutomationWorkflowTestRunStartUserErrorCode➕ AddedENUM

Possible error codes that can be returned by AutomationWorkflowTestRunStartUserError.

Values: EVENT_NOT_FOUND, NOT_FOUND, OUTDATED_WORKFLOW, UNKNOWN, VALIDATION_ERROR

🔄 Modified Types (10)

🏗️AdjustmentsSortKeys🔄 Modified
➕ Enum value added: CREATED_AT
🏗️CashTrackingSession🔄 Modified
🔄 Field modified: cashTransactions
🏗️CashTrackingSessionTransactionsSortKeys🔄 Modified
➕ Enum value added: CREATED_AT
🏗️InventoryBinSortKeys🔄 Modified
➕ Enum value added: CREATED_AT
🏗️InventoryItem🔄 Modified
🔄 Field modified: inventoryBinItems
🏗️InventoryLocationItem🔄 Modified
🔄 Field modified: inventoryBinItems
🏗️Location🔄 Modified
🔄 Field modified: inventoryBins
🏗️LocationSortKeys🔄 Modified
➕ Enum value added: CREATED_AT
🏗️MetafieldDefinitionSortKeys🔄 Modified
➕ Enum value added: CREATED_AT
🏗️StoreCreditAccount🔄 Modified
🔄 Field modified: transactions