SEO Guide · 2026
Shopify Multi-Location Inventory and AI Agents: What Bots Actually See
Shopify merchants with multiple fulfillment locations often discover that AI shopping agents show their products as "out of stock" even when stock exists. The root cause is how Shopify aggregates multi-location inventory into the single binary signal that AI agents read — and it is fixable once you understand the model.
available: true/false boolean per variant in /products.json and JSON-LD. This signal aggregates inventory across all online-enabled fulfillment locations only. Stock at a location not enabled for online sales = available: false to AI agents. Fix: enable the correct location for online sales fulfillment in Shopify Settings. Availability is binary — AI agents cannot see per-location stock counts.
How Shopify determines availability for AI agents
AI shopping agents (GPTBot, PerplexityBot, Googlebot-Shopping) rely on two publicly accessible availability signals from Shopify:
availablein/products.json: A boolean per variant.trueif purchasable online,falseif not.offers.availabilityin Product JSON-LD: Eitherhttps://schema.org/InStockorhttps://schema.org/OutOfStock. Derived from the same underlying variant availability state.
Shopify sets available: true for a variant when all of these conditions are met:
- The variant has inventory tracking enabled AND quantity > 0 at one or more online-enabled locations, OR inventory tracking is disabled (unlimited stock)
- OR "Continue selling when out of stock" is enabled for the variant
- The variant is not archived or deleted
- The product is published to the Online Store sales channel
The multi-location availability trap
The trap that catches merchants: Shopify counts inventory only at locations enabled for online sales fulfillment. If you have stock at a location that is not enabled for online sales — such as a retail store, a returns processing center, or a 3PL that hasn't been configured for online fulfillment — that stock is invisible to the availability calculation.
| Location | Online sales enabled | Stock | Contribution to availability |
|---|---|---|---|
| Main Warehouse (LA) | Yes | 0 units | 0 — does not make variant available |
| Secondary Warehouse (NY) | No | 45 units | 0 — ignored entirely by availability calc |
| Retail Store (Chicago) | No | 12 units | 0 — ignored entirely by availability calc |
| AI agent sees: | available: false → OutOfStock — even though 57 units physically exist | ||
How to diagnose phantom out-of-stock in multi-location stores
Check whether your locations are correctly configured for online sales:
# Step 1: Check which locations Shopify counts as available for a variant
# via Admin API (requires authentication):
curl -H "X-Shopify-Access-Token: {token}" \
"https://{store}.myshopify.com/admin/api/2024-01/inventory_levels.json?inventory_item_ids={id}"
# The response shows quantity_available per location_id
# Cross-reference with locations that have "active: true" for online fulfillment
For stores without Admin API access, the quickest manual check:
- In Shopify admin, go to Settings → Shipping and delivery → Shipping
- Under "Fulfillment locations", verify which locations have online sales enabled
- Go to the specific product → Inventory tab → check which locations show available stock
- If stock exists only at non-online-enabled locations, enable online fulfillment for the correct location
What AI agents cannot see: the information gap
Even a perfectly configured multi-location store has information that AI agents cannot access:
| Signal | AI agent visibility | Workaround |
|---|---|---|
| Per-location stock counts | Not visible | Not possible via public endpoints — binary available/unavailable is the only exposed signal |
| Expected restock date | Not visible | Add a backOrderDeliveryLeadTime or custom availability string in JSON-LD using BackOrder or PreOrder schema values |
| Ship-from-store availability | Not visible | Enable retail locations for online sales in Shopify if ship-from-store is active |
| International availability (Shopify Markets) | Partially visible | Shopify Markets publishes per-market subdomains with market-specific availability; use hreflang + market-specific sitemaps for AI agents |
| Low stock warnings (e.g., "only 3 left") | Not visible | Use JSON-LD offers.inventoryLevel with a QuantitativeValue object if critical for your use case |
Using BackOrder and PreOrder availability in JSON-LD
If a variant is out of stock but available for backorder, you can improve AI agent accuracy with Schema.org availability types beyond the binary InStock/OutOfStock:
// Instead of OutOfStock for a backorder-eligible variant:
{
"@type": "Offer",
"availability": "https://schema.org/BackOrder",
"availabilityStarts": "2026-07-15" // Expected restock date
}
// For pre-order products not yet released:
{
"@type": "Offer",
"availability": "https://schema.org/PreOrder",
"availabilityStarts": "2026-08-01" // Release date
}
Shopify's default themes do not implement BackOrder or PreOrder — you must add this to the theme's JSON-LD Liquid snippet manually, gated on a metafield like custom.availability_status.
Shopify Markets and international AI agent indexing
Shopify Markets creates separate storefront domains or subfolders per market (e.g., youstore.com/en-gb/). Each market can have different product availability (some products restricted to certain markets) and different pricing. AI agents respect hreflang signals to understand market structure, but only index markets they can reach via robots.txt and sitemap:
- Ensure each market's sitemap is linked from
/robots.txtas aSitemap:directive - Products available in some markets but not others should use the per-market availability in their market's JSON-LD output — Shopify Markets handles this automatically if you use Shopify's native storefront rendering
- A product unavailable in a market due to shipping restrictions should have
availability: OutOfStockin that market's JSON-LD, not be missing from the sitemap entirely
FAQ
Which inventory location does Shopify use for the 'available' field in products.json?
Shopify's available boolean in /products.json aggregates inventory across all active locations where online sales fulfillment is enabled. A variant is available: true if total quantity across all online-enabled locations is > 0, or if "continue selling when out of stock" is on. Stock at locations not enabled for online sales is ignored completely — even if physical stock exists there.
How does multi-location inventory affect JSON-LD availability for AI agents?
Shopify themes derive the availability value in Product JSON-LD from the same variant.available boolean used in /products.json — which aggregates across all online-enabled locations only. The JSON-LD is location-agnostic: it cannot express "in stock at warehouse but out of stock at retail". If you have stock at a fulfillment center not enabled for online sales, your product appears as OutOfStock to AI agents. Fix: enable the relevant location for online sales in Settings → Shipping and delivery.
Can AI agents see per-location inventory levels for Shopify stores?
No. AI shopping agents read publicly accessible signals: /products.json (single aggregate available boolean per variant) and product page JSON-LD (single availability value). Per-location inventory is only available via authenticated Shopify Admin API or Storefront API with a token. No public endpoint exposes per-location stock counts, so AI agents cannot distinguish between stock at your LA warehouse vs. your NY warehouse.
Why does my Shopify product show 'out of stock' to AI agents when I have inventory?
Most common causes: (1) Variant stock is tracked at a location not enabled for online sales — enable the location in Settings → Shipping and delivery. (2) Variant has inventory tracking enabled but shows 0 at all online-enabled locations. (3) The theme's JSON-LD outputs "OutOfStock" before checking the "continue selling when out of stock" setting. (4) Cloudflare or a CDN is serving a cached page from when the variant was genuinely out of stock — purge the page cache after restocking.
Check if your inventory signals are reaching AI agents
CatalogScan checks availability accuracy, JSON-LD completeness, and GTIN coverage across your full catalog — not just one product URL.
Run the free scan →