WooCommerce product import stuck or timing out: isolate the failing batch

A stalled progress indicator does not tell you whether zero, some or all records were saved. Before pressing Import again, establish what the first run actually changed. Repeated blind retries make diagnosis and cleanup harder.

Preserve evidence from the first attempt

Record the time, importer version, file name, chosen mode and last visible result. Save any import error log. Search staging for a few SKUs from the beginning, middle and end of the file, then export the relevant records. This separates an interrupted display from a failed write.

If the upload itself failed, check the file size and the host’s request and upload limits. If processing stopped later, inspect application and server logs around that time. Available machine RAM alone does not establish the PHP memory limit, proxy timeout or image-host response behavior.

Reduce the test without breaking its relationships

Make a small batch containing a complete product family and a few simple products. Keep parents before their children. Preserve the same headers and mapping so the smaller file tests the same structure. Use a CSV-aware tool to split records; quoted descriptions can span multiple text lines.

If images are involved, compare a controlled staging run without image changes against one with a small number of images. This is a diagnostic comparison, not permission to drop required images from the final catalog. If one batch consistently fails, narrow that batch until a specific row, field or external request can be investigated.

Resume from reconciled state

Maintain a manifest with batch name, source row range or identifiers, start time and created, updated, skipped and failed counts. Compare the destination before preparing a retry file. A successful import summary is useful evidence but still needs product-level checks for the representative records.

Do not increase every server limit without identifying the constraint. A slow external image host, a malformed record and an extension conflict call for different fixes. When asking your host for help, provide timestamps and logs rather than a full private customer catalog. Our local fixture tests establish a small baseline; they are not a throughput benchmark for a large store.

Check the result

  • Previously saved records are identified before any retry.
  • Each batch contains complete parent-child relationships.
  • The final manifest accounts for every intended record exactly once.

Documentation for this workflow

Check the instructions for your installed version before changing a store.

Need a second pair of eyes?

We can review the source and agree a repair scope. Start with CSV file repair or staging import help.

Ask about import help