List products in chat
Overview
The List products skill lets your AI agent answer questions such as "What cars do you have?", "Show me red dresses under $50" or "Do you have any oil paintings?" with a complete, accurate list of the products on your website. Matching products appear below the reply as cards with a photo, price and link to the product page. With more than one product, the cards form a carousel that visitors can swipe or scroll with the arrow buttons.
It works for any site with product or item pages: car dealers, clothing shops, art galleries and more. The list comes from your website scan, not from the AI's memory, so the agent only mentions products that are really on your site.
Shopify products
If your store uses Shopify, you can also connect it for live product, variant, price and availability retrieval. Set up the Shopify customer agent in Integrations → Shopify. The website-scan List products skill described here remains available for scanned catalog pages. See Shopify integration for the live connection and verified order lookups.
Steps
- Add your website to a knowledge base and let the scan finish. See Add documents and websites.
- Go to AI → Agents and edit the agent used by your chat's workflow.
- Under Skills, select List products.
- Save the agent, and publish it if you use versions.
- Make sure the chat's AI step uses the knowledge base that contains your website.
- Test it: ask your chat "What do you have in stock?" See Test your chat.
How products are found
During a scan, each page is checked for markup that marks it as a single product:
- An Open Graph type of
product(og:type), or a Twitter card of typeproduct. - A schema.org product, vehicle or artwork (for example
Product,Vehicle,Car,VisualArtworkorPainting) in the page's structured data.
The price comes from the page's product price tags (product:price:amount), its schema.org offer, or a Twitter card "Price" label. Most shop, dealer and gallery platforms add this markup automatically.
Unavailable items are left out, on any kind of shop. A page is treated as unavailable when:
- Its schema.org offer availability is
SoldOut,OutOfStock,Discontinuedor similar. - It shows wording such as "Sold", "Sold out", "Out of stock", "No longer available" or "Unavailable", or in Bulgarian "Продадено", "Изчерпано", "Няма наличност" or "Не е наличен", outside links to other products.
- Its buy or add-to-cart button is disabled.
- Its title contains that wording, for example "2013 BMW X3 35i SOLD". Such a title is skipped from the list straight away, even if an older scan still counted the page as a product. Only the part of the title before the last " | ", " – ", " — " or " - " counts, so a site-wide suffix such as "2019 Honda CR-V | Used cars sold with warranty" does not mark the product sold.
When a product page says nothing about availability either way, Jev, the built-in AI assistant, reads the page and decides whether the item is still available. Pre-order and back-order items stay listed, because they can still be bought.
Pages scanned before this behaviour existed are only re-checked on their next scan, so after this change click Rescan once on your website in the knowledge base.
If no page on the site has product markup, the skill uses the section of the site with the most pages below it, such as /inventory/, /shop/ or /artworks/, counting only pages scanned in the last 30 days. Blog, news and category sections are skipped.
When a product is listed
The newest scan of each product page decides whether it is listed, and the chat never treats an older scan as current when a newer one disagrees:
- Listed: the newest scan read the page successfully, found it is a product, and found nothing that marks it unavailable. The page was scanned within the last 30 days.
- Unavailable: the newest scan shows the item as sold or out of stock, or the page used to be a product and no longer is. It is not listed.
- Unverified: the newest scan of the page failed, or a later scan of the whole website failed. It is not listed until a scan reads the page successfully again. The chat does not fall back to the product information from an earlier scan.
- Expired: the page was last scanned more than 30 days ago. It is not listed until it is scanned again.
If no product is currently listed, the AI is told that nothing is verified and how many listings are unverified or expired, so it can say so instead of guessing.
The same rules apply when the AI answers from the knowledge base without the tool. Unavailable, unverified and expired product pages are left out of its search, so a sold car is not offered as in stock. The exception is a question about the past, such as "What did you have previously?", "What was the price before it sold?" or "Show me past listings". Then those pages can be used, marked as past listings, and the AI is told not to claim they are still available.
When a visitor chooses a product
When the visitor's next message names exactly one product from the cards just shown (for example "I'd like the 2019 Honda Civic"), the chat remembers it as the product the visitor chose. The AI keeps that product in mind for the rest of the conversation, through a workflow such as a finance form and while booking a visit, so the visitor doesn't have to repeat which product they meant. A message that names several products, or none, doesn't change the choice.
Before each reply the chosen product is checked against your latest scan, using the rules above:
- While it is Listed, the AI knows its name and price.
- If it becomes Unavailable (for example, sold), Unverified or Expired, the AI is told it is no longer confirmed and that it must tell the visitor before continuing.
- The AI never switches the visitor to a different product on its own. If the visitor then names another product, it is only proposed as a replacement, and the AI asks the visitor to confirm the switch. The choice changes only after a clear yes ("Yes", "OK", "Sure", "Go ahead", or in Bulgarian "Да", "Добре", "Разбира се"); a no ("No", "Keep it", or "Не", "Няма нужда", "Оставете") withdraws the proposal and keeps the original product.
Yes/no answers to a proposed switch are recognised in English and Bulgarian, whichever language the conversation is in. A hesitant or mixed reply such as "Not sure", "Maybe", "Не знам" or "Да, но не сега" is not taken as an answer: the proposal stays open and the original product remains the choice. Answers in other languages also leave the proposal open.
Only the visitor's own messages can choose or confirm a product. The acknowledgement the chat writes after a visitor submits the contact form is never read as a choice.
For apartment communities connected to Yardi, the same applies to units: when the chat has recommended units and the visitor's next message names exactly one of them (for example "I'd like unit 4B"), that unit becomes the visitor's choice, without having to book a tour first. A short number such as "2" counts only after a word such as "unit" or "apartment", so "2 bedrooms" doesn't choose unit 2.
Tips
- The list is only as current as your last successful scan, and products not scanned for 30 days drop off the list. After products are added, sold or repriced, click Rescan on the website in your knowledge base, or set Rescan frequency to Daily, Weekly or Monthly. Manual only is the default. Scans run in the background without an open browser; Next scan uses UTC. For fast-changing stock such as a car lot, choose Daily.
- Successful rescans update product photos, prices and descriptions even when the main text is unchanged. Confirmed 404/410 pages are removed, and so are pages your site shows as "Page not found" (many dealer and WordPress sites do this instead of sending a 404); they disappear from the list on the next scan that reaches them. A failed scan doesn't keep the previous product information: the affected products are unverified until a later scan succeeds, so if your website was briefly down, click Rescan once it is back. Scan limits mean changes may take more than one run to be discovered.
- If multiple scans or website sources contain the same product URL, the newest scan of that URL decides, even when it failed. When that scan no longer finds a product on the page (for example a listing marked sold that dropped its product markup), the product is no longer listed, even if an older scan had it.
- The section-based fallback only applies to sites with no product markup at all. If your site has product markup but currently no product pages, the skill lists nothing rather than showing old pages.
- Visitors can filter by words ("Honda", "wool", "landscape") and by price range. When nothing matches exactly, the tool returns other listed products as alternatives, each with the request it doesn't meet: the search words, the minimum or maximum price, or a price that can't be checked. The AI is told to explain the difference and not to present them as matches, and no product cards are shown for alternatives.
- The cards show only the products the AI names in its reply, in the same order, up to 10 per reply. If the reply names none, no cards are shown. Ask the AI to name products by year, make and model (or by their name on your site) so each one gets its card. Words every product title shares, such as your business name, don't count as naming a product, so mentioning your dealership doesn't attach every card.
- Cards appear only on replies where the AI used the tool. If visitors ask for links to products mentioned earlier, the agent should look them up again. Add an instruction such as "When visitors ask for links, use the List products tool again for those products."
- If the wrong section is listed, add product markup (
og:typeofproduct, or schema.orgProduct) to your product pages and rescan. - Add an instruction to the agent such as "When visitors ask what is available, always use the List products tool." if the agent answers from memory instead.