SEOFAQ Telegram, маркетинг и SEO Канал SEOFAQT в мессенджере Telegram

Все чаты🎮 Loyalty Program Structured Data: CTR-буст, который большинство...

 144  


🎮 Loyalty Program Structured Data: CTR-буст, который большинство SEO ещё не внедрили

В июне 2025 Google запустил поддержку MemberProgram - нового типа schema, который позволяет отображать условия программы лояльности прямо в поисковой выдаче. Без Merchant Center, без рекламы. Просто JSON-LD.

Через год после запуска - большинство сайтов этого так и не сделали. Когда разметка реализована корректно, рядом с продуктовым сниппетом Google может отобразить:

- 🏷 "Цена для Gold-участников: 2 490 ₽" (вместо обычной 2 990 ₽)

- ⭐️ "Зарабатывайте 50 баллов за покупку"

- 🔓 "Бесплатная доставка для участников VIP-клуба"

Это органический rich result. И он работает даже для пользователей, которые ещё не участники программы: они видят причину зарегистрироваться ещё до клика. Поддерживаемые страны (на сейчас): США, Великобритания, Канада, Австралия, Франция, Германия, Бразилия, Мексика.

Архитектура разметки: два уровня

➡️Уровень 1 - Organization (одна страница сайта, например /about или /loyalty). Здесь описываете саму программу: название, тиры, условия каждого тира.

➡️Уровень 2 - Product → Offer (каждая продуктовая страница). Здесь указываете цену/баллы для конкретного тира, ссылаясь на @id из Уровня 1.

Главная ошибка - пытаться засунуть всё в одну страницу или встроить программу напрямую в Product schema без Organization. Google это проигнорирует.

Практический JSON-LD: минимально рабочий вариант

Шаг 1. Organization schema (страница /about или /loyalty):

json

{

"@context": "https://schema.org",

"@type": "OnlineStore",

"name": "Ваш магазин",

"url": "https://example.com",

"hasMemberProgram": {

"@type": "MemberProgram",

"name": "VIP Клуб",

"description": "Программа лояльности для постоянных покупателей",

"url": "https://example.com/loyalty",

"hasTiers": [

{

"@type": "MemberProgramTier",

"@id": "https://example.com/loyalty#silver",

"name": "Silver",

"hasTierBenefit": ["TierBenefitLoyaltyPoints"],

"membershipPointsEarned": 5

},

{

"@type": "MemberProgramTier",

"@id": "https://example.com/loyalty#gold",

"name": "Gold",

"hasTierBenefit": [

"TierBenefitLoyaltyPoints",

"TierBenefitLoyaltyPrice"

],

"membershipPointsEarned": 10

}

]

}

}

Шаг 2. Product schema (каждая карточка товара):

json

{

"@context": "https://schema.org",

"@type": "Product",

"name": "Название товара",

"offers": {

"@type": "Offer",

"price": 2990,

"priceCurrency": "RUB",

"priceSpecification": [

{

"@type": "UnitPriceSpecification",

"price": 2990,

"priceCurrency": "RUB"

},

{

"@type": "UnitPriceSpecification",

"price": 2490,

"priceCurrency": "RUB",

"validForMemberTier": {

"@type": "MemberProgramTier",

"@id": "https://example.com/loyalty#gold"

}

}

]

}

}

@id в validForMemberTier должен совпадать посимвольно с @id тира в Organization schema. Иначе получите ошибку "@id not found" в Rich Results Test.

Как внедрять

1. Всегда указывайте обычную цену рядом со скидочной. Без неё разметка отклоняется. Всегда: стандартная цена + цена для тира.

2. Merchant Center имеет приоритет над schema. Если у вас подключён Merchant Center и там уже настроена программа лояльности - Google использует данные оттуда, игнорируя schema на сайте. Синхронизируйте оба источника или выбирайте один.

3. Скидки на доставку и расширенный возврат НЕ поддерживаются. Даже если у вас "бесплатная доставка для Gold" - в schema это отобразить нельзя (Google явно это ограничил). Поддерживаются только: скидочная цена (TierBenefitLoyaltyPrice) и баллы (TierBenefitLoyaltyPoints).

4. Не блокируйте страницу с Organization schema через robots.txt. Google должен проиндексировать страницу с описанием программы, чтобы разрезолвить @id тиров на продуктовых страницах.

Фича запущена год назад. Большинство конкурентов её ещё не внедрили.

Ссылки из поста:
https://developers.google.com/search/docs/appearan...

Источник новости https://t.me/drmaxseo/1513...