Skip to content

Getting inventory in ​

Every way to load a product catalog into MyChatBot, plus what happens to it once it lands. Use this page when you're wiring up a catalog source and need to know which method to pick in the app, what each one requires, and how your data ends up searchable.

You add inventory entirely from the app — the Knowledge page. There's no API to call. Whatever method you pick, your products are parsed and indexed so your AI sales assistant's product search can find them (by keyword, by meaning, and — optionally — by image). The methods differ only in how your catalog reaches MyChatBot.

In the app

Knowledge → pick a knowledge base in the dropdown at the top of the list, select a product source under Product Inventory, and click Connect in its details. Most catalog setup — filters, auto-update, and image search — lives here. (One exception: Instagram products is set up under Channels → Instagram, not on the Knowledge page — see Instagram products below.) https://app.mychatbot.app/knowledge-base

The Product catalog row, first under Product Inventory, is the Sales Platform's own catalog, with stock, variants and orders, for when you run your shop in MyChatBot — see Products catalog.

The Knowledge page: on the left, the knowledge base dropdown and the Business Knowledge and Product Inventory rows with their status badges; on the right, the selected Product Feed's details — its Feeds pill and + Add feed, product counts, the Updates and Search switches, Tools, and Delete and Refresh Data at the bottom

The Knowledge page ​

Knowledge in the sidebar opens app.mychatbot.app/knowledge-base, laid out like Integrations, Channels and Automations: a list of sources on the left, and the details of the row you select on the right (below the list on phones). Use it to connect what you already have (FAQs, documents, websites, product feeds and spreadsheets) when your data lives in other tools. The product catalog, where you keep products, stock and orders in MyChatBot when you run your shop here, is a row in the same list. Nuances worth knowing before you connect anything:

NuanceDetail
Multiple knowledge basesThe dropdown at the top of the list switches between knowledge bases. Each option names the assistants that use it, for example "Main · Veronica, Bot 2" or "Main · no assistant uses it". + New knowledge base, last in the dropdown, adds one — up to 10 per account. Adding or switching knowledge bases requires an active subscription. Names are lowercased, spaces become hyphens, 20 characters max.
One knowledge base per assistantEach sales assistant is linked to one knowledge base — separate knowledge bases are how different assistants sell different catalogs.
Two sections, one row per typeBusiness Knowledge (FAQ, Business Documents, Business Files, Business Links) and Product Inventory (Product catalog, Product Feed, Product Spreadsheet, Product Files, Product YAML). Each type has a row, connected ones first.
Row badgesConnected · Connect (not added yet: select the row, then click Connect in its details) · Indexing… · Needs attention (the last import failed or Google access expired; the details say why) · Incomplete (an unfinished draft, see below). A type that another source blocks is dimmed.
How many of eachPer knowledge base: up to 3 Product Feeds, 5 Product Spreadsheets, 3 FAQs and 3 Product YAML lists. Every other type allows one. See Several sources of one type.
The Product catalog rowAlways first in Product Inventory, even before you have a knowledge base. Its badge says whether assistants can search the product catalog: Turn on (sync is off), Syncing…, Needs attention (the sync failed), Searched here (synced into the selected knowledge base), Searched through name (synced into another knowledge base, so only assistants on that one can search it), or Synced. Its details explain the sync and offer Configure catalog sync (the same settings as on the product catalog page) and Open catalog, which opens app.mychatbot.app/products. That page's ← Knowledge link brings you back.
A source's detailsA notice when something is wrong, then Details (progress, product or entry counts, the feed URL or file links), Updates (Enable auto-update, Refresh period, Notify in Telegram on error), Search (Agentic Search, Index images) and Tools. Which sections show depends on the source.
ToolsSearch filters (when the source has extracted filters), Refresh URL (a webhook to trigger a refresh externally — see Re-indexing & repairs), and Connect AI tools (see Product MCP).
Delete, Refresh Data, EditAt the bottom of the details: Delete, Refresh Data (on-demand re-sync), and the main action, Edit entries for an FAQ or Edit products for Product YAML. Delete asks first: "Delete this source?" The assistant stops answering from it and its indexed data is removed.
LinksThe selection is kept in the URL next to ?kb=<knowledge base>: ?source=<id> for a source, ?source=add:<type> for a type you haven't added (for example ?source=add:FAQ), and ?source=catalog for the product catalog.

Several sources of one type ​

Product Feed, Product Spreadsheet, FAQ and Product YAML can hold several sources in one knowledge base. Each type is still one row, and selecting it opens its first source:

  • The row's badge reads N connected (Connected for one), and the sources' names show under the type. If a source failed, is unfinished or is still indexing, the badge says Needs attention, Incomplete or Indexing… instead.
  • Its details show one pill per source, with the name you gave it: the Feed name, the FAQ's Name, or the Product YAML's Catalog name. Unnamed sources are numbered (Feed 2, Spreadsheet 2). A pill with a problem has a dot: red when it failed, amber while it is indexing or unfinished. Click a pill to see that source's details below the pills.
  • After the pills, + Add feed, + Add spreadsheet, + Add FAQ or + Add YAML set shows the type's Connect below. Nothing is added until you click it.
  • + Add … is greyed out, with a hint, when the type is at its limit ("Up to 3 per knowledge base.", or 5 for spreadsheets), while a spreadsheet draft is unfinished ("Finish or delete the unfinished spreadsheet first."), or when another source blocks the type (below).

Sources that block each other

  • Product Feed can't be added while the knowledge base has a legacy product source connected (XML Product Feed, WordPress CMS or OpenCart CMS). Its row is dimmed, or, when the knowledge base already has feeds, + Add feed says "A Product Feed can't be added while an XML feed, WordPress or OpenCart source is connected."
  • While one source's connection is in progress, the others can't start one.

"Incomplete" drafts

A row or pill badged Incomplete is a draft that was created but never finished (for example, "Spreadsheet was never selected"). The app warns it "may affect system behavior" — remove it with Delete incomplete draft in its details.

What becomes searchable products vs background knowledge ​

Not everything you add lands in product search. Where a source goes decides whether your assistant can search and filter it as a product catalog, or only read it as reference when answering. There are three destinations:

What you addWhere it landsProduct-searchable & filterable?
Product Feed, Product Spreadsheet, Product YAML, the Product catalog (once its sync is on), Instagram productsSearchable product indexYes — this is what the product-search tools, filters, and image search actually search
FAQ, Business Documents, Business Files (uploaded DOC / PDF / …)Background knowledgeNo — the assistant references them when answering, but you can't browse or filter them as products
Business Links (your website URLs)Live website lookupNo — not indexed; fetched live from your site at reply time when a question needs it

The practical takeaway

Only the first row feeds product search. Everything else is context the assistant reads — useful for answering questions, but invisible to the product-search tools, filters, and image search covered in the rest of these docs. Which mode that first row runs in (a single lookup vs. a step-by-step search agent) is the Agentic Search toggle — see Direct vs agentic search.

Uploaded product files become background knowledge, not a searchable catalog

Uploading product info as files (DOC / PDF / HTML / …) puts it in file/document knowledge: the assistant can read it to answer, but those products don't enter the searchable product index, so product-search filters and image search won't cover them. It's fine for quick tests or doc-shaped catalogs — but for real product search, load your catalog as a Product Feed, Product Spreadsheet or Product YAML, or keep it in the product catalog with its sync on.

Connecting a hosted store

Running a hosted store? Export its product catalog as a feed URL and add it as a Product Feed — MyChatBot consumes it just like any other feed, and those products land in the searchable index (the first row above). A Shopify store needs no export: paste the store address as the feed URL — see Sell your Shopify store's products in chats.

Cheat sheet ​

Ways to load a catalog ​

MethodBest forHow you connect itAuto-updateImage search
Product catalogSelling with stock, variants and ordersAdd or import products in the product catalog (Product catalog row → Open catalog), then Configure catalog syncYes — every change re-syncs within a few minutesOptional — Index product photos
Product Feed (XML / YML / text)Any store that can publish a feed URLPaste a public feed URL (XML, YML, or TXT)Enable auto-update toggle (hourly by default; Refresh period up to once a day)Yes — Index images toggle
Product Spreadsheet (Google Sheet)Inventory maintained in a spreadsheetConnect Google Drive and pick the sheetEnable auto-update toggle (hourly by default; Refresh period up to once a day)Yes — Index images toggle (image1…imageN columns)
Product Files (upload)Existing product docs, quick testsUpload up to 15 filesNoNo
Product YAMLSmall lists you write by hand, with any fieldsProduct YAML row → Connect → New Product YAML (name + language)Enable auto-update in its detailsNo
Instagram productsAn Instagram business account's posts & reelsSet up under Channels → Instagram (not here)Yes, automaticYes (frames pulled from reels)

Which one should I use?

If your platform can emit a feed URL, use the Product Feed — it's the most direct and the most configurable, and it's how you connect a hosted store (export its catalog as a feed URL). Use the Product Spreadsheet when a human maintains the catalog in a sheet, the product catalog when you also track stock and take orders in MyChatBot, or Product YAML to write a small list by hand. Use Product Files only for quick tests or doc-shaped catalogs — it gives you the least control over attributes and filtering.

Connect-dialog settings (Product Feed & Product Spreadsheet) ​

The Connect Product Feed / Product Spreadsheet dialog carries the same set of settings. Exact labels and defaults:

SettingWhat the app says / doesDefault
Product Feed URLThe public feed address (spreadsheets pick a file instead)—
Feed languagePick the language closest to your descriptions, so search matches word variations. 19 options: Arabic, Danish, Dutch, English, Finnish, French, German, Greek, Hungarian, Italian, Norwegian, Portuguese, Romanian, Russian, Spanish, Swedish, Tamil, Turkish, UkrainianEnglish
Feed name (optional)The source's name in the list and on its pill — how you tell several feeds apart (e.g. retailer, used). Only a–z and _, max 20 characters; a few names are reserved for special integrationsempty
Ignore feed attributes (optional)Feed only. Attributes listed here are dropped before indexing — use it to exclude internal noise fieldsempty
Feed requires HTTP Basic AuthFeed only. For a password-protected feed URL: tick it and enter the feed's Login and Password (both required once ticked)Off
Enable auto-update"…usually auto-updates every hour now" — periodic re-sync of the sourceOn
Index images"Include all … images in your index" — builds the image-search index (see Image search)On
Agentic Search"For complex product discoveries" — step-by-step search instead of a single lookup (see Direct vs agentic search)Off
Notify in Telegram on error"Receive notifications in the Telegram group if auto-update fails"On

Enable auto-update and Notify in Telegram on error stay editable afterwards, under Updates in the source's details (a Product Feed also keeps Agentic Search editable, under Search). While auto-update is on, Updates also has a Refresh period selector — Every hour (default), Every 3 hours, Every 6 hours, Every 12 hours, or Once a day — with a "Next refresh ≈ …" preview. A Product Feed also keeps Index images editable under Search: turning it on asks you to confirm, then re-reads the whole feed to add every product image (the switch is locked while a sync is running). Feed language is set at connect time — to change it, reconnect the source.

Auto-update needs an active subscription

Scheduled auto-updates only run while the account has paid access; Refresh Data in the source's details still works. If an account stays lapsed for 30+ days, its indexed catalog is removed — the connected source and its settings are kept, and the next auto-update after you resubscribe re-indexes it from the feed.

Supported feed formats (auto-detected) ​

MyChatBot auto-detects your feed's format — there's no format picker in the app. The supported formats include:

FormatNotes
JSON product feedFastest to parse
ChatGPT commerce feedOpenAI's commerce feed format
Google ShoppingRSS / Atom; the common default
YMLYandex Market XML (<offer> elements)
Amazon XMLAmazon product XML
AtomGeneric Atom feeds
Generic XMLFlexible fallback for other XML shapes
1C JSONRussia / 1C exports
Shopify storefrontPaste the store address (or a /collections/<handle>/products.json URL for one collection); MyChatBot reads the store's public product data with no app or keys, and each product is one entry with its variants inside — see Shopify store

…plus several store-specific formats. If your feed is a niche format and search looks wrong (for example, every product lands in a single catch-all category), contact MyChatBot support — they can pin the right parser for your catalog.

Load a catalog by method ​

Product Feed (XML / YML / text) ​

The most direct method. Supported formats: XML, YML, TXT. The feed must be publicly accessible and return raw content (no HTML wrapper page).

  1. Knowledge → pick a knowledge base in the dropdown (or + New knowledge base) → the Product Feed row → Connect (opens Connect Product Feed). If the knowledge base already has a feed, click + Add feed first.
  2. Enter the Product Feed URL.
  3. Pick the Feed language closest to your descriptions (so search matches word variations), and optionally a Feed name and Ignore feed attributes — see Connect-dialog settings.
  4. Review the toggles: Enable auto-update (on — re-syncs about every hour), Index images (on), Agentic Search (off — turn on for filter/attribute-aware search on large, heterogeneous catalogs), Notify in Telegram on error (on).
  5. Click Connect to start processing. After it finishes, the app auto-extracts fields (size, price, brand…); open Search filters under Tools in the feed's details to toggle on the ones you want as filters, and enable range search for numeric fields like price.

A typical YML/<offer> shape:

xml
<yml_catalog>
  <shop>
    <offers>
      <offer id="123">
        <name>Product Name</name>
        <description>Product description</description>
        <price>99.99</price>
        <picture>https://example.com/image1.jpg</picture>
        <brand>Brand Name</brand>
        <size>Medium</size>
      </offer>
    </offers>
  </shop>
</yml_catalog>

Two hard requirements

Every product needs a unique id. Duplicate IDs fail the whole import. And for large feeds, categorise properly (usually via your feed's product_type / category field) — flat catalogs hurt search accuracy at scale.

Group variants with parent_product_id

Apparel and other catalogs that ship one row per size/color should set the optional parent_product_id field on each variant to the shared parent product's id. That links the SKUs so MyChatBot relates them and groups them as variants, instead of cluttering search results with near-duplicate rows. Leave it unset for standalone products.

Product Spreadsheet (Google Sheet) ​

Connect a Google Spreadsheet directly. The sheet must be native Google Sheets format — an XLSX file merely stored in Drive will not work.

  1. Knowledge → pick a knowledge base → the Product Spreadsheet row → Connect (+ Add spreadsheet first if the knowledge base already has one).
  2. Grant Google Drive consent (the consent dialog includes an Allow image search checkbox), pick the account, Pick file → select the sheet.
  3. Choose the Feed language and review the toggles (Enable auto-update, Index images, Agentic Search, Notify in Telegram on error — see Connect-dialog settings), then click Preview.
  4. Map Spreadsheet Columns — the app shows your first rows ("Showing first 10 rows for mapping verification") and auto-detects which sheet columns map to the product fields: ID, Product Name, Description, Price, Product Link, Image Link. Fix anything shown as Not mapped — ID and Product Name are required ("Required columns 'id' or 'product' are missing" blocks the connect). Columns detected by aliases get a Rename to '…' suggestion — renaming them in the sheet to the exact suggested names gives the best compatibility.
  5. Click Confirm & Connect.

Column rules:

  • Headers in the first row.
  • id — unique per product (required).
  • product — product name/title (required).
  • parent_product_id — optional; put the same value (the parent's id) on every variant row (sizes/colors of one product) to group them as variants instead of near-duplicate rows.
  • Any additional columns become attributes: price, size, color, composition, category, description, availability, … (unlimited).
  • For image search, put image URLs in columns named image1, image2, image3, image4, and so on.

Once connected, your assistant searches this catalog automatically.

TIP

If it isn't a column, the assistant can't see it. Add every attribute customers ask about. After connecting, you'll get a summary like 119 products, 1 categories.

Product Files (upload) ​

The quickest setup, with the least control. Knowledge → the Product Files row → Connect → select files.

  • Up to 15 files, max 25 MB each (the Upload Files dialog still says 7 MB, but larger files up to 25 MB are accepted).
  • Formats: DOC, DOCX, XLS, XLSX, CSV, PDF, PPT, PPTX, JSON, HTML, TXT.
  • Text and product info are extracted and indexed automatically, then searchable by text.

Limitations

No control over how products are indexed, and no configurable attribute filters. Uploaded files are read as background/reference knowledge rather than added to the searchable product index (see What becomes searchable products vs background knowledge), so the product-search tools, filters, and image search won't cover them. Great for testing search or doc-shaped catalogs; use a feed or sheet for anything you'll run in production.

Product YAML ​

"Products you write yourself in YAML, with any fields" — no feed or sheet required; you maintain the list inside the app. Up to 3 per knowledge base. It is not the product catalog: these records are used only by AI search — no stock, variants or orders.

  1. Knowledge → the Product YAML row (last in Product Inventory) → Connect (+ Add YAML set first if the knowledge base already has one).
  2. In New Product YAML, set a Catalog name and Language → Create.
  3. Add and edit products on the list's own page — Edit products, at the bottom of its details, reopens it anytime.

Its details keep Enable auto-update (with Refresh period) and Agentic Search editable, offer Connect AI tools under Tools, and end with Delete and Refresh Data. Once indexing completes, Details show Loaded products and Total categories. These products land in the searchable product index exactly like a feed's, so the search tools, filters, and the Agentic Search toggle all apply (there's no image-indexing option here).

Instagram products ​

Turn an Instagram business account into a searchable product catalog. Each post and reel becomes a product — its caption supplies the title and description, and its images (plus frames pulled from reels) are indexed for image search too. It auto-updates as the account posts.

Set this up under Channels → Instagram — not the Knowledge page

This is the common confusion: Instagram products is configured under Channels → Instagram (app.mychatbot.app/channels → your assistant → Instagram) — not on the Knowledge page like the other product sources.

  1. Connect the Instagram channel for your assistant — see Connect Instagram.
  2. Turn on Instagram products, choose a feed language (English, Russian, or Ukrainian), and name it.
  3. It indexes existing posts and reels as products and refreshes automatically.

Once indexed, you search it exactly like any other product source — semantic search, filters, and image search all apply, and the Agentic Search toggle (Direct vs agentic search) works here too.

What Instagram products can't do

  • Ingest is time-boxed — very long reels can be capped (only part of a long video is pulled in).
  • It needs a connected Instagram channel to pull from.
  • Languages are English, Russian, or Ukrainian only.
  • Posts are modeled as generic products — there's no price, SKU, or variant unless that detail is written in the caption.

How indexing works ​

The pipeline ​

Once you connect a source, every method runs the same path behind the scenes:

  1. Fetch & parse — MyChatBot pulls your feed and reads its products.
  2. Exclude noise — any attributes you've marked to ignore are dropped before indexing.
  3. Build categories — your category hierarchy and per-category attributes are recorded.
  4. Index for search — each product is indexed for both keyword and meaning-based (semantic) search, along with its filterable fields.
  5. Image indexing (optional) — when image search is on, product images are analyzed.

Processing runs in the background and can take up to an hour for large feeds. While it runs, the source's row reads Indexing… and its Details show live progress statuses:

StatusWhat's happening
Waiting for feed… / Feed starting…Queued; the import is about to begin
Checking for changes…Comparing the source against the last import
Pre-processing feed (≈ N min)Large feeds get a pre-processing pass, with a time estimate
Parsing… N productsReading products out of the source
Generating embeddings for N productsBuilding the meaning-based (semantic) index
Indexed X/Y (+ N images)Writing the index — the image count appears when Index images is on
Complete – N productsDone. Details then show Loaded products: N and Total categories: N

If an import fails, the row reads Needs attention and the details open with the error — and if Notify in Telegram on error is on, an auto-update failure also pings your Telegram group.

Categories, and what "no categories" means ​

Categories drive search structure — results are grouped and ranked per category. If a feed has no category information, every product falls into a single catch-all category. That works, but it disables per-category ranking, so a large uncategorised catalog searches worse. (If a big catalog that should have categories collapses into one, that's usually a sign the wrong parser fired — see the format note above.)

Image indexing ​

When image search is on, MyChatBot analyzes the product's images (up to a limit tuned by MyChatBot). It builds fast visual fingerprints for near-duplicate matching and — when deeper visual matching is enabled for your account — adds AI-based visual recognition for better recall. These power image search (a shopper uploads a photo → finds the matching product). The AI visual matching adds semantic recall but is a little slower; fingerprint-only is faster but more collision-prone. See Image search for the matching pipeline.

Length limits ​

Two size limits shape what's searchable:

  • Descriptions — very long product descriptions are trimmed to a length limit (tuned by MyChatBot) before indexing. Front-load the important detail; anything past the limit isn't indexed.
  • Searchable attributes — all your non-code attributes are combined into one searchable block that filters glob over, and it has a per-product size cap. Keep attribute values concise so the important ones all fit.

Code-like attributes are handled separately

Attributes that look like codes (vendor code, SKU, product code, model number) are kept out of the fuzzy attribute search on purpose. For exact code lookups, the assistant matches them directly (exact-code matching is on by default) or fetches the product by ID. See Filters, attributes & params.

Unrecognised attributes are display-only, not filterable

Attributes nested in an unusual way in your feed — e.g. a price or vendor field the parser didn't expect — can still show on the product card, but they were never indexed as a filterable field, so filters on them silently return nothing. If a field you expect to filter on isn't narrowing results, it likely wasn't indexed as a filter. When that happens, the integration needs a fresh index — see Re-indexing & repairs.

Re-indexing & repairs ​

Normal updates are incremental ​

  • Enable auto-update (per-integration toggle) re-syncs the source periodically — the app's own hint: "usually auto-updates every hour now".
  • Refresh Data (at the bottom of the source's details) re-runs the source on demand; the button shows Refreshing… while it works.
  • Refresh URL (under Tools in the source's details) gives you a per-integration webhook — "Use this URL to trigger a data refresh from external services or automation tools." The dialog shows the URL and an Example cURL request (a simple POST), each with a copy button. Anyone with the URL can trigger a refresh, so treat it as a secret.

All of these re-parse the source and update only what changed — they do not rebuild the index from scratch. That's the right behaviour for day-to-day catalog changes.

A from-scratch reindex isn't a self-serve knob ​

There's no toggle in the app that forces a full from-scratch rebuild. You need one in one main case: an older integration whose attribute filters return nothing because it was indexed before the current search fields existed (see the tip below). When that happens you have two options:

  • Delete and re-add the integration (Delete in the source's details, then connect it again). A fresh integration indexes from scratch with the current pipeline, rebuilding all the searchable and filterable fields. (Re-creating it changes the integration, so re-check any assistant that references it.)
  • Contact MyChatBot support on Telegram: https://t.me/MyChatBot_Support_bot. Support can force a rebuild for you. Include your account id, integration id, and a one-line symptom — e.g. "attribute filters return empty on integration 4821."

Why old integrations' filters go empty

Attribute filters glob over each product's searchable-attributes block. Integrations indexed before that block existed don't have one, so attribute filters silently return nothing. Search auto-falls-back once per request to the per-category typed fields, so many filtered queries still return something (see Filters, attributes & params) — but that masks the gap rather than fixing it. The permanent fix is a from-scratch reindex via the delete-and-re-add or support path above.

Ghost results from an old catalog

Deleting and re-creating an integration can occasionally leave a stale index behind, so search may return products from a catalog you've already removed. A stale index has to be wiped by MyChatBot — contact support on Telegram (https://t.me/MyChatBot_Support_bot) with the account id and integration id.

Best practices ​

Do

  • Give every product a genuinely unique id.
  • Categorise large catalogs (usually via your feed's product_type field).
  • Include every attribute customers ask about — sizes, price, stock, images.
  • Pick the language closest to your descriptions (so search matches word variations).
  • Exclude internal noise attributes that pollute search.
  • Let MyChatBot auto-detect the format; only ask support to pin a parser when a niche feed is genuinely misdetected.
  • Repair an old integration whose filters return empty (or a stuck import) by deleting and re-adding it, or by asking support for a from-scratch reindex.

Don't

  • Don't ship duplicate IDs — they fail the entire import.
  • Don't leave a large catalog uncategorised (it collapses into one catch-all category).
  • Don't expect Refresh Data, the Refresh URL, or auto-update to rebuild a broken index from scratch — they're incremental updates; use delete-and-re-add or support.
  • Don't bury key facts past the description length limit.
  • Don't upload an XLSX-in-Drive as a "Google Sheet" — convert to native Sheets first.

Test it ​

  1. Kick off the feed — connect the integration (or click Refresh Data in its details), then watch the progress statuses in Details until they report Complete – N products (or a failure).
  2. Check the summary — total products and categories should match your catalog. A single catch-all category on a catalog that has categories means the wrong parser fired (ask support to pin the right one).
  3. Run a known-item search — query for a product you know exists and confirm it ranks. If attribute filters return empty on an older integration, it needs a from-scratch reindex: delete and re-add it, or contact support (see Re-indexing & repairs).
  4. Spot-check filters and images — verify a price/attribute filter narrows results, and (if enabled) that an image query returns the right product.

See Testing search for the regression-test pattern (query → expected products).

See also ​