From shopify-admin-skills
Transfers inventory quantities between Shopify locations by decrementing source and incrementing destination via inventoryAdjustQuantities mutation. Validates availability, supports dry runs for safe rebalancing.
npx claudepluginhub 40rty-ai/shopify-admin-skills --plugin shopify-admin-skillsThis skill uses the workspace's default tool permissions.
Transfers a specified quantity of inventory from a source location to a destination location using paired inventory adjustments (decrement source, increment destination). Used for inter-warehouse rebalancing, pre-positioning stock before a sale, or redistributing inventory after a location change. Replaces manual inventory transfer in Shopify Admin.
Applies inventory quantity adjustments to specific Shopify product variants at locations after cycle counts, 3PL return batches, or sync discrepancy corrections. Supports dry runs and audit reasons.
Manages Wix Stores inventory via REST API: query all items, retrieve product stock, update quantities for products and variants. Enables ABC analysis patterns and slow-mover detection.
Automates Shopify operations for products, orders, customers, inventory, and collections via Rube MCP Composio toolkit. Requires active Shopify connection and tool schema search.
Share bugs, ideas, or general feedback.
Transfers a specified quantity of inventory from a source location to a destination location using paired inventory adjustments (decrement source, increment destination). Used for inter-warehouse rebalancing, pre-positioning stock before a sale, or redistributing inventory after a location change. Replaces manual inventory transfer in Shopify Admin.
shopify store auth --store <domain> --scopes read_products,write_inventory,read_inventoryread_products, read_inventory, write_inventory| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| store | string | yes | — | Store domain (e.g., mystore.myshopify.com) |
| source_location_id | string | yes | — | GID of the location to move stock FROM |
| destination_location_id | string | yes | — | GID of the location to move stock TO |
| transfers | array | yes | — | List of {sku, quantity} objects to transfer |
| dry_run | bool | no | true | Preview adjustments without executing mutations |
| format | string | no | human | Output format: human or json |
⚠️
inventoryAdjustQuantitiesdirectly modifies inventory levels. Decrementing the source below zero is possible if the quantity exceeds available stock — the skill will warn but Shopify does not block negative adjustments. Run withdry_run: trueto verify available quantities at the source before committing. This does NOT create a transfer order record in Shopify; it is a direct adjustment.
OPERATION: locations — query
Inputs: first: 50
Expected output: All locations with id, name — validate source and destination IDs exist
OPERATION: inventoryItems — query
Inputs: Batch lookup by SKU to get inventoryItem.id for each transfer SKU
Expected output: Inventory items with current quantities at source location
Validate: for each SKU, confirm available >= quantity at source. Warn if not but proceed if dry_run: false
OPERATION: inventoryAdjustQuantities — mutation
Inputs: Two changes per SKU: { inventoryItemId, locationId: source, delta: -quantity, reason: "correction" } and { inventoryItemId, locationId: destination, delta: +quantity, reason: "correction" }
Expected output: inventoryAdjustmentGroup { changes { delta, location } }, userErrors
# locations:query — validated against api_version 2025-01
query ActiveLocations {
locations(first: 50, includeInactive: false) {
edges {
node {
id
name
isActive
fulfillsOnlineOrders
}
}
}
}
# inventoryItems:query — validated against api_version 2025-01
query InventoryLevelsAtLocation($ids: [ID!]!) {
nodes(ids: $ids) {
... on InventoryItem {
id
sku
inventoryLevels(first: 20) {
edges {
node {
location {
id
name
}
quantities(names: ["available", "on_hand"]) {
name
quantity
}
}
}
}
}
}
}
# inventoryAdjustQuantities:mutation — validated against api_version 2025-01
mutation InventoryAdjustQuantities($input: InventoryAdjustQuantitiesInput!) {
inventoryAdjustQuantities(input: $input) {
inventoryAdjustmentGroup {
createdAt
reason
changes {
delta
quantityAfterChange
item {
id
sku
}
location {
id
name
}
}
}
userErrors {
field
message
}
}
}
Claude MUST emit the following output at each stage. This is mandatory.
On start, emit:
╔══════════════════════════════════════════════╗
║ SKILL: Inventory Transfer Between Locations ║
║ Store: <store domain> ║
║ Started: <YYYY-MM-DD HH:MM UTC> ║
╚══════════════════════════════════════════════╝
After each step, emit:
[N/TOTAL] <QUERY|MUTATION> <OperationName>
→ Params: <brief summary of key inputs>
→ Result: <count or outcome>
If dry_run: true, prefix every mutation step with [DRY RUN] and do not execute it.
On completion, emit:
For format: human (default):
══════════════════════════════════════════════
OUTCOME SUMMARY
SKUs transferred: <n>
Total units moved: <n>
Warnings (low stock): <n>
Errors: <n>
Output: inventory_transfer_<date>.csv
══════════════════════════════════════════════
For format: json, emit:
{
"skill": "inventory-transfer-between-locations",
"store": "<domain>",
"started_at": "<ISO8601>",
"dry_run": true,
"source_location": "<name>",
"destination_location": "<name>",
"outcome": {
"skus_transferred": 0,
"units_moved": 0,
"warnings": 0,
"errors": 0,
"output_file": "inventory_transfer_<date>.csv"
}
}
CSV file inventory_transfer_<YYYY-MM-DD>.csv with columns:
sku, product_title, inventory_item_id, source_location, destination_location, quantity_transferred, source_qty_before, source_qty_after, destination_qty_before, destination_qty_after
| Error | Cause | Recovery |
|---|---|---|
THROTTLED | API rate limit exceeded | Wait 2 seconds, retry up to 3 times |
| SKU not found | SKU not in catalog | Log warning, skip transfer for that SKU |
userErrors on adjustment | Location not stocking item | Log error, skip SKU, continue |
| Quantity would go negative | Transferring more than available | Log warning; abort SKU if dry_run: false |
dry_run: true first — the skill verifies available quantities and shows exactly what will change.multi-location-inventory-audit to identify which locations have excess stock before deciding transfer quantities.