← /how-to/

How to bulk edit Shopify product descriptions with AI

Shopify gives you no safe bulk path for prose. The fix: AI rewrites your catalog as local files, you review every diff, and only approved copy ships. Try it now free → or book a demo with Curtis

Eight hundred products, and every description needs the same hour of work: the supplier copy rewritten into your voice, the old product name swapped out, the size chart left exactly where it is. The Shopify admin gives you one rich-text box at a time. The bulk editor was built for prices and tags, not paragraphs of HTML. And the official answer for bigger jobs, export a CSV and re-import it, is the route most stores already have a scar from.

AI fixes the hour. It does not, by itself, fix the risk. The job has a reliable shape: pull every description out of the admin, let AI rewrite the files against your rules, review what changed next to the original, and publish only what you approve. Every option below delivers some fraction of that loop. The differences are speed, power, and whether anyone shows you the change before your customers see it.

Your options

Shopify's bulk editor

The built-in bulk editor is a spreadsheet view over the admin, and for prices, tags, and vendor fields it is fine. Descriptions are not what it is for: Shopify's own documentation does not list the description among its examples and recommends CSV for larger updates. There is no find and replace, and no AI anywhere in it. Right tool for flipping a vendor name across forty products. Wrong tool for rewriting prose.

Shopify Magic and Sidekick

Shopify Magic writes a single product description in the editor, free on every plan, and Sidekick edits products conversationally and shows you each change before applying it. Showing the change first is the right instinct. The scale is the problem: Magic works one product at a time, and nothing in Shopify's documentation gives either one a catalog mode. For 30 products, Magic is a free afternoon. For 800, it is the admin route with better company.

A CSV round trip

Export the catalog, edit the Body (HTML) column, re-import with "overwrite products with matching handles" checked. This is the official path for big updates, and it is also where the chatbot-and-spreadsheet workflow lands: paste cells through an AI chat, paste the rewrites back, re-import, same edges. And the edges are sharp. A blank cell in a non-required column does not mean skip, it means overwrite the live value with blank. Touching the option columns regenerates variant IDs, which breaks every subscription, feed, and integration pointing at the old ones. Spreadsheet apps quietly save the wrong encoding and mangle the HTML, and sorting the sheet can sever products from their images. The import writes straight to the live store, cannot be cancelled partway, and the only undo is the backup you remembered to export first.

A bulk-edit app

Apps in this category add what the CSV lacks: find and replace, scheduling, sometimes a revert button. The trade is write access to your whole catalog in exchange for rule-based edits. A rule does exactly what you spelled out, which is both the point and the limit. It can swap a phrase in 800 descriptions; it cannot rewrite supplier copy into your voice. The judgment calls are still yours, one product at a time.

An AI agent wired to the Admin API

The GraphQL Admin API does what you ask, precisely: productUpdate writes only the fields you pass, so a script can rewrite descriptionHtml and leave everything else alone. Wire an AI agent to it, through an MCP server or a custom script, and you have the fastest and most capable option on this page: the whole catalog, real judgment about prose, one prompt. You also have the least supervised. Every mutation lands on the live store the moment it runs. No staging, no preview, and Shopify keeps no version history for descriptions, so one confident hallucination ships to customers at API speed and stays shipped.

Scratch

Scratch keeps the speed and power of the agent route and adds the visibility and safety the live store needs. The agent gets the same full read and write access to your catalog, as files on your laptop instead of mutations on your store. Prices, variants, inventory, and metafields are locked at the connector, and the writeback sends only the fields you approved, so a description job cannot turn into a variant change. Every rewrite comes back as a word-level diff, and only what you approve is published. The trade is stated up front: the review step is yours, and a few hundred diffs is real reading. Scratch does not do that part for you, on purpose.

Option Whole catalog AI judgment Review before live Undo after publish
Admin bulk editor No No No No
Magic and Sidekick No catalog mode Yes Per product No
CSV re-import Yes Bring your own No Your backup, if you made one
Bulk-edit app Yes Rules, not judgment Varies Varies
Agent on the Admin API Yes Yes Only if you build it No
Scratch Yes Yes, your agent Every change, as a diff Per product, even after publish

How the loop works on your catalog

  1. Scratch pulls your catalog into files. Each of your 800 products lands as its own file, in Shopify's GraphQL Admin shape, in a folder on your laptop. The description sits in descriptionHtml; prices, variants, inventory, and metafields sit beside it, locked. Nothing on the live store has changed.
  2. Your AI rewrites the descriptions. Point Claude, Codex, Cursor, or Copilot at the folder and give it the brief. Rewrite every description in our voice, under 160 words, keep every spec and the size chart markup. The agent does 99% of the work, file by file. It holds no API token, so it cannot touch the store even if it tries.
  3. You review every diff and publish. Scratch lays each rewrite next to the original, word by word. Validators run first, if you set them: length caps, banned phrases, fields that must never move. Approve what ships, and Scratch writes only those products back through the Admin API, one at a time, with a log of what went out. The last 1%, deciding what customers see, stays with you. It stays reversible too: reject a published row and the original description goes back.

Start with 50 products. When the first diffs read the way you want, send the agent through the other 750. If you want the exact prompt, including the calibrate-on-one-product safety step, paste the description rewrite skill.

The loop is easier to watch than to describe. Here it is on a live catalog, in five minutes:

Claude5:24

What people use it for

Questions people ask

Can I see every change before it goes live?

Yes. That is the design. Every rewritten description shows up in Scratch as a diff against the original, word by word, and nothing reaches the store until you approve it. The agent edits files on your laptop; it never holds a connection to your store.

What happens to my prices, variants, and inventory?

Nothing. The connector locks them; there is no write path back to them. A description rewrite cannot turn into a price change.

Can I undo a bulk edit after it publishes?

In Shopify itself, no. There is no version history for descriptions, which is why every CSV guide starts with "export a backup first." In Scratch, yes. The original stays next to every published rewrite, per product, and rejecting it puts the old description back.

Why not just use Shopify Magic? It is free and built in.

Use it, for one product at a time. Magic writes a single description in the editor, and nothing in Shopify's documentation gives it a catalog mode. The bulk version of this job needs the same writing plus three things Magic does not have: your rules enforced across every product, a diff to review, and a way back when a rewrite is wrong.

Will the AI invent specs my products do not have?

It can. A model writing confident prose about your own product is the expensive failure mode, and no rule fully prevents it. The diff is what catches it: every changed word sits next to the original before it ships, so the invented waterproof rating is on your screen, not on your storefront. Validators, if you set them, screen the mechanical failures first, length caps, banned claims, a phrase that must survive the rewrite, so your reading time goes to judgment calls instead of counting characters.

Will rewriting every description at once hurt my SEO?

It can, if the rewrite drops the words people search for. Keep specs and product names in the brief, ship in reviewed batches instead of one big bang, and watch rankings between batches. If a batch lands wrong, every product in it reverts per row. We also publish a field study of what ranks on real Shopify stores if you want the target to aim at.

Can I do this without installing a Shopify app?

Yes. Nothing installs into your store, and no app-store listing gets write access to your catalog. Scratch is a desktop app; it connects through a private credential you create in your admin and can revoke any time. The in-Shopify routes without an app, the bulk editor, Magic, and the CSV, are covered above, limits included.

What does the AI get to read, and what leaves my laptop?

The files Scratch pulled, and nothing more. Scratch has no built-in AI and sends your catalog to no model itself. You bring the agent you already use, and it reads the folder the way it reads any folder you open with it, under your own account and plan. Which model sees your content stays your call.

Do I need to be technical?

No. You install a desktop app, connect Shopify, and write the brief in plain English; the agent works the files. Reviewing is reading a tracked-changes view and clicking approve or reject. The CSV never happens. Validators are optional, for when the job becomes a routine.

See it on your own catalog

The fastest way to trust it is to watch it run on your products. See it run on your Shopify catalog →, or download Scratch free and pull your first 50 products this afternoon. Scratch is free to try, and the AI is whichever agent you already pay for.

See it run on your own content.

Curtis runs these calls himself. Thirty minutes, no pitch, no slides. He connects your platforms live and shows you your content as an editable, reviewable diff. Bring anything sticky: a refresh, a migration, or a rebrand.

See it run on your content → or download it free