# Write product descriptions in bulk

> Find products without a description, see new texts next to the old ones, and save them in small batches after you approve them.

Your AI app can find the products that have no description or a thin one, write new texts in your voice and show them next to the old ones. It saves nothing until you approve the exact words. Then it saves in small batches, so you can check each one and roll it back.

## What you need

- **Read-only diagnostics** is enough to find products and to draft texts in the chat. Nothing is saved.
- **Content & store data** (the Content manager preset) to save the texts. On the Free plan your AI app can look and draft but cannot save; [upgrade](/pricing/) when you want it to save.

## Before you start

- Tell your AI app your rules once, for example "no health claims, no superlatives, short sentences". The [site memory](/docs/concepts/memory/) carries them into every session.
- Set a checkpoint before you save anything. For a very large catalog, also make a backup. See [Back up before a big job](/docs/guides/back-up-first/).

## Steps

:::steps
1. **Find the products.**
   - Example prompt: `Show me the products in the Kitchenware category that have no description. Don't change anything.`
   - Your AI app will use `content_query` and `content_get`.
2. **Read one product first.** The app learns where your site keeps a product's text.
   - Example prompt: `Show me how the Cast Iron Skillet stores its description and short description.`
   - Your AI app will use `content_get`.
3. **Draft three samples and show them.**
   - Example prompt: `Write a description for the first three products, 60 to 90 words each, using my rules. Show the current text and the new text side by side. Don't save anything.`
4. **Approve, then save with a dry run.**
   - Example prompt: `Set a checkpoint called "descriptions". Save the first three as a dry run and show me the differences. If they match what I approved, save them.`
   - Your AI app will use `checkpoint_create` and `content_update` with `dry_run`, then `content_update` again to save.
5. **Continue in small batches.**
   - Example prompt: `Do the next five the same way, then stop so I can check them.`
6. **Check the pages.**
   - Example prompt: `Check two of the changed product pages and look for new errors.`
   - Your AI app will use `page_check` and `error_log_read`.
:::

*Example preview on the demo store your-store.com:*

| Product | Current text | New text |
|---|---|---|
| Cast Iron Skillet | (none) | A 12-inch skillet that goes from the stove to the oven. Heat it slowly, cook on it for years. |
| Stoneware Mug | (none) | A hand-sized mug that keeps coffee warm. Dishwasher safe. |

## Check the result

- The app lists what it changed, with the change ids and the checkpoint id.
- **PowerWP AI › Changes** shows each product text as its own change, with a before-and-after diff.
- Open one product page as a visitor.

## How to undo

Each `content_update` is one change, and WordPress keeps a revision of every edited product. Roll back one product, or everything after the checkpoint, in **PowerWP AI › Changes**. A rollback restores the product and leaves the revision. See [Change log and undo](/docs/safety/undo/).

:::cards
- [Write and tidy content](/docs/guides/content/) — Drafts, edits and scheduling.
- [Orders, products and stock](/docs/guides/woocommerce/) — Prices and stock in bulk.
- [SEO audit and fixes](/docs/guides/seo/) — Titles and descriptions for search.
- [Work safely on a live site](/docs/guides/safe-workflow/) — The routine behind every guide.
:::

Source: https://powerwp.ai/docs/guides/product-descriptions/
