Pet Shopify stores can't be found by buyers filtering on shipping state. Here's the fix.
Editorial Team, StoreMend Audit. Updated 2026-06-30.
A buyer in California asks ChatGPT "raw dog food monthly delivery" and gets a list of 5 brands. The buyer adds-to-cart, reaches checkout, sees "does not ship to your state", and abandons.
53 of 87 Pet Shopify stores audited ship Product schema without shipping-zone declarations, and 57 of 87 are gated from AI search engines at the robots.txt layer. That is 60.9% of the Pet cohort missing the structural-data fields a shipping-state filter would read against, and roughly two-thirds locked out of AI shopping entirely.
The fix is small. Most stores need a 30-minute theme edit plus a 15-minute robots.txt change. Stores running a schema app finish in under an hour.
Skip the manual diagnostic. The StoreMend audit runs the structural-data check (and 11 others) against a live Pet store in 60 seconds. $39 one-time. 30-day no-questions refund. Run an audit at storemend.com.
What this means for your store
Pet stores lose buyers at three structural-data gaps: shipping-zone declarations on Product schema, AI-crawler access at robots.txt, and (for vet-affiliated brands) LocalBusiness or VeterinaryCare schema. Each is a separate fix. Each costs real revenue. None of them show up in PageSpeed Insights or Google Search Console.
If your store ships food, supplements, treats, live animals, or anything else with state-by-state restrictions, the highest-cost gap is shipping-zone declarations. A buyer asking ChatGPT, Perplexity, or Google for a recommendation gets routed to your PDP. The PDP loads. The buyer adds-to-cart. Then checkout reveals the state restriction and the buyer abandons. The store paid the AI-search citation cost and lost the conversion at the last step.
If your store has a vet-credentialed founder, a clinical-affiliation story, or a physical clinic, the second gap is schema type. Generic Product schema does not carry the credential. VeterinaryCare, MedicalBusiness, or Service-with-ServiceArea types do. Almost no Pet stores in the sample declare them.
The third gap is the cheapest to close and the largest in scope. Robots.txt directives for GPTBot, ClaudeBot, PerplexityBot, Google-Extended, and OAI-SearchBot decide whether AI search engines can read your store at all. 57 of 87 Pet stores audited block at least one of these. The fix is a 15-minute robots.txt edit.
What structural data actually means
Structural data is the machine-readable layer underneath the visible page. Three pieces matter for Pet stores.
Product schema with shipping zones. Inside the Product JSON-LD block on a product detail page, the offers object can carry eligibleRegion and ineligibleRegion properties. These take ISO 3166 country or subdivision codes. They tell any system reading the page (Google, ChatGPT, Perplexity, a price-comparison site) where the product can and cannot ship.
LocalBusiness, VeterinaryCare, or MedicalBusiness schema.A JSON-LD block on the homepage (or a dedicated about page) declaring the business type, address, hours, and credentials. For a Pet brand with a physical footprint or clinical affiliation, this is the schema layer the Local Pack and AI search engines index for "near me" and "vet-formulated" queries.
Robots.txt and llms.txt. Robots.txt at the root of your domain tells crawlers what they can read. AI-search crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, OAI-SearchBot) each need an explicit allow. Llms.txt is a newer companion file that summarizes the store catalog, shipping rules, and product categories in human-readable form for LLMs.
How to detect on your store
Walk through these checks on your live store. Each fires yes/no.
Check 1: Does the PDP declare shipping zones in structured data?
Open a product detail page in Chrome. Right-click, View Page Source. Search for application/ld+json. Find the Product block. Look inside the offers object for eligibleRegion and ineligibleRegion. If either is present and correctly populated with ISO codes, you pass. If both are absent, you fail.
For stores shipping state-restricted products (raw food, CBD, prescription-diet, live animals), failing this check is the highest-revenue-cost gap on the list.
Check 2: Does the homepage carry the right business-type schema?
View Page Source on the homepage. Search for application/ld+json. Look at every block.
- Fully direct-to-consumer brand with no physical footprint:
Organizationis fine. Skip to Check 4. - Brand with a retail location, warehouse, or distribution center: look for
LocalBusinessorStorewith a populatedaddressblock. - Vet-affiliated brand or clinical-care brand: look for
VeterinaryCare,MedicalBusiness, orServicewithServiceArea.
Check 3: Does the contact page declare a structured address?
If your brand has a physical location, vet-affiliated clinic, or warehouse, the address should appear in a JSON-LD block (inside LocalBusiness or Organization) with the address property containing streetAddress, addressLocality, addressRegion, postalCode, and addressCountry.
Check 4: Do AI-crawler directives in robots.txt allow access?
Open https://[your-store-domain]/robots.txt in a browser. Look for User-agent declarations for GPTBot, ClaudeBot, PerplexityBot, Google-Extended, and OAI-SearchBot. If any are set to Disallow: /, or if no explicit declaration exists (some platforms default to blocking unknown agents), the store is gated from that AI surface.
In the Pet sample, 57 of 87 stores are gated from at least one AI search engine. This is the most common single gap.
Check 5: Does the PDP show a "ships to" widget on the visible page?
Separate from structured data, the buyer needs a visible signal before checkout. A "ships to [state]" widget on the PDP (auto-detecting the buyer's location or selectable from a dropdown) prevents the abandoned-cart-at-checkout pattern when state restrictions apply.
Check 6: Does the subscription PDP declare eligibility?
For brands shipping monthly food, treats, or supplements, the subscription PDP needs the same eligibleRegion declaration as the single-purchase PDP. Subscription products often run through a separate liquid template, and the structured data on it can drift from the main template. Check both.
How to fix
Sequenced, smallest-change-first. Skip a step only if a prior check confirmed it is already in place.
Path 1: Open AI-crawler directives in robots.txt
Cheapest, fastest, largest cohort impact. Open robots.txt at the root of your domain. Add explicit allows:
User-agent: GPTBot Allow: / User-agent: ClaudeBot Allow: / User-agent: PerplexityBot Allow: / User-agent: Google-Extended Allow: / User-agent: OAI-SearchBot Allow: /
For Shopify stores, robots.txt is editable through robots.txt.liquid in your theme. Add the directives above. Save and publish. The change is live the next time the crawler visits.
Add a llms.txt file at the root declaring your primary product categories, geo-eligibility, and key shipping rules in plain text. Reference: llmstxt.org.
Time: 15 minutes for robots.txt, 30 to 60 minutes for a llms.txt draft.
Path 2: Add shipping-zone declarations to Product schema
For Pet products with state-by-state shipping rules: extend the Product JSON-LD block's offers object with eligibleRegion and ineligibleRegion. Both take an array of Place objects with ISO 3166 codes.
A raw-dog-food subscription that does not ship to states with pet-food-import restrictions lists those states under ineligibleRegion. Any system reading the structured data sees the restriction. AI search engines that read structured data can use these fields to filter, though support varies by engine and is improving over the 2026 cycle.
Two routes:
- Schema app: Schema App handles
eligibleRegionandineligibleRegionthrough its visual editor. Around $25 to $50 per month. Setup time 30 minutes. - Theme-level liquid edit: pull shipping-zone data from the Shopify Shipping API into the
ProductJSON-LD block insections/main-product.liquid. Setup time 1 to 3 hours for a developer comfortable in liquid.
Path 3: Add a "ships to" widget to the PDP visible UI
Structured data handles AI agents. The visible UI handles human buyers. A "ships to [state]" component on the PDP (auto-detected from geolocation or selectable from a dropdown) prevents abandoned-cart-at-checkout.
For Shopify stores, this lives in sections/main-product.liquid. The widget can pull from the same shipping-zone configuration as the schema declaration in Path 2. Time: 2 to 4 hours for a theme-level component build.
Path 4: Add LocalBusiness, VeterinaryCare, MedicalBusiness, or Service schema
For a Pet brand with a physical retail location, warehouse, or vet-affiliated clinic: add a JSON-LD block to theme.liquid declaring the appropriate @type.
LocalBusinessorStorefor retail and warehouse footprints.VeterinaryCarefor clinic-affiliated and vet-formulated brands with a clinical care story.MedicalBusinessfor prescription-diet and supplement brands with a clinical-care story.ServicewithServiceAreafor dog-DNA testing labs and similar service-area businesses.
For a fully direct-to-consumer brand with no physical footprint, LocalBusiness is not the right type. Skip this path. The Product schema with eligibleRegion (Path 2) carries the structural-data load without forcing the brand into a type it does not fit.
Pick-your-path summary
| Path | Best for | Time | Cost |
|---|---|---|---|
| 1. Robots.txt + llms.txt | Every Pet store | 45 to 75 min | $0 |
| 2. Product schema shipping zones | State-restricted products | 30 min to 3 hr | $0 or ~$25/mo app |
| 3. "Ships to" widget | Any store with state restrictions | 2 to 4 hr | $0 (theme work) |
| 4. LocalBusiness or VeterinaryCare | Physical or vet-affiliated brands | 30 min to 2 hr | $0 |
Why this matters more for Pet
Three reasons the structural-data gap costs Pet stores more than other Shopify verticals.
State-by-state shipping rules are a Pet-specific reality
Pet is one of the few Shopify categories where shipping rules vary by destination state for product-safety reasons. Live aquatic animals cannot ship to several states. Raw and freeze-dried pet food carries FDA state-level restrictions. CBD pet supplements are blocked in roughly a dozen states. Prescription-diet products require vet authorization that varies by state board.
For verticals without state-restricted SKUs (apparel, most home goods), missing eligibleRegion costs nothing. For Pet, every product page with a state-restricted SKU and no shipping-zone declaration pays the AI-search and ad-CPC cost and loses the conversion at checkout.
Pet-community routing amplifies discovery loss
Pet purchase decisions route through community surfaces more than other categories: breed-specific subreddits, working-dog Discord servers, raw-food Facebook groups, vet-recommendation threads. Each shares store links with structured-data context. A store missing structural data does not get parsed cleanly when ChatGPT, Perplexity, or a buyer using Google's AI Overview pulls a recommendation from those surfaces.
Subscription LTV makes each lost conversion expensive
A first-order abandon on a Pet subscription product is not a one-transaction loss. Food, treats, supplements, grooming refills, dental subscriptions, DNA-test renewals, and toy boxes all run on monthly or quarterly cadences. A first-order conversion is the start of a multi-month subscription. Losing the conversion at checkout because the buyer hit the "does not ship to this state" error costs the LTV, not just the AOV.
Sibling patterns in Pet
After closing the structural-data gap, the next-highest-priority patterns for Pet stores in the sample are:
- Page-builder and app-stack overhead. Found in 17 of 87 Pet stores audited (19.5%). Highest in the Pet vertical.
- Open Graph and Twitter Card defects. Found in 10 of 87 Pet stores audited (11.5%). Compounds with the structural-data gap on every shared link from pet-community surfaces.
Sibling schema patterns in other verticals
The schema-absent pattern shows up across every Shopify category, with vertical-specific extensions. The Food and CPG schema fix covers nutrition and dietary-tag fields. The Supplements schema fix covers Subscribe-and-Save Offer modeling. The Electronics schema fix covers brand and gtin13 fields. Structural data is one of 12 conversion checks; the complete audit guide covers all 12 in sequence, and the GEO readiness playbook covers the AI-search layer in depth. For why a buyer might land on a properly-configured Pet store and still bounce at checkout, the conversion diagnostic covers it.
FAQ
My Pet brand has no physical retail location. Does LocalBusiness schema apply?
No. For a fully direct-to-consumer Pet brand with no physical footprint, LocalBusiness or Store schema is not the right type. The Product schema with eligibleRegion and ineligibleRegion (Path 2) plus the robots.txt and llms.txt fix (Path 1) carry the structural-data load.
How do I know if my Pet store is gated from AI search engines?
Open https://[your-store-domain]/robots.txt in a browser. If GPTBot, ClaudeBot, PerplexityBot, Google-Extended, and OAI-SearchBot are not each explicitly allowed (either absent or set to Disallow: /), the store is gated from at least one of those surfaces. Path 1 fixes this in 15 minutes.
Will adding LocalBusiness schema rank my Pet store in the Google Local Pack?
Not on its own. The Local Pack ranks on Google Business Profile data plus link signals plus proximity. Schema markup is necessary but not sufficient. For a direct-to-consumer brand with no retail footprint, the Local Pack is not the right surface to optimize for.
Do AI search engines actually filter on eligibleRegion?
AI search engines that read structured data can use these fields to filter, and support is improving over the 2026 cycle, but coverage varies by engine. The reason to declare the fields anyway: the cost is low, the benefit grows over time, and the same fields help the visible "ships to" UI stay in sync with the structured data.
What is the single highest-priority fix on this list?
Path 1 (open AI-crawler directives in robots.txt, add llms.txt). It is the cheapest, fastest, and addresses the largest single gap: 57 of 87 Pet stores audited are gated from at least one AI search engine. Forty-five minutes of work opens the channel.
Will Path 2 break anything on my existing PDP?
No. Adding eligibleRegion and ineligibleRegion to the Product JSON-LD block adds data; it does not remove or modify anything else. The visible PDP UI is unchanged.
How do I verify the structured data after I add it?
Use the Google Rich Results Test to confirm the Product block parses correctly and the new fields are read. For robots.txt, fetch the file from a browser to confirm the directives are live.
Methodology and disclosure
Findings draw from 1,091 Shopify storefronts audited in Q2 2026. 87 stores classified Pet in the sample. Each store was checked across 12 conversion-facing categories using public storefront pages (the same surface a human visitor would see). Findings are aggregated and anonymized; no private data was accessed.
Some content in this article synthesizes across multiple cohort cells. The cohort percentages are direct; the cross-cell synthesis on Pet-vertical structural data is composite analysis. Cohort sample refreshes monthly.
Run an audit on a specific Pet store. The StoreMend audit covers all 12 conversion checks against a live store in 60 seconds. $39 one-time. 30-day no-questions refund. storemend.com