Google Merchant Center products table schema

Overview

When your Google Merchant Center reporting data is transferredto BigQuery, the format of product and product issues datacorresponds primarily to the format of the relevant fields of the Content API'sProductsandProductstatusesresources.

The data is written to a table namedProducts_MERCHANT_ID if you are using an individualMerchant ID, orProducts_AGGREGATOR_ID if you're using an MCAaccount.

Note: TheProducts and product issues data is not available immediately whenthe report is first requested. When you first request a transfer for a merchantor aggregator ID, there might be a delay of up to 1 day before theProducts_table is available for exporting.

Schema

TheProducts_ table has the following schema:

ColumnBigQuery data typeDescriptionExample data
product_data_timestampTIMESTAMPTimestamp of the product data.2023-09-14 11:49:50 UTC
product_idSTRINGContent API's REST ID of the product in the form:channel:content_language:feed_label:offer_id. This is the primary key.online:en:AU:666840730
merchant_idINTEGERMerchant account ID.1234
aggregator_idINTEGERAggregator account ID for multi-client accounts.12345
offer_idSTRINGMerchant providedid of the product.tddy123uk
titleSTRINGTitle of the item.TN2351 black USB
descriptionSTRINGDescription of the item.The TN2351 black USB has redefined how XJS can impact LLCD experiences.
linkSTRINGMerchant providedURL of the landing page of the product.https://www.example.com/tn2351-black-usb/6538811?skuId=1234
mobile_linkSTRINGMerchant providedURL of a mobile-optimized version of the landing page.https://www.example.com/tn2351-black-usb/6538811?skuId=1234
image_linkSTRINGMerchant providedURL of the main product image.https://www.example.com/tn2351-black-usb/6538811?skuId=1234
additional_image_linksSTRING,REPEATEDMerchant providedadditional URLs of images of the item.
content_languageSTRINGThe two-letter ISO 639-1 language code for the item.en
target_countrySTRINGDeprecated (always set to NULL) as part of a change to allow products totarget multiple countries. Instead, use the following fields to read the status of each targeted country:destinations.approved_countries,destinations.pending_countries,destinations.disapproved_countries. Issues can now apply to certain target countries and not others, as indicated in the fieldissues.applicable_countries.null
feed_labelSTRINGThe merchant providedfeed label for the item, or- if not provided.US
channelSTRINGThe item's channel, eitheronline orlocal.local, online
expiration_dateTIMESTAMPMerchant provided date and time on which theitem should expire, as specified upon insertion. Set to null if not provided.2023-10-14 00:00:00 UTC
google_expiration_dateTIMESTAMPDate and time on which the item expires in Google Shopping. Never set to null.2023-10-14 00:00:00 UTC
adultBOOLEANSet to true if the item istargeted towards adults.true, false
age_groupSTRINGMerchant providedtarget age group of the item. NULL if not provided.newborn, infant, toddler, kids, adult
availabilitySTRINGMerchant providedavailability status of the item.in stock, out of stock
availability_dateTIMESTAMPMerchant provided date and timewhen a pre-ordered product becomes available for delivery. NULL if not provided.2023-10-14 00:00:00 UTC
brandSTRINGMerchant providedbrand of the item. NULL if not provided.Brand Name
google_brand_idSTRINGGoogle brand ID of the item.12759524623914508053
colorSTRINGMerchant providedcolor of the item. NULL if not provided.Silver, Gray, Multi
conditionSTRINGMerchant providedCondition or state of the item.new, used, refurbished
custom_labelsRECORDMerchant providedcustom labels for custom grouping of items in Shopping Ads. NULL if not provided.
custom_labels.label_0STRINGCustom label 0.my custom label
custom_labels.label_1STRINGCustom label 1.my custom label
custom_labels.label_2STRINGCustom label 2.my custom label
custom_labels.label_3STRINGCustom label 3.my custom label
custom_labels.label_4STRINGCustom label 4.my custom label
genderSTRINGMerchant provided targetgender of the item. NULL if not provided.unisex, male, female
gtinSTRINGMerchant providedGlobal Trade Item Number (GTIN) of the item. NULL if not provided.3234567890126
item_group_idSTRINGMerchant providedShared identifier for all variants of the same product. NULL if not provided.AB12345
materialSTRINGMerchant providedmaterial of which the item is made. NULL if not provided.Leather
mpnSTRINGMerchant providedManufacturer Part Number (MPN) of the item. Set to NULL if not provided.GO12345OOGLE
patternSTRINGMerchant providedpattern. NULL if not provided.Striped
priceRECORDMerchant providedprice of the item.
price.valueNUMERICThe price of the item.19.99
price.currencySTRINGThe currency of the price.USD
sale_priceRECORDMerchant providedsale price of the item.
sale_price.valueNUMERICThe sale price of the item. NULL if not provided.19.99
sale_price.currencySTRINGThe currency of the sale price. NULL if not provided.USD
sale_price_effective_start_dateTIMESTAMPStart date and time when the item is on sale.2023-10-14 00:00:00 UTC
sale_price_effective_end_dateTIMESTAMPEnd date and time when the item is on sale.2023-10-14 00:00:00 UTC
google_product_categoryINTEGERThe item'sGoogle product category ID. NULL if not provided.2271
google_product_category_idsINTEGER, REPEATEDThe full path ofGoogle product categories to the item, stored as a set of IDs. NULL if not provided.
google_product_category_pathSTRINGA human-readable version of the full path. Empty if not provided.Apparel & Accessories > Clothing > Dresses
product_typeSTRINGMerchant-providedcategory of the item.Home > Women > Dresses > Maxi Dresses
additional_product_typesSTRING,REPEATEDAdditional categories of the item.
promotion_idsSTRING,REPEATEDThe list ofpromotion IDs associated with the product.
destinationsRECORD,REPEATEDThe intended destinations for the product.
destinations.nameSTRINGThe name of the destination; onlyShopping is supported. This corresponds to theMarketing Methods "Shopping Ads" and "Local Inventory Ads" in Merchant Center.Shopping
destinations.status*STRINGDeprecated (always set to NULL) as part of a change to allow products totarget multiple countries. Instead, use the following fields to read the status of each targeted country:destinations.approved_countries,destinations.pending_countries,destinations.disapproved_countries. Issues can now apply to certain target countries and not others, as indicated in the fieldissues.applicable_countries.NULL
destinations.approved_countriesSTRING, REPEATEDList ofCLDR territory codes where the offer is approved.US, CH
destinations.pending_countriesSTRING, REPEATEDList ofCLDR territory codes where the offer is pending.US, CH
destinations.disapproved_countriesSTRING, REPEATEDList ofCLDR territory codes where the offer is disapproved.US, CH
issuesRECORD,REPEATEDThe list of item level issues associated with the product.
issues.codeSTRINGThe error code of the issue.image_too_generic
issues.servabilitySTRINGHow this issue affects serving of the offer.disapproved, unaffected
issues.resolutionSTRINGWhether the issue can be resolved by the merchant.merchant_action, pending_processing
issues.attribute_nameSTRINGThe attribute's name, if the issue is caused by a single attribute. NULL otherwise.image link
issues.destinationSTRINGThe destination the issue applies to. Always set toShopping.Shopping
issues.short_descriptionSTRINGShort issue description in English.Generic image
issues.detailed_descriptionSTRINGDetailed issue description in English.Use an image that shows the product
issues.documentationSTRINGURL of a web page to help with resolving this issue.https://support.google.com/merchants/answer/6098288
issues.applicable_countriesSTRING, REPEATEDList ofCLDR territory codes where the issue applies.CH

Query examples

Products and product issues statistics

The following SQL sample query provides the number of products, products withissues, and issues by day.

SELECT_PARTITIONDATEASdate,COUNT(*)ASnum_products,COUNTIF(ARRAY_LENGTH(issues)>0)ASnum_products_with_issues,SUM(ARRAY_LENGTH(issues))ASnum_issuesFROMdataset.Products_merchant_idWHERE_PARTITIONDATE>='YYYY-MM-DD'GROUPBYdateORDERBYdateDESC

Products disapproved for Shopping Ads

The following SQL sample query provides the number of products that are notapproved for display in Shopping Ads, separated by country. Disapprovalcan result from the destination beingexcludedor because of an issue with the product.

SELECT_PARTITIONDATEASdate,disapproved_country,COUNT(*)ASnum_productsFROMdataset.Products_merchant_id,UNNEST(destinations)ASdestination,UNNEST(disapproved_countries)ASdisapproved_countryWHERE_PARTITIONDATE>='YYYY-MM-DD'GROUPBYdate,disapproved_countryORDERBYdateDESC

Products with disapproved issues

The following SQL sample query retrieves the number of products with disapprovedissues, separated by country.

SELECT_PARTITIONDATEASdate,applicable_country,COUNT(DISTINCTCONCAT(CAST(merchant_idASSTRING),':',product_id))ASnum_distinct_productsFROMdataset.Products_merchant_id,UNNEST(issues)ASissue,UNNEST(issue.applicable_countries)asapplicable_countryWHERE_PARTITIONDATE>='YYYY-MM-DD'ANDissue.servability='disapproved'GROUPBYdate,applicable_countryORDERBYdateDESC
Note: This query constructs a unique key by usingmerchant_id andproduct_id.This is only required if you have an MCA account. When you use an MCA account,there is the potential forproduct_id collisions across multiple sub-accounts.

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-02-19 UTC.