hasMemberProgram
hasMemberProgram · Recommended
Appears in
What is it?
hasMemberProgram describes a loyalty or membership program offered by an organization. It links an Organization to a MemberProgram node that captures the program name and any associated membership tiers.
Google lists this field as recommended for Organization markup, which means it actively uses this information in search features. Examples include airline frequent flyer programs, retail rewards clubs, and subscription-based membership programs.
Why this matters for AEO
Loyalty program membership is a topic users ask about directly in both search and AI assistant contexts. "Does Costco have a membership program?" or "what are the benefits of the Amazon Prime membership?" are exactly the kinds of queries where an AI engine pulls from structured data first. An organization with hasMemberProgram markup gives the AI a structured, authoritative answer rather than requiring inference from unstructured marketing copy.
For retail, hospitality, airlines, and subscription businesses, loyalty programs are a significant differentiator. Structured markup ensures AI engines can accurately describe your membership offering and tier structure to users comparing options.
What the specs say
Schema.org:hasMemberProgram expects a MemberProgram value. A MemberProgram offered by an Organization, for example an eCommerce merchant or an airline. [Source: https://schema.org/hasMemberProgram]
Google: Recommended. "A member (loyalty) program that you provide, if applicable." [Source: https://developers.google.com/search/docs/appearance/structured-data/organization]
MemberProgram structure
A MemberProgram node should include:
@type—"MemberProgram"name— Program name (e.g., "Amazon Prime")url— Program landing pagehasTier— One or more MemberProgramTier nodes
A MemberProgramTier node includes:
@type—"MemberProgramTier"name— Tier name (e.g., "Gold", "Silver")url— Tier-specific landing page
How to find your value
- Use your loyalty program's official name exactly as marketed.
- Include tier names only if the program has distinct membership levels with different benefits.
- Link to the official program enrollment or overview page.
Format and code
Simple program (no tiers)
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "REI",
"hasMemberProgram": {
"@type": "MemberProgram",
"name": "REI Co-op Membership",
"url": "https://www.rei.com/membership"
}
}
Program with tiers (airline example)
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "United Airlines",
"hasMemberProgram": {
"@type": "MemberProgram",
"name": "MileagePlus",
"url": "https://www.united.com/ual/en/us/fly/mileageplus.html",
"hasTier": [
{
"@type": "MemberProgramTier",
"name": "Premier Silver",
"url": "https://www.united.com/ual/en/us/fly/mileageplus/premier/silver.html"
},
{
"@type": "MemberProgramTier",
"name": "Premier Gold",
"url": "https://www.united.com/ual/en/us/fly/mileageplus/premier/gold.html"
},
{
"@type": "MemberProgramTier",
"name": "Premier Platinum",
"url": "https://www.united.com/ual/en/us/fly/mileageplus/premier/platinum.html"
},
{
"@type": "MemberProgramTier",
"name": "Premier 1K",
"url": "https://www.united.com/ual/en/us/fly/mileageplus/premier/1k.html"
}
]
}
}
Retail rewards program
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Sephora",
"hasMemberProgram": {
"@type": "MemberProgram",
"name": "Beauty Insider",
"url": "https://www.sephora.com/beauty/loyalty-program",
"hasTier": [
{
"@type": "MemberProgramTier",
"name": "Insider"
},
{
"@type": "MemberProgramTier",
"name": "VIB"
},
{
"@type": "MemberProgramTier",
"name": "Rouge"
}
]
}
}
Multiple programs
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Amazon",
"hasMemberProgram": [
{
"@type": "MemberProgram",
"name": "Amazon Prime",
"url": "https://www.amazon.com/prime"
},
{
"@type": "MemberProgram",
"name": "Amazon Business Prime",
"url": "https://www.amazon.com/b2b/prime"
}
]
}
Webflow implementation
Static pages
Add hasMemberProgram to the Organization JSON-LD block in Page Settings > Custom Code. Since loyalty programs typically have stable names and tiers, hardcoding is appropriate. Update the block if you add or rename tiers.
CMS template pages
For organizations that manage multiple brand loyalty programs through a CMS, create a Programs collection. In the organization's page template, reference the collection item and inject program name and tiers dynamically into the JSON-LD block via a custom code embed.
In Schema HQ
The hasMemberProgram field configures hasmemberprogram in the organization editor as a recommended field. enter the program name and url. tier data can be added as nested entries. schema hq serializes the complete memberprogram structure into valid json-ld. is supported
Real examples
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Marriott International",
"url": "https://www.marriott.com",
"hasMemberProgram": {
"@type": "MemberProgram",
"name": "Marriott Bonvoy",
"url": "https://www.marriott.com/loyalty.mi",
"hasTier": [
{
"@type": "MemberProgramTier",
"name": "Member"
},
{
"@type": "MemberProgramTier",
"name": "Silver Elite"
},
{
"@type": "MemberProgramTier",
"name": "Gold Elite"
},
{
"@type": "MemberProgramTier",
"name": "Platinum Elite"
},
{
"@type": "MemberProgramTier",
"name": "Titanium Elite"
},
{
"@type": "MemberProgramTier",
"name": "Ambassador Elite"
}
]
}
}
Related fields
FAQ
What counts as a member program?
Any structured loyalty, rewards, or membership system qualifies. This includes airline frequent flyer programs, retail points programs, subscription memberships like Amazon Prime, co-op memberships like REI, and tiered professional programs. A simple newsletter signup does not qualify.
Should I include free membership tiers alongside paid tiers?
Yes. Free entry-level tiers (like Sephora's "Insider" or United's basic MileagePlus membership) are part of the program structure and should be included. They are often the most relevant tier for users deciding whether to sign up.
Is hasMemberProgram required for e-commerce organizations?
No. Google marks it as recommended rather than required, and only applies it when the field is applicable. Organizations without a formal loyalty program should omit the field rather than leave it empty or add a placeholder value.