---
title: "Marking Up Discount Data for SI Shopping Agents | Webtures"
description: "Learn how to mark up strikethrough prices, sale periods, member prices and coupons with JSON-LD and feeds so SI shopping agents can read them correctly."
source_url: "https://www.webtures.com/insights/marking-up-discount-and-promotion-data/"
lang: "en"
updated: "2026-10-14T00:00:00.000Z"
---

# How to mark up discount and promotion data for SI agents

Short Answer Learn how to mark up strikethrough prices, sale periods, member prices and coupons with JSON-LD and feeds so SI shopping agents can read them correctly.

Atiye Berika Ertaş 8 min read

Summarize with SI

![How to mark up discount and promotion data for SI agents](https://www.webtures.com/images/insights/marking-up-discount-and-promotion-data/cover.svg?v=si1) ![How to mark up discount and promotion data for SI agents](https://www.webtures.com/images/insights/marking-up-discount-and-promotion-data/cover-light.svg?v=si1)

[Atiye Berika Ertaş](https://www.webtures.com/authors/berika-ertas/) Generative Search Manager

Published: 14 Oct 2026 Updated: 14 Oct 2026

Marking up discount and promotion data means publishing a product’s current price, pre-sale price, the start and end time of a campaign and any member-only price in fields machines can read without ambiguity. SI shopping agents do not understand that a product is on sale from a red label on the page or a “November special” heading, but from the price fields in the product data. A product that shows a 30 percent discount on the page but has only one price in its structured data remains an ordinary product to the agent. In July 2026, Google updated its product markup documentation to clarify how to specify sale periods in structured data and aligned this with the sale price effective date field in Merchant Center. This update directly addresses the problem of products that continue to appear discounted after a campaign ends. With year-end campaigns approaching, setting up this markup correctly helps agents position the brand accurately in price comparisons. In this guide, we explain price types, how to specify the sale period, member prices and how to handle discounts applied in the cart, with examples.

## Which fields tell an agent that a product is discounted?

An agent understands a discount when a higher pre-sale price appears as a separate field next to the current price in the product data. Google’s product markup documentation defines three price types: the active price at which the product is currently sold, the strikethrough price showing the higher price normally charged during a sale, and the member price offered to members of a loyalty programme. The active price on its own carries no discount information; when a second price is defined as a strikethrough price, the active price automatically becomes a sale price.

This distinction is the technical condition that allows an agent to tell a user “this product is on sale right now”. An agent comparing prices can only notice that one of two sellers is discounted when that information is given in a machine-readable way. A visually struck-through price on the page is not enough; the same information must also appear in structured data and the product feed. In Merchant Center, this distinction is built with the price and sale price fields; in structured data, it is built through the type of price specification.

## How are the strikethrough price and current price shown together in JSON-LD?

The strikethrough price and the current price are shown in JSON-LD as two separate price specifications within the same offer, with the pre-sale price’s type set to StrikethroughPrice. No additional type is needed for the current price. Google states that it also accepts ListPrice during a transition period, but StrikethroughPrice is the better choice for new implementations.

The example below shows a campaign where a product normally priced at 1,500 TRY is sold for 1,050 TRY:

```
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Cotton Duvet Cover Set Double",
"offers": {
"@type": "Offer",
"priceSpecification": [
{
"@type": "UnitPriceSpecification",
"price": 1050.00,
"priceCurrency": "TRY",
"validFrom": "2026-11-20T00:00:00+03:00",
"validThrough": "2026-11-30T23:59:59+03:00"
},
{
"@type": "UnitPriceSpecification",
"priceType": "https://schema.org/StrikethroughPrice",
"price": 1500.00,
"priceCurrency": "TRY"
}
],
"availability": "https://schema.org/InStock"
}
}
```

The most important point in this structure is that the strikethrough price must genuinely be the product’s usual recent price. Artificially raising the price before a campaign and then showing a “discount” carries risk under consumer protection rules and damages the brand’s credibility in scenarios where agents track price history. The two prices visible on the page and the two prices in the JSON-LD must also be exactly the same.

## Why should the start and end time of a campaign be marked up?

[GEO](https://www.webtures.com/generative-engine-optimization-geo/) · SI VisibilityIs your brand visible in generative search?Let's build a strategy to surface your brand in ChatGPT, Gemini and Perplexity answers.[Get in touch →](https://www.webtures.com/contact/)

Free AssessmentMeet a digital strategy team operating since 2011Share your goals and we'll map a visibility roadmap tailored to your brand.[Get in touch →](https://www.webtures.com/contact/)

Measurable GrowthUnite GEO and performance marketing in one modelLet's generate sustainable digital demand with a data-driven approach.[Get in touch →](https://www.webtures.com/contact/)

The start and end time of a campaign should be marked up because agents and search systems cannot reflect a discount accurately without knowing when a price is valid. With its documentation update on 7 July 2026, Google added clear guidance on specifying the sale period with the validFrom, validThrough and priceValidUntil properties. Google describes this change as aligning structured data usage with the sale price effective date field in Merchant Center.

Dates should be given in ISO 8601 format with time zone information. For campaigns in Türkiye, this means adding +03:00 to the end of dates. Google recommends providing both a start and an end time and making sure the start is earlier than or equal to the end. It also states that listings may not display if the end time indicates a past date. This rule can directly affect a product’s visibility if teams forget to update structured data after a campaign.

### What is the difference between priceValidUntil and validThrough?

Both properties specify when a price ends; the difference is which node they can be used on. If the sale price is held directly in the price field at the offer level, the end time can be added to the same node with validThrough or priceValidUntil. If the sale price is given within a price specification together with a strikethrough price, as in the example above, the start and end time should be added to that price specification with validFrom and validThrough. Google explicitly states that priceValidUntil does not apply to the price specification type. This detail may seem small, but a date property used on the wrong node can cause the sale period not to be read at all.

## Are member prices and loyalty perks a separate layer?

The member price is a completely separate layer from the strikethrough price and is marked up with its own property. According to Google’s documentation, member prices are specified with the validForMemberTier property, and the price type property cannot be used in these price specifications. validForMemberTier, in turn, cannot be used on strikethrough prices. Google ignores price specifications that contain both properties. This rule makes it possible to define a general sale price, a pre-sale price and a member price for the same product, but each must sit in its own specification.

For brands with a loyalty programme, this layer creates a separate advantage during the year-end period. Google states that loyalty data connected to Merchant Center highlights member perks and member prices across Google surfaces. When a user searches for a product from a brand they are a member of, they can see their own price instead of the general price. To mark up member prices correctly, the loyalty programme and membership tiers must first be defined at the organisation level, and then product-level prices must be linked to these tiers.

## How should cart discounts and coupons be handled?

Discounts applied in the cart and coupons should not be written into the product’s price field; these offers should be defined as separate promotion data together with their conditions. Campaigns such as “20 percent off in the cart” or “100 TRY off orders over 500 TRY” depend on the state of the cart, not the product itself. Reflecting these discounts in the product’s current price creates an inconsistency between the price users see on the product page and the price in the structured data.

Google offers a separate promotion structure in Merchant Center for these offers. Promotions are linked to products, and their conditions, validity dates and whether a coupon code is required are specified separately. What matters for agents is that the condition is clear and verifiable. A vague phrase such as “extra discount on selected products” prevents the agent from understanding which product is discounted by how much and under what condition. Writing campaign copy that clearly states which product groups it covers, the minimum basket value and the end time removes confusion for both users and agents.

## How do markup errors undermine an agent’s trust?

[GEO](https://www.webtures.com/generative-engine-optimization-geo/) · SI VisibilityIs your brand visible in generative search?Let's build a strategy to surface your brand in ChatGPT, Gemini and Perplexity answers.[Get in touch →](https://www.webtures.com/contact/)

Free AssessmentMeet a digital strategy team operating since 2011Share your goals and we'll map a visibility roadmap tailored to your brand.[Get in touch →](https://www.webtures.com/contact/)

Measurable GrowthUnite GEO and performance marketing in one modelLet's generate sustainable digital demand with a data-driven approach.[Get in touch →](https://www.webtures.com/contact/)

Markup errors cause an agent to see conflicting information about the same product, lowering its assessment of the brand’s reliability. The most common errors during campaign periods arise because prices need to change in several systems at once. The table below summarises these errors, what the agent encounters and how to fix them.

| Error | What the Agent Sees | Fix |
| --- | --- | --- |
| Two prices on the page, one in structured data | The product looks as if it is not discounted. | Add the pre-sale price as StrikethroughPrice. |
| The campaign has ended but the sale price remains | An expired price conflicts with the real price. | Mark the end time with validThrough and set up an automatic rollback. |
| Dates without a time zone | The campaign may be read as starting or ending in another time zone. | Add the +03:00 time zone to dates. |
| A cart discount written into the product price | The page price and data price do not match. | Define cart discounts as promotion data. |
| Member price and strikethrough price in the same specification | The price specification is ignored entirely. | Give each price type in its own specification. |
| A price added later with JavaScript | Bots that do not execute JavaScript never see the price. | Generate the price and structured data on the server side. |

## How is price data consistency tracked in SI answers?

Price data consistency is tracked not only with markup validation tools but also by regularly checking which price the brand is mentioned with in SI answers. Google’s rich results test and the product diagnostics screen in Merchant Center show whether the markup is technically correct. However, these tools do not show which price and campaign information ChatGPT or Gemini uses when describing the brand’s product to a user.

In its [GEO consulting](https://www.webtures.com/generative-engine-optimization-geo/) projects, Webtures treats campaign periods as a separate monitoring window, auditing whether prices in structured data, the product feed and page content match one another against the campaign calendar. When the brand’s presence in price-focused prompts such as “on sale”, “best priced” or “November deals” is tracked with a [GEO tool](https://brantial.ai/) such as Brantial in the days after a campaign starts, it also becomes visible how quickly and to what extent the markup is reflected in SI answers. This observation provides a concrete measure of how many days in advance price changes should go live for the next campaign.

[Atiye Berika Ertaş](https://www.webtures.com/authors/berika-ertas/) Generative Search Manager

Published: 14 Oct 2026 Updated: 14 Oct 2026

[Add Webtures as a preferred source on Google](https://www.google.com/preferences/source?q=webtures.com)

[Related service Generative Engine Optimization (GEO) Visibility inside SI answers Explore →](https://www.webtures.com/generative-engine-optimization-geo/)

## Articles related to How to mark up discount and promotion data for SI agents

[### An agentic commerce readiness checklist for peak season Eren Kartav / 13 Oct 2026](https://www.webtures.com/insights/peak-season-agentic-commerce-readiness-checklist/)

[### Enriching product feeds with conversational attributes for conversational queries Sinan Gergöy / 07 Oct 2026](https://www.webtures.com/insights/enriching-product-feeds-with-conversational-attributes/)

[### Reading your brand share in Merchant Center AI performance insights Selen Çetin / 06 Oct 2026](https://www.webtures.com/insights/merchant-center-ai-performance-insights-guide/)

[### Sell-side agentic commerce: when agents run the operation Gizem Sayan / 02 Oct 2026](https://www.webtures.com/insights/sell-side-agentic-commerce/)

[### Agentic Commerce Readiness Report: how commerce infrastructure changes Webtures / 22 Sept 2026](https://www.webtures.com/insights/agentic-commerce-readiness-report/)

[### How to Build a GEO Strategy for Cosmetics and Beauty Brands? Tufan Acar / 09 Sept 2026](https://www.webtures.com/insights/how-to-build-a-geo-strategy-for-cosmetics-and-beauty-brands/)
