Building and Formatting CSV Product Feeds
Deviking Product Feeds Pro lets you create custom CSV product feeds using data directly from your WooCommerce catalog.
You can control the columns included in the file, their order, the source of each value, formatting rules, delimiters and other CSV-specific options.
This makes CSV feeds suitable for marketplaces, advertising platforms, inventory systems and custom integrations.
Create a CSV Feed
From your WordPress dashboard, go to:
Deviking Feeds → Add Feed
Create a new feed and select:
CSV
You can either start with Custom CSV or apply one of the available CSV-based marketplace templates.
When using a ready-made template, click:
Apply Template
to load the predefined column structure and initial Attribute Mapping.
You can then adjust the mapping to match your WooCommerce catalog.
CSV Structure
A CSV file stores each product as a separate row and each product field as a column.
For example:
id,title,sku,price,availability
123,"Running Shoes",SHOE-123,79.90,"in stock"
124,"Training Shoes",SHOE-124,59.90,"out of stock"In this example:
id
title
sku
price
availabilityare the CSV columns.
Each row in Attribute Mapping defines one of these columns.
Configure the Delimiter
The Delimiter determines which character separates one column from another.
A standard CSV file normally uses a comma:
,which produces:
123,"Example Product",29.90Some destinations may require another delimiter, such as a semicolon:
;resulting in:
123;"Example Product";29.90Always use the delimiter specified by the system receiving the feed.
Configure the Enclosure
The Enclosure determines how text values are wrapped when necessary.
The most common enclosure character is:
"For example:
123,"Premium Running Shoes",79.90Enclosures are particularly important when a value itself contains the configured delimiter.
For example:
Lightweight, breathable running shoecan safely be written as:
"Lightweight, breathable running shoe"without creating an additional CSV column.
Header Row
Enable the CSV header row when the destination expects the first line of the file to contain the column names.
For example:
id,title,price,sku
123,"Example Product",29.90,ABC-123
124,"Another Product",39.90,ABC-124Here:
id,title,price,skuis the header row.
The column names are taken from the output fields configured in Attribute Mapping.
UTF-8 BOM
Some spreadsheet applications or external systems may require a UTF-8 BOM to correctly recognize the file encoding.
Enable this option when the receiving system specifically requires it or when characters such as accented or non-Latin text are not being detected correctly.
For most modern feed systems, standard UTF-8 output is sufficient.
Configure CSV Columns
The Attribute Mapping section controls which columns appear in the generated CSV file.
A basic configuration might look like:
| Output Field | Source |
|---|---|
id | Product ID |
title | Product Name |
description | Description |
sku | SKU |
price | Current Price |
link | Product URL |
image_link | Featured Image |
availability | Stock Status |
This could generate:
id,title,description,sku,price,link,image_link,availability
123,"Example Product","Product description",ABC-123,29.90,"https://example.com/product/example-product/","https://example.com/product.jpg","instock"Add a Column
Add a new row to Attribute Mapping whenever you need another CSV column.
For example:
Output Field: brand
Source: Attribute → Brandadds a column such as:
brand
Example BrandYou can add as many mapping rows as required by the destination.
Reorder Columns
The order of the mapping rows determines the order of the columns in the generated CSV file.
For example:
id
title
price
brandgenerates:
id,title,price,brandIf the destination requires a specific column order, rearrange the mapping rows before generating the feed.
Rename Output Columns
The Output Field does not need to use the same name as the WooCommerce source.
For example:
Output Field: product_name
Source: Product Namegenerates:
product_name
"Example Product"while:
Output Field: item_price
Source: Current Pricegenerates:
item_price
29.90This allows the feed to follow the exact field names required by the destination without changing anything in WooCommerce.
Source
The Source determines where the value for each CSV column comes from.
Sources can include WooCommerce information such as:
- Product ID and SKU
- Product Name
- Description and Short Description
- Prices
- Stock information
- Product URL
- Images
- Categories
- Product attributes
- Taxonomies
- Custom fields / post meta
- Parent-product values
- Static values
The original WooCommerce product data is not modified.
Static Values
You can also create a column containing the same value for every exported product.
For example:
Output Field: condition
Source: Static Value
Value: newproduces:
condition
new
new
newThis is useful when a destination requires a mandatory field that has the same value throughout the catalog.
Fallback Source
A Fallback Source provides an alternative value when the primary source is empty.
For example:
Source: Description
Fallback: Short DescriptionIf a product does not have a full description, the short description is exported instead.
Another example:
Source: SKU
Fallback: Product IDThis helps reduce missing values without requiring separate rules for each product.
Skip Empty Values
Use Skip if empty when a mapping should not output a value if no usable source is available.
For CSV feeds, the corresponding column still remains part of the file structure, but the product’s value for that column can remain empty.
For example:
id,title,brand
123,"Product A","Brand A"
124,"Product B",Prefix and Suffix
Prefix and Suffix allow you to add content around the original source value.
For example:
Source value: 2.5
Suffix: kgcan produce:
2.5 kgAnother example:
Source value: 12345
Prefix: SKU-produces:
SKU-12345These changes affect only the feed output.
Dynamic Prefix and Suffix
Product Feeds Pro can also use dynamic source values inside Prefix and Suffix fields.
This makes it possible to combine several pieces of WooCommerce information into a single CSV value.
Dynamic values use source placeholders such as:
{{source:...}}The placeholder is resolved separately for every exported product.
Transform Column Values
Transforms allow you to modify WooCommerce values before they are written to the CSV file.
Available transformations include options such as:
- Trim
- Strip HTML
- Preserve HTML
- Lowercase
- Uppercase
- Limit characters
- Replace text
- Number Format
- Value Map
Transforms apply only to the generated feed and do not modify the product stored in WooCommerce.
Strip HTML
Descriptions and other WooCommerce fields may contain HTML.
For example:
<p>Premium <strong>running shoes</strong>.</p>Using Strip HTML can output:
Premium running shoes.This is useful when the receiving platform expects plain text.
Preserve HTML
When the destination accepts HTML content, use Preserve HTML instead.
This allows supported markup to remain in the exported value rather than being removed during processing.
Always check whether the receiving platform accepts HTML before enabling this behavior.
Number Format
Use Number Format when the destination requires numeric values in a specific format.
For example, a price can be normalized to:
29.90instead of an inconsistent representation.
This is useful for price, cost and other numeric fields.
Value Map
Value Map lets you translate WooCommerce values into the terminology required by another system.
For example:
WooCommerce Feed
--------------------------
instock → in stock
outofstock → out of stock
onbackorder → preorderThe original WooCommerce stock status remains unchanged.
Only the CSV output is transformed.
Character Limits
Some platforms impose maximum lengths on fields such as product titles or descriptions.
Use the character limit transformation when a value must not exceed a specified length.
For example:
Maximum length: 150ensures that the exported value does not exceed 150 characters.
Product Variations
CSV feeds can include product variations according to the feed’s Product Scope.
You can configure the feed to export:
- products and variations;
- parent products only;
- variations only.
When variations are exported separately, every variation becomes its own CSV row.
For example:
sku,title,color,size,price
TSHIRT-BLK-S,"T-Shirt","Black","Small",24.90
TSHIRT-BLK-M,"T-Shirt","Black","Medium",24.90
TSHIRT-WHT-S,"T-Shirt","White","Small",24.90Variation-specific sources can provide values such as SKU, price, stock and attributes for each variation.
Preview Before Generating
Use Preview before generating the complete feed.
Preview allows you to verify:
- column names;
- column order;
- delimiter;
- mapped product values;
- transformations;
- fallback values;
- variation output.
This is especially useful when working with strict marketplace specifications.
Save and Generate
When your CSV configuration is ready, you can use:
Save Feed
to save the configuration without rebuilding the file.
Use:
Generate Feed
to generate the CSV using the last saved configuration.
Or use:
Save & Generate
to save your current changes and immediately create a new version of the feed.
Open the Generated CSV
After generation, click:
Open Feed
to access the generated file.
The resulting feed can then be supplied to a marketplace or external service using its feed URL.
A simplified final file may look like:
id,title,sku,price,availability
101,"Running Shoes",RUN-101,79.90,"in stock"
102,"Training Shoes",TRN-102,64.90,"in stock"
103,"Walking Shoes",WLK-103,54.90,"out of stock"Recommended Workflow
For a new CSV feed:
Create Feed → Select CSV → Apply Template or Build Mapping → Configure CSV Settings → Preview → Save & Generate → Open Feed
When using a marketplace template, always review the mapped sources before generating the final file. A template defines the expected output structure, but your WooCommerce store may use different attributes or custom fields for values such as brand, GTIN, MPN or other channel-specific data.