HomeShopify & E-commerceShopify AI Product Description Generator with…

Shopify AI Product Description Generator with n8n (Runs Free on Gemini)

Shopify AI Product Description Generator with n8n (Runs Free on Gemini)

New to n8n? Start with our step-by-step setup guide, then come back to build this workflow.

A Shopify AI product description generator built in n8n listens for new or updated products, sends the title and attributes to Google Gemini, and writes a structured SEO description back into Shopify. You get consistent tone, keyword coverage, and minutes-per-product instead of hours. Setup takes about 20 minutes, runs on your own n8n instance, and costs nothing at typical store volume because Gemini’s free tier covers it.

What this workflow does

Shopify owners lose hours writing product descriptions that sound the same, rank for nothing, and still miss the keyword the customer actually typed. This n8n workflow removes that work. When a product is created or updated in Shopify, n8n fetches the product data, asks Gemini to write a description using a prompt tuned for your brand voice, logs the result to Google Sheets for review, then updates the product back in Shopify through the Admin API.

The output is structured: a short hook, three to five benefit bullets written as sentences (not SEO sludge), a “Perfect for” line that targets the buyer intent, and a specifications block pulled from the product’s variants and metafields. You can run it on your whole catalog once as a backfill, or leave the webhook live so every new product gets a description the moment it’s published.

Why this beats the default approach

Most stores solve this with a paid Shopify app that charges per description, locks your prompt behind a UI, and stores every draft on the vendor’s server. With n8n you keep three things the apps take away: the prompt (so you can tune it when your brand voice shifts), the model choice (Gemini’s free tier for everyday use, a paid model only if you ever need it), and the data path (descriptions never leave your stack except the single call to the model).

It also beats the classic “paste the title into ChatGPT and copy the result back” loop. That loop is fine at ten products. At two hundred it’s the reason nobody writes descriptions on Tuesdays. The workflow here runs on the Shopify webhook, so there is no copy-paste step and no forgotten product.

What you need before you start

A self-hosted or cloud n8n instance, a Shopify store connected to n8n, a free Google Gemini API key from Google AI Studio, and a Google Sheet you will use as the review log. One important note on the Shopify side: since January 2026 you can no longer create a custom app from the store admin. Apps are created in the Shopify Dev Dashboard instead, and the tokens work differently. Follow our guide to connect Shopify to n8n in 2026 first if your store is not connected yet. Total cost to run: zero at typical volume. Gemini’s free tier handles everyday product creation comfortably, n8n execution is free self-hosted, and Google Sheets costs nothing.

Node-by-node list

The workflow uses nine nodes, kept deliberately small so you can debug any step without unpicking a giant branch.

  1. Shopify Trigger: listens on the products/create and products/update topics.
  2. HTTP Request (GET product): fetches the full product record including variants and metafields.
  3. Set: normalizes fields like title, vendor, product_type, tags, variants array, existing body_html.
  4. IF: skips the run if the product already has a description longer than 400 characters (prevents infinite loops on update).
  5. Google Gemini: sends the structured prompt and receives the description.
  6. Code: cleans the model output, strips any leaked system prose, wraps the body in valid HTML.
  7. Google Sheets: appends a row with product ID, old description length, new description, model, timestamp.
  8. HTTP Request (PUT product): pushes the new description to Shopify Admin API.
  9. Slack or Telegram (optional): alerts the team that a product was auto-described, linking the admin URL.

If you want to link this into the rest of your automation stack, see the pillar guide on n8n Shopify automation for the trigger patterns used across every workflow on the site.

Step-by-step build

  1. Connect Shopify to n8n the 2026 way. Shopify removed admin custom apps in January 2026, so the token now comes from an app you create in the Dev Dashboard at dev.shopify.com. Give it read_products and write_products scopes, install it on your store, and set up the n8n credential with the new token flow. The full walkthrough with screenshots is in the connect Shopify to n8n guide. Do this once and every Shopify workflow on your instance reuses it.
  2. Add the Shopify Trigger node. Set topic to products/create. Duplicate the node and set a second trigger to products/update. Connect both into the same branch. n8n will register the webhook with Shopify the moment you activate the workflow.
  3. Add an HTTP Request node to fetch the full product. The webhook payload is light. Call GET https://YOUR-STORE.myshopify.com/admin/api/2026-04/products/{{$json.id}}.json using the same credential. Pull the complete record so you have variants, options, and metafields in one pass.
  4. Normalize the product data in a Set node. Extract the five fields the prompt will actually use: title, vendor, product_type, joined tags, first variant price. A small normalized object keeps your prompt short and the model call fast.
  5. Add the loop-guard IF node. Check whether body_html.length is greater than 400. If yes, route to a “no-op” branch that stops. This is the single most important piece of plumbing in the workflow. Without it, the products/update webhook fires on your own write, re-triggers the flow, and loops forever.
  6. Configure the Google Gemini node. Get a free API key from Google AI Studio and create a Gemini credential in n8n. Model: gemini-2.5-flash. System prompt anchors the brand voice (“write like a confident in-house copywriter, no marketing clichés, no hype words, short sentences”). User prompt injects the normalized product object. Ask for JSON back with three keys: hook, body_html, seo_description.
  7. Parse and clean the response in a Code node. Parse the JSON, enforce a maximum length of 900 characters on body_html, strip any stray backticks, and wrap the body in a single <div> with semantic tags. If parsing fails, route to an error branch that logs the failure and stops. Never push broken HTML to Shopify.
  8. Log to Google Sheets. Append a row to a sheet called Product Description Log with columns product_id, product_title, old_body_length, new_body_html, seo_description, model_used, timestamp. This is your audit trail and the place you’ll look when a description needs a rewrite.
  9. Push the new description back to Shopify. PUT to /admin/api/2026-04/products/{{$json.id}}.json with a body of {"product": {"id": ..., "body_html": "...", "metafields_global_title_tag": "...", "metafields_global_description_tag": "..."}}. The two metafield keys update the SEO title and meta description in one call.
  10. Add the optional Slack or Telegram alert. Send a short message like “New description live for [title]” with a link to /admin/products/{{id}}. For small teams this is the review queue: open the link, skim the copy, edit by hand only if needed.
  11. Activate the workflow and test with one product. Create a draft product with only a title. Save. Within seconds the workflow should fire, log a row in Sheets, and populate the product description. If the loop guard is missing, you’ll see the workflow fire a second time from its own update. Fix that before you turn it on for the full catalog.
  12. Backfill the catalog (optional). Build a second small workflow: Google Sheets trigger reads a list of product IDs you want to regenerate, a Split in Batches node caps throughput at 10 products per minute, and each batch calls the same Gemini plus Shopify PUT pair. The throttle also keeps you inside Gemini’s free-tier rate limits. Run it overnight and check the Sheets log in the morning.

Common mistakes to avoid

The first mistake is skipping the loop guard. The products/update webhook fires every time any field on the product changes, including writes from your own workflow. Without the length check, you get an infinite loop that never stops burning your rate limits. The second is running a big backfill at full speed. Gemini’s free tier has per-minute request limits, so a 5,000-SKU backfill needs the Split in Batches throttle, not a straight loop. Keep it at 10 products per minute and let it run overnight instead.

A third mistake is asking the model for pure HTML. Models leak formatting, add ```html fences, or hallucinate tags that break Shopify’s editor. Ask for JSON, parse it, and build the HTML yourself in the Code node. The fourth is trusting the first prompt you write. The prompt is the product. Iterate it on ten real SKUs before you activate the webhook, and keep the winning version in a private Google Doc so a teammate doesn’t overwrite it in n8n.

The fifth mistake is forgetting the metafield SEO fields. The body_html shows up on the product page, but metafields_global_title_tag and metafields_global_description_tag drive the search snippet. Update all three in the same PUT call.

Cost at realistic volume

For a store adding 20 new products a week, this runs entirely inside Google Gemini’s free tier: the API key from Google AI Studio costs nothing and the free quota covers everyday product creation with room to spare. A one-time backfill of 1,000 existing products also fits the free tier if you throttle it with the Split in Batches node and let it run overnight. n8n execution costs are zero on self-host and covered by any Starter plan on n8n Cloud. Google Sheets is free at this volume.

Compare that to the paid Shopify description apps, which typically charge $19 to $49 per month plus per-description fees. The n8n version costs nothing to run, and there is no per-description meter ticking in the background.

Ready-to-import template

The full workflow, with the prompt, the loop guard, the Sheets schema, and the Shopify PUT payload ready to go, ships as the Shopify AI Product Description Agent. It is built and import-tested against n8n 2.6, uses the current 2026 Shopify connection method, and comes with a setup guide. Import it, swap in your credentials, and activate. If you want it installed on your server with the webhooks verified and the first 20 products backfilled for you, the done-for-you service handles the setup end to end.

FAQ

Will this overwrite my existing product descriptions?

Only if you tell it to. The loop-guard IF node checks the current body_html length. Products with a description over 400 characters are skipped by default. For a deliberate bulk rewrite, run the separate backfill workflow and target the specific product IDs you want regenerated. Never rely on the live webhook for bulk overwrites.

Which AI model should I use?

Start with Gemini 2.5 Flash on the free tier. The quality on product copy is strong and the price is zero, which is hard to argue with. If your brand voice is unusually tight or your SKUs carry nuance that Flash misses on sampling, switch the same node to a heavier Gemini model. It is a one-field change, no other edits needed.

Do I need a paid OpenAI key for this?

No. The workflow runs on Google Gemini, and the API key from Google AI Studio is free. That is the whole point of the setup: there is no per-description cost and no monthly AI subscription. If you already have an OpenAI key and prefer it, you can swap the model node, but nothing in this build requires one.

Can I run this on WooCommerce instead of Shopify?

Yes. Swap the Shopify Trigger for a WooCommerce webhook, change the GET and PUT URLs to the WooCommerce REST endpoints, and keep everything else the same. The prompt, the loop guard, the Sheets log, and the Code node all port directly. The WooCommerce product object uses description instead of body_html, so update the two field names in the Set and HTTP nodes.

How do I keep the brand voice consistent across 500 products?

The system prompt is your brand voice anchor. Write it once, paste examples of three descriptions you love, and lock the temperature at 0.4. For stores with very distinct collections, add a routing IF node after the Set step that picks a different system prompt based on product_type. This scales to as many voices as you have collections without ever duplicating the workflow.

What happens when the AI call returns an error or times out?

The Code node’s JSON parse step fails closed. It routes to an error output that logs the failure to a separate Sheets tab and stops. Nothing gets written to Shopify on a bad response. You review the failures the next morning, retry the affected product IDs through the backfill workflow, and move on. The live product page is never in a broken state.

Related guides

Read the Shopify automation category for the full set of n8n workflows built for store operators, including low-stock alerts, daily sales reports, and order-risk scoring. For the broader tool stack, see the daily sales report workflow and the low-stock alert build.

Prefer it ready to import? Get the Shopify AI Product Description Agent template, built and tested, with a setup guide.