How to Create and Debug a Product Feed in Google Sheets
Section 1: Product Feed Specification
Section 1: Product Feed Specification
The ProfitMetrics product feed is based on RSS and is largely compatible with the Google Shopping XML feed, with some additional elements. Key specifications include:
- Encoding: The product feed should be encoded as UTF-8.
- Item Elements: The item elements should include specific information such as
- link
- title
- g:id (unique product ID)
- g:image_link (link to product image)
- g:price (retail price), and more.
- Currency Format: Various currency-related elements can be included, such as pm:price_currency and pm:price_buy_currency.
Things to Note:
- Even though some fields are optional, it is strongly recommended to include as much information as possible for enhanced functionality.
- Each product variant should have its own item, and each item is considered a real sellable product with a unique ID.
- Products must only appear once in the feed; duplicates (field g:id) will result in importing failures.
- Extra fields are ignored, maintaining backward compatibility with Google Shopping feeds.
Example Product Feed
<!-- Example Product Feed -->
<rss pm-type="gs-1.0" xmlns:g="http://base.google.com/ns/1.0" xmlns:pm="https://my.profitmetrics.io/ns/1.0">
<channel>
<item>
<!-- Product Details -->
</item>
<!-- Additional Items -->
</channel>
</rss>
Section 2: Troubleshooting
To ensure a successful product feed, please consider the following troubleshooting tips:
- Check that the overall group is called <channel>.
- Ensure products are labelled <item> and not <products> or <items>.
- Match the ID in the feed with the ID received with orders (usually the internal product variant ID from the e-commerce platform).
- Use pm:price_buy and pm:price_buy_currency for cost prices.
- Required Fields:
- Create "pm:id" and fill it with product IDs.
-
Alternatively, this field can be named several other things in this priority:
pm:id
g:id
id
-
- Create "pm:id" and fill it with product IDs.
-
- Create "title" and fill it with product titles.
- Create "price" and fill it with product prices incl. VAT/Tax.
- Recommended Fields:
- Create "pm:price_buy" and fill it with product costs (costs of goods sold) ex. VAT/Tax.
-
Alternatively, this field can be named several other things:
pm:price_buy
g:cost_of_goods_sold
price_buy
cost_of_goods_sold
g:price_buy
pm:cost_of_goods_sold
cost_price
-
- Create "pm:price_buy_currency
- Create "pm:price_buy" and fill it with product costs (costs of goods sold) ex. VAT/Tax.
Confirm that the feed does not contain illegal characters (such as &, <, >).
Full Specs:
Element | Description | Required |
link | Should to the biggest extent possible match realworld links, to be able to match up pageviews in for example Google Analytics with products. | Optional |
title | Product name | Required |
g:id | Unique Product ID. This should match what is transmitted to profitmetrics in orderspecs | Required |
g:image_link | Link to the product image. Should preferably not be too high resolution. Bounds of about 500x500px are good. But there are no hard restrictions here. | Optional |
g:price |
Retail price, including VAT | Required |
g:google_product_category | Google category from Google product category taxonomy | Optional |
g:brand | Brand of product | Optional |
pm:price_currency | Currency of the Retail price, 3-letter ISO 4217 format | Optional |
pm:price_buy | The cost price of product EX Vat. This can also be any one of the names listed above |
Optional |
pm:price_buy_currency | Currency for the cost price of the product (3 letters ISO 4217 format) | Optional |
pm:num_stock | Number of items in stock | Optional |
pm:category | A category the product is part of. This element can be placed multiple times. Place the most important category first. | Optional |
pm:sku | product SKU (different from ID) | Optional |