When working with structured data on a website, particularly with e-commerce product data, there are several properties you might consider including to provide richer information to search engines. One such property is priceValidUntil.
What Is priceValidUntil?
priceValidUntil is a property included in structured data to indicate the date until the price is valid. This is particularly useful for sales, discounts, or other temporary price reductions. By specifying this date, you inform search engines that the price will change after this date, which will help deliver accurate and timely information to users.
For instance, if a product is on sale until December 31, 2023, then the priceValidUntil property can be set to “2023-12-31”. This means that after this date, the displayed price is no longer guaranteed to be accurate.
Warnings
When seeing warnings (not errors) in Google’s Rich Results Test tool, it is there to notify you of optional data. This means there is no requirement, and it also means there will be no SEO penalty. It also means only filling in the attribute value if it is appropriate.
Common Fixes
The most common fix is to add an end date. You can, for example, add a date that expires in a year. Make sure you do this dynamically to update the date daily. Do not add values manually; you will forget about it, and then, at one point, Google will think the price has expired.
When Should I Use It?
You can use the priceValidUntil attribute if you have a price drop and you know when this price drop ends. However, you can set the expiry date to next year and have it dynamically updated daily.
How to Use priceValidUntil in Structured Data?
If you’re marking up your data using JSON-LD (a popular format for structured data), here’s an example (highlighted in bold) of how you might incorporate the priceValidUntil property:
{
"@context": "http://schema.org/",
"@type": "Product",
"name": "MY TITLE",
"url": "https://www.example.com/products/my-title.html",
"sku": "MY SKU",
"gtin13": 123456789,
"productID": "517672730687",
"brand": {
"@type": "Thing",
"name": "MY BRAND NAME"
},
"description": "MY DESCRIPTION",
"image": "https://cdn.example.com/s/files/1/1520/5044/products/myimage.jpg?v=1571461056",
"offers":
{
"@type" : "Offer",
"priceCurrency": "GBP",
"price": "16.10",
"priceValidUntil": "2023-12-31",
"itemCondition" : "http://schema.org/NewCondition",
"availability" : "http://schema.org/OutOfStock",
"url" : "https://www.example.com/products/my-title.html?variant=6848129007679",
"image": "https://cdn.example.com/s/files/1/1520/5044/products/myimage.jpg?v=1571461056",
"name" : "MY TITLE",
"gtin13": 123456789,
"sku": "811533B979S",
"description" : "MY DESCRIPTION"
}
}
In the example above, the product’s price of $16.10 is valid until December 31, 2023.
The value structure is year, month, day seperated by a hyphen.
Testing Your Data
After adding or updating structured data to the product landing page, it’s a good practice to validate the structured data to ensure it’s correct and can be interpreted by search engines. You can perform your tests using Google’s Rich Results Testing Tool.
There is a comma missing after “priceValidUntil”: “2023-12-31”
Hello Sarka, yes you are right, the example needed a comma. Thank you for this, article is now updated.
updated every day ?
Google does not pull structured data every day. No. There will be days it does not collect or check structured data.
How do you “have it dynamically updated every day.”?
Hello Darryl, thank you for your question. For Shopify you can check the rebuild guide here: https://feedarmy.com/kb/shopify-microdata-for-google-shopping/
If you are using a different eCommerce platform, you need to contact your web developer to find a solution, contact eCommerce support team or ask on the eCommerce community.