Skip to content
Back to all support articles
Products and ecommerce feedcsvxmlreference

Product feed field reference

Mikabot accepts several common names for each field, so most existing feeds import without editing.

Google Shopping (XML)

ElementMaps toRequired
g:idProduct IDYes
titleProduct titleRecommended
descriptionDescriptionRecommended
g:product_typeCategoryRecommended
g:brandBrandOptional
g:priceRegular priceRecommended
g:sale_priceSale priceOptional
g:availabilityStock statusOptional
g:image_linkImage URLRecommended
linkProduct page URLRecommended

Elements are read with or without the g: prefix.

Without g:product_type Mikabot cannot build a category for that item, and category search will not reach it.

CSV

The first row must be a header row. Column names are matched case-insensitively, and the first name found wins.

FieldAccepted column names
Product ID (required)id, external_id, product_id, sku
Titletitle, product_title, name, product_name
Descriptiondescription, desc, product_description, details
Main categoryproduct_category, main_category, primary_category, category_name
Extra categoriescategories, category, type
Brandbrand, manufacturer, maker, producer
Priceprice, cost, amount, value
Sale pricesale_price, discount_price, special_price, offer_price
Stock statusavailability, stock, stock_status, inventory_status
Image URLimage_link, image, image_url, photo, picture
Product URLlink, url, product_url, website
Languagelanguage, lang, locale

A minimal working CSV

id,title,description,product_category,brand,price,availability,image_link,link
1001,Monstera Deliciosa,"Large-leafed houseplant that tolerates low light.",Houseplants,GreenCo,29.95,in_stock,https://example.com/img/1001.jpg,https://example.com/p/1001

Rules that decide whether a row imports

  • id is required and must be unique. Rows without one are skipped and counted as missing id. Rows sharing an id overwrite each other.
  • Row length must match the header. A stray comma in an unquoted description shifts every following column.
  • Quote any field containing a comma, quote, or line break, using standard CSV double quotes.
  • A language column overrides the import language for that row. Leave it out unless you deliberately mix languages in one file.

How prices are read

Currency symbols, spaces, and thousands separators are stripped, and both European and Anglo-Saxon formats are understood: €1.234,56 and 1,234.56 both become 1234.56, and 19,95 and 19.95 both become 19.95.

A missing or unreadable price becomes 0. A product priced 0 looks broken in the chat, so check that column after your first import.

How stock status is read

Common spellings are normalised to in_stock, out_of_stock, preorder, or backorder. in stock, instock, available, and in all become in_stock; sold out, outofstock, and unavailable become out_of_stock. Anything else is stored as-is.

This field is what Ecommerce → AI configuration → Do not recommend unavailable products acts on. Without it, that setting has nothing to filter.

What the AI reads

The description is the field the AI searches and reasons over.

  • Write what the product is for, not only what it is. Tolerates a north-facing room answers a question a visitor might ask; Height 60 cm does not.
  • Include the words customers use, including informal ones.
  • Avoid HTML, and avoid boilerplate repeated across every product — it makes products harder to tell apart.
  • Fill product_type or product_category. It powers category search.

After importing

  1. Compare Products in Feed with Products in DB
  2. Open Ecommerce → Products and check titles, prices, and images
  3. Open Ecommerce → Categories and confirm the tree looks like your shop
  4. Ask the bot for something ordinary on the Demo page

Related articles

Contact us

Our support team is ready to give you fast, personal help when you need it.