How do I describe a merchant loyalty program in structured data?

The Citead team, updated

In short. Describe the program with MemberProgram under Organization, list its MemberProgramTier objects, and connect product benefits through validForMemberTier.

Definition: A merchant loyalty program is described with MemberProgram structured data nested under the business's Organization markup. Its MemberProgramTier objects describe membership levels, their benefits and their joining requirements.

Key facts

  • As of 17 October 2026, Google's loyalty program documentation requires name, description and hasTiers for a program, plus name and hasTierBenefit for each tier. A program has at least one tier.
  • Schema.org's MemberProgramTier definition describes a tier within a loyalty program and provides hasTierRequirement for joining conditions such as a periodic fee or minimum spending.
  • Google's merchant listing documentation places product-specific member prices and points in UnitPriceSpecification objects under an Offer, which describes a product offer.

Where does the program markup go?

Google's technical guidelines place MemberProgram under Organization on the page describing the business's administrative details and policies. The hasMemberProgram property connects the business to its program; hasTiers contains the membership levels.

JSON-LD expresses structured data as JSON in a page's script element. This adapted version of Google's example retains its silver tier and points rate, with a shortened description. The example names and URLs are placeholders for the merchant's actual details.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "OnlineStore",
  "hasMemberProgram": {
    "@type": "MemberProgram",
    "name": "Membership Plus",
    "description": "Members earn loyalty points.",
    "url": "https://www.example.com/membership-plus",
    "hasTiers": [
      {
        "@type": "MemberProgramTier",
        "@id": "#plus-tier-silver",
        "name": "silver",
        "url": "https://www.example.com/membership-plus-silver",
        "hasTierBenefit": [
          "https://schema.org/TierBenefitLoyaltyPoints"
        ],
        "membershipPointsEarned": 5
      }
    ]
  }
}
</script>

At tier level, membershipPointsEarned describes points earned per currency unit spent. The example therefore describes five points per currency unit.

Which tier properties does Google support?

Google's tier property definitions require hasTierBenefit to identify the benefit. Supported values are TierBenefitLoyaltyPoints and TierBenefitLoyaltyPrice; the full schema.org URLs and short names are accepted. A tier can list multiple benefits. For a points benefit, the documentation also instructs merchants to supply membershipPointsEarned.

The recommended hasTierRequirement property describes eligibility. Google specifies these value types:

TypeJoining requirement
CreditCardThe shopper signs up for the named card.
MonetaryAmountThe shopper meets a minimum spending amount.
UnitPriceSpecificationThe shopper pays a periodic membership fee.
TextAnother requirement is described in words.

When hasTierRequirement is omitted, Google interprets the tier as free for anyone to join. The recommended tier url points to its signup page and accepts a single URL.

How do product benefits connect to a tier?

Google's member pricing guidance uses validForMemberTier inside a product's UnitPriceSpecification to identify the applicable tier. For a tier defined on the business information page, its @id supplies the reference. The product offer also supplies the current regular price through price or priceSpecification.

For product-specific rewards, membershipPointsEarned records the whole number of points earned with that purchase and is used together with validForMemberTier. Google labels this product-level points property as beta.

FAQ

Can I configure the program in Merchant Center?

Yes. Google's loyalty program guide offers Merchant Center as an alternative to markup. If you provide both, Google uses the Merchant Center settings.

Must I provide a program signup URL?

Google recommends a single program url. If you omit it, Google assumes the URL of the page containing the MemberProgram markup.

How do I check the implementation?

Google's implementation workflow directs you to validate with the Rich Results Test and fix critical errors. After deployment, use URL Inspection to check Google's access, including robots.txt restrictions, noindex and login requirements.

Sources

  1. Google Search Central, "Loyalty program (MemberProgram) structured data", 8 September 2026
  2. Google Search Central, "Merchant listing (Product, Offer) structured data", 8 September 2026
  3. Schema.org, "MemberProgramTier", undated

Check how a page reads to answer engines. Open the GEO score analyzer

Test a page and see what to fix first

The analysis usually takes less than 10 seconds and needs no account.

400,000+ pages scored in the public benchmark