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 |