Skip to content
All posts

How to write product descriptions from specifications: copy that says only what the data holds

Supplier descriptions arrive as a marketing paragraph, an empty cell, or the same three lines pasted onto twenty products. A description built from the values already in the row says only what the data holds, and it fits the limits Google, Shopify and OpenAI publish. Here is the method, a spec table becoming a description, and the one rule that keeps generated copy honest.

BeforePREMIUM QUALITY BATH!! FREE DELIVERYLuxurious. Perfect for any bathroom.
AfterA freestanding acrylic bath, 1,700 × 800 mm, in white.
Description

Have a supplier file like this? Send it exactly as it arrived and see the same products before and after.

Supplier descriptions, and why they cannot ship as they are

Open the description column of a supplier spreadsheet and three kinds of cell come back. The first is marketing: “PREMIUM QUALITY FREESTANDING BATH!! FREE DELIVERY”, or a line about the brand’s heritage that nobody could check. The second is empty. The third is the same three lines pasted onto every product in a range, so twenty baths in five sizes share one description that fits none of them exactly.

How to write product descriptions from specifications is a shorter question than it sounds. Take the values already in the row, put them in a fixed order (what it is, what it fits, its measurements, its material, what is in the box), write each as a plain sentence, and leave a sentence out when its field is blank. Every claim in the result points back to a cell that holds it, so the description is exactly as accurate as the data and never more confident.

It is also closer to what the platforms ask for. Shopify’s help centre tells resellers: “don’t use a manufacturer’s exact description, because you want your products to be unique to search engines”.5 OpenAI’s product feed for ChatGPT defines the field as a “Factual product description for this item”.9 And Google’s rules exclude much of what a supplier paragraph contains.

What the channels ask of a description

Google Merchant Center is the strictest reader, so start there. Every product needs a description, in either the description attribute or the structured description attribute, and each takes 1 to 5,000 characters.12 Google truncates longer text with a warning, and a product with no description also gets a warning and “may experience limited performance”.1

Five thousand is a ceiling, not a target. Google’s best practice is to list the most important details in the first 160 to 500 characters, because “customers must click to view product details to find the longer description”.1

The content rules are where supplier text fails: describe only the product itself; leave out promotional text, comparisons, category paths and links to your shop or other websites; do not use capitals for emphasis; and keep the description consistent with the title and the landing page.1 One more rule applies only to text a language model wrote. Descriptions “created using generative AI” must go in the structured description attribute, with its digital source type sub-attribute set to trained_algorithmic_media. If a product carries both attributes, Google uses only the plain description.1

Shopify is looser. Its Description field takes rich text, a new-product import requires only the Title column, and neither help page gives the description a length.56 What Shopify does state is a fallback: if the SEO description, up to 320 characters, is blank, “the product Description is used”.6 Past 320 characters, text “might get cut off in search engine results”, and what survives a cut is the opening.7

Here they are side by side, with WooCommerce and OpenAI’s feed added.

ChannelFieldRequiredLimitWhat the page says about content
Google Merchant Centerdescription or structured_descriptionYes1 to 5,000 characters; longer text is truncated, with a warningThe product only: no promotional text, links, comparisons, category paths or capitals for emphasis
Google Merchant Centerproduct_detailNoUp to 100 detailsConfirmed values only; nothing promotional; do not repeat the description
ShopifyDescriptionNoNot statedResellers should not use the manufacturer’s exact description
ShopifySEO descriptionNo320 charactersWhen blank, the product Description is used
WooCommerceShort description, DescriptionNot statedNot statedOn some servers, WordPress can refuse a CSV containing HTML as the wrong file type
OpenAI product feeddescriptionYesAim for at most 5,000 characters, plain text“Factual product description for this item”
Description fields as each platform publishes them: Google’s description1, product detail3 and specification2 pages, Shopify’s product details5 and CSV6 pages, WooCommerce’s importer documentation8 and OpenAI’s feed specification9.

Why supplier descriptions fail the rules

Set a supplier’s description column against those rules and the same six faults tend to come back.

  • Promotional text. “FREE DELIVERY”, “BEST SELLER”, “SALE ENDS SUNDAY”. Google’s own example of promotional text is “free delivery”, and price and delivery belong in attributes of their own.21
  • Shouting. A whole cell in capitals, which Google calls “common in spam and untrustworthy product listings”.1
  • The range paragraph. One text for every size, so the 1,700 mm bath’s description sits on the 1,500 mm one too. Google’s example for variants does the opposite: two pens share a sentence about the grip and ballpoint, then end “Red ink.” and “Black ink.”1
  • Other products. “Also available in 1,500 mm”, a paragraph on the matching bath filler, a web address. Google asks for the product itself, not “details about compatible products, accessories or other similar products available”, and no links.1 Saying what a product works with is different: Google’s own Chromecast example says it “works with iPhone, iPad, Android, Mac, Windows and Chromebook”.1
  • Nothing to check. “Luxurious. Perfect for any bathroom.” Not a word of it is a value a shopper can filter on. Google’s best practice is the opposite: be “specific and accurate”, and include size, material, technical specifications and the details that define a variant.1
  • Contradiction. A paragraph that says 800 mm wide beside a width column that says 750. Google requires the description to agree with the rest of the data and the landing page, and a shopper cannot tell which figure is right.1

From a spec table to a description

Here is a freestanding bath as a bathroom supplier’s row might hold it, the value each cell becomes once cleaned, and the words each value contributes. Cleaning is its own job, covered in normalising attribute values.

FieldSupplier sentValue usedWords it contributes
TypeFreestanding BathsFreestandingA freestanding bath
MaterialacrylicAcrylicacrylic
Length × width1700x800mm1,700 × 800 mm1,700 mm long and 800 mm wide
Depth580mm580 mm580 mm deep
ColourWHITEWhitein white
Capacity250L250 litresholds 250 litres
Tap holes00has no tap holes
WastePop up waste inc.Pop-up, includedpop-up waste included
Guarantee10 Years10 yearsguaranteed for 10 years
OverflowN/Ablanknothing
Weight3535, no unitnothing until the unit is confirmed
A freestanding bath’s row as a bathroom supplier might send it, the value each cell becomes, and what each contributes to the description. The overflow cell and the unitless weight contribute nothing, on purpose.

The description those words make:

“A freestanding acrylic bath, 1,700 mm long, 800 mm wide and 580 mm deep, in white. It holds 250 litres and has no tap holes. Pop-up waste included. Guaranteed for 10 years.”

At 172 characters, all of it falls within the first 500, where Google’s best practice puts the most important details.1 Every claim in it is a value in the row. There is no price, delivery promise, date, link or superlative, because the patterns that built it have no slot for one.

Notice what it leaves out. No weight, because the supplier’s cell holds a bare 35. And no tap: having no tap holes narrows the choice, but no field says which tap, so that sentence waits for a column that does.

How to build descriptions in a spreadsheet, step by step

Eight steps, in a sheet with one tab per category. Each depends on the one before it.

  1. Clean the values first. One spelling per value, one unit per column, and non-values such as “N/A” cleared to blank. A description built from “1700x800mm” and “WHITE” inherits both.
  2. Choose each category’s fields, in order. What it is first (type, material, main dimensions, colour), then what it fits, which only parts and accessories need (a fridge water filter names the models it fits), then the other measurements, features, what is in the box and the guarantee. Leading with identity puts it in Google’s first 160 to 500 characters and ahead of any 320-character cut.17
  3. Write one sentence pattern per group of fields, with field names in brackets: “A [type] [material] bath, [length] mm long, [width] mm wide and [depth] mm deep, in [colour].” Write it once; use it on every row of the tab.
  4. Make every pattern conditional. Blank field, no sentence. Never write around a gap with “available in a range of sizes” or “see specifications”.
  5. Give the excluded things no slot. Google’s rules keep price, delivery, dates, the company name, links, category paths and comparisons out of a description, so no pattern should have a place for them.1 A feature found only in the supplier’s paragraph needs a column and a source before it gets a sentence.
  6. Check each paragraph against its row. Every number in the description must equal the number in its column, and the title must agree with both.
  7. Measure. Check each description against 5,000 characters, Google’s limit and OpenAI’s guide, and note where the first 500 end.19
  8. Record how the text was made. If a language model wrote or rewrote it, treat it as “created using generative AI” and send it as structured_description, labelled as above.1

One Shopify trap belongs here. When you import with “Overwrite products with matching handles” selected, a blank cell in a non-required column overwrites the stored value as blank, so an empty Description column wipes the store’s descriptions. A column left out of the file leaves them alone.6

When the data does not say

Most rows have a gap somewhere, and what happens at the gap decides whether copy is accurate or only looks it.

  • A blank cell is a sentence left out. The description is shorter and still true.
  • “N/A” means either not applicable or not known, and a description cannot tell which, so it is treated as blank. OpenAI’s feed specification asks the same of its optional fields: omit an unknown value, and do not send placeholders such as “n/a”.9
  • Two values for one field (a length column that says 1700, a paragraph that says 1695) is a flag, not a choice. Someone checks the source; the sentence waits.
  • A number without a unit is not a measurement. The bath’s weight stays out until someone confirms kilograms.
  • An inference is the hardest to resist, because it is often right. No tap holes suggests a floor-standing tap, but a wall-mounted one may suit as well, and the data does not say which.

On one of our recent jobs, for a percussion and pro-audio retailer with 901 products, we checked 874 against a named source and listed the other 27 as unchecked rather than guessing at them. A description follows the same rule: a value without a source is not a sentence yet, only an entry on the list of things to find.

Where the specifications themselves go

A description is prose, and prose is the wrong home for a specification table. A store’s filters and comparison tables read fields, not sentences, so the values stay in their columns after the description is written.

In a Google feed, their home is the product detail attribute: an optional but recommended section name, then an attribute name and a value, up to 100 per product.3 Google says it “provides customers with readable, structured data” and helps them discover product information “across AI-driven surfaces, like AI Mode in Google Search”.3 What those surfaces read is covered in product data for AI shopping.

Its own rules are strict: confirmed values only, nothing promotional and no keywords.3 And the two divide the facts rather than repeat them, since Google’s specification says not to repeat in product details what the description already provides.2 The description carries the fields chosen for it; the details carry the rest. For the bath, that means the weight once its unit is confirmed, and the overflow once someone finds out whether it has one.

What to do with the next supplier file

Descriptions come last in product data enrichment, because they can only be as good as the values they are built from. RefynData’s product data enrichment service works in that order: each SKU or barcode is matched to the real product, gaps are filled and formats made consistent, and the shop title, description, page title and search snippet are written from values already in the data, to enforced length limits. Each value keeps a link to its source, and the review step cross-checks titles against their own specs and values against their source, then flags what does not add up.

For the file on your desk, the order is the same. Clean the values, set each category’s field order and patterns, then build the descriptions, check every number against its column and measure before loading anything into the store or the feed. The supplier’s paragraph stays in the original file, where it can be consulted and cannot be imported.

Questions

How long should a Google Shopping product description be?

Google’s description attribute takes 1 to 5,000 characters, and longer text is truncated with a warning. Its best practice is to put the most important details in the first 160 to 500 characters, because shoppers must click through to read the rest. Short and specific beats long and padded.

Can I use the manufacturer’s product description on my website?

Shopify’s help centre advises resellers not to use a manufacturer’s exact description, so that their products are unique to search engines. A supplier’s paragraph can also carry promotional text and links that Google excludes, or contradict the specifications beside it. Rebuilding the description from the row’s values avoids all three.

What should a product description written from specifications include?

What the product is (type, material, main dimensions and colour), what it fits if it is a part or an accessory, then its other measurements, features, what is in the box and the guarantee. Google’s own list adds shape, pattern, texture and design. Anything no field of the row holds is left out.

Does Google allow AI-generated product descriptions?

Yes, in the structured description attribute, with the digital source type sub-attribute set to trained_algorithmic_media. If a product has both that and the plain description attribute, Google uses the plain one. Whoever writes it, the description must still agree with the rest of the product data and the landing page.

Should product specifications go in the description?

Some of them, as sentences. The full set stays in structured fields that a store’s filters can read. In a Google feed that is the product detail attribute, up to 100 name and value pairs per product, and Google’s specification says not to repeat there what the description provides.

What should a description say when a specification is missing or marked N/A?

Nothing. A blank field is a sentence left out, and N/A counts as blank because it cannot say whether the value is unknown or does not apply. A number without a unit, or two values for one field, is flagged for checking, not guessed. The description gets shorter and stays true.

Sources

  1. Google Merchant Center Help. Description [description] and structured description [structured_description]. Read .
  2. Google Merchant Center Help. Product data specification. Read .
  3. Google Merchant Center Help. Product detail [product_detail]. Read .
  4. Google Merchant Center Help. Misrepresentation. Read .
  5. Shopify Help Center. Product details page. Read .
  6. Shopify Help Center. Using CSV files to import and export products. Read .
  7. Shopify Help Center. Adding and updating products. Read .
  8. WooCommerce documentation. Product CSV Importer and Exporter Documentation. Read .
  9. OpenAI Developers. Agentic Commerce product feed specification: Products. Read .
  10. legislation.gov.uk. Digital Markets, Competition and Consumers Act 2024, section 225 (Prohibition of unfair commercial practices). Read .
  11. legislation.gov.uk. Digital Markets, Competition and Consumers Act 2024, section 226 (Misleading actions). Read .

Try it on a fileyour supplier sent

Nothing goes live without your sign-offEvery value keeps its sourceYour data is never shared

Send one supplier spreadsheet exactly as it arrived. We will show you the same products before and after, with a source on every value we add.

One email with the upload link. Nothing else lands in your inbox.