Articles / E-commerce

WooCommerce CSV import: native limits and REST API sync

WooCommerce's native CSV import works fine for 50 products. Beyond that, REST API sync prevents timeouts, broken variations, and duplicate listings.

You’re running a WooCommerce store with a few hundred products and the native CSV import is starting to show its limits. Variations come in messy, PHP times out mid-process, some rows fail, and your descriptions are identical to three competitors who resell the same supplier catalog.

This article is for you if:

  • Your WooCommerce catalog exceeds 200 products or several hundred variations
  • You work with multiple suppliers each with their own file formats
  • You sync stock, prices, or product sheets more than once a week
  • You manage multiple languages (WPML, Polylang) or multiple stores

For a one-off import of 30 products per year, WooCommerce’s native tool is perfectly fine. For everything else, read on.


What WooCommerce’s native CSV import does

Expected format and recognized columns

Since WooCommerce 3.1, a CSV importer is built in: Products > Import. It accepts .csv files in UTF-8 with comma as default (separator is configurable). Column mapping is interactive — WooCommerce auto-detects standard names and offers manual mapping for unknown columns.

The main expected columns:

ColumnDescription
IDWooCommerce ID (empty = creation)
Typesimple, variable, variation, grouped, external
SKUUnique reference
NameProduct name (required)
Published1 published, 0 draft, -1 trash
FeaturedFeatured product
Short descriptionShort description (HTML)
DescriptionLong description (HTML)
Tax status / Tax classVAT configuration
In stock? / StockAvailability and quantity
Regular price / Sale priceRegular and sale price
CategoriesCategories separated by > for hierarchy, , for multiple
TagsComma-separated tags
ImagesURLs separated by comma (first image = featured)
Attribute 1 name / Attribute 1 value(s)Attribute + values for variations
ParentParent ID for variations
Meta: _yoast_wpseo_titleSEO title (with Yoast)
Meta: _yoast_wpseo_metadescSEO meta description (with Yoast)

Technical note: variations are imported as separate rows with Type=variation and Parent=parent_product_ID. On a catalog of 800 products with 60% variable and an average of 6 variations, the CSV easily exceeds 3,500 rows.

How to trigger an import

Import runs server-side in the background, with a progress bar in WordPress Admin. The process depends on the server’s PHP (timeout, memory) and on the number of active WooCommerce/WordPress hooks (each plugin adds work for each created product). A site with 30 active plugins doesn’t import at the same speed as a vanilla site.


The 6 concrete limits of WooCommerce CSV import

1. PHP timeout and memory limit

The most common limit. A shared hosting with max_execution_time at 30s and memory_limit at 256MB stalls after a few hundred products, especially if each product has 4–6 images to download. WooCommerce processes in batches, but the absence of a persistent queue means an interruption (closed tab, lost WordPress session) leaves the import in limbo with no clean retry.

2. Variations: the fragile parent/child tree

An orphan variation (Parent pointing to a non-existent ID or one not yet created in the same import) stays in the database without being attached — invisible on the storefront, only visible via backend. WooCommerce doesn’t alert on these orphans. Worse: if you rename an attribute without re-importing variations, existing attribute values are kept with no mapping, creating “dead cells” in variant selectors.

3. Encoding and separators

WooCommerce accepts UTF-8 and offers separator choice, but a file exported from Excel on Windows often comes in Windows-1252 (Latin-1) or UTF-8 BOM. Accented characters display as é, ç, ô on the storefront. Debugging easily takes two hours for a problem that encoding validation upstream would fix in two seconds.

4. SEO plugin conflicts and meta field compatibility

Meta: columns let you import Yoast/Rank Math/AIO SEO fields, but syntax differs by plugin and version. Changing SEO plugin on the store requires reworking the CSV. Custom meta fields (ACF, theme attributes) must be imported row by row with exact naming.

5. Minimal reporting

WooCommerce displays at import end: “X products imported, Y errors”. Error details are viewable but not exported as a usable CSV. Diagnosing why 47 products failed out of 800 requires going through each manually.

6. Content = what the supplier wrote

This is the most structural limit. The CSV carries the title, description, and characteristics from the supplier. Not your tone, not your SEO keywords, not your translations (WPML/Polylang require a separate import per language). Your competitors who resell the same catalog have the same description. Google systematically demotes duplicate listings between competing resellers.


What an external REST API automation brings

Granular per-product sync

WooCommerce exposes a REST API (/wp-json/wc/v3/products) that lets you create, read, update, and delete each resource (product, variation, image, stock, price) without going through CSV. A solution like PropulseCom uses this API to push only relevant changes — updating 15 prices means 15 API calls, not re-importing a 3,500-row file. The WordPress back-office stays usable during sync.

PropulseCom connects to your store via the creation of a REST API key in WooCommerce > Settings > Advanced > REST API, then automatically reads your categories, attributes, WordPress taxonomies, and active languages (if WPML/Polylang) — with no re-entry.

Idempotency and duplicate handling

A well-built sync is idempotent: the same data sent twice produces the same result. Deduplication relies on a stable identifier — SKU, EAN, or WooCommerce ID — to decide whether to create or update. No phantom products, no duplicate variations, no loss of existing meta-data unrelated to the update.

Error workflow and observability

For each pushed product, the API returns success or failure detail:

  • The error is captured with its cause (inaccessible image, duplicate SKU, missing attribute, non-existent category)
  • The failing product goes through automatic retry without blocking the rest
  • All operations are logged with timestamp, WooCommerce ID, action, and result
  • Tracking advances in real time in the PropulseCom interface

After generating 3,000 products, you know exactly what was created, updated, and what failed — and why.


Concrete use cases

Supplier catalog analysis: new, existing, missing

On each new supplier file, PropulseCom automatically compares the delivered CSV with your actual WooCommerce catalog via the REST API:

  • New products: present in the file, absent from the store → one-click importable
  • Existing products: already in the database → the module displays purchase price gaps (delta in € and %) to validate updates
  • Missing products: in the store, absent from the file → identified to decide on deactivation

The column mapping of each supplier is memorized at the first import and reused automatically on each subsequent delivery.

Product sheet generation in your store’s tone

PropulseCom adds an AI generation layer between the CSV import and creation in WooCommerce. You configure per-field customizable prompts: title, short description, long description, Yoast meta title, Yoast meta description, tags. These prompts encode the tone, vocabulary, and differentiating angles of your brand. The AI then generates within this precise framing for each product in the supplier file.

A test mode on 3 products lets you validate quality before launching bulk generation — accessible directly via the product sheet generator.

Multilingual (WPML / Polylang) at no extra cost

If you use WPML or Polylang to manage multiple languages, PropulseCom automatically detects all active languages at connection and generates content in each in a single pass: 1 credit = 1 product, all languages included. Translated products are created and linked to their original via WPML/Polylang meta-fields, with no additional configuration.


Beyond text: image recognition and enrichable descriptions

AI vision on product images

A supplier CSV often contains image URLs. WooCommerce’s native import downloads them and attaches them via the WordPress media library — without checking they’re usable. PropulseCom analyzes each visual before publication and detects:

  • Watermarks from supplier or partner, not usable in storefront
  • Product/image consistency: does the image really represent the listed product?
  • Resolution: images too low degrade zoom experience and conversion rate

On 2,000 new products delivered, the AI analysis automatically flags non-compliant visuals before publication — avoiding customer returns and a manual audit weeks later. SEO benefit: Google penalizes duplicate images between resellers and low-quality images. Identifying issues upfront avoids post-hoc fixes requiring de-indexing and bot re-crawl. You can check the current state of your store with our SEO shop audit.

Enrichable descriptions: an editorial asset that builds over time

The typical workflow:

  1. Raw supplier CSV — title + characteristics + a generic descriptive sentence
  2. PropulseCom generates — short description, long description, meta title, meta description, tags, in the tone defined by your prompts
  3. You receive in WooCommerce — a pre-filled, editable sheet to which you add your differentiating elements (customer reviews, specific warranties, internal comparisons)

The AI generates content unique to your store — in your style, your keywords, all your languages. Our SEO product page guide details the 6 criteria that make the difference here against a competitor reselling the same products.


Comparison table: Native CSV vs WP All Import vs PropulseCom

CriterionNative WooCommerce CSVWP All Import ProPropulseCom
Supported volumeLimited by PHP timeout / memoryTens of thousands (with cron)Unlimited, auto-batching
Error handlingRecap at import endDetailed log, manual retryPer-product capture, auto-retry, timestamped logs
IdempotencyPartial (by option)YesYes — dedup by SKU/EAN/ID
Reusable mapping templatesLimited (interactive mapping)Yes (schedulable import)Yes — save + reload
AI description generationNoNoYes — per-field customizable prompts
Test mode (3 products before bulk)NoNoYes
Automatic multilingual (WPML/Polylang)No (1 pass per language)Separate paid add-onYes — 1 credit = 1 product, all languages
AI vision on imagesNoNoYes — watermark, consistency, resolution
Supplier catalog analysisNoNoYes — new / existing / missing + price delta
Prepaid creditsN/AAnnual license (~$99–199/yr + add-ons)Yes — 100 credits offered at signup
Human interventionEach importSetup + supervisionInitial setup + quality validation

Note on TCO: the apparent €0 cost of native CSV doesn’t account for operator time. On a catalog synced twice a week, 1 to 2 hours per operation = 100 to 200 hours/year. At $30/hour (loaded cost of an e-commerce employee), that’s $3,000 to $6,000/year of hidden cost — not counting import error corrections and incomplete sheets.


FAQ

Why does WooCommerce CSV import fail with a 500-product file?

Native import runs in the WordPress back-office PHP thread. If processing exceeds max_execution_time (often 30 to 60s) or memory_limit (often 256MB), PHP stops execution with no rollback. On shared hosting, 500 products with remote images and 30 active plugins easily exceed these thresholds. The native solution is to split the file into batches — which doesn’t fix the problem, it displaces it.

What’s the difference between WP All Import and REST API sync?

WP All Import stays in the file logic: it improves format, mapping, reporting, offers scheduled imports, but still processes a batch file. REST API sync is granular — data is read from any source (supplier CSV, feed, internal database) and sent directly to WooCommerce /wp-json/wc/v3/ endpoints, product by product. Business rules apply in the flow, not in preprocessing.

How can I automatically update WooCommerce prices from a supplier file?

PropulseCom reads the purchase price from the supplier file during mapping, applies your margin rule (set once), and writes the regular_price to WooCommerce via the REST API. The same logic is reapplied on each supplier delivery with no manual intervention. The sale_price stays under your control in WooCommerce — automation doesn’t touch active promotions.

Can complex variations (3 axes) be imported via WooCommerce CSV?

Yes, up to 3 attributes with multiple values. But each variation = one CSV row pointing to the parent product via the Parent column. A product with 5 colors × 4 sizes × 2 materials takes 40 child rows. Fragility comes from absolute consistency between attribute names, values, and parent rows — a single naming discrepancy creates orphan variations. PropulseCom generates the variation mapping from your source attributes and guarantees combination consistency.

What sync frequency is possible with the WooCommerce REST API?

The WooCommerce REST API has no documented quota, but the server hosting the store is the real limiting factor. PropulseCom automatically respects the throughput your hosting can absorb with backoff and retry — practical frequency is limited by your credit count and hosting power, not by WooCommerce itself.

How can AI generate unique content when my competitors resell the same products?

Because the generated content isn’t the supplier’s description reformatted — it’s a creation within the precise frame you defined. Customizable prompts let you inject your tone, vocabulary, and differentiating angles (service, expertise, warranties) into each sheet. Two resellers importing the same file will get structurally different descriptions if their prompts differ. Additional leverage with WPML/Polylang: PropulseCom generates in all your active languages in a single pass, at the same cost (1 credit / product). More indexable pages = more SEO surface against a monolingual competitor.


Move to automation

If your WooCommerce catalog changes more than once a week, if you have multiple suppliers with their own formats, or if you waste time reprocessing CSV files in Excel before each import — the native tool costs you more than it saves.

PropulseCom connects your data sources to WooCommerce via the REST API, generates descriptions in your tone, covers all your languages (WPML/Polylang), and analyzes your images before publication. First sheets are generated with 100 credits offered at signup — no credit card required.

Test PropulseCom free on your WooCommerce store

To go further:

Try the related tool

Put this article's tips into practice with our free tool.

Try the free tool