Set up automated discounts

On this page

Benefits

  • Effective pricing: Leverages advanced Google AI to continuously optimise 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 optimised prices continuously, consistently and automatically and save time, effort and cost.

How it works

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

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

  • Product demand
  • Price elasticity
  • Price competitiveness
  • Seasonality trends
  • Estimated delivery day
  • Brand value
  • Delivery 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 shop.

Note: Sale price suggestion will no longer be available after successful completion of the Google review.

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 basket data. See more implementation details here.
  • You need to provide the [auto_pricing_min_price] and [cost_of_goods_sold] product data attributes for at least 20% of your total inventory impressions. To get you started, you can set:
    • [auto_pricing_min_price] attribute to <=95% of the price currently shown to consumers (current [price] or [sale_price]) and >=[cost_of_goods] (details below).
    • [cost_of_goods] must be lower than [auto_pricing_min_price] and between 5% and 95% of the price currently shown to consumers (current [price] or [sale_price])
  • Your website integration must be able to accept and honour 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 initially 10% for three days and 90% thereafter.
  • You're responsible for ensuring that your use of this feature complies with all local laws and regulations that apply to you and your business.

Instructions

Step 1 of 6: Getting started

  1. Navigate to the 'Automated discounts' tab under Marketing. If you do not see the tab, you need to activate automated discounts in the 'Add-ons' section under Settings and tools. 
  2. Click Continue to select automated discounts 
  3. Select if you are using a store builder and choose your preferred currency for performance reporting
  4. If you're using a shop builder (e.g. Shopify, WooCommerce, Magento, PrestaShop), learn more about how to set up automated discounts for shop builders
  5. Once you've saved your basic information, you are ready to continue with the next steps of the setup

Step 2 of 6: Set up conversions with basket data (CwBD)

Integration of conversions with basket data (CwBD) allows Google to monitor, evaluate and optimise performance across your entire inventory and take into account cross-selling and cannibalisation effects. Follow these integration guidelines to set up CwBD. How we are using the information that you provide in the CwBD data:
  • Product price: This value includes the discounted price before tax.
  • Cost of goods sold: All products that might be included in the basket data need to be uploaded into your product data in Merchant Center including their cost of goods sold (COGS) [cost_of_goods_sold] value to ensure that all products in the basket can be taken into account for profit optimisation.
  • Discount: During the pilot, this field is used to collect all additional variable costs, like delivery and transaction costs that are not reflected at checkout.
Note: We recommend using GA4 for setting up conversions with basket data to enable automated discounts if you use GA4 for conversions in Google Ads. You can also use a primary conversion action in Google Ads to report card data for automated discounts. We currently don't support Floodlight conversion tracking.

After you've added basket data to your online shop's conversion tracking, verify that the conversion tag parameters have been implemented correctly by completing a test order and following the steps below:

  1. Open Chrome Developer Tools by clicking the Chrome menu in the top-right corner of your Google Chrome web browser, then selecting 'More tools' and clicking '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 basket 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.id * items.price * items.quantity)

Step 3 of 6: Submit product attributes to opt in products

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 fulfil the minimum opt-in requirement to opt in at least enough products to cover >20% of your total inventory impressions. Changes to the product information 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 targeting multiple countries of sale, you may opt in products by adding the [auto_pricing_min_pricing] attribute for the countries of your preference. Performance reporting will show aggregated data across all participating markets; you're 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 sold (COGS) [cost_of_goods_sold] attributes for each product to cover at least 20% of your total inventory impressions. You may provide these attributes via multiple data sources in your Merchant Center or through the API.

Bear in mind that the maximum price is the standard price provided in your product data and the minimum price is the value that you provided in the [auto_pricing_min_price] attribute. Google will optimise the sale price between those two limits and change the price at a given time only for those products in your inventory that benefit the overall goal of maximising profit across your entire inventory, taking cross-selling and cannibalisation effects into account.

Required attributes Value type Description
Minimum price [auto_pricing_min_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 sold (COGS) [cost_of_goods_sold] attribute unless there are special requirements (such as MAP restrictions).
Cost of goods sold (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.

Taxes

COGS doesn'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 sold (COGS) [cost_of_goods_sold] attribute for opted-out products. It's 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.

The current sale price will be passed in the URL.

For EEA: The prior price will also be passed in the URL if shown on the Shopping ad. You may choose to display the prior price in your online shop. 

The prior price represents the lowest price displayed to users on Google in the past 30 days in the following countries: Croatia, Latvia, Norway, Poland, Spain. 

For all other EEA countries, the prior price represents the lowest price displayed to users on Google in the past 30 days, except where there is an application of consecutive price reductions (e.g. 10% off, then 20% off, then 50% off) within the past 60 days. In that case, the prior price will be the price that was applied before the first price reduction.

Example: Consider the product price changes, e.g. Day 1: €100, Day 7: €90, Day 14: €80, Day 21: €70, then the prior price on Day 22 for Croatia, Latvia, Norway, Poland, Spain would be €80, while it would be €100 for all other EEA countries

You can find example URLs for testing in Merchant Center in 'Marketing', in the 'Automated discounts' tab under 'Update your shop's website'. Contact automated-discounts-support@google.com in case 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.

Note:

  • To help with the URL integration, you can find details on the Google-generated JSON web token structure and the process of consuming the product prices under Token structure
  • The public key (see below) applies to all automated discount integrations

Token structure

JWT tokens contain two JSON objects: header and payload.

Header


{

"alg": "ES256",

"typ": "JWT"

}


Google-generated token headers have two 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 from described above, the token must be rejected.

Payload


{
"exp": 1571673600,
"o": "tddy123uk",
"m": "140301646",
"p": 21.99,
"pp": 15.00,
"c": "USD"

}


Payload has the following fields:

  • exp – expiry time as Unix time. If the token has expired, it must be rejected.
  • ooffer ID, used to check if the landing page matches the product or a valid variant. If the landing page doesn't match the product or valid variant, it must be rejected. A valid variant can be a different size of the same shoes.
  • m – Merchant ID. If the Merchant ID doesn't match, the token must be rejected.
  • p – Google automated discounts (GAD) price
  • pp – Prior price*
    *For EEAThe prior price will also be passed in the URL if shown on the Shopping ad. You may choose to display the prior price in your online shop. 

    The prior price represents the lowest price displayed to users on Google in the past 30 days in the following countries: Croatia, Latvia, Norway, Poland, Spain. 

    For all other EEA countries, the prior price represents the lowest price displayed to users on Google in the past 30 days, except where there is an application of consecutive price reductions (e.g. 10% off, then 20% off, then 50% off) within the past 60 days. In that case, the prior price will be the price that was applied before the first price reduction.

    Example: Consider the product price changes, e.g. Day 1: €100, Day 7: €90, Day 14: €80, Day 21: €70, then the prior price on Day 22 for Croatia, Latvia, Norway, Poland, Spain would be €80, while it would be €100 for all other EEA countries

  • 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 three steps: decoding and signature validation, field validation and consuming price.

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

http://my.site.com/blacktee?pv2=eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJjIjoiVVNEIiwiZXhwIjoxNTcxNjczNjAwLCJtIjoiMTQwMzAxNjQ2IiwibyI6InRkZHkxMjN1ayIsInAiOjIxLjk5fQ.Qlyr1dQ0vLUJx-iQKwkYE2uLHfYCLVEVGZkAq4fwGTSpMDQCbtzDJr5uGHG8dNKaKV5OlYDxLpW40tQVVe2gkQ

Most of the libraries combine decoding and signature validation into 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 discount users without expiry.

-----BEGIN PUBLIC KEY-----

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 which 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 has 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 displayed for the remainder of the consumer session (at least 30 minutes), including checkout. For items added to the basket, the price needs to be persistent for at least 48 hours.

You can use the existing coupon functionality to discount the price if it fulfils 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.

Testing After the integration is completed, it will be tested in three 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 jwt.io 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 Merchant Center during onboarding (sample URLs).

Step 5 of 6: Google review

Once the previous setup steps have been completed, you will be able to request a Google review by clicking 'Request verification' to validate the integration and the consumer experience. Expect the Google review to take two to three working days to complete.
Any open issues will be displayed on the 'Automated discounts' tab. Allow up to 24 hours for updates to be reflected on Merchant Center for changes that you've made. Once you've resolved all issues, you can request another Google review.

Step 6 of 6: Setup completion and kick-off

After Google has reviewed and approved your account, a performance-based ramp-up will be kicked off automatically for your opted-in products. You will now be able to monitor your performance in the 'Automated discounts' tab, as well as pause and activate the generation of optimised sale prices with one click.

Product activation

After the Google review has been successful, sale prices optimised by automated discounts will start showing on your Shopping ads for opted-in products for 90% of customers. Note that products will only be discounted if it benefits the overall goal of maximising profit across your entire inventory.

You can use the 'Pause' and 'Activate' buttons at any time if you want to pause or activate automated discounts.


Performance reporting

Navigate to the 'Automated discounts' tab under 'Marketing' to monitor all performance metrics. Your set of performance metrics, including incremental gross profit, revenue and clicks, will appear on your scorecards for the selected time period. Metrics are updated daily. Learn more about available metrics and about automated discounts in Merchant Center.

Note: The sale price optimised by Google automated discounts (GAD price) and the prior price are accessible in real time via Merchant API in the Products sub-API.

Was this helpful?

How can we improve it?
Search
Clear search
Close search
Google apps
Main menu
13244164248896630623
true
Search Help Centre
true
true
true
true
true
71525
false
false
false
false