Generating Fake E-commerce Product Data for Shopify and WooCommerce

July 9, 2026

Testing an e-commerce theme or checkout flow with three sample products doesn't reveal much — real stores have hundreds of SKUs, variable pricing, out-of-stock states, and long product titles that break your layout. Generating a realistic bulk catalog up front catches those problems before launch.


Step 1: Define the Fields Your Platform Actually Requires

Shopify and WooCommerce expect different import formats, so define your schema around whichever platform you're targeting before generating data. Both need roughly the same core fields, though — build them once in Dummy JSON Generator and export in the format your platform's importer expects.

{
  "title": "Organic Cotton Crew Socks (3-Pack)",
  "sku": "SOCK-COT-003",
  "price": 14.99,
  "compareAtPrice": 19.99,
  "inventory": 42,
  "category": "Apparel > Accessories",
  "tags": ["cotton", "unisex", "bestseller"]
}

Importing Into Shopify

Shopify's product importer expects a specific CSV column layout (Handle, Title, Variant SKU, Variant Price, etc.) — the fastest path is generating your data with matching field names directly, then uploading through Settings → Import/Export.

Handle,Title,Vendor,Variant SKU,Variant Price,Variant Inventory Qty
organic-cotton-socks,Organic Cotton Crew Socks (3-Pack),Acme Apparel,SOCK-COT-003,14.99,42

Tip: Shopify's dev store mode is specifically built for exactly this — generating and importing bulk test catalogs without touching a real, paying store.


Importing Into WooCommerce

WooCommerce's built-in product importer (Products → Import) also accepts CSV, with its own column naming convention.

SKU,Name,Regular price,Sale price,Stock,Categories,Tags
SOCK-COT-003,Organic Cotton Crew Socks (3-Pack),19.99,14.99,42,"Apparel > Accessories",cotton;unisex;bestseller

WooCommerce's importer lets you map columns manually at import time if your generated field names don't exactly match its defaults, so exact naming isn't critical — just consistency across rows.


Covering the Edge Cases That Actually Break Themes

A representative test catalog should deliberately include:

  • A very long title (60+ characters) — tests text truncation and wrapping in product cards.
  • A product with zero inventory — tests the "out of stock" / "sold out" UI state.
  • A product with a sale price higher than the regular price — an unusual but real data-entry mistake that should be caught by validation, not silently displayed.
  • A product with no image — tests your placeholder/fallback image handling.
  • Prices with different decimal patterns — $9.00, $9.99, $9.5 — to catch currency formatting bugs.

Generating Variants (Size/Color Combinations)

Both platforms support product variants, and this is where hand-writing test data gets tedious fast — a shirt with 4 sizes and 3 colors is 12 variant rows for a single product. Generate the base product once, then programmatically expand it across your variant combinations before export, rather than typing out every row by hand.

const sizes = ['S', 'M', 'L', 'XL']
const colors = ['Black', 'Navy', 'Grey']

const variants = sizes.flatMap(size =>
  colors.map(color => ({
    sku: `SHIRT-${size}-${color.toUpperCase()}`,
    size,
    color,
    price: 24.99,
  }))
)

The Bottom Line

Generate your test catalog with the exact column names your platform's importer expects, deliberately include edge-case products (long titles, zero stock, missing images), and expand variants programmatically rather than by hand — that gets you a realistic store to test against in minutes instead of an afternoon of manual data entry.