Build a CSV with one row per SKU holding real attributes: what it is, materials, size, who it suits, and one genuine difference. Give the AI a fixed structure and a rule to use only those columns, generate in batches of 20 to 50, check for repeated openings and invented specs, read a 10% sample, then import into Shopify's description column.
Near-duplicate copy comes from thin input, not from AI. Feed an assistant 500 rows that say only "blue ceramic pot, 20 cm" and you will get 500 versions of the same sentence. The remedy is upstream: richer columns, several templates, a distinct angle per product, and a check that flags repeated phrases before anything reaches the store.
Decide what makes each SKU different before you write a word
A description is only as unique as the facts behind it. Before prompting, open your product sheet and ask, for each category, what a buyer needs to know that they cannot see in the photo. Those answers become columns. A garden centre with 500 SKUs across pots, tools, seeds and gifts might use these:
- Product name and type (a short, factual label)
- Material and finish
- Size in the form buyers think in (diameter and height, or pack quantity)
- Use or setting (indoor, outdoor, sheltered patio)
- Who it suits (beginner, gift, large garden)
- One real difference from the nearest similar product
- Care or fitting note, one line
- Things not to say (for example, "no drainage hole")
- Angle: the reason to buy this one (gift, practical, style, value)
The last two columns are the ones most stores skip. "Things not to say" stops the assistant claiming what you cannot back up; "angle" gives the writing a different centre of gravity for different products, which is the cheapest defence against samey openings.
One structural point about Shopify before you start. A Shopify product can have several variants, such as three sizes or four colours, and the description belongs to the product, not to each variant. According to Shopify's import page, for a product with variants you enter all product fields in the first row, and the following rows carry only the handle and variant details, leaving out the title and description. So the number of descriptions to write is the number of products, which may be well under your SKU count. If 500 SKUs are 180 products with variants, you are writing 180 descriptions.
If your supplier data is messy, clean it first. Cleaning supplier data with AI before a CSV import covers units, duplicates and stray characters, and the advice applies to a Shopify file as much as to a WooCommerce one.

The Complete Excel Course with AI Integration
From formulas and pivot tables to Power Query, DAX, VBA and AI with Copilot, ChatGPT and Claude — hands-on from the first lesson.
By Sagnik Bhattacharya and Virginia Thorn, Primetime Emmy Award winner
Buy nowAn input file of four rows
An illustrative extract of the input, with the columns above condensed so they fit.
| Handle | Name | Material and size | Suits | Real difference | Angle | Do not say |
|---|---|---|---|---|---|---|
| glazed-pot-20 | Glazed plant pot | Glazed ceramic, 20 cm wide, 18 cm tall | Indoor herbs, windowsills | Drainage hole with matching saucer | Practical | Frost-proof |
| terracotta-pot-30 | Terracotta pot | Unglazed clay, 30 cm wide, 28 cm tall | Patio shrubs | Develops a mottled finish with age | Style | Frost-proof |
| hand-trowel-s | Hand trowel | Stainless steel blade, ash handle, 30 cm | Gift for a keen gardener | Blade is marked in depth | Gift | Lifetime guarantee |
| seed-set-herb | Herb seed set | Six packets, basil, parsley, chives, coriander, mint, thyme | Beginners | Sowing calendar on the box | Value | Organic |
Even four rows show why the copy will differ: each has a separate angle, a separate fact and a separate thing to avoid. With 500 rows, spend an hour making sure every row has all of those cells filled. A blank "real difference" is a future duplicate.
If any of your rows hold supplier-written text, treat it as a source of facts and not as copy. The same paragraph appears on every shop that stocks the item. Rewriting supplier copy with AI for dropshipped products deals with that case in detail.
Templates: three or four structures, not one prompt for everything
If every description follows the same shape, they will read as one description. Decide on a small set of structures by product type and let the assistant fill the one that matches the row. For the garden centre:
- Containers and planters: one line on what it is and where it works, one on the real difference, a short list of size and material facts, one line of care.
- Tools: start with the task, then the build, then the dimension facts. No list unless there are four or more specs.
- Seeds and consumables: start with the result, then what is in the pack, then when to sow.
- Gifts: start with the person it suits, then what makes it a good gift, then a practical fact.
Put the structure in the prompt per category, not as a single general instruction. And decide the length range per structure, for example 70 to 110 words for planters and 50 to 80 for seeds, so the sheet does not drift towards one length. Ask for the output in separate fields, one for the body, one for a short SEO description under 155 characters, so you can paste each into its own column.
The prompt for one batch, and what comes back
Here is a prompt that carries the rules. Replace the bracketed parts, paste in 25 rows, and use the same prompt for every batch so changes stay under your control.
You write product descriptions for a garden centre's online shop. Plain, specific, friendly.
Use ONLY the facts in the columns I give you. If a fact is not in the row, do not mention it.
Never use anything listed in "Do not say", and never state a measurement, material or use that is not in the row.
For each row, follow the structure for its category:
- Planters: what it is and where it works / the real difference / three or four size and material facts as a short list / one care line. 70 to 110 words.
- Tools: the task first / the build / dimensions. 50 to 90 words.
- Seeds: the result first / what is in the pack / when to sow. 50 to 80 words.
- Gifts: who it suits first / why it works as a gift / one practical fact. 60 to 90 words.
Use the "angle" column to decide what the first sentence is about.
Do not start two descriptions in the same batch with the same first three words.
Avoid these phrases: "perfect for", "add a touch of", "elevate", "must-have", "look no further".
Return CSV with columns: handle, description, seo_description (under 155 characters).
Rows:
[paste 25 rows]
Illustrative output for the first two rows:
glazed-pot-20, "A glazed ceramic pot for a kitchen windowsill, sized for a single herb plant. The drainage hole comes with a matching saucer, so water stays off the sill. Size: 20 cm wide, 18 cm tall. Material: glazed ceramic. Best for indoor herbs. Empty the saucer after watering.", "Glazed ceramic plant pot, 20 cm, with drainage hole and saucer. Made for windowsill herbs."
terracotta-pot-30, "Unglazed clay ages visibly, and this pot is made to. Expect a mottled, weathered finish after a season on the patio. It holds a good-sized shrub. Size: 30 cm wide, 28 cm tall. Material: unglazed clay.", "Unglazed terracotta pot, 30 cm, for patio shrubs. Weathers to a mottled finish."
Check what the assistant did and what you would fix. In the first row it opened on the setting, as asked, and used only the supplied facts. It added "single herb plant", which the row does not say; the row said "indoor herbs", not one plant. That is a small invented claim, so edit it out and add "do not infer how many plants a pot holds" to the prompt. In the second row the opening is distinctive, and "made to" overstates the product; the row says it develops a finish with age, not that it was designed to. Soften it. Both fixes are tiny, and both are the kind of drift that reaches shoppers if no one reads.
What it costs, and which route to use
There are two ways to run 500 rows. One is a chat assistant on a subscription: paste a batch, copy the output, repeat. For 20 batches of 25 rows, expect roughly one to two hours of pasting and checking. The other is the assistant's API, called by a spreadsheet add-on or a short script, which is quicker to repeat but is billed separately from a chat plan: ChatGPT Plus and Claude Pro do not cover API use.
A rough sum shows the scale. Anthropic's pricing page lists its current Sonnet model at $2 per million input tokens and $10 per million output tokens, and says batch processing, which suits a job like this that does not need instant answers, saves 50%. Suppose each batch of 25 rows costs about 2,700 input tokens (the prompt plus the rows) and returns about 4,500 output tokens (25 descriptions of around 180 tokens each). Twenty batches then use about 54,000 input tokens and 90,000 output tokens: roughly $0.11 plus $0.90, about $1 for 500 descriptions at standard rates, or around 50 cents through batch processing. Those token counts are estimates, so treat the figure as an order of magnitude, and check current prices on the vendor's page. The cost is trivial next to the time spent checking, which is where your attention belongs.
If you are on Shopify and wondering whether the built-in assistant is enough for a batch, Shopify Magic compared with ChatGPT for product descriptions sets out the difference. The short version: a built-in tool is convenient for one product at a time, while a CSV route gives you a reviewable file and repeatability.
Uniqueness checks you can run in a spreadsheet
Do not rely on your eyes to catch repetition across 500 pieces of text. Use three simple tests in the sheet before any human reads a line.
Test one: repeated openings. Add a column with the first five words of each description and count how many times each opening appears.
Opening: =LEFT(B2, FIND(" ", B2 & " ", FIND(" ", B2 & " ", FIND(" ", B2 & " ", FIND(" ", B2 & " ", FIND(" ", B2 & " ") + 1) + 1) + 1) + 1) - 1)
Repeats: =COUNTIF(D:D, D2)
If that formula looks heavy, ask your assistant to write the opening-words formula for your column letters. Sort by the Repeats column. Anything above 1 is a repeated opening to rewrite.
Test two: banned and overused phrases. Keep a list of phrases you do not want and count how many appear in each description.
Banned count: =SUMPRODUCT((Phrases!$A$1:$A$60<>"") * ISNUMBER(SEARCH(Phrases!$A$1:$A$60, B2)))
Keep the range fixed and the blank test in place. Searching for an empty cell counts as a match, so a whole-column reference such as Phrases!A:A would count every empty row on the phrase tab and flag every description.
Make the list from the first batch's output: anything that appears in more than a fifth of the rows goes on it. Over a run of 500 this list grows to thirty or forty phrases.
Test three: near-duplicates within a category. For each category, paste ten descriptions into an assistant and ask: "Which pairs of these are near-duplicates, meaning the same sentence structure with only nouns changed? List the pairs and suggest which to rewrite." It is a judgement task that assistants do well, and a short list of pairs is easy to act on.
An illustrative result for a first run of 180 products: 38 shared an opening beginning "Add a", 22 pairs of planter descriptions were near-duplicates, and 9 contained a banned phrase. After tightening the prompt (banned phrases, a distinct angle, no repeated first three words in a batch) and regenerating the worst categories, the second run showed 4 repeated openings and 5 near-duplicate pairs. The change took a morning, and the checks are what proved it worked.
A review sample that finds the mistakes checks cannot
Formulas find repetition but not falsehood. For truth you need a person reading. Read 10 per cent of the descriptions, 50 of 500, chosen to cover every category and every batch, and always include the first and last item of each batch, where drift tends to show.
For each sampled description, check the following against the CSV row, not against your memory:
- Every number, size and quantity matches.
- Every material and use is in the row.
- Nothing from the "do not say" cell appears, in any wording.
- The angle is used and the opening is different from its neighbours.
- No claim about performance, safety, health or durability that you could not support in writing.
- Length is inside the range.
Set a pass mark before you start. A workable rule: if more than two of the 50 have a factual error, regenerate the category that produced them after fixing the prompt, then sample again. If the errors cluster in one kind of fault, fix the prompt for that. A log with three columns (handle, fault, fix) takes a few minutes and shows patterns.
When a description invents a number
This is the most common serious fault, and it deserves its own check. In an illustrative case, a garden centre ran 120 planter rows. The CSV said "20 cm wide, 18 cm tall". Seven descriptions came back saying "holds about 5 litres of compost". The figure was not in the data. It was a reasonable guess for a pot that size, and for a customer buying for a particular plant, a wrong volume is the sort of statement that brings a return and a bad review.
The fix had three parts. The prompt gained a sentence: "Never state volume, weight or capacity unless a column gives it." A formula pulled every number out of each description and compared it with the numbers in that row; any number in the copy that did not appear in the data was flagged. And the sample review checked for the same fault by eye. Ask the assistant to write that comparison for you: "Write a spreadsheet formula or short script that lists every number in column B that does not appear in column C." The check will not catch a word such as "waterproof", so the "do not say" column still matters.
For products where claims can be regulated, such as food, supplements and cosmetics, the bar is higher. What to cut from AI-written supplement copy shows the kind of claim that needs a person with the right knowledge to approve it.
Building the Shopify import file
Shopify imports and exports products as CSV files, and its help page lists the current column names. The ones you need to update descriptions are the URL handle and title (the page shows Title and URL handle as the required columns, the handle being required for updates), Description, and the SEO title and SEO description. Column names have changed over the years and older exports may use earlier names, so copy the headings from a fresh export of your own store and use those exactly.
The safest method is an update-only file:
- Export all your products first, and keep the file untouched as a backup.
- Create a new file whose columns are only: URL handle, Title, Description, SEO title, SEO description. Do not include variant columns.
- Paste in the handle and title from your export, and the generated text for the rest.
- Convert the description to the HTML Shopify expects. A formula such as
="<p>"&B2&"</p>"wraps the paragraph, and your list items can be wrapped the same way. - Save as CSV in UTF-8 with LF line endings, as Shopify recommends, which in many spreadsheet programs means choosing the "CSV UTF-8" option.
The reason to leave out variant columns is on Shopify's page: if you update variant-related columns such as SKU or weight without including the Option1 name and value columns, existing variant data is deleted. Shopify's own example is an SKU column without the Option1 columns, which deletes the product's variant option. Including only the product fields avoids that trap. Shopify also explains the overwrite option: with "Overwrite products with matching handles" selected, values in the file replace those on existing products, and a blank cell in a column that is present clears the value. A column left out leaves the existing value unchanged. If you leave the option unticked, products with matching handles are ignored, and nothing is updated.
Roll out in stages. Import five products and check them in the store admin and on a phone. Import fifty. Then import the rest. At each stage compare the live page with the CSV row, because a stray character or a missing paragraph shows up in the first few products and is cheap to fix there. Keep the backup export until the new copy has been live for a month.
A working plan for an afternoon and a morning
Allow two sessions the first time, and about half that on later ranges.
- Afternoon, hour one: clean the CSV, fill missing attributes, add the "angle" and "do not say" columns.
- Hour two: write the category structures and run a first batch of 25 on one category. Fix the prompt twice if it needs it.
- Hour three: run the remaining batches, categories one at a time, and paste the output into the sheet.
- Next morning, hour one: run the three uniqueness tests and the numbers check, then rewrite or regenerate what fails.
- Hour two: read the 10% sample and log faults.
- Hour three: build the import file, test five products, import the rest in two stages.
The same routine works for each new range, because the prompt, the checks and the import recipe are saved. Add what you learn each time: a new banned phrase, a new thing not to say. That is how a bulk method improves instead of repeating its first draft. For general writing advice on what makes product copy convert once it is unique, see product descriptions with AI that actually sell, and if you would rather set up the whole routine with someone, that is what a 1:1 call is for.
Questions about writing descriptions in bulk
How many products should I send in one batch?
Twenty to fifty rows is a sensible batch. Smaller batches let you catch a problem before it repeats 400 times, and the assistant's attention to each row stays high. Larger batches save little time and make the output harder to check. Run the first batch alone, review it fully, then raise the batch size if the quality holds.
Will Shopify overwrite my existing descriptions on import?
Only if you tick the option to overwrite products with matching handles. Then the values in your file replace the existing ones, and a blank column in the file clears what is there. A column left out of the file leaves existing values unchanged. Export a backup first and test with five products before the full import.
Can I reuse the supplier's descriptions instead?
You can, but the same text appears on every shop that sells the product, so yours has nothing of its own to say. A better route is to use the supplier's facts as the input columns and write your own copy from them. Check each fact against the product, because supplier sheets contain errors too.
What do I do when the AI states a spec that is not in my data?
Treat it as a fault in the prompt and the check, not a one-off. Tighten the instruction to use only the supplied columns, add a post-check that compares every number and material in the copy with the CSV, and regenerate the category where errors appeared. Any spec on a product page is a promise to the buyer.
Further reads
- Clothing Product Descriptions: A Checklist of Fabric, Fit and Care Errors — Fabric, fit and care checks for clothing copy.
- AI for Beauty Brands: Product Copy, Photos and Customer Questions — Product copy checks for a beauty brand.
- Jewellery Product Descriptions: What AI Gets Wrong on Metals — Metal and stone errors AI makes in jewellery copy.
- Multichannel Listing With AI: One Product Across Amazon, eBay and Etsy — Adapting one product's copy for several marketplaces.
- Online Shop AI Mistakes That Hurt Trust and Conversions — How AI slips on product pages cost shoppers' trust.
- AI for WooCommerce Stores: Descriptions and Support Replies — The WooCommerce route to descriptions and support replies.
- Tea Shop Marketing Ideas: Tasting Notes and Gift Sets Written With AI — Turn your own cupping notes into shelf cards and product pages, then price subscription tiers and gift sets by margin before AI writes a word of copy.
- AI for Fabric Stores: Cut-Length Orders and Fabric Descriptions — A fabric shop's workflow: supplier sheet to checked description, then a metre-based order form and emailed requests turned into cut-length lines.
- GPSR Compliance Checklist for Online Sellers: What the EU Rule Asks For — A grouped checklist of what the EU General Product Safety Regulation asks of an online seller, and which supporting documents AI can draft.
- Google AI Mode Shopping: Merchant Center Fixes for a Small Store — A checklist of Merchant Center fixes that make a small store's products eligible for Google's AI shopping, and how AI helps audit your feed.
- Walmart Marketplace Listing Quality: Fix Weak Items With AI — A seller's fix list for low Listing Quality items: what each of the five components measures, what to change first and where AI helps.
- Walmart Marketplace Listing: Draft Titles and Attributes With AI — From a facts sheet to a filled item spec template: prompts for titles, features and attributes, plus the checks that stop upload errors.
- WooCommerce Product Descriptions With AI: Bulk Updates and Safe SEO — A staged way to rewrite WooCommerce descriptions in bulk: export, tier your pages, draft from facts, test on staging, check samples and watch results.
- WooCommerce to Shopify Product Import: Variants and Redirects With AI — Map WooCommerce export columns to Shopify's import file, fix variants and images, build a redirect list and audit a sample before go-live.
- AI for Skincare Products: Six Jobs a Small Brand Can Delegate — Six brand jobs for a small skincare label to hand to AI, each with a prompt, an example and the check that keeps claims safe.
- Applications of AI in E-Commerce: 9 Uses Mapped to a Small Online Store — Nine uses of AI for a small store, ranked by weekly hours saved and matched to Sidekick, Shopify Inbox, Klaviyo and Gorgias, with plan costs.
- AI Tools and AI Development: The Complete 2026 Guide — the AI hub, including every tutorial in the AI-for-business series.
Sources: Shopify's help page on importing and exporting products with CSV files; Anthropic's published API prices; OpenAI's and Anthropic's plan pages.