aiwoocommerce.nl Free AI audit
bulkworkflow

How to bulk-edit 500 WooCommerce products with AI in a single day

A complete day-of-work playbook: WP All Export, prompt template, batch generation, review pass, WP All Import — 500 products updated end-to-end.

Max van Kuik

I’m going to walk through an actual workday — start to finish — for bulk-editing 500 products in a WooCommerce store using AI. This is the playbook we run during AI Implementation projects. Block out a full day. Nothing else on the calendar. Coffee.

The setup

  • 500 products in WooCommerce
  • WP All Export Pro + WP All Import Pro installed
  • ChatGPT Plus or Claude Pro
  • Optional: n8n self-hosted (for path B at scale)

Goal: replace thin or empty product descriptions with on-brand 100-130 word descriptions, all in one day.

Hour 1 — Establish brand voice (don’t skip)

Pick 5 of your existing best product descriptions. Run them through this analyzer:

Below are 5 product descriptions that represent our brand voice well.
Analyze them and give me:

1. Tone of voice in 3 keywords
2. 5 sentence patterns (length, structure, rhythm)
3. 10 specific words or phrases that are typical
4. 5 words/phrases consistently avoided

Output: a 6-8 line "brand-voice prompt block" I can reuse.

Descriptions:
{paste 5}

Save the output. Take a moment to read it critically — does it actually capture how you write? If not, swap in different example descriptions and re-run.

This is the most important asset of the day. Skip it and you produce 500 generic descriptions.

Hour 2 — Prompt template + 10 product test

Build the per-product prompt template:

Write a WooCommerce product description.

Brand voice:
{paste brand-voice block from hour 1}

Product: {title}
Categories: {categories}
Top 3 specs: {specs}
Target customer: {customer}
Focus keyword: {keyword}

Requirements:
- 100-130 words
- First sentence hooks on use or feeling, not specs
- Middle: 3 short benefit bullets (HTML <ul>)
- Closing: soft CTA, no exclamation marks
- Naturally weave focus keyword + 1 synonym
- Avoid: "premium", "high-quality", "unique"

Output as HTML, no preamble.

Run on 10 products from different categories. Read all 10. Check:

  • Are 7+ ready to publish? Continue.
  • Are 4-6 ready? Sharpen the prompt — usually adding specific avoid words or tightening the structure.
  • Are < 4 ready? Your brand voice block is wrong. Go back to hour 1.

This is where you decide if today is going to ship 500 products or 50.

Hour 3 — Export from WooCommerce

WP All Export Pro → Products. Required columns:

  • SKU
  • Title
  • Categories
  • Tags
  • Description (current)
  • Short description
  • 2-3 ACF fields with key specs (if you use them)

Save as CSV. Open in Google Sheets or Excel.

If your specs aren’t in ACF and only in the description, take 30 minutes to add a “Specs” column manually for at least the first 50 products. This matters more than people think.

Hours 4-6 — Generate at scale

You have two options:

Option A — manual ChatGPT/Claude (under 200 products)

Use this batch prompt:

Below is a 25-product table. For each product, generate a description
following the template. Return a TABLE with columns: SKU, description (HTML).

Brand voice:
{block}

Template:
{requirements}

Avoid: {list}

Products:
SKU | Title | Categories | Specs | Customer | Keyword
...

Run 25 at a time. Paste results into Google Sheets in a description_new column. Repeat 8-20 times.

Watch for:

  • Output running out (model truncates at 25 — sometimes you only get 23). Re-run for the missing 2.
  • Repeated openings (“In a world where…” — flag, regenerate with prompt nudge “vary openings: question / observation / sensory detail”)
  • HTML escaping issues (curly quotes inside HTML attributes — find/replace before importing)

Option B — n8n at scale (200+ products)

Build an n8n flow:

  1. Google Sheets node — read row
  2. Set node — build prompt with row variables
  3. OpenAI node — call gpt-4o-mini
  4. Set node — extract description
  5. Google Sheets node — update row in description_new

Run-time for 500 products: 45-90 minutes depending on rate limits and model speed.

Hour 7 — Review (do not skip)

You have two options:

Full review (only if you have a team)

60 seconds × 500 = 8 hours. Not doable in this day. Schedule for the next two days if quality bar is high.

Sample review (this is the day-1 path)

Read 50 random products (10%). Tally:

  • Publish-ready: ___
  • Minor edits needed: ___
  • Major rework: ___

If 47+ are publish-ready, ship the whole batch and queue the rest for second-pass review.

If under 47, identify the pattern in the bad ones (specific category? specific phrasing AI keeps using?), update the prompt, regenerate that subset.

Hour 8 — Import + verify

Open the Google Sheet → File → Download → CSV.

WP All Import Pro:

  1. New Import → Upload CSV.
  2. Map: SKU to existing products by SKU.
  3. Map description_new column to Description.
  4. Run dry-run. Check the first 5 products in the import preview.
  5. If clean, run live import.

Watch:

  • Import time: 500 products on shared hosting can take 10-15 minutes. Don’t refresh.
  • Yoast/Rank Math will re-analyze in real-time if not disabled. Disable for the import, re-enable after.
  • If you have full-page caching (LiteSpeed Cache, WP Rocket), purge after the import.

After import: spot-check 5 random products on the storefront. Read them out loud. If anything feels off, that’s a sign you need a second-pass review.

Hour 8 (afternoon) — Measure and document

Three things to set up before you walk away:

  1. Note the date in your team Notion: “AI bulk product description regeneration — 500 SKUs — 2026-04-XX”.
  2. Set a reminder for 30 days from now to check Search Console: did CTR or impressions on these product URLs change?
  3. Save the brand-voice prompt block in your prompt library (see the WooCommerce AI prompt library).

That’s the day done. 500 products updated. Now you wait 30 days for the data.

What we typically see at the 30-day check

  • Time on page up 15-30% on the regenerated pages
  • Search impressions up 5-15% (Yoast/Rank Math meta also got refreshed)
  • Conversion rate typically flat to +5% (description quality is one factor among many)

Some workflows take longer to show. Search Console data delays 4-7 days. If you see no change at 30 days, check that the new descriptions actually rendered (cache, theme override, etc.).

What can go wrong

  • HTML escaping issues breaking layout. Fix: find/replace curly quotes and ampersands in the CSV before import.
  • Yoast/Rank Math meta lag — they regenerate analysis on save. 500 products at once can spike CPU. Disable real-time analysis during the import.
  • Slow shared hosting timing out the import. Fix: chunk imports of 50-100 products at a time.
  • AI inventing specs for products without enough input. Fix: only run on products with at least 3 spec inputs. Skip products with sparse data and write those manually.
  • Duplicate or near-identical descriptions across products in the same category. Fix: include Category in the prompt and explicitly ask for variation.

When NOT to do this in a single day

  • If you have less than 3 hours total time — split the workflow over 2 days.
  • If your product data is sparse (no specs, no customer info) — clean the data first.
  • If you’re not sure about brand voice — spend 2 days on hours 1-2 before any bulk run.

Want help running this?

Book a free WooCommerce AI audit. We can either advise (you run it yourself) or run it for you as part of an Implementation project. Either way, you get from 500 thin descriptions to 500 publish-ready ones in a single day.

Ready to put AI to work in your store?

Book a free 60-minute AI audit. You'll walk away with the five highest-leverage AI moves for your store — no commitments.

Related reading