Feed format
Google Sheets
Google Sheets feed
A Google Sheets feed is a spreadsheet the channel reads directly, with a header row naming the attributes and one row per product. It removes every escaping problem a delimited file has, and it replaces them with a person who can edit the catalogue by hand.
Specification
- Content type
- Not applicable: the channel reads the spreadsheet through the Sheets API rather than fetching a file.
- Compression
- Not applicable.
- One product is
- The first row holds the attribute names and each subsequent row is one product. Columns correspond exactly to the attributes of a delimited feed, and the channel reads the sheet directly rather than downloading an exported file.
- Escaping
- There is nothing to escape, because cell boundaries are structural rather than punctuation. The equivalent hazard is type coercion: a cell that looks numeric is stored as a number, so identifier columns must be formatted as plain text before any value is entered.
A valid google sheets feed
Two products, every required attribute, nothing omitted for brevity. Copy it and replace the values.
Row 1 is the header and every following row is one product. The same columns as a
delimited feed, with no quoting or escaping to get wrong:
| A | B | C | D | E
1 | id | title | price | brand | availability
2 | SHIRT-BLK-M | Oxford Shirt, Black, M | 49.00 GBP | Northbound | in_stock
3 | SHIRT-BLK-L | Oxford Shirt, Black, L | 49.00 GBP | Northbound | out_of_stock
Format the id and gtin columns as plain text before entering any values, or the
spreadsheet will treat them as numbers and strip leading zeros.
Which channels accept it
| Channel | Support | Notes |
|---|---|---|
| Google Shopping | Supported | Merchant Center can read a linked sheet directly, and can generate a template one for you. |
| Meta | Supported | Accepted as a data feed source for a Commerce Manager catalogue. |
| Microsoft Advertising | Not supported | Microsoft fetches a file from a URL or imports a Google Merchant Center account. |
| Not supported | Pinterest fetches a CSV, TSV or XML file from a URL. | |
| OpenAI | Not supported | OpenAI takes files pushed over SFTP. |
What breaks a google sheets feed
The spreadsheet eats identifiers
A GTIN typed into a General-formatted cell becomes a number, and its leading zero is gone before you press enter. Long identifiers can also render in scientific notation. Formatting the id and gtin columns as plain text first is the only reliable prevention, and it has to happen before data is entered rather than after.
It is a catalogue someone can edit
A sheet invites manual correction, which is exactly why it appeals. It also means the feed and the store can disagree, because a price fixed in the sheet is not a price fixed in Shopify. The next generated update overwrites the edit, or worse, does not.
Rewriting a whole sheet does not scale
Keeping a sheet in step with a catalogue of any size means rewriting thousands of rows through the API on every update, which is slow and rate limited. Beyond a small catalogue, a generated file at a stable URL is both faster and less fragile.
Access is a permission, not a URL
A fetched feed breaks visibly when its URL stops working. A sheet breaks when someone changes its sharing settings, moves it into a different drive, or leaves the company, and the failure looks like a channel problem rather than an access one.
Frequently asked questions
Can I use a Google Sheet as a product feed?
Yes, for Google Merchant Center and for Meta. It suits a small catalogue that is genuinely maintained by hand, and it removes every quoting and encoding problem a delimited file has.
Why do my GTINs lose their leading zeros in a sheet?
Because a General-formatted cell stores a numeric-looking value as a number. Format the identifier columns as plain text before entering anything, since reformatting afterwards does not bring the zeros back.
Is a Google Sheet feed a good idea for a Shopify store?
Only for a small, slow-moving catalogue. Shopify already holds the product data, so a sheet adds a second copy that someone can edit, and keeping it current means rewriting every row on every update.
Which channels do not accept Google Sheets?
Microsoft Advertising, Pinterest and OpenAI all expect a file: a fetched URL for the first two and an SFTP push for OpenAI.
Errors this format causes
- Invalid value: GTIN The "Invalid value: GTIN" error means the feed supplied a value in the gtin attribute that is not a structurally valid Global Trade Item Number. Unlike a missing GTIN this is usually a disapproval rather than a warning, because a wrong identifier matches the item to the wrong product rather than to none.
- Mismatched value: price The price mismatch error means the price in the feed does not agree with the price the channel found when it crawled the landing page. On Shopify the three usual culprits are a feed that has not regenerated since a price change, a link pointing at the wrong market's storefront, and a tax convention difference between the feed and the displayed price.
Related concepts
- Product feed A product feed is a structured file listing every item a shop sells, with one row per purchasable item and one column per attribute the destination understands. Sales channels use it to build their own copy of a catalogue, which is why a feed is a translation of a shop's data into another system's schema rather than an export of it.
- Feed scheduling Feed scheduling is the arrangement where a sales channel fetches a feed from a fixed URL on a repeating timetable instead of the merchant uploading a file. It matters because the interval between regenerations is the window in which a channel can be wrong about a price or a stock level, and most mismatch disapprovals are caused by that window being too wide rather than by a bad mapping.
Primary sources
Channel specifications change. These are the official documents this page is based on.