Stall library · Compare
Shipping cost cannot be determined before checkout
A late shipping cost stall happens when the delivery charge cannot be read anywhere before the checkout, so an AI agent comparing you against another store has to guess your true total. Human shoppers absorb this by clicking through and then deciding. An agent doing a comparison has to pick before it clicks, and a store with an unknown total tends to lose to one with a known total.
Why the agent stops
Comparison happens on landed cost, not on list price. When the shipping component is unknown, the agent either excludes you from the comparison or assumes a figure, and an assumed figure is more likely to be wrong in the direction that loses you the sale.
This is one of the few stalls where the fix is publishing information rather than changing code, and it is also one of the few where the same fix reduces human cart abandonment for exactly the same reason.
How often we see this
Not stated here. A frequency means nothing without the cohort it was counted over, and this page is about one stall rather than one category. Where a category has enough stores measured at every stage, the share of them showing this stall is published on its benchmark page, with the methodology beside it.
See it for yourself
- Try to answer this from your own site without adding anything to a cart: what does delivery cost to a domestic address, and how long does it take?
- Fetch your shipping policy page with curl and check the rates and thresholds appear as text in the response.
- Check whether a product page states shipping terms or a free shipping threshold anywhere.
- Note the earliest point in your flow where the real number appears. If that point is inside the checkout, this is your stall.
What to change
- Publish a shipping policy page with rates, thresholds and delivery times as text.
- State the free shipping threshold on product pages where you have one, since it changes the comparison directly.
- Where rates depend on destination, publish the table rather than a promise to calculate it later.
- Express delivery times as a range in days rather than as marketing language such as fast dispatch.
What Ottom looks at
Ottom looks for readable shipping terms on a policy page and raises this finding when it cannot find them, or when the page it found carries almost no prose. A short and complete policy passes: brevity is not the problem, absence is.
Questions
Our shipping rates are complicated. What do we publish?
The table, with its bands and its thresholds, exactly as complicated as it is. An agent can reason about a table: it can find the row for a basket value, apply a threshold and produce a number. What it cannot do anything with is a sentence saying shipping is calculated at checkout, because that is a promise of information rather than information. Complexity is fine. Absence is what removes you from a comparison.
Does hiding shipping costs lose sales or only annoy people?
For agent traffic it is decisional rather than annoying, because the comparison is made before the click. That is the difference from the human case, where the same information gap produces cart abandonment instead.