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 Base. There's no API to call. Whatever method you pick, your products are parsed and indexed so your agent'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 Base โ†’ pick a knowledge base (or add one with +), then Connect a product source under Product Inventory. Most catalog setup โ€” filters, auto-update, and image search โ€” lives here. (One exception: Instagram products is set up under Channels โ†’ Instagram, not Knowledge Base โ€” see Instagram products below.) https://app.mychatbot.app/knowledge-base

The Product Inventory section of the Knowledge page: connected product sources with their loaded product counts (here a 16-product spreadsheet and a 264-product feed), plus each source's auto-update and Agentic Search toggles

The Knowledge Base page โ€‹

The page (titled Knowledge in the app) is where all sources live. Page-level nuances worth knowing before you connect anything:

NuanceDetail
Multiple knowledge basesThe cards across the top switch between knowledge bases. Add one with the + button โ€” up to 10 per account, and adding one 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 per knowledge baseBusiness Knowledge (FAQ, Business Documents, Business Files, Business Links) and Product Inventory (Products, Product Feed, Product Spreadsheet, Product Files). Both are collapsible; a section starts expanded when it has a connected source.
How many of eachPer knowledge base: up to 3 Product Feeds, 5 Product Spreadsheets, 3 Products catalogs, and 3 FAQs. Every other source type allows one connected instance.
Card menu (โ‹ฎ)Connected cards have a menu (items vary by source): Search filters (when the source has extracted filters), Refresh Data (on-demand re-sync), Refresh URL (a webhook to trigger a refresh externally โ€” see Re-indexing & repairs), Connect AI tools (see Product MCP), and Revoke (delete).

Cards that disable each other

  • Altegio โ€” if an assistant on this knowledge base has the Altegio integration active, all unconnected product cards are blocked, with the note "Connecting product integrations is not available due to active Altegio integration".
  • Business Documents โ€” once connected, the legacy Business Information card is disabled.
  • While one card's connection is in progress, the other cards are temporarily disabled.

"Incomplete" drafts

A card 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 on the card.

What becomes searchable products vs background knowledge โ€‹

Not everything you add lands in product search. Where a source goes decides whether your agent 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, Products / Catalog (added in the app), Instagram productsSearchable product indexโœ… Yes โ€” this is what the product-search tools, filters, and image search actually search
FAQ, Business Documents, Business Files (uploaded DOC / PDF / โ€ฆ)Background knowledgeโŒ No โ€” the assistant references them when answering, but you can't browse or filter them as products
Business Links (your website URLs)Live website lookupโŒ No โ€” 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 the in-app Products catalog.

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).

Cheat sheet โ€‹

Ways to load a catalog โ€‹

MethodBest forHow you connect itAuto-updateImage search
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)Yes โ€” Index images toggle
Product Spreadsheet (Google Sheet)Inventory maintained in a spreadsheetConnect Google Drive and pick the sheetEnable auto-update toggle (โ‰ˆ hourly)Yes โ€” Index images toggle (image1โ€ฆimageN columns)
Products (in-app catalog)Small catalogs you manage by hand in the appProducts card โ†’ Create Products Catalog (name + language)Enable auto-update toggle on the cardNo
Product Files (upload)Existing product docs, quick testsUpload up to 15 filesNoNo
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, or Products to manage a small catalog directly in the app. 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)A short badge shown on the card โ€” how you tell multiple 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
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 on the connected card afterwards (the feed card also keeps Agentic Search editable); Index images and Feed language are set at connect time โ€” to change them, reconnect the source.

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

โ€ฆ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 Base โ†’ pick (or + create) a knowledge base โ†’ Product Feed card โ†’ Connect (opens Connect Product Feed).
  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 in the card menu 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 Base โ†’ pick a knowledge base โ†’ Product Spreadsheet card โ†’ Connect.
  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 agent searches this catalog automatically.

TIP

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

Products (in-app catalog) โ€‹

A "manually managed product catalog" โ€” no feed or sheet required; you maintain the products inside the app. Up to 3 per knowledge base.

  1. Knowledge Base โ†’ Products card โ†’ Connect.
  2. In Create Products Catalog, set a Catalog name and Language โ†’ Create.
  3. Add and edit products on the catalog's own page โ€” the card's green Connected button reopens it anytime.

The connected card keeps two toggles editable โ€” Enable auto-update and Agentic Search โ€” and its menu offers Refresh Data, Connect AI tools, and Revoke. Once indexing completes it shows 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).

Product Files (upload) โ€‹

The quickest setup, with the least control. Knowledge Base โ†’ find the Product Files integration โ†’ Connect โ†’ select files.

  • Up to 15 files, max 7 MB each (per the Upload Files dialog).
  • 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.

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 Base page

This is the common confusion: Instagram products is configured under Channels โ†’ Instagram (app.mychatbot.app/channels โ†’ your agent โ†’ Instagram) โ€” not under Knowledge Base like the other product sources.

  1. Connect the Instagram channel for your agent โ€” 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. The integration card shows live progress statuses while it runs:

Card 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. The card then shows Loaded products: N and Total categories: N

If an import fails, the card is highlighted with an error state โ€” 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 agent 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 (card menu โ‹ฎ) re-runs the source on demand; the menu shows Refreshingโ€ฆ while it works.
  • Refresh URL (card menu โ‹ฎ) 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 (Revoke in the card menu, then reconnect). 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 agent 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 run Refresh Data from its card menu), then watch the card's progress statuses until it reports 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 โ€‹