Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
40rty-ai avatar

Shopify Admin Multi Location Inventory Audit

  • 7 installs
  • 173 repo stars
  • Updated June 26, 2026
  • 40rty-ai/shopify-admin-skills

shopify-admin-multi-location-inventory-audit is a read-only Claude Code skill that flags Shopify variants with negative Available or Committed exceeding On Hand across active locations as inventory sync drift.

About

This Claude Code skill audits inventory levels across all active Shopify locations and flags variants where Available quantity is negative or Committed exceeds On Hand, signals of inventory sync drift. Operators use it to catch discrepancies caused by 3PL delays, WMS deduction stacking, or multi-store sync issues. It is read-only and replaces manual reconciliation spreadsheets and per-location navigation.

  • Audits inventory across all active locations for sync drift
  • Flags variants where Available is negative or Committed exceeds On Hand
  • Read-only; replaces manual inventory reconciliation spreadsheets

Shopify Admin Multi Location Inventory Audit by the numbers

  • 7 all-time installs (skills.sh)
  • Ranked #1,583 of 2,064 Data Science & ML skills by installs in the Skillselion catalog
  • Data as of Aug 1, 2026 (Skillselion catalog sync)
At a glance

shopify-admin-multi-location-inventory-audit capabilities & compatibility

Free; needs read_products, read_inventory, and read_locations scopes on a Shopify CLI session.

Capabilities
inventory audit · sync drift detection · multi location reconciliation
Use cases
data analysis
Pricing
Free
From the docs

What shopify-admin-multi-location-inventory-audit says it does

Audit inventory levels across all active locations, flagging variants where Available quantity is negative or Committed exceeds On Hand — a signal of inventory sync drift.
SKILL.md
Replaces manual inventory reconciliation spreadsheets and the need to navigate each location separately in the Shopify admin.
SKILL.md
npx skills add https://github.com/40rty-ai/shopify-admin-skills --skill shopify-admin-multi-location-inventory-audit

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs7
repo stars173
Last updatedJune 26, 2026
Repository40rty-ai/shopify-admin-skills

What it does

Flag Shopify inventory sync drift (negative Available, Committed over On Hand) across locations.

Who is it for?

Detecting inventory sync drift across Shopify locations before it causes overselling.

Skip if: Correcting the drift; use the inventory-adjustment skill for that.

When should I use this skill?

You suspect committed counts have drifted from physical stock across locations.

What you get

A list of variants flagged for negative Available or Committed exceeding On Hand, per location.

  • Per-location list of variants flagged for negative Available or Committed exceeding On Hand

By the numbers

  • 2 drift checks (negative available, committed > on_hand)
  • 2-step workflow (locations query + inventoryItems/inventoryLevels query)

Files

SKILL.mdMarkdownGitHub ↗

Purpose

Surfaces inventory sync discrepancies across locations — specifically variants where available is negative or committed > on_hand, which indicate drift between Shopify's committed counter and actual physical stock. Common causes: 3PL delays posting returns, WMS deductions stacking with Shopify's committed count, or multi-store sync issues. Read-only — no mutations. Replaces manual inventory reconciliation spreadsheets and the need to navigate each location separately in the Shopify admin.

Prerequisites

  • shopify auth login --store <domain>
  • API scopes: read_products, read_inventory, read_locations

Parameters

ParameterTypeRequiredDefaultDescription
storestringyesStore domain (e.g., mystore.myshopify.com)
formatstringnohumanOutput format: human or json
dry_runboolnofalsePreview operations without executing mutations
location_idsarraynoSpecific location GIDs to audit (default: all active locations)
flag_negative_availableboolnotrueFlag variants where available < 0
flag_committed_exceeds_onhandboolnotrueFlag variants where committed > on_hand
include_untrackedboolnofalseInclude variants with inventory tracking disabled

Workflow Steps

1. OPERATION: locations — query Inputs: first: 50, query: "is_active:true" Expected output: List of active location IDs and names; filter by location_ids parameter if provided

2. OPERATION: inventoryItems — query (via location.inventoryLevels) Inputs: Per location: fetch inventory levels with available, committed, onHand quantities per variant Expected output: Per-location inventory matrix; compute discrepancies; collect flagged variants

GraphQL Operations

# locations:query — validated against api_version 2025-01
query ActiveLocations($first: Int!) {
  locations(first: $first, query: "is_active:true") {
    edges {
      node {
        id
        name
        isActive
        inventoryLevels(first: 250) {
          edges {
            node {
              id
              available
              item {
                id
                sku
                tracked
                variant {
                  id
                  displayName
                  product {
                    id
                    title
                  }
                }
              }
            }
          }
          pageInfo {
            hasNextPage
            endCursor
          }
        }
      }
    }
  }
}
# inventoryItems:query — validated against api_version 2025-01
query InventoryItemLevels($id: ID!, $after: String) {
  location(id: $id) {
    id
    name
    inventoryLevels(first: 250, after: $after) {
      edges {
        node {
          id
          available
          item {
            id
            sku
            tracked
            inventoryLevel(locationId: $id) {
              available
              incoming
            }
            variant {
              id
              displayName
              inventoryQuantity
              product {
                id
                title
              }
            }
          }
        }
      }
      pageInfo {
        hasNextPage
        endCursor
      }
    }
  }
}

Note: inventoryItems:query in the frontmatter represents querying inventory item data via location inventory levels. The Shopify Admin API surfaces inventory per location through location.inventoryLevels.

Session Tracking

Claude MUST emit the following output at each stage. This is mandatory.

On start, emit:

╔══════════════════════════════════════════════╗
║  SKILL: multi-location-inventory-audit       ║
║  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>

On completion, emit:

For format: human (default):

══════════════════════════════════════════════
OUTCOME SUMMARY
  Locations audited:          <n>
  Variants scanned:           <n>
  Discrepancies found:        <n>
  Negative available:         <n>
  Committed > On Hand:        <n>
  Errors:                     0
  Output:                     inventory-audit-<date>.csv
══════════════════════════════════════════════

For format: json, emit:

{
  "skill": "multi-location-inventory-audit",
  "store": "<domain>",
  "started_at": "<ISO8601>",
  "completed_at": "<ISO8601>",
  "dry_run": false,
  "steps": [
    { "step": 1, "operation": "ActiveLocations", "type": "query", "params_summary": "first: 50, is_active: true", "result_summary": "<n> locations", "skipped": false },
    { "step": 2, "operation": "InventoryItemLevels", "type": "query", "params_summary": "per location, first: 250", "result_summary": "<n> variants scanned", "skipped": false }
  ],
  "outcome": {
    "locations_audited": 0,
    "variants_scanned": 0,
    "discrepancies_found": 0,
    "negative_available_count": 0,
    "committed_exceeds_onhand_count": 0,
    "errors": 0,
    "output_file": "inventory-audit-<date>.csv"
  }
}

Output Format

CSV file inventory-audit-<YYYY-MM-DD>.csv with columns: location_name, product_title, variant_title, sku, available, flag.

Also displays an inline summary table:

LocationVariants ScannedDiscrepanciesNegative AvailableCommitted > On Hand

Error Handling

ErrorCauseRecovery
No locations returnedNo active locations foundVerify at least one active location in Shopify admin
inventoryLevels empty for a locationLocation has no inventory assignedExpected for fulfillment-only or virtual locations
Rate limit (429)Large inventory + multiple locationsReduce page size per location to 100
item.tracked: false for all variantsStore uses untracked inventoryEnable tracking or set include_untracked: true

Best Practices

1. Run this audit weekly — inventory drift accumulates gradually and is easiest to fix before it compounds. 2. A negative available value does not always indicate a real problem — it can occur legitimately during flash sales. Cross-reference with your order volume before making manual corrections. 3. Use the CSV output with the inventory-adjustment skill to apply corrections immediately after the audit identifies discrepancies. 4. Run audit before and after a 3PL returns batch posts to measure whether return inventory is being correctly credited. 5. Filter to a single location_id for targeted audits (e.g., just your main warehouse) to reduce API calls on large catalogs.

Related skills

FAQ

What does it flag?

Variants where available is negative or where committed exceeds on_hand, which signal drift between Shopify's committed counter and physical stock.

Does it fix anything?

No. It is read-only; it surfaces discrepancies for the inventory-adjustment skill to correct.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.