You can use the productstatuses
resource
to view information about the status of your Shopping products. The list
method returns all products, regardless of their validity. We recommend that you
call the productstatuses
resource periodically to identify issues with your
products.
See the Product issues reference for details of common product issues.
Merchants are responsible for complying with the Shopping ads and free listings policies. Google Shopping reserves the right to enforce these policies and respond appropriately if we find content or behavior that violates these policies.
You won't receive a status for your product if your account isn't enrolled in any destinations.
You won't receive a status for your product if you don't provide a valid country code in one of the following:
- The
feedLabel
field - The
shipping
field - At the feed level
- In your account's shipping settings
productstatuses.get
The productstatuses.get
method retrieves the data quality status of one
product.
GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantID}/productstatuses/{productId}?destinations=Shopping&fields=productId%2Ctitle
The following are the optional URL parameters for the productstatuses.get
method:
{merchantID}
- The merchant ID.
{productID}
- The product ID. For a product ID example, refer to the REST ID attribute in the Product ID guide.
destinations
- A comma-separated list of destinations. The default value is
Shopping
, which corresponds to the Shopping Ads program.
Here is a sample JSON response from a productstatuses.get
call:
{
"kind": "content#productStatus",
"productId": "online:en:US:63",
"title": "Third Product",
"link": "http://examplemenc.com/",
"destinationStatuses": [
{
"destination": "Shopping",
"status": "disapproved",
"disapprovedCountries": [
"US", "UK"
]
},
{
"destination": "ShoppingActions",
"status": "disapproved",
"disapprovedCountries": [
"US"
]
},
{
"destination": "SurfacesAcrossGoogle",
"status": "disapproved",
"disapprovedCountries": [
"US"
]
}
],
"itemLevelIssues": [
{
"code": "strong_id_inaccurate",
"servability": "disapproved",
"resolution": "merchant_action",
"attributeName": "mpn",
"destination": "Shopping",
"description": "Incorrect product identifier [mpn]",
"detail": "Use the manufacturer's product identifiers (GTIN, brand, MPN)",
"documentation": "https://support.google.com/merchants/answer/160161",
"applicableCountries": [
"US", "UK"
]
},
{
"code": "image_link_internal_error",
"servability": "disapproved",
"resolution": "merchant_action",
"attributeName": "image link",
"destination": "Shopping",
"description": "Processing failed [image link]",
"detail": "Wait for the product image to be crawled again (up to 3 days)",
"documentation": "https://support.google.com/merchants/answer/6240184",
"applicableCountries": [
"US, UK"
]
},
{
"code": "landing_page_error",
"servability": "disapproved",
"resolution": "merchant_action",
"attributeName": "link",
"destination": "Shopping",
"description": "Unavailable desktop landing page",
"detail": "Update your website or landing page URL to enable access from desktop devices",
"documentation": "https://support.google.com/merchants/answer/6098155",
"applicableCountries": [
"US", "UK"
]
},
{
"code": "missing_condition_microdata",
"servability": "unaffected",
"resolution": "merchant_action",
"destination": "Shopping",
"description": "Missing or invalid data [condition]",
"detail": "Add valid structured data markup to your landing page",
"documentation": "https://support.google.com/merchants/answer/6183460",
"applicableCountries": [
"US", "UK"
]
},
{
"code": "mobile_landing_page_error",
"servability": "disapproved",
"resolution": "merchant_action",
"attributeName": "link",
"destination": "Shopping",
"description": "Unavailable mobile landing page",
"detail": "Update your website or landing page URL to enable access from mobile devices",
"documentation": "https://support.google.com/merchants/answer/6098296",
"applicableCountries": [
"US", "UK"
]
}
],
"creationDate": "2019-02-15T20:30:15Z",
"lastUpdateDate": "2019-02-26T16:40:11Z",
"googleExpirationDate": "2019-03-28T16:40:11Z"
}
Resources
The JSON body returned from the get
call has several sections. All products have
the basic information and the destination statuses returned, but only products
with problems have the item level issues returned. The basic information is a
series of individual attributes, but the other sections are blocks of attributes
since there may be multiple issues for a product.
Basic information
kind
- The value of
kind
is alwayscontent#productStatus
to indicate the body from aproductstatuses
call. creationDate
- The date that the product was created.
lastUpdateDate
- The last time that the product was updated.
googleExpirationDate
- The date that the product expires.
productId
- The REST ID of the product.
title
- The title of the product.
link
- The URL link of the product.
Destination statuses
destination
- Destinations such as:
- shopping ads
- ShoppingActions
- surfaces across google
- shopping
approvedCountries
- A list of the countries where the offer is approved per destination.
pendingCountries
- A list of the countries where the offer is pending per destination.
disapprovedCountries
- A list of the countries where the offer is disapproved per destination.
Item-level issues
code
- The error code that is used to determine the problem.
servability
- Indicates whether the product is shown as:
- disapproved, which means that the problem prevents the product from being shown.
- unaffected, which means that the data quality problem doesn't prevent the product from being shown on the mall.
resolution
- Informs if the merchant can solve the issue.
attributeName
- The attribute name that's affected.
destination
- The destination that's affected.
description
- The description of the product.
detail
- Gives more information about the problem.
documentation
- Indicates where to find the documentation about the problem.
applicableCountries
- Indicates in which countries the issue affects the product.
productstatuses.list
The productstatuses.list
method retrieves a list of all products, regardless
of their validity.
GET https://shoppingcontent.googleapis.com/content/v2.1/{merchantID}/productstatuses?destinations=Shopping&maxResults=3&pageToken=5108b52782905aa9
The following are the optional parameters for the productstatuses.list
method:
destinations
The destination, in this case
Shopping
. The base URL ishttps://shoppingcontent.googleapis.com/content/v2.1
{merchantID}
Replace with your merchant ID.
pageToken
Used to get the 2nd and subsequent pages. Every page has a
nextPageToken
and you pass that back to get the next page in the sequence.destinations
A comma-separated list of destinations. The default value is
Shopping
.maxResults
The number of results to return per page.
The following is a sample JSON response from a productstatuses.list
call (note
that the resource returned in the productstatuses.list
follows a similar
format as the productstatuses.get
API call):
{
"kind": "content#productstatusesListResponse",
"nextPageToken": "632fd090c95712c6",
"resources": [
{
"kind": "content#productStatus",
"productId": "online:en:US:online-en-US-GGL614",
"title": "Green Headphones",
"link": "https://example.com/green-headphones/",
"destinationStatuses": [
{
"destination": "Shopping",
"status": "disapproved",
"disapprovedCountries": [
"US", "UK"
]
},
{
"destination": "ShoppingActions",
"status": "disapproved",
"disapprovedCountries": [
"US"
]
},
{
"destination": "SurfacesAcrossGoogle",
"status": "disapproved",
"disapprovedCountries": [
"US"
]
}
],
"itemLevelIssues": [
{
"code": "mobile_landing_page_crawling_not_allowed",
"servability": "disapproved",
"resolution": "merchant_action",
"attributeName": "link",
"destination": "Shopping",
"description": "Mobile page not crawlable due to robots.txt",
"detail": "Update your robots.txt file to allow user-agents \"Googlebot\" and \"Googlebot-Image\" to crawl your site",
"documentation": "https://support.google.com/merchants/answer/6098296",
"applicableCountries": [
"US"
]
},
{
"code": "pending_initial_policy_review",
"servability": "disapproved",
"resolution": "pending_processing",
"destination": "Shopping",
"description": "Pending initial review",
"documentation": "https://support.google.com/merchants/answer/2948694",
"applicableCountries": [
"US, UK"
]
},
{
"code": "ambiguous_gtin",
"servability": "unaffected",
"resolution": "merchant_action",
"attributeName": "gtin",
"destination": "Shopping",
"description": "Ambiguous value [gtin]",
"detail": "Use the full GTIN. Include leading zeroes, and use the full UPC, EAN, JAN, ISBN-13, or ITF-14.",
"documentation": "https://support.google.com/merchants/answer/7000891",
"applicableCountries": [
"US", "UK"
]
}
],
"creationDate": "2020-01-09T15:36:39Z",
"lastUpdateDate": "2020-01-14T19:17:02Z",
"googleExpirationDate": "2020-02-13T19:17:02Z"
},
{
"kind": "content#productStatus",
"productId": "online:en:US:43",
"title": "Green shirt",
"link": "https://example.com/shirt-green/",
"destinationStatuses": [
{
"destination": "ShoppingActions",
"status": "approved",
"approvedCountries": [
"US"
]
},
{
"destination": "SurfacesAcrossGoogle",
"status": "approved",
"approvedCountries": [
"US"
]
}
],
"creationDate": "2019-01-29T21:14:36Z",
"lastUpdateDate": "2019-02-21T18:47:44Z",
"googleExpirationDate": "2019-03-23T18:47:44Z"
},
{
"kind": "content#productStatus",
"productId": "online:en:US:40",
"title": "Black hat",
"link": "https://example.com/hat-black/",
"destinationStatuses": [
{
"destination": "SurfacesAcrossGoogle",
"status": "approved",
"approvedCountries": [
"US"
]
}
],
"creationDate": "2019-01-29T21:14:36Z",
"lastUpdateDate": "2019-02-21T18:47:44Z",
"googleExpirationDate": "2019-03-23T18:47:44Z"
}
]
}
Test productstatuses.list
The productstatuses.list
call is safe to test in production
because it does not make any changes to your data; instead, it issues a read
request to report on your products' statuses.