In this help center, you can find content for both Merchant Center Next and the classic Merchant Center experience. Look for the logo at the top of each article to make sure you're using the article for the Merchant Center version that applies to you. 

Set up automated discounts

A custom icon for Merchant Center Classic Article Header.

If you're looking for information on how to set up automated discounts in Merchant Center Next, click here.

On this page


  • Effective pricing: Leverages advanced Google AI to continuously optimize and display the ideal sale prices for your products consistently across your Shopping ads and your online shop’s product landing page.
  • Increased performance: Unlock significant lift in (gross) profit, conversions, consumer clicks, and increasing ROI on ad spend.
  • Ease of use: Get optimized prices continuously, consistently and automatically and save time, effort and cost.

How it works

Automated discounts Open Beta is an AI-powered solution that helps to effectively maximize (gross) profit performance across your entire inventory.

Google uses AI algorithms to continuously optimize product sale prices based on market signals such as:

  • Price competitiveness
  • Price elasticity
  • Seasonality trends
  • Estimated delivery day
  • Brand value
  • Shipping cost

Adjusted sale prices will be shown in Shopping ads (channel-based discounting) and will be passed securely to display the same price on the product landing page in your online store.

Eligibility and requirements

Before you decide to participate, check if this feature is a good fit for your business based on the following requirements:

  • Conversion tracking with cart data. See more implementation details here.
  • You need to provide [auto_pricing_min_price] and [cost_of_goods_sold] feed attributes for at least 20% of your total inventory or impressions. To get you started, you can set:
    • [auto_pricing_min_price] attribute to <= 95% of the [price] and >= [cost_of_goods](details below).
    • [cost_of_goods] < [auto_pricing_min_price] and >= 5% [price]
  • Your website integration must be able to accept and honor Google-provided product prices from Google-generated JSON web tokens.
  • Allow Google to show opted-in products to consumers with a performance-based ramp up of 10% first 3 days and 90% after.


Step 1 of 6: Select program and your preferred display currency

  1. Under "Growth", you'll find the "Automated discounts" tab.
  2. Click Continue to select Automated discounts and your preferred display currency for performance reporting.
  3. If you're using a third party platform, indicate the name of the platform or service. For third party integrations, learn about how to set up automated discounts (for Shopify, WooCommerce, Magento 2 merchants).
  4. Upon submission, you can move on to next steps to set up conversion tracking and required feed attributes.
Note: If there's no "Automated discounts" tab, click here to proceed.

Step 2 of 6: Set up Conversion with Cart Data (CwCD)

Integration of conversions with cart data allows Google to monitor, evaluate, and optimize performance across your entire inventory and take into account cross-sell and cannibalisation effects. Follow these integration guidelines to set up CwCD. How we are using the information you provide in the CwCD data:
  • Product price: This value includes the discounted price before tax.
  • Cost of goods sold: All products that might be included in the cart data need to be uploaded into your product feed in the Merchant Center including their cost of goods (cogs) [cost_of_goods_sold]value to ensure that all products in the basket can be taken into account for the profit optimization.
  • Discount: During the pilot, this field is used to collect all additional variable costs, like shipping and transaction costs not reflected in the checkout.
Note: GA4 and Floodlight integration are currently not supported. Users using GA4 or Floodlight may create a secondary conversion action using Google Ads conversions.

After you’ve added cart data values to your conversion tracking, verify that the conversion tag parameters are implemented correctly.

To do this, complete a test order and follow the steps below:

  1. Open the Chrome Developer Tools by clicking the Chrome menu at the top right corner of your Google Chrome web browser, then select More Toolsand click Developer Tools.
  2. In the "Developer Tools" panel, select "Network".
  3. Submit your test order in the Google Chrome web browser.
  4. Search for the request that contains your conversion (search for “/conversion”). The query string parameters should include the cart parameters, as shown in this example:
    • mid = aw_merchant_id
    • fcntr = aw_feed_country
    • flng = aw_feed_language
    • dscnt = discount
    • bttype = event type
    • item = items (the array) mapping all items with ( * items.price * items.quantity)

Step 3 of 6: Opt-in products via feeds

The system delivers the best inventory performance when all products are opted in. However, you are not required to opt-in all products as long as you fulfill minimum opt-in requirement to opt at least as many products to cover >20% of your total inventory impressions. Changes to the feed and the opted-in inventory can be made at any point. If you need more information about the impression coverage of your products, refer to the Performance report in your Merchant Center.
Note: If you have a single MCID account but multiple product feeds for different countries, you may opt-in products by adding the [auto_pricing_min_pricing]attribute for the countries of your preference. Performance reporting will show data across all countries in aggregate and you are currently not able to filter by a specific country.

How to opt-in products

You can opt-in products by providing valid auto pricing minimum price [auto_pricing_min_price] and cost of goods (cogs) [cost_of_goods_sold] attributes for each product in your feed to cover at least 20% of your total inventory impressions. You may provide these attributes via a supplemental feed or feed rules in your Merchant Center or through the API.

Keep in mind that the maximum price is the regular price provided in your product feed and the minimum price is the value you provided in the [auto_pricing_min_price]attribute. Google will optimize the sale price between those 2 limits and change the price at a given time only for those products in your inventory that benefit the overall goal of maximizing profit across your entire inventory taking cross-sell and cannibalization effects into account.

Required attributes Value type Description
Minimum price
String This is the minimum price. Indicate the minimum below which you don’t want the discount to be applied. Follow the same formatting rules as for the price [price] attribute.
Note: This can generally equal the costs of goods (cogs) [cost_of_goods_sold] attribute unless there are special requirements (such as MAP restrictions).
Cost of goods (COGS) [cost_of_goods_sold] String This is the cost of goods sold (COGS). If accurate data is not readily available, start with your best estimate.


COGS don't include tax, however tax must be included in the value for [auto_pricing_min_price].

Opt-out products (optional)

If you want to opt out individual products from Automated discounts, remove the auto pricing minimum price [auto_pricing_min_price] attribute for each product or set the value equal to the price of your product.

Note: Don't remove the cost of goods (COGS) [cost_of_goods_sold] attribute for opted-out products. It’s still used to compute the total profit if those products appear in your basket.

Step 4 of 6: Complete URL integration

You are required to display the Google-recommended price for opted-in products as the new sale price on your website.
You can find example URLs for testing in Merchant Center in "Growth", in the "Automated Discounts" tab under "Update your store's website". Contact if you need more URLs for testing.

Product landing page of a green candle with the original price crossed out and sale price in red.

Follow these instructions for implementing the price token.


  • These instructions describe Google-generated JSON web tokens, and the process of consuming the product price they contain.
  • This information is technical, and is most useful to people who have a strong background in web development.
  • The format described here is only valid for the pilot, and might change later.
  • The public encryption key is available below and applies to all automated discounts integrations.

Token structure

JWT tokens contain two JSON objects: header and payload.



"alg": "ES256",

"typ": "JWT"


Google-generated token headers have 2 fields:

  • alg - used algorithm, value is always "ES256"
  • typ - media type, value is always "JWT"

If the token header contains any other fields, or field values are different than described above, the token must be rejected.



"exp": 1571673600,

"o": "tddy123uk",

"m": "140301646",

"p": 21.99,

"c": "USD"


Payload has the following fields:

  • exp - expiration time as Unix time. If the token is expired, it must be rejected.
  • o - offer ID, which can be used to check that the landing page matches the product. If there's a mismatch, the token must be rejected.
  • m - merchant ID. If the merchant ID doesn't match, the token must be rejected.
  • p - discounted price
  • c - currency, upper case

Consuming token

The exact details around consuming the token depend on the used library, but at a high level, there are 3 steps: decoding and signature validation, field validation, and consuming price.

Decoding and signature validation
The Base64URL encoded token is passed in pv2 URL request parameter:

Most of the libraries combine decoding and signature validation to a single function where 'token", "ES256" (algorithm), and "public key" are inputs, and "token_body" is the output:

token_body = decode(token, 'ES256', public_key)

Public key for validation:

The following key is meant to be used by all automated discounts users without expiry.


MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAERUlUpxshr67EO66ZTX0Fpog0LEHc nUnlSsIrOfroxTLu2XnigBK/lfYRxzQWq9K6nqsSjjYeea0T12r+y3nvqg==

-----END PUBLIC KEY-----

Field validation

In case the selected library accepts key and algorithm in the previous step and forces their use despite header options, there's no need for additional header checks. Otherwise, the header fields need to be checked according to the guidelines above. For more information, review the JSON Web Token Best Current Practices.

No matter what library is used, the o, m, and p fields must be validated against merchant-side data. If they don't match, then the token must be rejected so that customers can't copy tokens across products and/or merchants. The merchant may check the exp field and reject the token if it's expired, but this isn't mandatory.

Consuming price
If all the fields are valid and the token isn't expired, the merchant must use the price provided in the p field.

Note: The price must be used for the remainder of the consumer session (at least 30 minutes), including checkout. For items added to the cart, the price needs to be persistent for at least 48 hours.

You can use their existing coupon functionality to discount the price if it fulfills the requirements listed on this page. In particular, the price on the landing page must match the price in the token. Just adding the discount on the checkout page doesn't suffice.

After the integration is completed, it will be tested in 3 steps:

  • Functional testing (done by merchant)
  • Key validation (done by merchant with Google-provided token)
  • Full end-to-end test (done by Google)

Functional testing
The easiest way to test during and after development is to generate a temporary key pair. This gives you full control over the tokens. A valid key pair can be generated with this command:

openssl ecparam -genkey -name prime256v1 -noout -out privkey.pem
openssl ec -in privkey.pem -pubout -out pubkey.pem

Tokens can be generated with or similar tools using ES256 as an algorithm.

Key validation
In order to validate that production keys are correctly configured, signed tokens are available in the Merchant Center during on-boardings (sample URLs).

Step 5 of 6: Google review

After the implementation steps have been completed, request Google to conduct a full review by clicking Request verification. The review will go through end-to-end testing that covers multiple scenarios. It’ll be completed within the Google Network to ensure the integration is functioning correctly. Any open issues will be displayed on the last setup page. Allow up to 24 hours for updates after you made a change.

If there are issues found, resolve the issue and submit a follow-up review request by clicking the button again or contacting You’ll have to resubmit review requests until all issues have been resolved.

Step 6 of 6: Set up completion and kickoff

After Google reviews and approves your account, a performance-based ramp will be kicked-off automatically for your opted-in products. You can now monitor your performance in the Automated discounts tab, as well as Pause and Activate the generation of optimized sale prices with only a click on the button.

Launch schedule


After your review is complete, the ramp-up process starts according to the schedule below.

Ramp-up schedule:

  • First stage: Optimized sale prices shown to 10% of customers.
  • Second stage: Optimized sale prices shown to 90% of customers.

You can check your ramp-up percentage in Merchant Center at any time by navigating to the Automated discounts tab under "Growth".

Performance reporting

You can check your performance at any time by navigating to the "Automated discounts" tab under “Growth”. Your set of performance metrics, including incremental clicks, conversions, and gross profit will appear on your scorecards for the selected time period. Metrics are updated daily.

Need help?

If you have a question that this page can’t answer, email

Was this helpful?

How can we improve it?
Clear search
Close search
Google apps
Main menu