Партнеры, участвующие в интеграции предложений, должны завершить настройку учётной записи для этапа интеграции на уровне продавца или организации (пилотный проект) до начала работы. Реализация, тестирование и запуск интеграции предложений подробно описаны в этом руководстве. Перед началом интеграции ознакомьтесь с этим обзором и правилами в отношении предложений .
Предложения
Интеграция предложений позволяет передавать структурированную информацию о промоакциях и скидках продавцов, действующих на определённые услуги в определённое время. Предложения включают в себя само предложение (процентная скидка, скидка в долларах США и т. д.), периоды действия (определённое время, дни недели и т. д.) и условия использования (предложение можно использовать только на определённые услуги), а также сложные комбинации ограничений.
Примеры предложений:
- Скидки на закуски по средам и четвергам в декабре с 12:00 до 17:00.
- Купите один десерт и получите второй бесплатно на ужин в честь Дня матери с 18:00 до 22:00
- Скидка 5 долларов на основное блюдо для бранча каждое воскресенье с 10:00 до 14:00
- Скидка 10% при личном обращении, которую можно комбинировать со скидкой 5% для премиум-подписчиков и скидкой 5%, если пользователь платит через ваше приложение.
Чтобы предложение было включено в интеграцию, оно должно соответствовать технической модели данных и нашим требованиям. Обязательно ознакомьтесь с нашей политикой в отношении предложений , чтобы убедиться в соблюдении правил интеграции и получить инструкции о том, что делать с предложениями, не соответствующими техническим требованиям.
Реализация предложений
Интеграция предложений состоит из двух каналов, которые будут загружаться ежедневно или с частотой, обеспечивающей высокую точность (что означает снижение вероятности устаревания):
OfferFeed
Имя поля | Тип | Требование | Описание |
---|---|---|---|
data | массив объектов(Offer) |
Предложение
Имя поля | Тип | Требование | Описание |
---|---|---|---|
offer_id | нить | Необходимый | Уникальный идентификатор предложения. Обязательно. |
entity_ids | массив строк | Список продавцов, участвующих в данном предложении. | |
add_on_offer_applicable_to_all_entities | булев | Если это правда, это предложение распространяется на все организации, входящие в агрегатор. Применимо только к дополнительным предложениям. | |
offer_source | перечисление(OfferSource) | Необходимый | Предложение может быть предоставлено агрегатором, отдельным продавцом или даже третьей стороной в качестве дополнения. Обязательно. |
action_type | перечисление(ActionType) | Необходимый | Сервис, предоставляющий предложение. Значение offer_id может принадлежать только одному типу действия. Если предложение может быть общим для нескольких типов сервисов, то для каждого типа сервиса будут созданы дубликаты предложений с уникальными идентификаторами. Обязательно. |
offer_modes | массив перечисления(OfferMode) | Необходимый | Способы, которыми можно воспользоваться предложением: личное присутствие, бронирование, онлайн и т. д. Обязательно. |
offer_category | перечисление(OfferCategory) | Необходимый | Категория предложения. Обязательно. |
source_assigned_priority | число | Неотрицательное целое число ([1-100], где 1 соответствует наивысшему приоритету), указывающее уровень приоритета предложения, назначенный источником. Наличие нескольких предложений от одного продавца служит сигналом для ранжирования предложений. 0 означает, что приоритет не установлен. | |
offer_details | объект(OfferDetails) | Необходимый | Подробная информация о предложении, например, скидка, стоимость бронирования и т. д. Обязательно. |
offer_restrictions | объект(OfferRestrictions) | Необходимый | Описывает, как ограничено предложение, т. е. требуется ли подписка/платежное средство, можно ли комбинировать это предложение с другими предложениями (и с какими типами) и т. д. Обязательно. |
coupon | объект(Coupon) | Подробная информация о купоне. Обязательно для offer_category: OFFER_CATEGORY_ADD_ON_COUPON_OFFER. | |
payment_instrument | объект(PaymentInstrument) | Информация о платежном инструменте. Обязательно для offer_category: OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER. | |
subscription | объект(Subscription) | Подробная информация о подписке. Обязательно для offer_category: OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER. | |
terms | объект(Terms) | Необходимый | Условия предложения. Обязательно. |
validity_periods | массив объектов(ValidityPeriod) | Необходимый | Срок действия предложения. Описывает период действия предложения, включая время начала и окончания, дни недели и т. д. Обязательно. |
offer_url | нить | URL-адрес страницы предложения продавца. Обязательно для offer_category: OFFER_CATEGORY_BASE_OFFER. | |
image_url | нить | URL-адрес изображения предложения продавца. |
Подробности предложения
Имя поля | Тип | Требование | Описание |
---|---|---|---|
offer_display_text | нить | Необходимый | Текст предложения, который поставщик предложения хочет отображать клиентам на странице результатов поиска. Обязательно. |
| один из(offer_specification) | Необходимый | Только одно из полей в этом oneOf может быть задано. |
max_discount_value | объект(Money) | Максимальная скидка, на которую можно рассчитывать. Например, скидка 10% при покупке на сумму до 100 долларов США. | |
min_spend_value | объект(Money) | Минимальная сумма покупки для получения скидки. Например, скидка 10% при общей стоимости товара 100 долларов США или выше. | |
booking_cost | объект(Money) | Стоимость бронирования по этому предложению. Например, скидка 100 долларов на итоговый счёт при бронировании столика стоимостью 15 долларов. | |
booking_cost_unit | перечисление(FeeUnit) | Единица измерения стоимости бронирования. Например, на человека, на транзакцию. | |
convenience_fee | объект(Fee) | ||
booking_cost_adjustable | булев | Можно ли изменить стоимость бронирования, т.е. вычесть её из итогового счёта? Например: скидка 30% на ужин при бронировании. Стоимость бронирования составляет 15 долларов США, и эта сумма будет учтена в итоговом счёте. Итоговый счёт: Общая сумма расходов - 30% - 15 долларов США. | |
additional_fees | массив объектов(AdditionalFee) | Дополнительные сборы, взимаемые с пользователя. Примеры: удобство, обслуживание и т. д. |
Деньги
Представляет собой сумму денег с указанным типом валюты.
Имя поля | Тип | Требование | Описание |
---|---|---|---|
currency_code | нить | Трехбуквенный код валюты, определенный в ISO 4217. | |
units | нить | Целые единицы суммы. Например, если currencyCode — "USD" , то 1 единица равна одному доллару США. | |
nanos | число | Количество единиц нано (10^-9) от суммы. Значение должно быть в диапазоне от -999 999 999 до +999 999 999 включительно. Если units положительная, nanos должно быть положительным или нулевым. Если units равна нулю, nanos может быть положительным, нулевым или отрицательным. Если units отрицательная, nanos должно быть отрицательным или нулевым. Например, $-1,75 представляется как units = -1, а nanos = -750 000 000. |
Платеж
Имя поля | Тип | Требование | Описание |
---|---|---|---|
unit | перечисление(FeeUnit) | ||
type | перечисление(FeeType) | ||
| один из(cost) | Только одно из полей в этом oneOf может быть задано. |
MoneyRange
Имя поля | Тип | Требование | Описание |
---|---|---|---|
min_amount | объект(Money) | ||
max_amount | объект(Money) |
Дополнительный сбор
Имя поля | Тип | Требование | Описание |
---|---|---|---|
name | нить | Необходимый | Название дополнительной платы. Примеры: плата за обслуживание, плата за обработку и т. д. Обязательно. |
fee | объект(Fee) |
Ограничения предложения
Имя поля | Тип | Требование | Описание |
---|---|---|---|
combinable_with_other_offers | булев | Можно ли комбинировать это предложение с другими предложениями? Если установлено значение true, партнёры могут указать, с какими предложениями можно комбинировать это предложение. Если заданы оба параметра: combinable_offer_categories и combinable_offer_ids, то любое предложение, соответствующее одному из вышеперечисленных условий, будет комбинируемым. | |
combinable_offer_categories | массив перечисления(OfferCategory) | Список типов предложений, с которыми можно комбинировать это предложение. Например, это предложение может комбинироваться с другими купонами. Если параметр combinable_with_other_offers имеет значение true и это поле не задано, все типы будут комбинируемыми. | |
combinable_offer_ids | массив строк | Список offer_id, с которыми можно комбинировать это предложение. Некоторые предложения можно комбинировать только с определёнными другими offer_id (они могут считаться родительскими предложениями). Если параметр combinable_with_other_offers имеет значение true и это поле не задано, все предложения можно комбинировать. | |
inclusions | массив объектов(OfferCondition) | Перечень условий, которые должны быть соблюдены для того, чтобы предложение было действительным (например, безалкогольные напитки, еда). | |
exclusions | массив объектов(OfferCondition) | Список условий, которые сделают предложение недействительным (например, шведский стол, комбинированные предложения и коктейли). | |
min_guest | число | Минимальное количество человек, необходимое для использования предложения. | |
food_offer_restrictions | объект(FoodOfferRestrictions) | Ограничения, касающиеся предложений еды. |
ПредложениеУсловие
Имя поля | Тип | Требование | Описание |
---|---|---|---|
description | нить |
FoodOfferRestrictions
Имя поля | Тип | Требование | Описание |
---|---|---|---|
meal_types | массив перечисления(MealType) | Типы питания, к которым может применяться предложение, например, обед или ужин. Если не указано иное, предложение может применяться ко всем типам питания. | |
restricted_to_certain_courses | булев | Может ли предложение распространяться только на определенные курсы. |
Купон
Имя поля | Тип | Требование | Описание |
---|---|---|---|
text | нить | Текст купона, который поставщик предложения хочет показать пользователям. | |
code | нить | Необходимый | Для использования предложения требуется код купона. Обязательно. |
Платежный инструмент
Имя поля | Тип | Требование | Описание |
---|---|---|---|
items | массив объектов(PaymentInstrumentItem) | Необходимый | Список платежных инструментов, которые можно использовать для участия в акции. Обязательно. |
provider_name | нить | Необходимый | Название поставщика платёжного инструмента. Это может быть название банка-партнёра, название банка и т. д. Например: American Express, HDFC, ICICI. Обязательно. |
PaymentInstrumentItem
Имя поля | Тип | Требование | Описание |
---|---|---|---|
type | перечисление(PaymentInstrumentType) | Необходимый | Тип платежного инструмента. Обязательно. |
name | нить | Необходимый | Название платёжного инструмента, например, название кредитной карты. Например: HDFC Infinia, American Express Platinum. Обязательно. |
Подписка
Имя поля | Тип | Требование | Описание |
---|---|---|---|
name | нить | Необходимый | Название подписки. Обязательно. |
subscription_auto_added | булев | Добавляется ли подписка автоматически, когда пользователь использует это предложение | |
cost | объект(Money) | Необходимый | Стоимость подписки. Обязательно. |
subscription_duration | объект(Duration) | Необходимый | Срок действия подписки по указанной стоимости. Обязательно. |
terms_and_conditions_url | нить | Ссылка на условия партнера, относящиеся к данной подписке. |
Продолжительность
Имя поля | Тип | Требование | Описание |
---|---|---|---|
seconds | нить | Секунды со знаком, относящиеся к промежутку времени. Должны быть в диапазоне от -315 576 000 000 до +315 576 000 000 включительно. Примечание: эти границы вычисляются следующим образом: 60 сек/мин * 60 мин/ч * 24 ч/сутки * 365,25 дней/год * 10 000 лет. | |
nanos | число | Доли секунды со знаком с разрешением в наносекундах. Длительности менее одной секунды представлены полем «0 seconds и положительным или отрицательным полем nanos . Для длительностей в одну секунду и более ненулевое значение поля nanos должно иметь тот же знак, что и поле seconds . Диапазон значений: от -999 999 999 до +999 999 999 включительно. |
Условия
Имя поля | Тип | Требование | Описание |
---|---|---|---|
url | нить | Ссылка на условия и положения партнера. | |
restricted_to_certain_users | булев | Ограничено ли предложение определенными пользователями. | |
terms_and_conditions | нить | Основной текст положений и условий предоставлен партнером. | |
additional_terms_and_conditions | массив строк | Условия и положения в дополнение к основным положениям и положениям от партнера. |
Срок действия
Имя поля | Тип | Требование | Описание |
---|---|---|---|
valid_period | объект(ValidityRange) | Время начала и окончания действия предложения. Эти значения должны соответствовать разным дням, то есть время начала должно быть 00:00 (начало дня), а время окончания — 00:00 (не включая день) в день окончания срока действия. | |
time_of_day | массив объектов(TimeOfDayWindow) | Указывает допустимый временной интервал в заданный день и дни, в которые доступно предложение. Например: Понедельник: с 10:00 до 17:00 Вторник: с 10:00 до 14:00 Вторник: с 17:00 до 19:00 Ср, Чт, Пт, Сб, Вс: с 15:00 до 19:00 Если не указано, это означает, что предложение действительно в течение всего времени в течение valid_period . | |
time_exceptions | массив объектов(ValidTimeException) | Указывает исключения из указанных выше valid_period и valid_time_of_week. |
ДиапазонДостоверности
Диапазон временных меток «закрыто-открыто».
Имя поля | Тип | Требование | Описание |
---|---|---|---|
valid_from_time | объект(Timestamp) | Необходимый | Начальное время диапазона (включительно). Обязательно. |
valid_through_time | объект(Timestamp) | Конечное время диапазона (исключая указанное). Если не указано, это означает, что этот период бесконечен. Необязательно. |
Метка времени
Имя поля | Тип | Требование | Описание |
---|---|---|---|
seconds | нить | Представляет секунды по времени UTC с эпохи Unix 1970-01-01T00:00:00Z. Должно быть в диапазоне от 0001-01-01T00:00:00Z до 9999-12-31T23:59:59Z включительно. | |
nanos | число | Неотрицательные доли секунды с разрешением до наносекунд. Отрицательные значения секунд с дробями должны иметь неотрицательные значения в наносекундах, которые отсчитываются вперёд во времени. Должны быть в диапазоне от 0 до 999 999 999 включительно. |
TimeOfDayWindow
Объект TimeWindow — это составная сущность, описывающая список окон, в которых заказ пользователя может быть размещен или выполнен.
Имя поля | Тип | Требование | Описание |
---|---|---|---|
time_windows | объект(TimeOfDayRange) | Необходимый | Временной интервал, в течение которого заказ может быть размещен/выполнен. Обязательно. |
day_of_week | массив перечисления(DayOfWeek) | Список дней недели, к которым применяется окно. Если ничего не указано, это означает, что оно применяется ко всем дням недели. Необязательно. |
TimeOfDayRange
Диапазон времени «закрыто-открыто».
Имя поля | Тип | Требование | Описание |
---|---|---|---|
open_time | объект(TimeOfDay) | Время, указывающее время начала суток в диапазоне (включительно). Если не указано, означает 00:00:00. Необязательно. | |
close_time | объект(TimeOfDay) | Время, указывающее конечное время суток в диапазоне (исключая указанное). Если не указано, означает 23:59:59. Необязательно. |
Время дня
Имя поля | Тип | Требование | Описание |
---|---|---|---|
hours | число | Часы суток в 24-часовом формате. Должно быть больше или равно 0 и, как правило, меньше или равно 23. API может разрешить значение «24:00:00» для таких случаев, как время закрытия предприятия. | |
minutes | число | Минуты часа. Должны быть больше или равны 0 и меньше или равны 59. | |
seconds | число | Секунда минуты. Должна быть больше или равна 0 и, как правило, меньше или равна 59. API может допускать значение 60, если допускает дополнительные секунды. | |
nanos | число | Доли секунды в наносекундах. Должны быть больше или равны 0 и меньше или равны 999 999 999. |
ValidTimeException
Имя поля | Тип | Требование | Описание |
---|---|---|---|
exceptional_period | объект(ValidityRange) | Начальное и конечное время, на которое предложение недействительно. Эти значения должны соответствовать разным дням, то есть начальное время должно быть 00:00 (начало дня), а конечное время — 00:00 (не включая день) в день окончания периода исключения. |
OfferSource
Имя | Описание |
---|---|
OFFER_SOURCE_UNSPECIFIED | |
OFFER_SOURCE_AGGREGATOR |
ТипДействия
Имя | Описание |
---|---|
ACTION_TYPE_UNSPECIFIED | |
ACTION_TYPE_DINING |
OfferMode
Имя | Описание |
---|---|
OFFER_MODE_OTHER | |
OFFER_MODE_WALK_IN | |
OFFER_MODE_FREE_RESERVATION | |
OFFER_MODE_PAID_RESERVATION | |
OFFER_MODE_ONLINE_ORDER |
ПредложениеКатегория
Категория предложения. Базовое предложение — это стандартное предложение, доступное всем клиентам, например, скидка 10% при покупке свыше 100 долларов США. Для базового предложения, ограниченного купоном или платежным инструментом, будут установлены соответствующие поля. Также доступны дополнительные предложения, например, ADD_ON_PAYMENT_OFFER. Такие предложения можно добавлять к другим предложениям для получения дополнительных скидок.
Имя | Описание |
---|---|
OFFER_CATEGORY_UNSPECIFIED | |
OFFER_CATEGORY_BASE_OFFER | |
OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER | |
OFFER_CATEGORY_ADD_ON_COUPON_OFFER | |
OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER |
FeeUnit
Имя | Описание |
---|---|
FEE_UNIT_UNSPECIFIED | |
FEE_UNIT_PER_GUEST | |
FEE_UNIT_PER_TRANSACTION |
FeeType
Имя | Описание |
---|---|
FEE_TYPE_UNSPECIFIED | |
FEE_TYPE_FIXED | |
FEE_TYPE_VARIABLE |
ТипПитания
Имя | Описание |
---|---|
MEAL_TYPE_UNSPECIFIED | |
MEAL_TYPE_BREAKFAST | |
MEAL_TYPE_LUNCH | |
MEAL_TYPE_DINNER |
Тип платежного инструмента
Имя | Описание |
---|---|
PAYMENT_INSTRUMENT_TYPE_UNSPECIFIED | |
PAYMENT_INSTRUMENT_CREDIT_CARD | |
PAYMENT_INSTRUMENT_DEBIT_CARD | |
PAYMENT_INSTRUMENT_BANK_ACCOUNT | |
PAYMENT_INSTRUMENT_UPI | |
PAYMENT_INSTRUMENT_ONLINE_WALLET |
ДеньНедели
Обозначает день недели.
Имя | Описание |
---|---|
DAY_OF_WEEK_UNSPECIFIED | День недели не указан. |
MONDAY | Понедельник |
TUESDAY | Вторник |
WEDNESDAY | Среда |
THURSDAY | Четверг |
FRIDAY | Пятница |
SATURDAY | Суббота |
SUNDAY | Воскресенье |
спецификация_предложения
Скидка может быть выражена в процентах или фиксированной суммой, вычитаемой из общей стоимости. Например: 1. Скидка 10% на итоговый счёт. 2. Скидка 15 долларов на заказ. Продавцы также могут предлагать индивидуальные скидки, например, «купи один — получи второй бесплатно», указав соответствующие поля. Обязательно.
Имя поля | Тип | Требование | Описание |
---|---|---|---|
discount_percent | число | Взаимоисключающее с | Процент от счета, на который предоставляется скидка. [0, 100] Для предложений со скидкой 1+1 или 50%, которые применяются ко всему обеду (например, 1+1 шведский стол, 1+1 на весь счет, 1+1 на комплексное меню), это значение можно установить равным 50. |
discount_value | объект(Money) | Взаимоисключающее предложение с | Фиксированная величина скидки. |
other_offer_detail_text | нить | Взаимоисключающее с | Текст в свободной форме с описанием скидки. Для специальных предложений «1+1» (например, напитки +1, основное блюдо +1, отдельные блюда +1) необходимо указать эти детали здесь. |
расходы
Имя поля | Тип | Требование | Описание |
---|---|---|---|
amount | объект(Money) | Взаимоисключающее с | |
amount_range | объект(MoneyRange) | Взаимоисключающее с |
Загрузка ленты
Фид предложений должен быть загружен на SFTP-сервер Generic
Feed. Следуйте инструкциям в руководстве «Как использовать SFTP-сервер Generic Feed» и используйте name
google.offer
в файле дескриптора.
Частота загрузки
Как правило, Google ожидает одну загрузку фида в день. Частота может быть увеличена или уменьшена в зависимости от частоты обновления предложений с вашей стороны для обеспечения стабильно высокой точности. Проконсультируйтесь с вашим контактным лицом Google.
Данные появятся в Google через несколько часов.
Категоризация предложений
-
OFFER_CATEGORY_BASE_OFFER
: Предложения, которые можно использовать отдельно, не объединяя с другими предложениями. Сюда входят:- Фиксированные скидки на весь счет (например, скидка 20%)
- Предложения по подписке (например, бесплатный десерт при подписке)
- Предложения по оплате в случаях, когда нет других базовых предложений для ресторана
- Дополнительные предложения: предложения, для которых требуется базовое предложение. К ним относятся:
-
OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER
(например, дополнительная скидка 10% при использовании определенной кредитной карты) -
OFFER_CATEGORY_ADD_ON_COUPON_OFFER
(например, бесплатный напиток с определенным кодом купона) -
OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER
(например, дополнительная скидка 10% для подписчиков)
-
Другие соображения:
- Если у ресторана нет базового предложения, дополнительные предложения отображаться не будут. Если базового предложения нет, любое предложение по оплате, подписке или купону, которое можно использовать без добавления к другому предложению, должно быть помечено как
OFFER_CATEGORY_BASE_OFFER
.- В зависимости от типа необходимо установить соответствующие данные для
PaymentInstrument
,Subscription
илиCoupon
. - Партнеры должны предоставить две копии каждого из этих предложений, чтобы охватить сценарии, в которых они действуют как базовые предложения, так и предложения-дополнения. Копию предложения-дополнения можно затем настроить для нескольких ресторанов, используя
entity_ids
илиadd_on_offer_applicable_to_all_entities
.
- В зависимости от типа необходимо установить соответствующие данные для
- Если в ресторане имеется несколько базовых предложений, которые можно суммировать, все базовые предложения следует пометить как
OFFER_CATEGORY_BASE_OFFER
, а базовые предложения, которые являются предложениями по оплате, подписке или купонам, следует отправлять дополнительно как соответствующий тип дополнительного предложения. -
ValidityPeriod
следует использовать для активации дополнительных предложений в качестве базовых предложений только в случае отсутствия активного базового предложения.
Примеры сценариев:
Ресторан предлагает скидку 5% при оплате определенной кредитной картой и бесплатный напиток по определенному промокоду.
- Предложение о скидке 5% по кредитной карте должно быть отправлено в двух экземплярах, один с тегом
OFFER_CATEGORY_BASE_OFFER
и один с тегомOFFER_CATEGORY_ADD_ON_PAYMENT_OFFER
с указанием данныхPaymentInstrument
. - Предложение о бесплатном напитке с купоном следует отправлять как
OFFER_CATEGORY_ADD_ON_COUPON_OFFER
с указанием данныхCoupon
.
- Предложение о скидке 5% по кредитной карте должно быть отправлено в двух экземплярах, один с тегом
Ресторан предлагает скидку 10% при личном посещении и скидку 5% при оплате определенной кредитной картой, причем обе скидки можно комбинировать.
- Предложение со скидкой 10% при личном посещении должно быть помечено как
OFFER_CATEGORY_BASE_OFFER
. - Предложение о скидке 5% по кредитной карте должно иметь 2 копии, одна из которых должна быть помечена как
OFFER_CATEGORY_BASE_OFFER
, а другая — какOFFER_CATEGORY_ADD_ON_PAYMENT_OFFER
.
- Предложение со скидкой 10% при личном посещении должно быть помечено как
Ресторан предлагает скидку 10% только на обед по будням и скидку 5% в любое время при оплате определенной кредитной картой.
- Для предложения скидки 10% необходимо установить период действия
ValidityPeriod
так, чтобы он действовал только в обеденное время в ресторане по будням. - Предложение о скидке 5% по кредитной карте должно быть отправлено в 2 экземплярах.
- Один экземпляр должен быть помечен тегом
OFFER_CATEGORY_BASE_OFFER
с указаниемPaymentInstrument
.ValidityPeriod
следует установить так, чтобы исключить обеденные часы по будням, когда действует скидка 10% на обед. - Один экземпляр должен быть помечен как
OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER
с указанием данныхPaymentInstrument
.
- Один экземпляр должен быть помечен тегом
- Все остальные предложения по оплате для этого ресторана должны быть помечены как
OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER
.
- Для предложения скидки 10% необходимо установить период действия
Процесс разработки и запуска
На протяжении всей интеграции партнёрский портал будет предоставлять вам информацию и отзывы о вашей разработке. Процесс разработки будет проходить следующим образом:
- Интеграция будет сначала разработана в среде Sandbox. Вам следует использовать экспорт производственной среды (или даже непосредственно производственных данных) в среду Google Sandbox. Это гарантирует, что ваша разработка учитывает все пограничные случаи, а Google сможет оценить качество данных и более эффективно помогать вам на основе вашей модели данных.
- После того, как вы начнете регулярно и ежедневно загружать полный фид «Торговцы, Услуги и Сделки» в среду Google Sandbox, команда Google оценит ваши фиды. После одобрения команды Google вы сможете запустить свой код в эксплуатацию и начать отправлять данные в рабочую среду Google.
- После полного тестирования интеграции с продакшеном команда Google также проведёт тестирование. После завершения тестирования ваша интеграция будет запущена.
Мониторинг
Чтобы обеспечить пользователям комфортный опыт, Google будет проверять предлагаемые предложения на предмет их действительности, корректности и соответствия нашим критериям до и после запуска. Для этого Google будет использовать сочетание ручной и автоматизированной проверки. Результаты этих проверок будут доступны на панели инструментов предложений в Центре действий (только в рабочей версии). Результаты этого мониторинга могут быть использованы для влияния на рейтинг предложений.
Автоматизированные проверки (сканеры)
Команда Google по качеству внедряет сканеры. Сканерами называют скрипты, которые автоматизируют веб-браузер для выполнения некоторых кликов и извлечения информации о предложениях исключительно для целей проверки качества .
Количество запросов
Например, если мы решили отправлять 5000 чеков в день, это означает, что 5000 раз в день ( равномерно распределенных в течение дня, то есть примерно один раз каждые 17 секунд ) наш сканер выполнит все следующие действия, которые выполнил бы обычный пользователь:
- Откройте поиск Google и нажмите на партнерскую ссылку.
- Ознакомьтесь с информацией о предложении.
- Если предложение требует бронирования, оно будет передано в процесс бронирования для подтверждения доступности предложения в указанное время (бронирование не будет выполнено).
Обнаружение веб-скрейперов
Чтобы избежать блокировки веб-скрейпера (что может привести к выводу о недоступности предложений), убедитесь, что ваша система разрешает нашему веб-скрейперу постоянно запрашивать информацию на вашей странице. Чтобы идентифицировать наш веб-скрейпер:
- User-Agent веб-скрапера будет содержать строку « Google-Offers »:
- Пример: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, как Gecko; Google-Offers ) Chrome/104.0.5112.101 Safari/537.36
- Вы также можете проверить, исходят ли вызовы от Google, используя обратный DNS, как рекомендовано в разделе «Проверка робота Googlebot и других поисковых роботов Google» . В нашем конкретном случае обратное разрешение DNS происходит по следующему шаблону:
google-proxy-***-***-***-***.google.com
.
Техническое поведение
Кэширование
Для снижения нагрузки на сайт-партнёр наши роботы, как правило, настроены на обработку всех стандартных HTTP-заголовков кэширования, присутствующих в ответе. Это означает, что для правильно настроенных сайтов мы избегаем повторной загрузки редко изменяющегося контента (например, библиотек JavaScript). Подробнее о реализации кэширования см. в этой документации по HTTP-кэшированию .