This guide walks you through importing WooCommerce products using Super Speedy Imports. By the end, you’ll understand how to map your CSV data to product fields, set up taxonomies, and use PHP functions for advanced data transformations.
Table of Contents
Before You Start
Prepare Your CSV File
Your CSV should have column headers in the first row. Common columns include:
| Column | Example Value |
|---|---|
| Product Name | “Blue Cotton T-Shirt” |
| Description | “Comfortable cotton t-shirt…” |
| Short Description | “Soft cotton tee” |
| SKU | “TSHIRT-BLU-001” |
| Price | “29.99” |
| Sale Price | “24.99” |
| Stock | “150” |
| Category | “Clothing > T-Shirts” |
| Tags | “summer, cotton, casual” |
| Image URL | “https://example.com/tshirt.jpg“ |
Create Product Attributes (If Needed)
If your CSV contains product attributes like Color, Size, or Material, you must create these attributes in WooCommerce before importing:
- Go to Products > Attributes in your WordPress admin
- Enter the attribute name (e.g., “Color”)
- Click Add attribute
- Repeat for each attribute (Material, Size, etc.)
Standard taxonomies like Categories, Tags, and Brands are already available and don’t need setup.
Understanding Product Data Sections
The Product Data panel is organized into sections. Only the Main section is essential—all other sections are optional, and many fields are auto-calculated.
Main Section (Required Fields)
These are the core fields every product needs:
| Field | Description | Required? |
|---|---|---|
| Product Title | The product name displayed in your store | Yes |
| Full Description | Detailed product description (supports HTML) | Recommended |
| Short Description | Brief summary shown near the price | Recommended |
| SKU | Unique product identifier for inventory tracking | Recommended |
| Regular Price | Standard retail price | Yes |
| Sale Price | Discounted price (leave empty if not on sale) | No |
Stock Management Section (Optional)
Map these fields only if your CSV contains stock information:
| Field | Description | Auto-calculated? |
|---|---|---|
| Stock Qty | Number of items in stock | No |
| Manage Stock | Enable stock tracking | Yes (set to “yes” when Stock Qty is provided) |
| Stock Status | instock/outofstock/onbackorder | Yes (calculated from Stock Qty) |
| Backorders | Allow orders when out of stock | No (defaults to “no”) |
| Low Stock Threshold | Alert level for low stock | No (uses WooCommerce default) |
Tip: If you only map Stock Qty, the other stock fields are automatically calculated. You don’t need to map Manage Stock or Stock Status unless you want to override the defaults.
Variable Products Section (Optional)
For product variations (like different sizes or colors of the same product):
| Field | Description |
|---|---|
| Parent SKU | SKU of the parent variable product |
When importing variations, the Parent SKU links each variation to its parent product. The parent product should be imported first (or exist already) with product type “variable”.
Downloadable Products Section (Optional)
For digital products like ebooks, software, or music:
| Field | Description | Auto-calculated? |
|---|---|---|
| Download URL | Direct link to the downloadable file | No |
| Download Name | Display name shown to customers | No |
| Downloadable | Mark product as downloadable | Yes (set to “yes” when Download URL is provided) |
Tip: You only need to map Download URL and Download Name. The Downloadable flag is automatically set when a download URL is provided.
Other Sections
The remaining sections (Publication Date, Publication Info, Other Post Fields) contain WordPress post fields that are auto-populated with sensible defaults:
- Post Status defaults to “publish”
- Post Author defaults to the current user
- Post Date defaults to the current time
- Product Slug is auto-generated from the title
You only need to map these if your CSV contains specific values you want to use.
Step-by-Step Import Process
Step 1: Upload Your CSV
- Go to Super Speedy > Super Speedy Imports in your WordPress admin
- Expand Upload Files and click Browse
- Upload your CSV file and the New Import section will open
- Name your import and choose a Post Type (e.g. Products)
- If you already have a CSV file uploaded, expand New Import, choose the CSV file from the dropdown, name your import and choose the post type.
Step 2: Map the Main Section
The Product Data section appears first. Focus on the Main subsection:
- Product Title — Select the CSV column containing product names
- Full Description — Select the description column
- Short Description — Select the short description column (if you have one)
- SKU — Select the SKU column
- Regular Price — Select the price column
- Sale Price — Select the sale price column (optional)
Step 3: Map Stock Fields (Optional)
If your CSV has stock quantities:
- Map Stock Qty to your stock column
- Leave other stock fields unmapped (they’re auto-calculated)
Step 4: Map Variable Product Fields (Optional)
If importing product variations:
- Map Parent SKU to the column containing the parent product’s SKU
Step 5: Map Downloadable Fields (Optional)
If importing digital products:
- Map Download URL to your file URL column
- Map Download Name to your file name column
Note: This approach means you can load downloadable products, simple products, variable products all from the same CSV file. Super Speedy Imports will auto-calculate the product type based on the relevant fields being populated.
Step 6: Set Up Taxonomies
Scroll to the Taxonomies section to map categories, tags, and attributes. See the Setting Up Taxonomies section below for details.
Step 7: Set Up Images
In the Media section:
- Map Featured Image to your main product image URL column
- Map Gallery Images to additional images (use pipe
|separator for multiple URLs)
Step 8: Save and Run
- Click Save to store your import configuration
- Click Run Import to start the import process
- Monitor progress in the import log
Setting Up Taxonomies
Product Categories
Categories use a hierarchical structure. For nested categories, use the > separator and for multiple categories use the | separator:
CSV Example:
Category
Clothing > T-Shirts
Clothing > T-Shirts > V-Neck
Electronics > Phones
Clothing | Clothing > Jeans
In the Taxonomies section, map Product categories to your category column.
Note: By default Super Speedy Imports will only allocate the leaf category to the product, e.g. with Clothing > T-Shirts, the product gets the T-Shirt category but not the Clothing category. This is a good design and your filters should be able to show children of a category anyway without having to allocate every parent category to the product. However, if you wish to have different behaviour there is an advanced option you can enable by adding this to your wp-config.php:
define('SSI_ADD_ALL_TERMS_FROM_HIERARCHY', true);
Tags are non-hierarchical. Use | pipe or , comma to separate multiple tags.
Note: If your tags have commas in the name, you must include a | symbol in the field even if that means adding the | symbol at the end. Pipe symbol is tried first and if it exists, then commas will be allowed in the tag names. You can use a PHP function to append a | symbol to the end of your tag field if this affects you.
CSV Example:
Tags
summer|cotton|casual|bestseller
winter, wool, premium
Map Product tags to your tags column.
Brands
If you have a brands taxonomy (from a plugin like “Perfect Brands for WooCommerce”):
CSV Example:
Brand
Nike
Adidas
Puma
Map Brands to your brand column.
Product Attributes (Color, Material, Size, etc.)
Product attributes require setup before importing:
Creating Attributes
- Go to Products > Attributes
- Enter “Color” as the name, “color” as the slug
- Click Add attribute
- Repeat for Material, Size, or any other attributes
CSV Format for Attributes
CSV Example:
Color,Material,Size
Blue,Cotton,Large
Red,Polyester,Medium
Green|Blue,Cotton|Silk,Small|Medium|Large
Use the pipe | separator for products with multiple attribute values.
Mapping Attributes
After creating attributes, they appear in the Taxonomies section as “Product color”, “Product material”, etc. Map each attribute to the corresponding CSV column.
Setting Variable Attributes: If an attribute is ever used in product variations (like Size or Color), set the “Variable?” dropdown to “Yes” when mapping that taxonomy.
Working with Images
Featured Image
The main product image. Provide a full URL:
https://example.com/images/product-photo.jpg
Note: If you use a path URL (e.g. product-photo.jpg), Super Speedy Imports will search your media uploads.
Gallery Images
Additional product photos. Separate multiple URLs with a pipe:
https://example.com/img1.jpg|https://example.com/img2.jpg|https://example.com/img3.jpg
Note: Commas can also be used to separate image URLs, but be careful since commas can be part of a valid URL. In those cases, you must use | symbol.
Using PHP Functions
For advanced data transformations, you can use PHP functions instead of direct CSV column mappings.
When to Use Functions
- Transform values (e.g., convert “Yes”/”No” to “instock”/”outofstock”)
- Combine multiple columns into one field
- Apply conditional logic
- Format prices or dates
- Clean up data inconsistencies
Function Format
Switch a field from “CSV Field” to “PHP Function” using the dropdown, then enter a callable function:
return function($data, $h) {
// $data = array of values from the current CSV row
// $h = array mapping column names to indices
// Return the transformed value
};
Example: Calculate Sale Price
If your CSV has a discount percentage instead of a sale price:
return function($data, $h) {
$price = floatval($data[$h['Price']]);
$discount = floatval($data[$h['Discount Percent']]);
if ($discount > 0) {
return $price * (1 - $discount / 100);
}
return ''; // No sale price if no discount
};
Example: Format Product Title
Combine brand and product name into the title:
return function($data, $h) {
$brand = trim($data[$h['Brand']]);
$name = trim($data[$h['Product Name']]);
if (!empty($brand)) {
return $brand . ' - ' . $name;
}
return $name;
};
Example: Set Stock Status from Boolean
Convert a “1” or “0” value to WooCommerce stock status:
return function($data, $h) {
$available = $data[$h['Available']];
return $available == '1' ? 'instock' : 'outofstock';
};
Example: Clean HTML from Description
Strip unwanted HTML tags while keeping basic formatting:
return function($data, $h) {
$description = $data[$h['Raw Description']];
return strip_tags($description, '<p><br><strong><em><ul><li>');
};
Example: Generate SKU from Multiple Fields
Create a SKU from category code and product ID:
return function($data, $h) {
$category = strtoupper(substr($data[$h['Category Code']], 0, 3));
$id = str_pad($data[$h['Product ID']], 5, '0', STR_PAD_LEFT);
return $category . '-' . $id;
};
Tips for Writing Functions
- Always return a value — Even if empty, return
''rather than nothing - Handle missing data — Check if columns exist before accessing them
- Use correct types — Cast to
floatval()for prices,intval()for quantities - Test with a few rows first — Run a small test import before processing thousands of products
Troubleshooting
Products Not Importing
- Check that required fields (Title, Price) are mapped
- Verify your CSV encoding is UTF-8
- Look for errors in the import log
Categories Not Creating
- Ensure the category hierarchy separator is correct (
>by default) - Check for extra spaces around category names
Attributes Not Appearing
- Verify attributes were created in Products > Attributes before importing
- Check that attribute names in your CSV match the taxonomy slug
Images Not Loading
- Verify image URLs are publicly accessible
- Check that your server allows external HTTP requests
- For large imports, images are processed in batches
