Review feed
Stay organized with collections
Save and categorize content based on your preferences.
Review feed semantics
Semantics for reviews feed are slightly nuanced:
For snapshot review feeds:
- Any service provider in the review feed, if the provider currently does not
exist in LSA provider database, then the provider’s reviews will not be
ingested.
- Any service provider in the review feed, if the provider currently exists in
LSA provider database, then the provider’s reviews will be processed as
follows:
- For any review in the feed, if the corresponding review doesn’t exist in
LSA storage, then it should be created.
- For any review in the feed, if corresponding review exists in LSA
storage, then the review will be updated with new info.
- For any review not in the feed, if corresponding review exists in LSA
storage, then the review will be deleted.
- Any service provider not in the review feed, if the provider currently
exists in LSA provider database, their reviews will be deleted and the
provider will stop serving.
- Note that a provider with 0 reviews should also have an entry (instead of
being omitted) in review feeds in order for them to serve (see Review feed
sample - listingId 2)
Note that incremental is not supported for review feeds. A corresponding review
feed is required for each profile feed.
Error handling on reviews
If a review feeditem is invalid, we will skip processing of that feed item, and
continue to process the remaining valid feed items.
If a review feed is invalid (e.g. not compliant with the schema), we will stop
processing the entire review feed.
Review fields
Field Name |
Type |
Description |
Example |
Required |
Constraints |
serviceProviderId |
number |
Unique identifier of a listing (a service provider) |
12345 |
Yes |
Must fit into int64 |
ratingCount |
integer |
Number of verified consumer ratings |
10 |
Yes |
Must be zero or more. |
author |
string |
The author name of the review |
“Jack L.” |
No |
|
reviewId |
string |
The unique id of the review. If each review doesn’t come with a unique id, need 3p to generate a unique id for each review (e.g hash of review text and user), at least unique among all reviews from one provider. |
“123” |
Yes |
|
reviewText |
string |
Review text written by the author |
“Good job!” |
No |
|
rating |
integer |
Rating (must be an integer between 1 and 5) |
4 |
Yes |
Must be an integer between 1 and 5. |
serviceLocationCity |
string |
City where the service was performed |
“New York” |
No |
|
reviewTimestampMicros |
integer |
Timestamp when the review was written in microsecond format. |
1.45142E+15 |
No |
|
serviceTimestampMicros |
integer |
Timestamp when the service was finished in microsecond format. |
1.45132E+15 |
No |
|
language |
string |
Language of the review text in ISO 639-1 language code (lowercase, 2-letter). Must match with a targeting language of the provider. |
“en” |
No |
Must match with a targeting language specified for the associated provider. Defaults to “en” if not specified. |
category |
object |
category structure |
|
No |
|
category->categoryId |
enum |
category of the service (in LSA Taxonomy) |
“garage_door_pro” |
No |
|
category->task |
enum |
Job type (task) of the service (in LSA Taxonomy) |
“Repair a Garage Door” |
No |
|
confirmedCustomer |
boolean |
If the review comes from a confirmed customer (with a lead) |
TRUE |
No |
|
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2023-10-03 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2023-10-03 UTC."],[[["\u003cp\u003eReview feeds require an entry for every service provider, even those with no reviews, to control their serving status.\u003c/p\u003e\n"],["\u003cp\u003eReviews are ingested or updated only for providers already in the LSA provider database, otherwise they are ignored.\u003c/p\u003e\n"],["\u003cp\u003eNon-incremental updates are the only supported method; each profile feed requires a corresponding, complete review feed.\u003c/p\u003e\n"],["\u003cp\u003eInvalid individual review entries in a feed are skipped, allowing processing of remaining valid entries, but an invalid feed halts all processing.\u003c/p\u003e\n"],["\u003cp\u003eReviews must include a unique review ID, either provided or generated by a third party, ensuring differentiation within a provider's reviews.\u003c/p\u003e\n"]]],[],null,["# Review feed semantics\n---------------------\n\nSemantics for reviews feed are slightly nuanced:\n\nFor snapshot review feeds:\n\n- Any service provider in the review feed, if the provider currently does not exist in LSA provider database, then the provider's reviews will not be ingested.\n- Any service provider in the review feed, if the provider currently exists in LSA provider database, then the provider's reviews will be processed as follows:\n - For any review in the feed, if the corresponding review doesn't exist in LSA storage, then it should be created.\n - For any review in the feed, if corresponding review exists in LSA storage, then the review will be updated with new info.\n - For any review not in the feed, if corresponding review exists in LSA storage, then the review will be deleted.\n- Any service provider not in the review feed, if the provider currently exists in LSA provider database, their reviews will be deleted and the provider will stop serving.\n- Note that a provider with 0 reviews should also have an entry (instead of being omitted) in review feeds in order for them to serve (see [Review feed\n sample](/local-services-ads/samples/review-sample) - listingId 2)\n\nNote that incremental is not supported for review feeds. A corresponding review\nfeed is required for each profile feed.\n\nError handling on reviews\n-------------------------\n\nIf a review feeditem is invalid, we will skip processing of that feed item, and\ncontinue to process the remaining valid feed items.\n\nIf a review feed is invalid (e.g. not compliant with the schema), we will stop\nprocessing the entire review feed.\n\nReview fields\n-------------\n\n| Field Name | Type | Description | Example | Required | Constraints |\n|------------------------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------|----------|----------------------------------------------------------------------------------------------------------------|\n| serviceProviderId | number | Unique identifier of a listing (a service provider) | 12345 | Yes | Must fit into int64 |\n| ratingCount | integer | Number of verified consumer ratings | 10 | Yes | Must be zero or more. |\n| author | string | The author name of the review | \"Jack L.\" | No | |\n| reviewId | string | The unique id of the review. If each review doesn't come with a unique id, need 3p to generate a unique id for each review (e.g hash of review text and user), at least unique among all reviews from one provider. | \"123\" | Yes | |\n| reviewText | string | Review text written by the author | \"Good job!\" | No | |\n| rating | integer | Rating (must be an integer between 1 and 5) | 4 | Yes | Must be an integer between 1 and 5. |\n| serviceLocationCity | string | City where the service was performed | \"New York\" | No | |\n| reviewTimestampMicros | integer | Timestamp when the review was written in microsecond format. | 1.45142E+15 | No | |\n| serviceTimestampMicros | integer | Timestamp when the service was finished in microsecond format. | 1.45132E+15 | No | |\n| language | string | Language of the review text in ISO 639-1 language code (lowercase, 2-letter). Must match with a targeting language of the provider. | \"en\" | No | Must match with a targeting language specified for the associated provider. Defaults to \"en\" if not specified. |\n| category | object | category structure | | No | |\n| category-\\\u003ecategoryId | enum | category of the service (in LSA Taxonomy) | \"garage_door_pro\" | No | |\n| category-\\\u003etask | enum | Job type (task) of the service (in LSA Taxonomy) | \"Repair a Garage Door\" | No | |\n| confirmedCustomer | boolean | If the review comes from a confirmed customer (with a lead) | TRUE | No | |"]]