BEAR - WooCommerce Bulk Editor and Products Manager Professional

Export a WooCommerce Price List to CSV by Asking an AI Assistant

A wholesale customer wants your current prices, the warehouse wants a stock sheet, a marketplace wants a file by Friday. Each time you need to export a WooCommerce price list of some products, with some columns, in an order that makes sense to the person receiving it. With BEAR's MCP server connected to an AI assistant such as Claude, that is one sentence: you say which products and which columns, and you get a CSV file through a download link a few seconds later. This guide covers how to ask, what ends up in the file and in what format, where the file is kept and for how long, and how to use it in a spreadsheet or for an import.

One example: a price list for a wholesale customer

You type:

Export the Bags category as a price list: SKU, title, regular price, sale price and stock quantity, in that order. Use semicolons.
  1. The assistant finds the products. It looks up the Bags category and asks BEAR to run a filter on it. BEAR freezes the matching products as a selection and returns the exact count. Say 38 products.
  2. It asks to use woobe_export_csv with that selection, your five columns in your order and a semicolon as separator. Variations are included by default: every variable product is followed by one row per variation, because that is where the prices and stock of a variable product live.
  3. BEAR writes the file on your server, with the same code its own Export tab uses, so every value is formatted exactly as in a file exported on the plugin screen.
  4. You get a short report and a link: how many rows (variations included), how many products were selected, how many columns, the file size and a download link that works for 15 minutes. The assistant is told to give you the link as it is and not to read the file itself.
  5. You open the link and the browser downloads a file named like woobe_mcp_export_2026-10-12_09-30-15_aB3dE9.csv.

The first lines of such a file look like this (illustrative products):

SKU;Title;"Regular price";"Sale price";"Stock quantity"
BAG-100;"Canvas Duffel Bag";0;0;0
BAG-100-BL;"Canvas Duffel Bag - Black, L";134.85;0;24
BAG-100-GL;"Canvas Duffel Bag - Green, L";134.85;114.6;20
TOTE-39;"Summer Tote Bag";109.13;0;56

The zeros in that sample are not mistakes in your data. They are how BEAR 2.2.4 writes empty numbers, explained in the section on values below.

Before you start

You need BEAR with its MCP server switched on in the plugin settings, a shop reachable over HTTPS, and an AI assistant that can connect to an MCP server, such as Claude in the browser, the desktop app or Claude Code, or Cursor. BEAR authenticates with a key in a request header, so ChatGPT works only where its connector lets you add that header. The connection steps are in the MCP server documentation.

Which products go into the export

Anything BEAR's filter can describe: a category, a tag, a brand, an attribute value ("everything in red"), a price range, stock status, product type, a date range, a text in the title or the SKU, or combinations of them. You can also name products or SKUs directly, or ask for the whole catalogue, which the assistant is told to point out before it goes ahead.

  • Export products by category, subcategories included. A category in the filter does not include its subcategories on its own. Say "Bags and everything under it" and the assistant adds the child categories to the filter.
  • Variations. On by default. Each variable product exports its own row first, then one row per variation. Say "without variations" for a list of the products only; a variable product's row then has no usable price.
  • Order. Rows follow the order of the selection, by product ID unless you ask for a sort order, for example by title. Variations always come right after their parent.
  • Size. One export through the connection holds up to 20,000 rows, variations counted. A larger selection is refused with the row count; narrow it, or use the Export tab on the plugin screen, which works in batches and has no such cap.

Which columns, in which order

Name the columns in your own words and in the order you want them. The assistant translates "price" or "stock" into BEAR's field keys from the field list and passes them in your order. A price list that starts with the SKU and a stock sheet that starts with the title come from the same products.

The limit to know: an export can only use the columns that are switched on for the connection. It can narrow and reorder them, not add others. Which columns those are depends on how the assistant is connected:

  • With the shop-wide key there is no WordPress user behind the connection, so BEAR uses its default column set: ID, Thumbnail, Title, Description, Short Desc., Type, Status, Regular price, Sale price, SKU, Manage stock, Stock quantity and Stock status. The columns you switched on for yourself in the editor do not apply to it.
  • With a personal key the connection runs as that user, so it uses the columns that user has switched on in BEAR's Settings tab, with the titles given there.

Ask for a column outside that set, a category column with the shop-wide key for instance, and BEAR writes nothing and answers that the column is not switched on, listing the columns that are available. Three ways round it: connect with a personal key; use the Export tab on the plugin screen, which exports your own columns; or let the shop-wide key use an administrator's column set with this snippet:

// Child theme functions.php or a code snippets plugin.
// BEAR MCP: the shop-wide key has no WordPress user (ID 0).
// Give it the BEAR settings, including the columns, of user 1.
add_filter( 'woobe_settings_key_options', function ( $key ) {
    return 0 === (int) $key ? 1 : $key;
} );

Replace 1 with the ID of the administrator whose columns the exports should use. That user's other BEAR settings, such as column titles, apply to the connection as well. If you already share one settings set between all users with the same filter, the shop-wide key shares it too.

Always name the columns. Without a list, the export takes every available column, and with the shop-wide key that includes full descriptions in HTML and image URLs, which make a price list unreadable.

What the values look like in the file

The file is built by BEAR's export code, which writes values the way WooCommerce's product importer reads them rather than the way a person would format a price list. Know these before you send the file to anyone:

ColumnIn the file
PricesA plain number with a dot as decimal separator, no currency symbol, no thousands separator, trailing zeros dropped: 114.60 is written 114.6.
Empty numbersWritten as 0. A product that is not on sale has 0 as sale price, a variable product's own row has 0 as price, a product that does not track stock has 0 as stock quantity.
Stock status1 for in stock, 0 for out of stock and for on backorder.
Manage stock1 or 0.
Status1 published, -1 draft, 0 private; pending products keep the word pending.
Typesimple, variable, variation, external or grouped, with ", downloadable" or ", virtual" added where it applies.
ThumbnailThe full-size image URL.
CategoriesNames, comma separated, a subcategory written as "Bags > Travel". Variation rows are empty, because categories belong to the parent.
AttributesFour columns each, as the WooCommerce importer expects: values, name, visible, global. In 2.2.4 the values are empty on variation rows.

Two consequences for a price list. First, tell variations apart by SKU or title, not by attribute columns. A variation's title carries its attribute values only when WooCommerce put them there; variation titles with attributes explains when it does. Second, a sale scheduled to start next week already shows its sale price, because the column holds the stored sale price. If that matters, ask the assistant first which products in the list have a sale scheduled.

Prices are the numbers WooCommerce stores, in your shop's main currency, with or without tax according to the WooCommerce setting Prices entered with tax. Nothing is converted. A shop that stores fixed prices per currency as product fields can export them only if those fields are among the available columns.

Separator, encoding and Excel

  • Separator. A comma by default. Ask for a semicolon if your spreadsheet expects one, which is the case in most of continental Europe; any single character works, a tab included. Text with spaces or separators inside is put in double quotes.
  • Encoding. UTF-8 with a byte order mark at the start, so Excel shows accented letters and other alphabets correctly when you double-click the file.
  • Decimal comma. The dot in prices can trouble a spreadsheet set to a decimal comma: 134.85 may stay text, and 12.5 may even turn into a date. Open the file through Excel's Data → From Text/CSV import and set the file's locale to one with a decimal point, such as English (United States); LibreOffice Calc offers the same choice as Language in its import dialog.
  • Formats. CSV only through the connection. The Export tab on the plugin screen also writes XML.

Where the file is and how long the link works

The file is written to BEAR's export folder on your own server, a folder inside the plugin that BEAR closes to direct web access, and the file name ends in random characters so it is hard to guess. You download it through a link to your shop that carries its own random token:

  • The link works for 15 minutes and needs no login, so it opens on any device, including your phone. It can be opened again during those 15 minutes.
  • After that it answers This download link has expired. Ask for the export again. If the file has already been cleaned up, it answers That export file is no longer on the server. Either way, ask again; a new export takes seconds.
  • BEAR's housekeeping deletes export files older than eight hours.
  • Anyone who has the link can download the file while it works. Do not post it in a public channel. For a customer, download the file and send the file, not the link.

The shop's MCP key never appears in the link. Losing a link exposes one file for a quarter of an hour, not access to your shop.

An export changes no products and is never counted against the write allowance of the free version, so it works the same in both versions. When people connect with personal keys, an administrator can close the export to someone with the woobe_mcp_permissions filter by setting the export sector to none.

Using the CSV: customers, suppliers and re-import

For a customer or a supplier, tidy the file in the spreadsheet: delete the rows of variable parents (Type "variable", price 0), clear the zeros in the sale price column, format prices with two decimals and add the currency in the header. Five minutes of work, and the 0 in the sale price column no longer reads as "free".

For the warehouse, ask for SKU, title, stock quantity and stock status. Remember that 0 in Stock quantity can also mean the product does not track stock; add Manage stock to the columns to tell the two apart.

For an import back into WooCommerce, do not load the file unchanged. Empty prices exported as 0 would put products on sale for 0, and a stock quantity of 0 switches stock management on. Updating existing products with a CSV import lists every column to check and gives a filter that writes empty cells instead of zeros. That filter changes the export code itself, so it applies to exports made through the assistant as well. For the Export tab and its options, see the products export documentation.

As a backup before a big text job, an export of ID, title, description and short description keeps the current texts, which is useful before you write WooCommerce product descriptions with AI.

Ready prompts

  • "Export a price list of the Bags category: SKU, title, regular price, sale price."
  • "Same list, Bags and all its subcategories, with semicolons."
  • "Export all products that are in stock: SKU, title, stock quantity, sorted by title."
  • "Export everything on sale right now: SKU, title, regular price, sale price."
  • "Export the variable products in Shirts with their variations: SKU, title, price, stock."
  • "Export the products in Shoes without variations: ID, title, status."
  • "Export products with SKUs TS-101, TS-102 and TS-205: SKU, title, regular price."
  • "Export the drafts created this month: ID, title, regular price, status."
  • "Export ID, title, description and short description of the Candles category as a backup."
  • "Export the out-of-stock products for my supplier: SKU, title, stock status."

Checklist

  • MCP server on and the assistant connected (setup).
  • The count of products matches what you expect; subcategories added if you want them.
  • Columns named, in your order; for a column outside the available set, use a personal key, the Export tab or the snippet above.
  • Variations on for prices and stock, off for a list of product names.
  • Semicolon if your spreadsheet expects one; import through Data → From Text/CSV if prices do not read as numbers.
  • Download within 15 minutes; send the file, not the link.
  • Before sending: remove parent rows with price 0 and clear zeros in the sale price column.
  • Before a re-import: read the CSV import guide; never import the zeros unchanged.

Questions

Why do my variable products show a price of 0?

A variable product has no price of its own; its variations do. BEAR writes the empty price of the parent as 0. Keep variations on and read the prices from the variation rows.

Can the assistant email the price list to my customer?

No. The export gives you a download link; sending the file is up to you.

Can I export a WooCommerce price list to Excel format?

The connection writes CSV, which Excel opens directly; the byte order mark keeps accented characters intact. If you need .xlsx, save the opened file in that format.

Is there a limit to how many products I can export?

20,000 rows per export through the connection, variations counted as rows. The Export tab on the plugin screen has no such limit.

If something in your shop behaves differently from what is described here, ask on the BEAR support forum.