Prepare your Merchant Center account

You must have a Merchant Center account in good standing and approved products for free listings in your account. To get started, see these Help Center articles:

Once you have your Merchant Center set up with products, you must complete requirements in this section before building the API integration.

1. Merchant Center settings

Ensure the following settings are configured in your Google Merchant Center account:

1.1. Return policy

You must define your return policies in Merchant Center, as it is a Merchant of Record requirement and will be referenced on the checkout screen. The configured policies apply globally to your account, although you can use the return_policy_label feed attribute to restrict a given return policy to a subset of products.

If your Merchant Center account is an advanced account, your return policies must be configured at each individual sub-account.

You must include return cost, return speed (window), and a link to the full policy. Read more about configuring returns here.

1.2. Customer support info

You must set your customer support information in Merchant Center. It will be used to generate the "Contact Merchant" link on the order confirmation page. Read more about setting customer support info here.

2. Product data

You must update your product feed to signal eligibility and provide compliance data. This information is required to enable checkout through UCP with Google, as it allows agents to determine product eligibility, calculate accurate total costs, and display mandatory legal warnings to the user.

2.1. Agentic checkout eligibility

This opts a product into the checkout experience on Google.

This is provided using a product attribute native_commerce containing a single boolean. If set to false or missing, the product won't be eligible for checkout.

2.2. Product warnings

This is mandatory for items with regulatory warning requirements (e.g., California Proposition 65). You are responsible for compliance with all applicable laws, including product warning requirements. These warnings are displayed prominently on the Checkout screen when you provide them.

Provide the consumer_notice attribute group with two sub-attributes:

  • consumer_notice_type: Must be one of legal_disclaimer, safety_warning, or prop_65.
  • consumer_notice_message: String (max 1000 chars). HTML tags <b>, <br>, and <i> are accepted.

2.3. Product identifier

The id in your product feed must match the product ID expected by your Checkout API. If they match, no action is required. Otherwise, use the merchant_item_id custom attribute to map them.

2.4. How to add the attributes to your products

The following examples outline different options to provide the product to Merchant Center.

2.4.1. Feeds

We recommend that you create a supplemental data source (instructions here). You can add this to your primary feed, but proceed with caution as incorrect formatting may impact regular product ingestion.

Note on Syntax: Ensure complex strings (like the Prop 65 message) don't contain characters that break your file format (like extra commas in a CSV) unless properly escaped.

Text file format:

ID native_commerce consumer_notice
11111 TRUE prop_65:This product can expose you...
22222 TRUE
33333 FALSE

XML format:

<item>
  <g:id>11111</g:id>
  <g:native_commerce>TRUE</g:native_commerce>
  <g:consumer_notice>
    <g:consumer_notice_type>prop_65</g:consumer_notice_type>
    <g:consumer_notice_message>
      This product can expose you to chemicals...
    </g:consumer_notice_message>
  </g:consumer_notice>
</item>
<item>
  <g:id>22222</g:id>
  <g:native_commerce>TRUE</g:native_commerce>
</item>
<item>
  <g:id>33333</g:id>
  <g:native_commerce>FALSE</g:native_commerce>
</item>

2.4.2. Content API

Provide the attributes as custom attributes. They must be included in a products.insert containing the full product, because products.update does not support updating customAttributes.

Example:

"customAttributes": [
  {
    "name": "native commerce",
    "groupValues": [
      {
        "name": "checkout eligibility",
        "value": "true"
      }
    ]
  },
  {
    "name": "consumer notice",
    "groupValues": [
      {
        "name": "notice type",
        "value": "prop_65"
      },
      {
        "name": "notice message",
        "value": "This product can expose you to chemicals..."
      }
    ]
  },
  {
    "name": "merchant item id",
    "value": "some_checkout_item_id_1"
  }
]

2.4.2. Merchant API

Provide the attributes as custom attributes. You can add them to your existing accounts.productInputs.insert, or update them directly using accounts.productInputs.patch.

Example for insert:

"customAttributes": [
  {
    "name": "native commerce",
    "groupValues": [
      {
        "name": "checkout eligibility",
        "value": "true"
      }
    ]
  },
  {
    "name": "consumer notice",
    "groupValues": [
      {
        "name": "notice type",
        "value": "prop_65"
      },
      {
        "name": "notice message",
        "value": "This product can expose you to chemicals..."
      }
    ]
  },
  {
    "name": "merchant item id",
    "value": "some_checkout_item_id_1"
  }
]

Example for update:

Type Name Value
Path parameters productInput.name accounts/{account}/productInputs/en~US~11111
Query parameters updateMask customAttributes.native%20commerce,customAttributes.consumer%20notice,customAttributes.product%20fee,customAttributes.merchant%20item%20id
dataSource dataSources/{datasource}
{
  "offerId": "11111",
  "contentLanguage": "en",
  "feedLabel": "US",
    "customAttributes": [
    {
      "name": "native commerce",
      "groupValues": [
        {
          "name": "checkout eligibility",
          "value": "true"
        }
      ]
    },
    {
      "name": "consumer notice",
      "groupValues": [
        {
          "name": "notice type",
          "value": "prop_65"
        },
        {
          "name": "notice message",
          "value": "This product can expose you to chemicals..."
        }
      ]
    },
    {
      "name": "product fee",
      "groupValues": [
        {
          "name": "product fee type",
          "value": "US_AZ_TIRE_FEE"
        },
        {
          "name": "product fee amount",
          "value": "2.75 USD"
        }
      ]
    },
    {
      "name": "merchant item id",
      "value": "some_checkout_item_id_1"
    }
  ]
}

3. Product Restrictions

The following categories of products are ineligible for checkout. Ensure these items have native_commerce empty or set to false.

Financial products and recurring billing models

  • Subscriptions: products requiring recurring billing cycles.
  • Installments: transactions requiring merchant-mandated payment plans or financing.

Customized goods and fulfillment options

  • Personalized goods: items requiring custom design decisions (e.g., engravings, monograms).
  • Non-new or final sale items: refurbished goods, used items, and items marked as "Final Sale" (no returns).
  • Pre-order items: products with future release dates and deferred fulfillment.
  • Bundled services: items requiring additional contracts, such as warranties, installation, or setup.
  • Special shipping: items requiring non-standard delivery fees (e.g., freight, premium delivery).
  • Gifting: transactions requiring split-invoice logistics or hidden pricing for recipients.
  • In-store activation: products that must be physically activated at a retail location.

Policy and safety restrictions

  • Age restricted: items requiring ID verification (e.g., Alcohol, Tobacco).
  • Prohibited content: weapons, adult content, healthcare/pharmaceuticals, counterfeits, or any other category blocked by standard Google Shopping Policy.

Digital goods and services

  • Services: lessons, online classes, and travel packages (unless integrated using specific Travel rails).
  • Rentals: movie rentals, equipment rentals, or leasing.
  • Virtual items: in-game currency, MMORPG goods, or skins.
  • Software dependencies: goods that require the user to install specific software prior to completing the purchase.