Blog
Generating the product feed from your warehouse is one query. Keeping it in sync is the longer story.
Dynamic remarketing campaigns rely on a product feed that maps your product IDs to images, descriptions, and prices. Most ecommerce platforms provide a feed automatically; if yours does not, or if you need a custom feed, generating it from your warehouse is straightforward.
| Column | Required | Notes |
|---|---|---|
| id | Yes | Must match the IDs you send in remarketing events. |
| title | Yes | Max 150 characters. |
| link | Yes | Direct URL to the product page. |
| image_link | Yes | Min 100x100, max 64MP. |
| availability | Yes | in_stock, out_of_stock, preorder, backorder. |
| price | Yes | Format: "29.99 EUR". |
| condition | Yes | new, used, refurbished. |
| brand | Recommended | For most categories. |
| gtin | Recommended | Improves match quality. |
EXPORT DATA OPTIONS(
uri='gs://your-bucket/feed/products-*.csv',
format='CSV',
overwrite=true,
header=true
) AS
SELECT
product_id AS id,
title,
CONCAT('https://example.com/products/', slug) AS link,
primary_image AS image_link,
CASE WHEN inventory > 0 THEN 'in_stock' ELSE 'out_of_stock' END AS availability,
CONCAT(CAST(price AS STRING), ' EUR') AS price,
'new' AS condition,
brand,
gtin
FROM `your_project.products.current`
Google Merchant Center re-fetches feeds on a schedule you set. Daily is the standard; for fast-moving inventory, every 4-6 hours. Schedule your BigQuery export to run before the fetch so the latest data is always present.
A feed with one malformed row will reject the entire batch. Validate locally before pushing to Merchant Center. Common issues: prices missing the currency suffix, image URLs requiring auth, product IDs containing spaces.
Once the feed is clean, your remarketing events will line up with feed entries and the dynamic ads will use the right products.