Create review

Action ID
actions.intent.CREATE_REVIEW
Description
Create a review or leave a rating on products, locations, content, or other things. Determine which item to review by name and brand using the review.itemReviewed.name and review.itemReviewed.brand.name intent parameters. Populate the review content and rating with the review.reviewRating.ratingValue and review.reviewBody parameters. If a single item to review cannot be identified using those parameters, ask the user to determine the item to review.

Locale support

Functionality Locales
Preview creation using App Actions test tool en-US
User invocation from Google Assistant en-US

Example queries

The following fields represent essential information that users often provide in queries that trigger this built-in intent:

review.itemReviewed.brand.name
review.itemReviewed.description
review.reviewBody
review.reviewRating.ratingValue

Other supported fields

The following fields represent information that users often provide to disambiguate their needs or otherwise improve their results:

review.@type
review.itemReviewed.@type
review.itemReviewed.brand.@type
review.itemReviewed.name
review.reviewAspect
review.reviewRating.@type

Supported text values by field





Inventory availability by field



Sample XML files

For information about the shortcuts.xml schema, see Create shortcuts.xml.

Handle BII parameters

shortcuts.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- This is a sample shortcuts.xml -->
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android">
  <capability android:name="actions.intent.CREATE_REVIEW">
    <intent
      android:action="android.intent.action.VIEW"
      android:targetPackage="YOUR_UNIQUE_APPLICATION_ID"
      android:targetClass="YOUR_TARGET_CLASS">
      <!-- Eg. reviewBody = "example review body" -->
      <parameter
        android:name="review.reviewBody"
        android:key="reviewBody"/>
      <!-- Eg. name = "Grinder" -->
      <parameter
        android:name="review.itemReviewed.name"
        android:key="name"/>
      <!-- Eg. ratingValue = "3" -->
      <parameter
        android:name="review.reviewRating.ratingValue"
        android:key="ratingValue"/>
    </intent>
  </capability>
</shortcuts>
      

actions.xml

<?xml version="1.0" encoding="utf-8"?>
<!-- This is a sample actions.xml -->
<actions>
  <action intentName="actions.intent.CREATE_REVIEW">
    <fulfillment urlTemplate="myapp://custom-deeplink{?reviewBody,name,ratingValue}">
      <!-- e.g. reviewBody = "example review body" -->
      <!-- (Optional) Require a field eg.reviewBody for fulfillment with required="true" -->
      <parameter-mapping urlParameter="reviewBody" intentParameter="review.reviewBody" required="true" />
      <!-- e.g. name = "Grinder" -->
      <parameter-mapping urlParameter="name" intentParameter="review.itemReviewed.name" />
      <!-- e.g. ratingValue = "3" -->
      <parameter-mapping urlParameter="ratingValue" intentParameter="review.reviewRating.ratingValue" />
    </fulfillment>

    <!-- Provide a fallback fulfillment with no required parameters. For example, to your app search or router deeplink -->
    <fulfillment urlTemplate="myapp://deeplink" />
  </action>
</actions>

JSON-LD sample

The following JSON-LD sample provides some example values that you can use in the App Actions test tool:

{
  "@context": "http://schema.org",
  "@type": "Review",
  "itemReviewed": {
    "@type": "Thing",
    "name": "Grinder"
  },
  "reviewBody": "example review body",
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "3"
  }
}
{
  "@context": "http://schema.org",
  "@type": "Review",
  "itemReviewed": {
    "@type": "Product",
    "brand": {
      "@type": "Brand",
      "name": "Brand name"
    },
    "description": "Review of the item"
  }
}
{
  "@context": "http://schema.org",
  "@type": "Review",
  "itemReviewed": {
    "@type": "Place",
    "name": "example place name"
  },
  "reviewAspect": "meal",
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": "3"
  }
}