Quick Start Guide: Importing Products with Super Speedy Imports
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
Table of Contents
- Before You Start
- Understanding Product Data Sections
- Step-by-Step Import Process
- Setting Up Taxonomies
- Working with Images
- Using PHP Functions
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 identifier value | The parent variable product’s unique identifier (typically its SKU) |
When importing variations, the Parent identifier value links each variation to its parent product — it must match the parent row’s unique identifier (typically parent_sku). 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 Imports in your WordPress admin
- Click New Import
- Select WooCommerce Products as the template
- Upload your CSV file or select an existing one
- Click Load
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)
Click Show Secondary if you need to see additional fields like the hidden _price field.
Step 3: Map Stock Fields (Optional)
If your CSV has stock quantities:
- Expand the Stock Management subsection
- 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:
- Expand the Variable Products subsection
- Map Parent identifier value to the column containing the parent product’s unique identifier (typically its SKU)
Step 5: Map Downloadable Fields (Optional)
If importing digital products:
- Expand the Downloadable Products subsection
- Map Download URL to your file URL column
- Map Download Name to your file name column
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:
CSV Example:
Category
Clothing > T-Shirts
Clothing > T-Shirts > V-Neck
Electronics > Phones
In the Taxonomies section, map Product categories to your category column.
Assigning every category level (v2.55.9): A new Additional Option, “Assign every category level (not just the deepest)”, controls whether a product is assigned to every term in its hierarchy or only the deepest (leaf) term. With it on, a product in Clothing > T-Shirts also appears under the parent category page (/product-category/clothing/), and breadcrumbs/layered-navigation include the parents. New imports default this ON. Imports created before 2.55.9 keep their previous leaf-only behaviour until you tick it.
Tags are non-hierarchical. Use commas to separate multiple tags:
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 should create product variations (like Size), 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
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 (v2.55.7): If the featured image URL also appears in the gallery column, it now stays in the gallery. Previously SSI stripped the featured image out of the gallery; it no longer does, since WooCommerce stores the featured image and the gallery as independent fields and allows them to overlap.
Image Handling Options
There is no on/off “upload images” switch. Whenever you map a Featured Image or Gallery Images field, remote image URLs are downloaded into your media library automatically by the upload-remote-images stage.
The image-related setting you can configure in the Additional Options section is:
- Thorough image search — when matching against images already in your media library, search by both post title and filename (the filename in the URL
guid). More accurate matching, but slower on large media libraries. Turn it on when your images might already exist and you want SSI to reuse them rather than re-download.
Use External Images is not an Additional Option. It is a field mapping: map your image-URL column to the External Images field (in the Media section) to store the URLs for the third-party External Images plugin, which serves them from their remote location instead of downloading them. This requires the External Images plugin to be installed.
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
Next Steps
- Review the Creating Custom Templates guide for advanced customization
- Set up Scheduled Imports with Cron for automated updates
- Explore the CLI commands for running imports from the command line
For support, visit Super Speedy Plugins Knowledge Base.