Insights, perspectives, and stories on software, business, and innovation.
In the world of APIs, an **idempotent** operation is one that can be performed multiple times without changing the result beyond the initial application.
With the `inventorySetQuantities` or `inventoryAdjustQuantities` mutations, providing an `idempotencyKey` ensures that if you send the exact same request twice (due to a timeout or retry logic), Shopify recognizes the key and ignores the second attempt, returning the cached response from the first successful call.
---To use idempotency, you simply include the `idempotencyKey` argument in your mutation. This key should be a unique string (like a UUID) generated by your system for that specific business action.
GraphQL
mutation adjustInventoryWithIdempotency($input: InventoryAdjustQuantitiesInput!) {
inventoryAdjustQuantities(input: $input) @idempotent(key: "unique-uuid-128934") {
inventoryLevels {
id
quantities(names: ["available"]) {
name
quantity
}
}
userErrors {
field
message
}
}
}
The Variables Object
{
"input": {
"reason": "restock",
"name": "available",
"changes": [
{
"delta": 10,
"inventoryItemId": "gid://shopify/InventoryItem/12345678",
"locationId": "gid://shopify/Location/87654321"
}
]
}
}
• Prevent Double-Counting: Essential for high-volume flash sales where every unit counts.
• Reliable Retries: You can safely wrap your API calls in a `while` loop or a background job queue that retries on 5xx errors.
• Consistency:/ Keeps your Warehouse Management System (WMS) and Shopify perfectly in sync, even when the internet is being flaky.
“I've worked with Rob and his team off and on for many years and have always found them to be professional, knowledgeable and best of all they listen to their clients and deliver what is required.”
If clunky systems are slowing you down, let’s talk. No sales patter. No corporate waffle. Just a straightforward conversation about fixing the stuff that wastes your time.
Two normal blokes who happen to be good at untangling messy systems. We’ll talk to you like humans, not consultants, and help you find the simplest way forward.
We’ll reply within one working day. No spam. No waffle.