Template

Google Sheets product feed template

A Google Sheet is the fastest way to get a small catalog, a supplemental attribute set or a lookup table into a Google Shopping feed. This page gives you the sheet laid out with Google's attribute headers, the exact Merchant Center steps to sync it, example rows for three uses, and the point at which you should stop editing the sheet by hand and let a feed tool read it as a source or a lookup.

We connect your store, build the feed and keep it in sync. Updated 2026-10-27.

At a glance

  • Row 1 is the header with Google's attribute names: id, title, description, link, image_link, availability, price, brand, gtin, condition, google_product_category.
  • Merchant Center: Products → Add products → add another product source → Use Google Sheets → Use template; delete rows 2 to 5; default sync every 24 hours.
  • Do not wrap values in double quotes in the sheet; they become part of the value. Escape commas, colons and backslashes inside repeated or group attributes.
  • A sheet works as a full feed for a few hundred hand-maintained products, as a supplemental source for custom labels, or as a lookup table a feed tool joins onto a live catalog.

The Google Sheets product feed template, column by column

Merchant Center reads the first row as attribute names, so use Google's spelling exactly. The table lists the columns the template below carries; required attributes come first, then the ones Google uses for variants and grouping. Prices carry the currency code in the cell ('129.99 USD').

ColumnRequired?Example
idRequired, max 50 charactersSKU-10432
titleRequired, max 150 charactersNike Pegasus 41 Men's Road Running Shoes, Blue, US 9.5
descriptionRequired, max 5,000 charactersNeutral daily trainer with ReactX foam and a breathable mesh upper.
linkRequired, http or httpshttps://store.example/products/pegasus-41
image_linkRequiredhttps://cdn.example/pegasus-41-blue.jpg
availabilityRequiredin_stock, out_of_stock, preorder or backorder
priceRequired129.99 USD
brandRequired for new products (most categories), max 70Nike
gtinRequired if the product has one00195866188174
conditionRequired if used or refurbishednew
google_product_categoryRecommendedApparel & Accessories > Shoes
product_typeOptional, max 750Running > Road > Neutral
item_group_idRequired for variantsPEG41
color / size / gender / age_groupRequired for apparel variantsBlue / 9.5 / male / adult
sale_priceOptional109.99 USD
custom_label_0 ... custom_label_4Optional, max 100 characters eachbestseller

Attribute names and limits from Google's product data specification, checked 2026-10-27.

Syncing the sheet with Merchant Center

In Merchant Center, open Products under 'Products & store', select Add products, then the option to add another product source, choose Use Google Sheets and click Use template. Google creates a sheet in your Drive with instructions in rows 2 to 5; delete those rows before adding products. Back in Merchant Center, set the sync schedule; the default is every 24 hours. Products then go through the usual review and any problems appear under the Needs attention tab.

Two formatting rules trip people up. Values must not be wrapped in double quotes, because the quotes become part of the value and 'in_stock' with quotes is not a valid availability. Inside repeated or group attributes (shipping, product_detail) commas, colons and backslashes that belong to a value must be escaped with a backslash. Removing the data source later does not delete the sheet.

The sheet route suits a catalog small enough to maintain by hand. The moment prices or stock change daily, a sheet someone forgets to update becomes a feed full of price mismatches, which is the most common cause of disapprovals you could have avoided.

Three ways to use a product feed sheet

Full feed: every product is a row, the sheet is the primary data source, and you own freshness. Good for a maker with 40 products, bad for a store with a thousand.

Supplemental source: the sheet carries id plus a few columns (custom_label_0, sale_price, product_highlight) and Merchant Center merges them onto a primary feed by id. In Merchant Center this needs the Advanced data source management add-on. Good for marketing attributes that change weekly.

Lookup table: the sheet maps one value to another (category path to Google category, brand variant to clean brand, SKU to margin band) and a feed tool applies it while building the feed from the live catalog. In Textfinity this is the 'replace from google sheet' transform (it reads the first tab's columns A and B and replaces substrings, so keep column A values specific), the 'is in google sheet list' filter operator and the merged source. The sheet never touches Merchant Center; the finished feed does.

Reading the sheet as a source or lookup in Textfinity

Textfinity reads a Google Sheet as a shop source like any CSV URL, re-pulling it on the shop's schedule. More often the sheet is a sidecar: a merged source joined onto a Shopify or XML catalog by key to add columns the store lacks, or a lookup used inside a mapping rule. In both cases the live catalog stays the source of truth for price and stock, and the sheet only carries what humans decide.

Sheet as lookup table (replace from google sheet on google_product_category)

Sheet 'categories', first tab, columns A:B
store_category                  google_product_category
Running > Road                  Apparel & Accessories > Shoes
Home > Desks                    Furniture > Office Furniture > Desks
Skincare > Moisturisers         Health & Beauty > Personal Care > Cosmetics > Skin Care > Lotion & Moisturizer

Examples

Worked examples, by situation

Three sheets for three jobs. Each is two or three rows you could paste into the template.

Ceramics studio · Google Shopping · 35 products · sheet as the whole feed

A hand-maintained primary feed

rows 1-3 of the sheet

id,title,description,link,image_link,availability,price,brand,condition,google_product_category
MUG-01,Stoneware Mug Sand 350 ml,Hand-thrown stoneware mug with a matte sand glaze.,https://kiln.example/mug-sand,https://kiln.example/img/mug-sand.jpg,in_stock,28.00 USD,Kiln & Co,new,Home & Garden > Kitchen & Dining > Tableware > Drinkware > Mugs
BOWL-04,Stoneware Serving Bowl 24 cm,Wide serving bowl in speckled white glaze.,https://kiln.example/bowl-24,https://kiln.example/img/bowl-24.jpg,preorder,64.00 USD,Kiln & Co,new,Home & Garden > Kitchen & Dining > Tableware > Serveware

How we set it up

Sync directly in Merchant Center (Use Google Sheets → Use template, delete rows 2-5). Or we read the sheet into Textfinity as the shop source, so feed hygiene flags a missing image_link or a 160-character title before Google does.

Fashion · Google Shopping · 2,000 SKUs · sheet as custom label supplement

Weekly marketing labels without touching the store

Before

id,custom_label_0
PEG41-BL-95,

After

id,custom_label_0,custom_label_1
PEG41-BL-95,bestseller,spring-26
PEG41-BK-10,clearance,spring-26

How we set it up

We join the sheet as a merged source on id and map custom_label_0 as a rename of the merged column. The Shopify connection stays the source for price and stock; the sheet carries only the labels.

Electronics · Google Shopping + Idealo · 4,000 SKUs · sheet as category lookup

Two lookup sheets, two channel taxonomies

Before

store_category
Audio/Headphones/Wireless

After

Google sheet: Audio/Headphones/Wireless,Electronics > Audio > Headphones
Idealo sheet: Audio/Headphones/Wireless,Kopfhörer > Bluetooth-Kopfhörer

How we set it up

We map google_product_category with replace from google sheet in the Google feed, and category with replace from google sheet in the Idealo custom feed, each pointing at its own two-column sheet (the transform reads columns A and B of the first tab). The merchandiser keeps the same store categories in column A of both.

Copy this plan

Set up the sheet and decide who owns freshness

Twenty minutes for a sheet-only feed; an hour when a live catalog is connected and the sheet stays for lookups.

  1. 01

    Create the sheet from the template

    Download the CSV below and import it into a new Google Sheet (File → Import), or use Merchant Center's own template. Keep row 1 as the header and delete the example rows.

  2. 02

    Fill the required columns first

    id, title, description, link, image_link, availability, price and brand. Add gtin where you have it and item_group_id with color and size for variants. No quotes around values.

  3. 03

    Decide: primary feed, supplement or lookup

    Primary if the sheet is the catalog. Supplement if it adds a few columns to a live feed. Lookup if it maps values. The next step differs for each.

  4. 04

    Primary or supplement: register in Merchant Center

    Products → Add products → add another product source → Use Google Sheets. Set the sync schedule (default 24 hours). Supplements need the Advanced data source management add-on. This step happens in Merchant Center.

  5. 05

    Lookup or sidecar: join it to the live catalog

    Read the sheet as a shop source, join it as a merged source on id or SKU, or point a mapping rule at it. The live catalog remains the source for price and stock.

    What we set up: We read the sheet as the shop source, join it as a merged source on your key, or point a replace from google sheet rule at it, whichever the job needs.
  6. 06

    Check the feed before Merchant Center sees it

    Run a profile for completeness, over-length titles and malformed URLs, then add the feed URL to Merchant Center as a scheduled fetch.

    What we set up: We run feed hygiene on the output, then add the feed URL to your Merchant Center with access you give us, or walk you through it.

Customization tips

Make it yours

Freeze row 1 and protect it

A renamed header silently drops an attribute from the feed. Freeze the header row and protect it so collaborators can edit values but not names.

Keep the currency in the price cell

'129.99 USD' is what Google expects. If the sheet holds bare numbers for convenience, add the suffix in the feed tool (an add suffix ' USD' rule on price) rather than in formulas that break on copy.

Use one sheet per lookup, not one tab per channel

Textfinity reads a lookup from the first tab, column A to column B, so each channel taxonomy gets its own two-column sheet. Keep the store values in column A identical across them, and keep notes on a later tab where the lookup never reads them.

Move price and stock out of the sheet as soon as they change weekly

The sheet is fine for descriptions and labels. Once stock changes daily, connect the store directly and keep the sheet as a merged source; otherwise Merchant Center will find the mismatch before you do.

Downloads

Take the files

FAQ

Questions about google sheets product feed template

Can I use Google Sheets as a product feed for Google Merchant Center?

Yes. In Merchant Center go to Products → Add products, choose to add another product source, select Use Google Sheets and click Use template. Google creates a sheet with instructions in rows 2 to 5 that you delete, then syncs it on a schedule, every 24 hours by default.

What columns does a Google Sheets product feed need?

At minimum id, title, description, link, image_link, availability, price and brand, plus gtin where the product has one and condition for used or refurbished items. Variants add item_group_id with color, size, gender and age_group. Headers use Google's attribute names exactly.

How often does Merchant Center fetch a Google Sheet?

On the schedule you set when registering the sheet; the default is every 24 hours. If prices or stock change more often than you will edit the sheet, connect the store to a feed tool instead and keep the sheet for labels and lookups.

Can I use a Google Sheet as a supplemental feed?

Yes. A sheet with id and the extra columns (custom labels, sale price, highlights) can be registered as a supplemental source in Merchant Center, which requires the Advanced data source management add-on. A feed tool can do the same join upstream: Textfinity merges a sheet onto the catalog by key before the feed is built.

Should I put quotes around values in the sheet?

No. In a Google Sheet source, double quotes become part of the value, so a quoted 'in_stock' fails validation. Quotes are only needed in a CSV file, where they mark cells containing commas.

Set up for you

Keep the sheet for what humans decide; we'll set up the feed for the rest.

Send us your store and your Google Sheet. We join the sheet as a merged source or lookup and publish a Google Shopping feed that rebuilds on a schedule.

Have us build this feedOr email support@textfinity.io

Tell us your store and channels. We reply within 24 hours.