Articles

Delivery slots and click and collect for AI agents

Usually fixed by: Developer

"Get it to me by Saturday" and "Can I pick it up near work?" are the kind of conditions people give an AI agent when they shop. Here's how to make delivery costs, cut-off times, postal code checks, delivery slot pickers and click and collect store choices readable and usable by agents, so they can promise the person a date and keep the promise.

Why delivery decides the order

For a person, delivery is often the last thing they check. For an agent, it's often a condition set at the start: "a birthday present that arrives by Friday", "groceries delivered tomorrow evening", "a drill I can collect today". If the agent can't find out when and how an order will arrive, it can't meet the condition, and it may move on to a store that tells it.

That makes delivery information part of your product information. An agent needs four answers, ideally before it reaches checkout:

  • Can you deliver here? A postal code check, in a labeled field
  • By when? Cut-off times and delivery estimates, in text
  • For how much? Delivery cost shown before checkout
  • Can I collect? Stores with stock and ready times
Four delivery questions. An agent that can answer all four before checkout can keep the person's promise.

Show delivery cost and timing before checkout

Many stores only show delivery options and prices once an address is entered at checkout. That's late for an agent comparing three stores. Put the basics where an agent looks first:

  • On the product page, in text: "Free delivery over $50. Order by 2 pm for next-day delivery." Make it part of the HTML, not a widget that loads later.
  • On a delivery page linked from every page: each method, its price, its typical time, the regions it covers and the cut-off times. See shipping, returns and FAQ pages AI assistants can quote.
  • In the cart, with an estimate before the address is known: "Standard delivery from $4.95, 2 to 4 working days."

Write cut-offs with a time zone and days: "Order by 2 pm Eastern, Monday to Friday, for next-day delivery." "Order by 2 pm" alone leaves an agent guessing whose 2 pm, and whether Saturday counts.

Structured data can say the same things. schema.org's ShippingDeliveryTime has cutoffTime, handlingTime, transitTime and businessDays, used within OfferShippingDetails on a product's offer. Google's documentation on merchant shipping policy structured data describes a store-wide policy using ShippingService under your Organization, with a fulfillmentType that can describe delivery to the customer's address or shipping to a collection point for pickup. A product-level example:

"shippingDetails": {
  "@type": "OfferShippingDetails",
  "shippingRate": { "@type": "MonetaryAmount", "value": "4.95", "currency": "USD" },
  "shippingDestination": { "@type": "DefinedRegion", "addressCountry": "US" },
  "deliveryTime": {
    "@type": "ShippingDeliveryTime",
    "cutoffTime": "14:00:00-05:00",
    "handlingTime": { "@type": "QuantitativeValue", "minValue": 0, "maxValue": 1, "unitCode": "DAY" },
    "transitTime": { "@type": "QuantitativeValue", "minValue": 1, "maxValue": 3, "unitCode": "DAY" }
  }
}

Keep the structured data and the page text in step. An agent that finds "next-day" in one and "2 to 4 days" in the other can't trust either. For the rest of your product data, see product data AI shopping agents can read.

Postal code checks

Grocers, furniture stores and anyone with a delivery area often ask for a postal code before showing slots or stock. Built well, that's one of the easiest steps for an agent. Built as a pop-up on arrival, it's one of the hardest.

  • Use a real form. A text field labeled "ZIP or postal code", with autocomplete="postal-code", and a button named "Check delivery".
  • Write the result as text near the field. "We deliver to 10001. Next available slot: tomorrow, 6 to 8 pm." Or: "Sorry, we don't deliver to 99501 yet. Click and collect is available at our Anchorage store."
  • Let the check have its own URL where you can, such as /delivery?postcode=10001, so an agent can check without driving the form at all.
  • Don't block the whole site behind it. A postal code pop-up on arrival hides your products from every agent that can't or won't fill it in. Ask for the code when it matters, and let people browse first. See cookie banners and pop-ups that trap AI agents.
<form action="/delivery" method="get">
  <label for="postcode">ZIP or postal code</label>
  <input id="postcode" name="postcode" autocomplete="postal-code">
  <button type="submit">Check delivery</button>
</form>

Delivery date and slot pickers

Slot pickers are often custom widgets, and they go wrong in familiar ways: a grid of colored boxes, days that are only images, and full slots shown only by a lighter color. Our guide to sign-up, booking and lead forms covers date and time pickers in general. For delivery, a few things matter most:

  • Every slot names its day, time and price. "Saturday 14 June, 8 to 10 am, $3.50". Not a cell in a grid whose meaning comes from the column header.
  • Full slots say why. Disabled, with text: "Fully booked".
  • Choosing is a real control. Radio buttons, or buttons, inside a group labeled with the date.
  • Reservation timers are stated. If a slot is held for a while, say so in text: "We'll hold this slot for 60 minutes." An agent can then tell the person how long they have to approve the order.
  • Available slots are readable as a list. A plain list of the next available slots lets an assistant answer "anything Saturday morning?" without driving the picker at all.

pantry.example/checkout/delivery

Delivery on Saturday 14 June Group named with the date

8 to 10 am (fully booked) 10 am to 12 pm, $3.50 6 to 8 pm, free

We'll hold your slot for 60 minutes. Timer stated in text

Reserve 10 am to 12 pm

A slot picker an agent can read. Each slot names its time and price, the full one says why, and the hold time is written down.

If you need a calendar for choosing a date, the W3C's ARIA Authoring Practices Guide has a date picker dialog example: a date input field, plus a button that opens a dialog with a calendar. Choosing a day fills in the field. The key idea for agents is the first part: there's always a text field where the date can simply be typed. A plain <input type="date"> often does the job.

Click and collect store selection

Click and collect turns "where can I get this today?" into a store choice. That choice is often a map, which many agents can't read. Our guide to store locators and maps AI agents can use covers locators in general. At checkout:

  • Let people search by postal code or town in a labeled field, and show results as a list, with the map as an extra.
  • Show stock and ready time per store, in text. "Northwind Hardware, Elm Street: 3 in stock, ready in 2 hours." This is what the agent is really choosing on.
  • Name the select button after the store. "Collect from Elm Street", not five buttons that all say "Select".
  • Confirm the choice and the details. The store's address, opening hours, ready time and what to bring, on the confirmation page and in the email.

Hard for agents

  • Map pins as the only list of stores
  • Five buttons named "Select"
  • Stock shown as colored dots
  • "Ready soon"

Easy for agents

  • A list of stores, with the map as an extra
  • "Collect from Elm Street"
  • "3 in stock"
  • "Ready in 2 hours"
Choosing a store. The same choice, as pictures or as text an agent can act on.

What AgentScore checks

AgentScore doesn't test delivery options directly. For stores, it loads your cart and checkout, and if the empty cart shows no form, it adds one item and looks again. It never fills in or submits the form, so it can't see the steps after the first, such as delivery slots or store choice. What it does check:

  • Cart and checkout fields are labelled for agents: labels (placeholders don't count), input types such as email and tel, and autocomplete tokens such as postal-code and address-line1.
  • AI agents aren't blocked or shown a CAPTCHA at the cart and checkout: whether AI assistants get through where browsers do.

To test the full journey, including choosing a slot or a store, describe it as a Ghost Agent test in the Ghost Agent Lab app. Ghost Agents fill in forms with the test data you supply, record every step for replay, and always stop before paying.

Where to start

  • Delivery cost and cut-off on the product page In text, with a time zone and days.
  • A delivery page linked from every page Methods, prices, times, regions and cut-offs.
  • A postal code check that's a real form Labeled, with the result written as text.
  • Slots that name their day, time and price Full slots say "Fully booked".
  • Stores listed in text With stock, ready time and a named select button.
A delivery checklist. Each item lets an agent promise the person a date and keep it.

Then try it yourself. Ask an AI assistant: "Can I get [one of your products] delivered to [a postal code you serve] by Saturday, and how much is delivery?" If it can't answer from your site, start with the product page and the delivery page. Those two pages answer most delivery questions before an agent ever reaches checkout.

← All articles Test your site with AgentScore →

Can AI agents finish the job on your site?

Ghost Agents work through your journeys from a plain-English goal, with a step-by-step replay of where they got stuck. Included in every plan, with a 30-day trial.