Build your agent
Price display
Prices go stale faster than anything else a chatbot says. A number the assistant types into a sentence was true when the page was last crawled; the shop's own product page is true right now. Prices in answers (agent settings β Prices in answers) lets each agent decide where a price is allowed to appear at all.
The four modes
They are the cells of a two-by-two: may the price appear in the reply text, and may it appear on the product card.
| Mode | Text | Card | Pick it when |
|---|---|---|---|
| Text and card (default) | yes | yes | You have no webshop. Text is the only channel you have, so restricting it would leave visitors with no answer at all. |
| Product card only | no | yes | You want the number visible but only in one controlled place, where it sits next to the product image and a View button. |
| Text only (no card) | yes | no | You want a straight spoken answer and find the card too heavy for your conversation style. |
| Product page only | no | no | Your prices change often. Nothing in the chat can go stale, because nothing in the chat carries a number β the card keeps its View button and the shop page is the single source of truth. |
The default is stored as absence, so agents that never touch this setting keep following the default even if it changes later.
Shipping costs are not product prices
Every restriction here is scoped to product prices. "What does shipping cost?" and "from how much is delivery free?" keep working in every mode β those amounts are ordinary knowledge, not a price that drifts with your catalogue.
That distinction is enforced with real data rather than guesswork: the system compares each amount against the prices in your product register. An amount that matches a product is a product price; anything else is left alone.
Why a product register makes the restricted modes airtight
Instructions alone are probabilistic. A single "what does this cost?" usually obeys them; an answer comparing four variants gives the model four more chances to slip, and that is exactly where the first version of this feature leaked (card #512). The fix was to stop asking the model to hold a number it must not use:
- The sources are scrubbed. In a mode that forbids prices in text, product prices are removed from the knowledge the assistant receives, including the snapshot of the page the visitor is on. A model that never saw the number cannot write it.
- The register's price line is withheld from the product facts attached to the turn, for the same reason.
- The card is filled by the server. In Product card only the price on the card comes from your register β and where the register carries no price for that product, from the page itself: the Schema.org offer of the page the visitor is on, or the price line the crawler recorded for the card's product page. Filling the card is no longer something the model can forget.
- The reply is checked before it is stored. A final pass removes any product price that still made it into the text.
A register with prices remains the strongest setup, but it is no longer a requirement: the protections also arm themselves from the prices your own pages declare β Schema.org product data, the crawler's recorded price lines, and amounts written right after a product name your register lists. A register that tracks only names and sizes (a common way to run one) now gets the same guarantees. Shipping costs and discount thresholds are never treated as product prices, so those answers keep working. Only when a price appears nowhere at all β no register entry, no structured data, no recognisable price line β does the last layer stand alone, and it acts after the words have already streamed: the transcript ends up clean, but the number may be briefly visible.
Prices are never "missing knowledge"
On the modes that hide prices in text, the assistant is deliberately given sources with no product prices. Its grounding rules β the ones that stop it inventing properties it cannot see β must not mistake that for a gap: the price is not unknown, it is being shown elsewhere. So on those modes an explicit exception tells the assistant that a missing price never justifies "I can't confirm that", including on price-comparison questions ("what's the difference in price between these two?"), where it shows a card for each product instead. Without the exception the two rule sets compete, and the grounding rule tends to win later in a conversation, when retrieval returns less β which reads to the visitor as the assistant getting worse the longer they talk.
What the assistant says instead
A restricted agent does not refuse or apologise β a missing price is a deliberate choice, not a gap in its knowledge. Asked what something costs it answers positively and points at where the number lives:
- Product card only β "the price is on the card below", with the card attached.
- Product page only β "you'll find the current price on the product page", with a card that links straight there.
One consequence worth knowing: an agent that cannot see prices cannot rank by them either, so "which of these is cheapest?" gets a pointer to the cards rather than a direct answer. That is the trade the restricted modes make β reliability over price reasoning.
Changing the setting
Agent settings β Prices in answers β pick a mode β Save. It applies to the next message; no re-index or re-crawl is needed. The setting is per agent, so a workspace running several agents can price them differently.