deliveryProfileUpdate — conditionsToUpdate and conditionsToDelete silently fail with no errors

Hi everyone,

I’ve been trying to update weight conditions on a delivery profile via the deliveryProfileUpdate GraphQL mutation and running into what appears to be a bug. Hoping someone can confirm or suggest a workaround.


The problem

When using conditionsToUpdate inside methodDefinitionsToUpdate, the mutation returns success with no userErrors, but the condition values never change. Even more strangely, the condition ID increments with every mutation call, suggesting the API is silently replacing the condition with a new one instead of updating it.

Similarly, using conditionsToDelete at the root DeliveryProfileInput level also returns success but the conditions remain untouched.


What I tried

  1. conditionsToUpdate with id, criteria, criteriaUnit, operator, field — returns success, no change

  2. conditionsToDelete at root profile level + weightConditionsToCreate — delete returns success but condition still exists, then weightConditionsToCreate fails with “Method definition cannot save more than two conditions”

  3. Confirmed the correct condition ID each time by querying before every mutation


Reproduction steps

Query current conditions:

{
  deliveryProfile(id: "gid://shopify/DeliveryProfile/YOUR_ID") {
    profileLocationGroups {
      locationGroupZones(first: 10) {
        nodes {
          methodDefinitions(first: 10) {
            nodes {
              id
              name
              methodConditions {
                id
                operator
                conditionCriteria {
                  ... on Weight {
                    value
                    unit
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}


Then attempt to update:

mutation deliveryProfileUpdate {
  deliveryProfileUpdate(
    id: "gid://shopify/DeliveryProfile/YOUR_ID"
    profile: {
      locationGroupsToUpdate: [{
        id: "gid://shopify/DeliveryLocationGroup/YOUR_ID"
        zonesToUpdate: [{
          id: "gid://shopify/DeliveryZone/YOUR_ID"
          methodDefinitionsToUpdate: [{
            id: "gid://shopify/DeliveryMethodDefinition/YOUR_ID"
            conditionsToUpdate: [{
              id: "gid://shopify/DeliveryCondition/YOUR_CONDITION_ID"
              field: TOTAL_WEIGHT
              operator: GREATER_THAN_OR_EQUAL_TO
              criteria: 100.0
              criteriaUnit: "GRAMS"
            }]
          }]
        }]
      }]
    }
  ) {
    profile {
      id
      name
    }
    userErrors {
      field
      message
    }
  }
}


Result: userErrors: [], condition ID increments, criteria value unchanged.


Expected behavior

The condition criteria value should update to 100.0 GRAMS.

Actual behavior

Condition is silently replaced with a new ID but same original values. No errors returned.


Environment

  • API version: 2026-01 (also tested on latest)

  • Mutation: deliveryProfileUpdate

  • Affected fields: conditionsToUpdate, conditionsToDelete


Has anyone successfully updated delivery conditions via the API? Is there a working workaround? Any help appreciated.

Thanks!

Hey @johnny829 , thanks for the detailed report. This is definitely weird. A successful deliveryProfileUpdate that returns no userErrors but leaves the condition unchanged is not what we’d normally expect, so happy to look into it.

A few details would help us narrow this down, though if you can share them! Are you passing the exact DeliveryMethodDefinition.id and DeliveryCondition.id values returned by GraphQL, including any query parameters on the GIDs, without parsing or normalizing them first? Is the affected profile merchant managed or app managed, and has it ever been edited in Shopify Admin? Also, has that shipping option ever used multiple tiered rates or a free shipping threshold? I just wanted to confirm this, since we did update delivery profile write functionality, so wanted to see if this is related: New APIs to read and write shipping options in delivery profile - Shopify developer changelog

If you can, share a complete failing example with the exact mutation, variables, raw response, API version, shop, timestamp, and x-request-id from the response headers that would be super helpful as well. Hope to hear from you soon - happy to look into this for sure.