Home → Plugins → Product Sheet Importer

Our own plugin · WooCommerce

Paste the sheet, the plugin fills the product.

Entering products by hand means copying a dozen fields from a document into a dozen boxes, one product at a time. This plugin adds a single box to the product edit screen: paste the whole sheet, click once, and every recognised section goes where it belongs.

version 1.3.2 GPL-2.0-or-later WordPress 5.8+ WooCommerce 6.0+ PHP 7.4+
What it does

Thirteen fields from one paste.

✓

Splits the sheet into WooCommerce fields — title, slug, short and long description, attributes, tags, SEO title, focus keyword, meta description and featured-image meta.

✓

Keeps the HTML from the descriptions — lists, bold text and headings arrive exactly as written.

✓

A missing section never wipes anything. No description in the sheet means the previous description stays. That is the plugin’s central promise and it has tests of its own.

✓

Understands global attributes. It replaces only the ones named in the sheet; the rest keep their position, visibility and variation flag.

✓

Works with your SEO plugin — Yoast, Rank Math, SEOPress and AIOSEO are detected automatically.

What it does not do

There is no AI in it and it never guesses content — it moves exactly what the sheet contains. It does not import images, prices, stock levels or SKUs. It is not a bulk importer either: it works on one product at a time, on that product’s edit screen.

These are deliberate limits, not missing features. Prices and stock have better dedicated tools, and guessing content is the last thing a shop with human-written copy wants.
How it is built

Six decisions that came out of real problems.

Almost every one of them exists because something failed first — on a live shop or in a test.

Priority 999 on save_post, plus a re-entrancy guard

The first version saved the SEO title and focus keyword, and then they vanished. Yoast was overwriting them with empty values during the same save. Hence writing after the SEO plugin rather than before it — and a guard so our own save cannot trigger itself twice.

Global attributes instead of silent duplicates

Originally every attribute was created as a local one. On a shop with a global pa_color that produced a duplicate invisible to filters and archives — the product had a colour, yet never showed up when customers filtered by it. The sheet label is now matched against the existing taxonomy by name, slug and the pa_ prefix.

Creating missing attributes is an explicit choice

The plugin can create a missing global attribute, but only when a checkbox is ticked — and it is off by default. In your shop, a typo in a sheet must not leave permanent junk in the taxonomy.

User content goes through a filter

If the person pasting the sheet lacks the unfiltered_html capability, the content passes through wp_kses_post(). A shop editor cannot inject a script through a box that accepts HTML by design.

A second copy cannot take the site down

A stray folder or a file uploaded by hand next to the real one is a separate plugin as far as WordPress is concerned — activating it would redeclare everything and white-screen the site. So the class and functions are declared conditionally, and the bootstrap waits on plugins_loaded and checks that WooCommerce is actually there.

An unrecognised paste is never lost

When no known section is found, the raw text is stored for five minutes and handed back to the box. A person’s work must not disappear because they formatted something wrongly.

Quality

Tests that need no WordPress install.

The suite stubs the WordPress and WooCommerce functions it needs, so it runs with a single PHP command — no database, no environment, nothing to download.

Official Plugin Check: no errors, no warnings. The plugin has been submitted to the WordPress.org directory, passed the automated scan and is waiting for a reviewer.

The whole working history is public. The repository shows branches, merges and successive versions — including the commits where I fix the mistakes described above.

Let’s start

Need a tool like this in your shop?

If something repeats on every single product, it can usually be reduced to one button. Tell us what you keep clicking through, and we will say whether it is worth automating.

Tell us what to speed up →

Or by e-mail: info@asymetria.com.pl