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!

Yeah, the delivery profile API is notoriously buggy with nested condition updates. I ran into this exact silent failure a while back. The condition ID incrementing means it’s doing a weird delete/recreate under the hood but failing to map your new values.

The only reliable workaround I’ve found is to stop trying to update the condition itself. Instead, delete the entire method definition using methodDefinitionsToDelete (inside zonesToUpdate) and recreate it from scratch in the same mutation using methodDefinitionsToCreate with your new weight conditions.

It’s annoying since you have to pass the rate name and price data again, but it works consistently.

Thanks for the detailed workaround—that’s super helpful and confirms what I suspected about the buggy internals.Appreciate you sharing it! Still, I’d really love to see an official Shopify dev or staff chime in and properly fix this nested condition update issue—it’s been flaky for way too long.

Use the dev forums for api issues