Overview
The Inventory Viewer in Actions Center provides visibility into the ingestion health, place matching status, and serving eligibility of your Point of Interest (POI) local inventory.
This viewer displays issues independent of individual ingestions—stateful issues representing the active serving status of each service provider incorporating any possible failure modes (policy, warnings, errors, etc.) that may occur.
Use this tool to:
- Search and inspect all ingested service providers and their live serving states.
- Diagnose data validation errors and content policy violations.
- Submit and track appeals for any policy violations.
- Inspect service provider matching diagnostics and submit manual match proposals.
- Review raw JSON payloads from your latest feed ingestions.
Inventory Table Columns
The list view displays all uploaded service providers from your Point of Interest (POI) feed, organized hierarchically by entity. You can filter by Local POI ID, Matching Status, Integration, and Surface.
| Summary Table Columns | Description |
|---|---|
| Local POI ID | The unique identifier for the local property
provided in the feed (poi_id). |
| Local POI Name | The localized name of the local property extracted from the feed. |
| Matching Status | Indicates whether the POI has been matched to a
Google Maps listing: • Yes (Green badge): Successfully matched to a Google Maps place. • No (Red badge): Unmatched; requires review or a match proposal. |
| Integration | This is the Local Aggregator Unit integration. |
| Surface | The target serving surface (e.g. Search). |
| Serving Status | The real-time serving eligibility state: • Enabled (Green indicator): Eligible and actively servable on Google surfaces. • Disabled (Red indicator): Blocked from serving due to validation errors, policy violations, or unmatched status. |
| Errors | Count of active issues with a severity of Error. The existence of any error for a property means that property won't be eligible to serve on any surface. |
| Warnings | Count of active issues with a severity of Warning. Properties with warnings are still eligible to serve. |
| Match Info | Contains the Edit match button, which opens the interactive match fix panel. |
POI Details View
Clicking any POI ID in the list view navigates to the entity's dedicated details page.
The details view consists of four expandable sections:
1. Basic Info
Summarizes high-level entity metadata:
- POI Name: Name of the establishment as parsed from
data[].name.localizations. - POI ID: Unique partner entity identifier (
poi_id). - Data source: The exact feed filename from which this entity was ingested.
2. Serving Status
Breaks down serving eligibility per integration and target surface:
- Integration & Surface: Vertical and target surface (e.g.,
Local Aggregator UnitonSearch). - Serving Status: Current
EnabledorDisabledstatus. - Issues: Displays issue badges for all active errors or warnings (e.g.,
Unmatched entity,Policy Violation). Clicking an issue badge opens the Issue Details Panel. - Appeals: Displays override or appeal states (
Under review,Approved, orRejected).
3. Matching Information
Displays place matching diagnostics:
- Match input: The formatted physical address parsed from your feed
(
street_address,locality,region,postal_code,country). - Match type: The matching resolution mechanism (e.g.
Location). - Match namespace: The vertical your match changes will apply to (e.g.
Local Aggregator Unit). - Match status:
Yes(Green) orNo(Red). - Match output: The resolved Google Maps place name, address, and place ID.
- Edit match: Button to open the match proposal dialog.
4. Raw JSON
Provides an interactive code viewer with line numbers and syntax highlighting
displaying the full parsed JSON payload (item_proto) for rapid schema
debugging and verification. The data values presented here will reflect the
values received from the POI feed.
Issues & Triage Workflow
Entities flagged with issues are either disabled (if flagged with an ERROR) or degraded (if flagged with a WARNING). Entity issues with a warning are not currently appealable, and warnings can be resolved by fixing the underlying issue.
Issue Types: Appealable versus Non-Appealable
- Non-Appealable Issues (Technical & Data Quality Validations):
- Caused by schema errors, missing required fields, invalid coordinates, broken URLs, or duplicate IDs.
- Resolution: Partners must correct the underlying data in their source feed and upload an updated feed file.
- Appealable Issues (Content & Policy Violations):
- Triggered when property text (name) or image assets fail automated content safety filters.
- Resolution: If the content complies with the platform policies, partners can click the Appeal button next to the issue in Actions Center to submit an appeal. Partners must provide a reason and justification, and our appeals team will review and approve or deny the requests. You'll be notified using the tool and email on decisions made.
Local Aggregator Unit Issue Catalog
The following table outlines the complete set of validation errors and policy issue codes for Local Aggregator Unit integrations:
| Issue Description | Severity | Issue Code | Affected Field / Args | Is it Appealable? | Action / Relevant Policy |
|---|---|---|---|---|---|
| Missing POI ID | ERROR | MISSING_REQUIRED_FIELD
|
poi_id
|
No | Provide a unique poi_id. See POI Feed
Specification. |
| Missing default locale for "name" field | ERROR | MISSING_REQUIRED_FIELD
|
name.default_locale
|
No | Specify a valid BCP 47 language code for the default locale. See Multilingual Support. |
| No default localization found for "name" field | ERROR | MISSING_REQUIRED_FIELD
|
name.localizations
|
No | Provide a value for the localized name of the POI matching the declared default_locale language.
|
| Missing default locale for "description" field | ERROR | MISSING_REQUIRED_FIELD
|
description.default_locale
|
No | Specify a valid BCP 47 default locale for the property description. |
| No default localization found for "description" field | ERROR | MISSING_REQUIRED_FIELD
|
description.localizations
|
No | Provide description text matching the declared default_locale language.
|
| Missing default locale for "display_address" field | ERROR | MISSING_REQUIRED_FIELD
|
display_address.default_locale
|
No | Specify a valid BCP 47 default locale for the display address. |
| No default localization found for "display_address" field | ERROR | MISSING_REQUIRED_FIELD
|
display_address.localizations
|
No | Provide formatted address text matching the declared default_locale language.
|
| Exceeded maximum image count | WARNING | EXCEEDED_MAX_COUNT
|
images
|
No | Limit image entries to a maximum of 5 images per POI. Excess images are dropped. |
| Invalid latitude coordinate | ERROR | INVALID_LATLNG
|
location.latitude
|
No | Enter a valid latitude between -90.0 and +90.0. See Geo-coordinates
Definition.
|
| Invalid longitude coordinate | ERROR | INVALID_LATLNG
|
location.longitude
|
No | Enter a valid longitude between -180.0 and +180.0. See Geo-coordinates
Definition.
|
| Missing latitude coordinate | ERROR | MISSING_REQUIRED_FIELD
|
location.latitude
|
No | Provide the latitude value to complete the coordinate pair. See Geo-coordinates Definition. |
| Missing longitude coordinate | ERROR | MISSING_REQUIRED_FIELD
|
location.longitude
|
No | Provide the longitude value to complete the coordinate pair. See Geo-coordinates Definition. |
| Missing or unstructured address | ERROR | MISSING_REQUIRED_FIELD
|
location.address
|
No | Provide a structured postal address including street, locality, postal code, and country. |
| Malformed or invalid URL | ERROR | INVALID_ATTRIBUTE_VALUE
|
url
|
No | Ensure the landing page URL uses a supported HTTP/HTTPS protocol and valid syntax. |
| Invalid or unreachable image | ERROR | INVALID_IMAGE
|
image.url
|
No | Verify that image URLs are publicly reachable and don't require authentication or return 4xx/5xx errors. |
| Duplicate POI ID | ERROR | DUPLICATE_ENTITY
|
poi_id
|
No | Ensure each poi_id is unique across the feed payload. Remove duplicate entries.
|
| Unmatched entity | ERROR | UNMATCHED_ENTITY
|
POI
|
No | Match the POI to a Google Maps place listing using the POI Entity Matching tool. |
| Image policy violation | ERROR | SAFE_SEARCH_POLICY_VIOLATION_IMAGE
|
image
|
Yes | Remove or replace the flagged image, or click Appeal to submit a justification. See Google Search content image Policy. |
| Text policy violation - Default Name | ERROR | SAFE_SEARCH_POLICY_VIOLATION_TEXT
|
name.localizations.*.text
|
Yes | Remove or replace the flagged name text, or click Appeal. See Google Search content text policy. |
| Text policy violation - Non-Default Name | WARNING | SAFE_SEARCH_POLICY_VIOLATION_TEXT
|
name.localizations.*.text
|
No | Remove or replace the flagged name text. See Google Search content text policy. |
| Text policy violation - Description | WARNING | SAFE_SEARCH_POLICY_VIOLATION_TEXT
|
description.localizations.*.text
|
No | Remove or replace the flagged description text. See Google Search content text policy. |
| Text policy violation - Display Address | WARNING | SAFE_SEARCH_POLICY_VIOLATION_TEXT
|
display_address.localizations.*.text
|
No | Remove or replace the flagged display address text. See Google Search content text policy. |
| Missing default locale for Establishment Category | ERROR | MISSING_REQUIRED_FIELD
|
local_data.establishment_category.default_locale
|
No | Provide a value for the localized establishment category of the POI matching the declared
default_locale language.
|
| Missing business hours open day | ERROR | MISSING_REQUIRED_FIELD
|
local_data.business_hours.time_ranges.open_day
|
No | Provide a valid business hours open day. |
| Missing business hours open time | ERROR | MISSING_REQUIRED_FIELD
|
local_data.business_hours.time_ranges.open_time
|
No | Provide valid business hours open time. |
| Missing business hours close day | ERROR | MISSING_REQUIRED_FIELD
|
local_data.business_hours.time_ranges.close_day
|
No | Provide a valid business hours close day. |
| Missing business hours close time | ERROR | MISSING_REQUIRED_FIELD
|
local_data.business_hours.time_ranges.close_time
|
No | Provide a valid business hours close time. |
| Business hours open time is greater than close time | ERROR | NOT_LESS_THAN_FIELD
|
local_data.business_hours.time_ranges.open_time,
local_data.business_hours.time_ranges.close_time
|
No | Provide a valid pair of open and close time, ensuring the open time is lower than close time. |
| Price range min value is greater than max value | ERROR | INVALID_PRICE_RANGE
|
local_data.price_range.min_price,
local_data.price_range.max_price
|
No | Provide a valid price range, with the minimum price lower than the maximum price. |
| Missing Brand Id | ERROR | MISSING_REQUIRED_FIELD
|
local_data.brand_landing_pages.brand_id
|
No | Provide a valid brand id. |
| Duplicated Brand Id within a POI | ERROR | DUPLICATE_UNIQUE_PROPERTY
|
local_data.brand_landing_pages.brand_id
|
No | Ensure each brand_id is unique across the POI payload. Remove duplicate entries.
|
| Missing brand default URL | ERROR | MISSING_REQUIRED_FIELD
|
local_data.brand_landing_pages.default_url
|
No | Provide a valid brand default URL. |
| Malformed or invalid Brand URL | ERROR | INVALID_ATTRIBUTE_VALUE
|
local_data.brand_landing_pages.default_url
|
No | Ensure the brand default URL uses a supported HTTP/HTTPS protocol and valid syntax. |
| Missing brand localized landing page URL | ERROR | MISSING_REQUIRED_FIELD
|
local_data.brand_landing_pages.localized_landing_pages.url
|
No | Provide a valid URL for the localized landing page. |
| Malformed or invalid brand localized landing page URL | ERROR | INVALID_ATTRIBUTE_VALUE
|
local_data.brand_landing_pages.localized_landing_pages.url
|
No | Ensure the localized landing page URL uses a supported HTTP/HTTPS protocol and valid syntax. |
| Duplicated brand localized landing page URL | ERROR | DUPLICATE_UNIQUE_PROPERTY
|
local_data.brand_landing_pages.localized_landing_pages.url
|
No | Ensure each url is unique across the POI localized landing pages. Remove duplicate entries.
|
| Missing brand localized landing page locale | ERROR | MISSING_REQUIRED_FIELD
|
local_data.brand_landing_pages.localized_landing_pages.locales
|
No | Provide a valid set of locales for the localized landing page. |
| Duplicated brand localized landing page locale | ERROR | DUPLICATE_UNIQUE_PROPERTY
|
local_data.brand_landing_pages.localized_landing_pages.locales
|
No | Ensure each locale is unique across the POI localized landing pages. Remove duplicate entries.
|
| Text policy violation - Non-Default Establishment Category | WARNING | SAFE_SEARCH_POLICY_VIOLATION_TEXT
|
local_data.establishment_category.localizations.*.text
|
No | Remove or replace the flagged establishment category text. See Google Search content text policy. |
Issue Codes
The following sections provide detailed causes and remediation steps for each issue code.
Missing required field
Issue Code: MISSING_REQUIRED_FIELD
Severity: Error (Blocks Serving)
Appealable: No (Resolve by updating your POI feed)
This error occurs when an ingested entity is missing one or more mandatory attributes required by the Point of Interest Feed Specification.
Check the Issue Details panel to identify which specific property is missing, then apply the corresponding fix:
1. Missing POI ID (poi_id)
- Cause: The
poi_idfield is empty, null, or missing from the root entity object. - Remediation: Provide a persistent, unique string identifier for the property.
{
"poi_id": "test_restaurant_1"
}
2. Missing Default Locale Or Localized Name (name)
- Cause: The
nameobject is missing thedefault_localestring or thelocalizationsarray with a matching locale. - Remediation: Provide both the
default_localeand at least one localization entry matching that locale.
{
"name": {
"localizations": [
{
"locale": "en",
"text": "Tasty Bites Test Restaurant"
}
],
"default_locale": "en"
}
}
3. Missing Default Locale or Localized Address (display_address)
- Cause: The
display_addressobject is missing thedefault_localestring or thelocalizationsarray. - Remediation: Provide both the
default_localeand at least one localization entry matching that locale for the formatted street address.
{
"display_address": {
"localizations": [
{
"locale": "en",
"text": "1600 Amphitheatre Pkwy, Mountain View, CA 94043"
}
],
"default_locale": "en"
}
}
4. Missing Default Locale or Localized Description (description)
- Cause: When the
descriptionobject is included, eitherdefault_localeor the matching localization is missing. - Remediation: Provide both the
default_localeand at least one localization entry matching that locale for the description.
{
"description": {
"localizations": [
{
"locale": "en",
"text": "A mock restaurant for testing the POI feed ingestion."
}
],
"default_locale": "en"
}
}
5. Missing Geographic Coordinates (location.latitude / location.longitude)
- Cause: The
locationobject is missing either thelatitudeorlongitudenumerical value. - Remediation: Provide both
latitudeandlongitudeas floating-point numbers in standard WGS84 decimal degrees.
{
"location": {
"latitude": 37.422,
"longitude": -122.084
}
}
6. Missing Structured Postal Address (location.address)
- Cause: The
location.addressobject is missing mandatory address components (country,locality, orpostal_code). - Remediation: Populate the structured postal address object per ISO standards.
{
"location": {
"address": {
"country": "US",
"locality": "Mountain View",
"postal_code": "94043",
"street_address": "1600 Amphitheatre Pkwy"
}
}
}
7. Missing Default Locale for Establishment Category (local_data.establishment_category.default_locale)
- Cause: The
local_data.establishment_categoryobject is present, butdefault_localeis missing, empty, or does not match any entry in thelocalizationsarray. - Remediation: Specify a valid BCP 47 language tag for
default_localeand supply at least one localized string matching that locale.
{
"local_data": {
"establishment_category": {
"default_locale": "en",
"localizations": [
{
"locale": "en",
"text": "Restaurant"
}
]
}
}
}
8. Missing Business Hours Open Day (local_data.business_hours.time_ranges.open_day)
- Cause: An entry in
local_data.business_hours.time_rangesis missingopen_dayor it is set toDAY_OF_WEEK_UNSPECIFIED. - Remediation: Provide a valid day-of-week string (e.g.,
"MONDAY","TUESDAY", etc.).
{
"local_data": {
"business_hours": {
"time_ranges": [
{
"open_day": "MONDAY",
"open_time": { "hours": 11, "minutes": 0 },
"close_day": "MONDAY",
"close_time": { "hours": 21, "minutes": 0 }
}
]
}
}
}
9. Missing Business Hours Open Time (local_data.business_hours.time_ranges.open_time)
- Cause: An entry in
local_data.business_hours.time_rangesis missing theopen_timeobject. - Remediation: Specify
open_timewithhours(0–23) andminutes(0–59).
{
"local_data": {
"business_hours": {
"time_ranges": [
{
"open_day": "MONDAY",
"open_time": { "hours": 11, "minutes": 0 },
"close_day": "MONDAY",
"close_time": { "hours": 21, "minutes": 0 }
}
]
}
}
}
10. Missing Business Hours Close Day (local_data.business_hours.time_ranges.close_day)
- Cause: An entry in
local_data.business_hours.time_rangesis missingclose_dayor it is set toDAY_OF_WEEK_UNSPECIFIED. - Remediation: Provide a valid day-of-week string (e.g.,
"MONDAY","TUESDAY", etc.).
{
"local_data": {
"business_hours": {
"time_ranges": [
{
"open_day": "MONDAY",
"open_time": { "hours": 11, "minutes": 0 },
"close_day": "MONDAY",
"close_time": { "hours": 21, "minutes": 0 }
}
]
}
}
}
11. Missing Business Hours Close Time (local_data.business_hours.time_ranges.close_time)
- Cause: An entry in
local_data.business_hours.time_rangesis missing theclose_timeobject. - Remediation: Specify
close_timewithhours(0–23) andminutes(0–59).
{
"local_data": {
"business_hours": {
"time_ranges": [
{
"open_day": "MONDAY",
"open_time": { "hours": 11, "minutes": 0 },
"close_day": "MONDAY",
"close_time": { "hours": 21, "minutes": 0 }
}
]
}
}
}
12. Missing Brand ID (local_data.brand_landing_pages.brand_id)
- Cause: An entry in
local_data.brand_landing_pageshas an empty, null, or missingbrand_id. - Remediation: Provide a non-empty string identifier matching your registered partner brand configuration.
{
"local_data": {
"brand_landing_pages": [
{
"brand_id": "tasty_bites_brand",
"default_url": "https://www.tastybitestest.com"
}
]
}
}
13. Missing Brand Default URL (local_data.brand_landing_pages.default_url)
- Cause: An entry in
local_data.brand_landing_pagesis missingdefault_urlor it is an empty string. - Remediation: Provide a valid fallback HTTP/HTTPS landing page URL for users whose locale is not matched by localized URLs.
{
"local_data": {
"brand_landing_pages": [
{
"brand_id": "tasty_bites_brand",
"default_url": "https://www.tastybitestest.com"
}
]
}
}
14. Missing Brand Localized Landing Page URL (local_data.brand_landing_pages.localized_landing_pages.url)
- Cause: An item inside
localized_landing_pageshas a missing or emptyurlfield. - Remediation: Provide a valid, fully-qualified HTTP/HTTPS URL for the localized landing page.
{
"local_data": {
"brand_landing_pages": [
{
"brand_id": "tasty_bites_brand",
"default_url": "https://www.tastybitestest.com",
"localized_landing_pages": [
{
"url": "https://www.tastybitestest.com/en",
"locales": ["en-US", "en-GB"]
}
]
}
]
}
}
15. Missing Brand Localized Landing Page Locale (local_data.brand_landing_pages.localized_landing_pages.locales)
- Cause: An item inside
localized_landing_pageshas a missing or emptylocalesarray. - Remediation: Provide at least one valid BCP 47 language or locale code
(e.g.,
["en-US"]) in thelocalesarray.
{
"local_data": {
"brand_landing_pages": [
{
"brand_id": "tasty_bites_brand",
"default_url": "https://www.tastybitestest.com",
"localized_landing_pages": [
{
"url": "https://www.tastybitestest.com/en",
"locales": ["en-US", "en-GB"]
}
]
}
]
}
}
Exceeded maximum image count
Issue Code: EXCEEDED_MAX_COUNT
Severity: Warning
Appealable: No (Resolve by updating feed payload)
This error occurs when a POI entity payload contains more than 5 image
objects in the images array.
Remediation:
- Trim the
imagesarray so that it contains at most 5 high-quality, representative photos of the local property. - Any images exceeding the limit of 5 will be discarded.
Invalid geographic coordinates
Issue Code: INVALID_LATLNG
Severity: Error (Blocks Serving)
Appealable: No (Resolve by updating feed payload)
This error occurs when the geographic coordinates provided in
location.latitude or location.longitude fall outside valid spherical bounds
or represent unpopulated null coordinates.
Common Causes & Remediation:
- Out-of-Bounds Latitude: Latitude must be a floating-point number between
-90.0and90.0inclusive. - Out-of-Bounds Longitude: Longitude must be a floating-point number
between
-180.0and180.0inclusive. - Null Island (0,0): Submitting
0.0, 0.0or placeholder integers (such as999, 999) triggers coordinate rejection. - Swapped Coordinates: Verify that latitude and longitude are not inverted in your serialization pipeline.
Valid Payload Example:
{
"location": {
"latitude": 37.422,
"longitude": -122.084
}
}
Malformed or invalid URL
Issue Code: INVALID_ATTRIBUTE_VALUE
Severity: Error (Blocks Serving)
Appealable: No (Resolve by updating feed payload)
This error occurs when an attribute value fails schema validation, most commonly when a partner landing page URL or image URL is syntactically invalid.
Requirements:
- Protocol: URLs must explicitly specify
http://orhttps://(HTTPS is strongly recommended). - Encoding: URLs containing special characters, spaces, or non-ASCII characters must be properly percent-encoded (RFC 3986).
- Canonical Domain: Ensure the domain is fully qualified (for example,
https://example.com/local/123, notexample.com/local/123orwww.example).
Valid Payload Example:
{
"url": "https://www.tastybitestest.com/en"
}
Invalid or unreachable image
Issue Code: INVALID_IMAGE
Severity: Error (Blocks Serving)
Appealable: No (Resolve by updating feed payload)
This error occurs during the asynchronous image fetching stage when Google's
crawler cannot download, decode, or verify the media asset from image.url.
Common Causes & Remediation:
- HTTP Errors (404 / 403 / 500): The image URL returns a non-200 HTTP status code. Ensure images are publicly accessible without authentication, cookie walls, or IP allowlisting restrictions.
- Robots.txt Blocking: Ensure your Content Delivery Network (CDN) allows
the
GooglebotandGooglebot-Imageuser agents. - Unsupported File Format: Images must be in standard raster formats
(
JPEG,PNG,WebP). Animated GIFs, SVGs, and raw camera formats are not supported. See our image guidelines for more details. - SSL Certificate Failures: Verify that the image host server has a valid SSL certificate chain.
Duplicate POI ID
Issue Code: DUPLICATE_ENTITY
Severity: Error (Blocks Serving)
Appealable: No (Resolve by updating feed payload)
This error occurs when the same poi_id string appears more than once within a
single feed fileset.
Remediation:
- Ensure every local listing in your feed has a unique, deterministic
poi_id. - If a local property has multiple room types or rates, consolidate them under a single root POI entity rather than emitting duplicate entity records with identical IDs.
Unmatched entity
Issue Code: UNMATCHED_ENTITY
Severity: Error (Blocks Serving)
Appealable: No (Use POI Entity Matching tools or correct entity metadata)
This issue indicates that Google's matching pipeline was unable to reconcile your local listing with a canonical place in Google Maps.
How to Resolve:
- Verify Core Attributes: Ensure the local's
name,display_address,location.address,url,telephone, andlocation.latitude/location.longitudeprecisely reflect the physical property location. - Inspect Match Information: Look at the Match Info column in the Inventory View to see candidate places.
- Use the POI Match Fix Tool: Click Edit Match in the Actions Center to manually search for and confirm the correct Google Place ID. Detailed instructions are available in the POI Entity Matching guide.
Google Search Image policy violation
Issue Code: SAFE_SEARCH_POLICY_VIOLATION_IMAGE
Severity: ERROR (Blocks Serving)
Appealable: Yes
See the Relevant Policy Issue Codes Here: Google Search content image Policy
If you believe the image was flagged in error (false positive), click Create Appeal in the Issue Details panel.
Google Search Content Text policy violation - Name
Issue Code: SAFE_SEARCH_POLICY_VIOLATION_TEXT
Severity: ERROR (Blocks Serving)
Affected Field: name.localizations.*.text
Appealable: Yes
See the Relevant Policy Issue Codes Here: Google Search content text Policy
If you believe the text was flagged in error (false positive), click Create Appeal in the Issue Details panel.
Google Search Content Text policy violation - Description
Issue Code: SAFE_SEARCH_POLICY_VIOLATION_TEXT
Severity: Warning
Affected Field: description.localizations.*.text
Appealable: No (Resolve by updating feed payload)
See the Relevant Policy Issue Codes Here: Google Search content text Policy
Google Search Content Text policy violation - Display Address
Issue Code: SAFE_SEARCH_POLICY_VIOLATION_TEXT
Severity: Warning
Affected Field: display_address.localizations.*.text
Appealable: No (Resolve by updating feed payload)
See the Relevant Policy Issue Codes Here: Google Search content text Policy
Business hours open time is greater than close time
Issue Code: NOT_LESS_THAN_FIELD
Severity: Error (Blocks Serving)
Affected Fields: local_data.business_hours.time_ranges.open_time,
local_data.business_hours.time_ranges.close_time
Appealable: No (Resolve by updating feed payload)
This error occurs when the business hours open_time is later than or equal to
close_time for the same day interval.
Common Causes & Remediation:
- Same-Day Inversion: Ensure
open_timeis earlier thanclose_time(e.g., 09:00 to 17:00). - Overnight Shifts: If an establishment opens on one day and closes past
midnight into the next day (e.g., 21:00 to 02:00), set
close_dayto the following day (e.g.,open_day:"FRIDAY",close_day:"SATURDAY").
Valid Payload Example:
{
"local_data": {
"business_hours": {
"time_ranges": [
{
"open_day": "MONDAY",
"open_time": { "hours": 9, "minutes": 0 },
"close_day": "MONDAY",
"close_time": { "hours": 17, "minutes": 0 }
}
]
}
}
}
Price range min value is greater than max value
Issue Code: INVALID_PRICE_RANGE
Severity: Error (Blocks Serving)
Affected Fields: local_data.price_range.min_price,
local_data.price_range.max_price
Appealable: No (Resolve by updating feed payload)
This error occurs when the min_price exceeds the max_price in value, or if
min_price and max_price specify different currency codes.
Common Causes & Remediation:
- Inverted Values: Ensure
min_priceis lower than or equal tomax_price. - Currency Mismatch: Verify that both
min_price.currency_codeandmax_price.currency_codematch the same ISO 4217 three-letter currency code (e.g.,"USD").
Valid Payload Example:
{
"local_data": {
"price_range": {
"min_price": {
"currency_code": "USD",
"units": 15,
"nanos": 0
},
"max_price": {
"currency_code": "USD",
"units": 45,
"nanos": 0
}
}
}
}
Duplicate unique property within a POI
Issue Code: DUPLICATE_UNIQUE_PROPERTY
Severity: Error (Blocks Serving)
Appealable: No (Resolve by updating feed payload)
This error occurs when a field or sub-element required to be unique across a single POI entity contains duplicated entries.
Check the Issue Details panel to identify which property violates uniqueness:
1. Duplicated Brand ID within a POI (local_data.brand_landing_pages.brand_id)
- Cause: The same
brand_idstring appears in multiplebrand_landing_pagesentries for a single POI. - Remediation: Consolidate all landing pages for that brand into a single
brand_landing_pagesobject.
Valid Payload Example:
{
"local_data": {
"brand_landing_pages": [
{
"brand_id": "brand_zenchef",
"default_url": "https://bookings.zenchef.com/results?rid=287722"
},
{
"brand_id": "brand_opentable",
"default_url": "https://www.opentable.com/r/287722"
}
]
}
}
2. Duplicated Brand Localized Landing Page URL (local_data.brand_landing_pages.localized_landing_pages.url)
- Cause: The exact same landing page URL is defined multiple times under
localized_landing_pagesfor the same brand. - Remediation: Ensure each URL entry is distinct, or associate multiple
locales under a single URL entry's
localesarray.
Valid Payload Example:
{
"local_data": {
"brand_landing_pages": [
{
"brand_id": "brand_zenchef",
"default_url": "https://bookings.zenchef.com/results?rid=287722",
"localized_landing_pages": [
{
"url": "https://bookings.zenchef.com/en/results?rid=287722",
"locales": ["en-US"]
},
{
"url": "https://bookings.zenchef.com/fr/results?rid=287722",
"locales": ["fr-FR"]
}
]
}
]
}
}
3. Duplicated Brand Localized Landing Page Locale (local_data.brand_landing_pages.localized_landing_pages.locales)
- Cause: The same locale code (e.g.,
"en-US") is repeated across multiple entries inlocalized_landing_pagesfor the same brand. - Remediation: Assign each locale tag to exactly one localized landing page.
Valid Payload Example:
{
"local_data": {
"brand_landing_pages": [
{
"brand_id": "brand_zenchef",
"default_url": "https://bookings.zenchef.com/results?rid=287722",
"localized_landing_pages": [
{
"url": "https://bookings.zenchef.com/en/results?rid=287722",
"locales": ["en-US", "en-GB"]
},
{
"url": "https://bookings.zenchef.com/fr/results?rid=287722",
"locales": ["fr-FR"]
}
]
}
]
}
}
Malformed or invalid Brand URL
Issue Code: INVALID_ATTRIBUTE_VALUE
Severity: Error (Blocks Serving)
Appealable: No (Resolve by updating feed payload)
Affected Fields: local_data.brand_landing_pages.default_url,
local_data.brand_landing_pages.localized_landing_pages.url
This error occurs when a brand default URL or localized landing page URL fails URI syntax validation.
Requirements:
- Protocol: Must explicitly specify
http://orhttps://(https://is required for production serving). - Syntax: Must be a valid, percent-encoded, RFC 3986-compliant URL with a fully qualified domain name.
Valid Payload Example:
{
"local_data": {
"brand_landing_pages": [
{
"brand_id": "tasty_bites_brand",
"default_url": "https://www.tastybitestest.com/en",
"localized_landing_pages": [
{
"url": "https://www.tastybitestest.com/en/reservation",
"locales": ["en-US"]
}
]
}
]
}
}
Google Search Content Text policy violation - Establishment Category
Issue Code: SAFE_SEARCH_POLICY_VIOLATION_TEXT
Severity: Warning
Appealable: No
Affected Field: local_data.establishment_category.localizations.*.text
This warning occurs when non-default localized establishment category text fails automated SafeSearch content filters.
Remediation:
- Policy Compliance: Remove or replace the flagged establishment category text with standard business category terms that adhere to the Google Search content text policy
Valid Payload Example:
{
"local_data": {
"establishment_category": {
"default_locale": "en",
"localizations": [
{
"locale": "en",
"text": "Restaurant"
},
{
"locale": "fr",
"text": "Restaurant gastronomique"
}
]
}
}
}