In short. Reference the separately defined MemberProgramTier with its @id in validForMemberTier and provide the offer's regular price.
Definition:
validForMemberTieron a product offer'sUnitPriceSpecificationidentifies theMemberProgramTierthat receives the member price. When the program and tier are defined on a separate business information page, the offer uses aMemberProgramTierreference with the tier definition's unique@id.
Key facts
- Google's loyalty program documentation, last updated 8 September 2026, places
MemberProgramunderOrganizationand puts individual product benefits inUnitPriceSpecificationunderOffer. - A program's
hasTiersproperty containsMemberProgramTierobjects, and Google says a loyalty program must have at least one tier. - Google defines a member price as the price offered to a member of a particular loyalty program. A member price is marked with
validForMemberTier. - For a tier defined under
MemberProgramon a separate page, Google's merchant listing documentation identifies the tier with@idand requires theOfferto provide a current regular price as well.
Where is the loyalty program defined?
Google's loyalty program documentation places the MemberProgram markup under Organization on the page that contains the business's administrative details and policies. Its hasTiers property contains one or more MemberProgramTier objects. Google states that a loyalty program must have at least one tier.
The merchant listing guidance describes the same arrangement as a separate page for the organization's administrative details and policies. Schema.org defines MemberProgram as a program that provides member benefits and can have multiple tiers. The program page can expose the tier identity like this:
{
"hasTiers": [
{
"@type": "MemberProgramTier",
"@id": "https://www.example.com/com/member-plus#tier_silver",
"name": "silver"
}
]
}
The @id is the stable identifier that the product page reuses. The example identifier and tier name follow Google's separate-page example.
How does the Offer reference the tier?
Google's merchant listing documentation puts member prices in price specifications under the Offer. It says that validForMemberTier accepts MemberProgramTier, and its separate-page example uses the unique resource identifier of the tier definition. A matching member price specification is:
{
"@type": "UnitPriceSpecification",
"price": 8.00,
"priceCurrency": "GBP",
"validForMemberTier": {
"@type": "MemberProgramTier",
"@id": "https://www.example.com/com/member-plus#tier_silver"
}
}
The product page therefore repeats the tier's @id inside validForMemberTier. Schema.org's validForMemberTier property defines the value as the membership program tier for which an Offer or PriceSpecification is valid.
What price fields accompany the reference?
Google requires a current regular price on the Offer when validForMemberTier designates a member price. The regular price can use price or priceSpecification. If the same price applies to several tiers, Google allows multiple member tiers in the property. Separate price specifications can carry different member prices for different tiers.
The same documentation distinguishes member prices from strikethrough prices. A member price uses validForMemberTier and cannot also use priceType. If both properties appear in one price specification, Google says that price specification is ignored.
How can you check the implementation?
Google's implementation guidance directs you to validate the markup with the Rich Results Test and fix critical errors. After deployment, its URL Inspection guidance checks how Google sees the page, including whether robots.txt, noindex or login requirements prevent access. Google currently labels validForMemberTier as beta and says off-page MemberProgramTier markup might not show in Search right away.
Related terms
- How do I describe a merchant loyalty program in structured data?
- How can an offer identify a price available to loyalty members?
- Offer structured data
- Organization structured data
FAQ
Should the Offer repeat the whole MemberProgram?
The documented separate-page pattern keeps the program and its tiers under Organization and uses a MemberProgramTier object with the tier definition's @id inside validForMemberTier on the offer.
Can one member price apply to several tiers?
Yes. Google's merchant listing guidance allows multiple member tiers when the price is the same for them. Use separate price specifications when the tiers have different member prices.
Does a member price replace the regular price?
No. Google requires the Offer to provide a current regular price with price or priceSpecification when validForMemberTier designates a member price.
Sources
- Google Search Central, "Loyalty program (MemberProgram) structured data", 8 September 2026
- Google Search Central, "Merchant listing (Product, Offer) structured data", 8 September 2026
- Schema.org, "validForMemberTier", 16 September 2026
Check how a page reads to answer engines. Open the GEO score analyzer