# Why can't AI agents find my delivery price?

> Delivery cost often appears only at checkout, where AI agents don't go. Publish rates on a public page, show them on product pages and add shipping markup.

- Canonical URL: https://aiscovery.io/resources/why-ai-agents-cant-find-delivery-price
- Markdown version: https://aiscovery.io/resources/why-ai-agents-cant-find-delivery-price.md
- Last updated: 2026-10-21

Because on many stores the delivery cost first appears at checkout, after the shopper types an address, and an agent reading your public pages never gets that far. Publish your rates as text on a shipping page, show the cost or a link next to the price on every product page, and describe the policy in structured data.

- Topic: Product facts
- Author: Aiscovery team
- Published: 2026-10-21
- Updated: 2026-10-21
- Reading time: 8 min read

## Key facts

- Browsing agents are built to ask before they submit forms: Google's Gemini asks for confirmation before submitting web forms or making purchases.
- Google added organization-level shipping policy markup (`ShippingService`) in November 2025.
- Google recommends one store-wide shipping policy under `Organization`, and `shippingDetails` on an offer only for products that differ.
- Shopify's `structured_data` filter and WooCommerce's built-in product markup don't include shipping details.
- Shopify's agentic storefront quality signals include whether your shipping, returns and refund policies are present.

## Why agents miss the delivery cost

A shopper who asks an assistant what an order will cost delivered needs two numbers: the price and the delivery. The price is on the product page. The delivery cost is often only at checkout, calculated from an address, and checkout is exactly where browsing agents stop or hand back to the person. Aiscovery's own AI agents stop before cart, checkout and any form that sends data, by design.

Where stores put delivery costs, and what an agent gets:

| Where the cost lives | What an agent reading public pages gets | Fix |
| --- | --- | --- |
| Only in the checkout calculator | Nothing. It would have to start checkout and enter an address. | Publish the rate table on a shipping page |
| In a cart drawer estimate | Usually nothing. It appears after Add to cart. | Repeat the estimate on the product page |
| In a free delivery banner image | Nothing readable unless the alt text says it | Put the threshold in text, near the price |
| On a policy page, as an image or PDF | Little or nothing | An HTML table with countries, rates and times |
| In text on the product page and a shipping page | The cost, the threshold and the delivery time | Keep both in step when rates change |

> **Where agents get stuck.** The agent finds the product and the price, then answers that delivery is calculated at checkout. To the shopper that reads as an unknown extra cost, and the comparison goes to a store that shows the number.

## Put the delivery cost where agents read

### 1. Write a shipping page an agent can quote

List each destination, the rate, any free delivery threshold, the handling time, the transit time and the order cut-off. Use an HTML table or plain sentences, not an image. On Shopify, this is your shipping policy at `/policies/shipping-policy`; fill it in under Settings, then Policies.

**HTML: a rate table an agent can read**

```html
<table>
  <caption>Delivery rates and times</caption>
  <thead>
    <tr><th scope="col">Destination</th><th scope="col">Rate</th><th scope="col">Delivery time</th></tr>
  </thead>
  <tbody>
    <tr><th scope="row">Canada</th><td>CAD 9.95, free over CAD 100</td><td>2 to 5 business days</td></tr>
    <tr><th scope="row">United States</th><td>CAD 9.95, free over CAD 100</td><td>3 to 7 business days</td></tr>
  </tbody>
</table>
```

### 2. Add one line next to the price on every product page

For example: Delivery to Canada and the US from CAD 9.95, free over CAD 100, 2 to 5 business days, followed by a link to the shipping page. Render it in the HTML, not only after a click, so agents that read the page source see it too.

### 3. Link the shipping page from the footer and from llms.txt

Agents follow links. A footer link and an entry in llms.txt give them two short routes. See [how to add llms.txt to Shopify or WooCommerce](https://aiscovery.io/resources/add-llms-txt-shopify-woocommerce).

## Describe the policy in structured data

Search engines and AI tools that read structured data get the same facts in a fixed shape. Google's guidance: put one store-wide shipping policy under your `Organization` (an `OnlineStore` for a store) on the page that describes it, and only add `shippingDetails` to a product's offer when that product ships differently.

### 1. Add the store-wide policy to your shipping page

Each `ShippingConditions` entry needs a destination, a rate and a transit time. Free delivery is a rate of `0`. If more than one condition applies, Google uses the lowest cost. Replace the example values with your own.

**JSON-LD: store-wide shipping policy**

```json
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "OnlineStore",
  "@id": "https://example.com/#store",
  "name": "Example Outdoor Co.",
  "url": "https://example.com/",
  "hasShippingService": {
    "@type": "ShippingService",
    "@id": "https://example.com/policies/shipping-policy#standard",
    "name": "Standard delivery to Canada and the US",
    "fulfillmentType": "FulfillmentTypeDelivery",
    "handlingTime": {
      "@type": "ServicePeriod",
      "duration": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "DAY" }
    },
    "shippingConditions": [
      {
        "@type": "ShippingConditions",
        "shippingDestination": [
          { "@type": "DefinedRegion", "addressCountry": "CA" },
          { "@type": "DefinedRegion", "addressCountry": "US" }
        ],
        "orderValue": { "@type": "MonetaryAmount", "minValue": 0, "maxValue": 99.99, "currency": "CAD" },
        "shippingRate": { "@type": "MonetaryAmount", "value": 9.95, "currency": "CAD" },
        "transitTime": {
          "@type": "ServicePeriod",
          "duration": { "@type": "QuantitativeValue", "minValue": 2, "maxValue": 5, "unitCode": "DAY" }
        }
      },
      {
        "@type": "ShippingConditions",
        "shippingDestination": [
          { "@type": "DefinedRegion", "addressCountry": "CA" },
          { "@type": "DefinedRegion", "addressCountry": "US" }
        ],
        "orderValue": { "@type": "MonetaryAmount", "minValue": 100, "currency": "CAD" },
        "shippingRate": { "@type": "MonetaryAmount", "value": 0, "currency": "CAD" },
        "transitTime": {
          "@type": "ServicePeriod",
          "duration": { "@type": "QuantitativeValue", "minValue": 2, "maxValue": 5, "unitCode": "DAY" }
        }
      }
    ]
  }
}
</script>
```

### 2. Point product offers to it only when needed

To reference the store-wide policy from a product's offer, Google asks for `hasShippingService` with only the `@id`.

**JSON-LD: an offer that references the store policy**

```json
"shippingDetails": {
  "@type": "OfferShippingDetails",
  "hasShippingService": {
    "@id": "https://example.com/policies/shipping-policy#standard"
  }
}
```

### 3. On WooCommerce, add the reference with a filter

WooCommerce core outputs a product offer but no shipping details. Its `woocommerce_structured_data_product_offer` filter lets you add them.

**PHP: functions.php or a small plugin**

```php
add_filter( 'woocommerce_structured_data_product_offer', function ( $offer, $product ) {
	$offer['shippingDetails'] = array(
		'@type'              => 'OfferShippingDetails',
		'hasShippingService' => array( '@id' => home_url( '/shipping/#standard' ) ),
	);
	return $offer;
}, 10, 2 );
```

### 4. Test it

Run the shipping page and one product page through Google's Rich Results Test. Search Console's Shipping and returns settings take precedence over markup, so make sure they match.

On Shopify, the theme's `{{ product | structured_data }}` output has no shipping details, so add the store-wide JSON-LD to your shipping policy page through the theme, with your rates written in. Check that the numbers match Settings, then Shipping and delivery. More on [Aiscovery for Shopify stores](https://aiscovery.io/platforms/shopify).

## Check that an agent can answer it

Ask the question the way a shopper would: what does delivery to my country cost for this product, and when would it arrive? Then try to answer it yourself from public pages only, without adding to cart. If you can't, an agent can't either.

Finding delivery and returns is one of the key shopping tasks in Aiscovery's AI agent test runs: named AI agents try it on your store in a read-only browser, and the step log and screenshots show where they found the answer or gave up. See the [product tour](https://aiscovery.io/product).

## Keep going

- [Variants and stock](https://aiscovery.io/resources/product-variants-stock-ai-agents): The next fact agents fail on: is this size in stock?
- [Aiscovery on Shopify](https://aiscovery.io/platforms/shopify): What commonly breaks for AI agents on Shopify stores.
- [Product tour](https://aiscovery.io/product): The site check, AI agent test runs and the ranked fix list.
- [Request a demo](https://aiscovery.io/demo): Watch named AI agents look for delivery and returns on your store.

## Questions store owners ask

**Q: Why don't AI agents just go to checkout to see the delivery cost?**

A: Checkout needs an address and form submissions, and agents are built to ask the person before they submit forms. Google's Gemini, for example, asks for confirmation before submitting web forms. Aiscovery's agents stop before cart and checkout by design.

**Q: Do I need shippingDetails on every product?**

A: No. Google recommends one store-wide shipping policy under your Organization, and offer-level shippingDetails only for products whose shipping differs.

**Q: My rates depend on weight. Can I still mark them up?**

A: Yes. Google's ShippingConditions supports weight, order value and number of items, and uses the lowest cost when several conditions apply. On the page itself, give the rate for typical orders and link the full table.

**Q: Does Shopify add shipping structured data for me?**

A: Not through the structured_data filter that themes such as Dawn and Horizon use: it outputs products, variants and offers without shipping details.

**Q: Where else does a missing shipping policy hurt?**

A: Shopify lists shop policy completeness, including shipping, returns and refunds, among the listing quality signals for its agentic storefronts.

## Sources

Every technical claim on this page comes from the vendor's own documentation, checked on the date shown as Updated. Crawler names and settings change, so check the source before you edit a live store.

1. [More ways to share your shipping and returns policies with Google](https://developers.google.com/search/blog/2025/11/more-ways-to-share-shipping) (Google Search Central Blog)
2. [Merchant shipping policy (ShippingService) structured data](https://developers.google.com/search/docs/appearance/structured-data/shipping-policy) (Google Search Central)
3. [Merchant listing (Product, Offer) structured data](https://developers.google.com/search/docs/appearance/structured-data/merchant-listing) (Google Search Central)
4. [Manage your tasks and workflows in Gemini Apps](https://support.google.com/gemini/answer/17094507?hl=en) (Gemini Apps Help)
5. [structured_data filter](https://shopify.dev/docs/api/liquid/filters/structured_data) (Shopify.dev)
6. [Managing agentic storefronts](https://help.shopify.com/en/manual/online-sales-channels/agentic-storefronts/agentic-home) (Shopify Help Center)
7. [class-wc-structured-data.php](https://github.com/woocommerce/woocommerce/blob/trunk/plugins/woocommerce/includes/class-wc-structured-data.php) (WooCommerce on GitHub)

## More guides

- [How do I make product variants and stock readable for AI agents?](https://aiscovery.io/resources/product-variants-stock-ai-agents) (Product facts)
- [How do I stop pop-ups and cookie banners from blocking AI agents?](https://aiscovery.io/resources/stop-popups-blocking-ai-agents) (Page basics)
- [How do I allow ChatGPT and other AI agents on my Shopify store?](https://aiscovery.io/resources/allow-ai-agents-shopify-robots-txt) (Shopify)

## See what AI agents do in your store.

A short call: we run the site check on your store, show what robots.txt tells each AI crawler, and walk through a test run where named AI agents try key shopping tasks.

[Request a demo](https://aiscovery.io/demo)

Have a real workflow to test now? [Apply as a launch partner](https://aiscovery.io/partners)

---

This is the Markdown version of the page for AI agents. The HTML page at the canonical URL is authoritative. Site index: https://aiscovery.io/llms.txt
