개요

쿠폰 통합에 참여하는 파트너는 시작하기 전에 판매자 또는 법인 (파일럿) 기반 통합 단계의 계정 설정을 완료해야 합니다. 쿠폰 통합의 구현, 테스트, 출시는 이 가이드에 자세히 설명되어 있습니다. 통합 단계를 진행하기 전에 이 개요와 쿠폰 정책을 읽어보세요.

쿠폰

쿠폰 통합을 사용하면 특정 시점에 특정 서비스에 적용되는 판매자 프로모션 및 할인에 대해 체계적으로 정리된 정보를 전달할 수 있습니다. 혜택은 실제 혜택 (할인율, 금액 할인 등), 유효 기간(특정 시간, 요일 등), 적용 가능한 용도 (특정 서비스에만 혜택을 사용할 수 있음) 및 복잡한 제한사항 조합으로 구성됩니다.

쿠폰의 예:

  • 12월 수요일, 목요일 오후 12시~오후 5시 전채 요리 50% 할인
  • 어머니날 저녁 식사, 오후 6시부터 오후 10시까지 디저트 하나를 사시면 하나가 무료
  • 매주 일요일 오전 10시~오후 2시 브런치 주요리 5달러 할인
  • 프리미엄 구독자 5% 할인 및 사용자가 앱을 통해 결제하는 경우 5% 할인과 함께 사용할 수 있는 워크인 혜택으로 10% 할인

쿠폰이 통합에 포함되려면 Google의 자격요건을 충족하고 기술 데이터 모델 내에 들어가야 합니다. 쿠폰 정책을 검토하여 통합이 정책을 준수하는지 확인하고 기술 요구사항을 충족하지 않는 쿠폰 처리 방법에 대한 안내를 확인하세요.

쿠폰 구현

쿠폰 통합은 매일 또는 높은 정확성을 보장하는 빈도로 업로드되는 두 개의 피드로 구성됩니다 (즉, 오래된 정보가 줄어듦).

OfferFeed

필드 이름유형요구사항설명
data객체 배열
(Offer)

혜택

필드 이름유형요구사항설명
offer_id문자열

필수

혜택의 고유 ID입니다. 필수입니다.
entity_ids문자열 배열

이 혜택에 참여하는 판매자 목록입니다.
add_on_offer_applicable_to_all_entities부울

true인 경우 이 혜택은 애그리게이터의 모든 항목에 적용됩니다. 부가기능 혜택에만 적용됩니다.
offer_sourceenum
(OfferSource)

필수

혜택은 애그리게이터, 개별 판매자 또는 서드 파티가 부가기능으로 제공할 수 있습니다. 필수입니다.
action_typeenum
(ActionType)

필수

혜택을 제공하는 서비스입니다. offer_id는 하나의 action_type에만 속할 수 있습니다. 혜택을 여러 서비스 유형에서 공유할 수 있는 경우 각 서비스 유형에 대해 고유한 ID가 있는 중복 혜택이 생성되어야 합니다. 필수입니다.
offer_modes열거형 배열
(OfferMode)

필수

혜택을 이용할 수 있는 방법(예: 방문, 예약, 온라인)입니다. 필수입니다.
offer_categoryenum
(OfferCategory)

필수

혜택의 카테고리입니다. 필수입니다.
source_assigned_priority숫자

소스에서 할당한 혜택의 우선순위 수준을 나타내는 음수가 아닌 정수 ([1~100], 1이 가장 높은 우선순위)입니다. 동일한 판매자에 대해 여러 혜택이 제공되는 경우 혜택 순위 지정에 사용되는 신호입니다. 0은 우선순위가 설정되지 않았음을 나타냅니다.
offer_detailsobject
(OfferDetails)

필수

할인, 예약 비용 등 혜택의 세부정보입니다. 필수입니다.
offer_restrictionsobject
(OfferRestrictions)

필수

혜택이 제한되는 방식을 설명합니다(예: 정기 결제/결제 수단이 필요한지, 이 혜택을 다른 혜택과 결합할 수 있는지(및 어떤 유형인지) 등). 필수입니다.
couponobject
(Coupon)

쿠폰의 세부정보입니다. offer_category(혜택_카테고리): OFFER_CATEGORY_ADD_ON_COUPON_OFFER에 필요합니다.
payment_instrumentobject
(PaymentInstrument)

결제 수단의 세부정보입니다. offer_category가 OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER인 경우 필수입니다.
subscriptionobject
(Subscription)

정기 결제의 세부정보입니다. offer_category가 OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER인 경우 필수입니다.
termsobject
(Terms)

필수

혜택 이용약관입니다. 필수입니다.
validity_periods객체 배열
(ValidityPeriod)

필수

혜택의 유효 기간입니다. 시작 시간, 종료 시간, 요일 등 혜택이 유효한 기간을 설명합니다. 필수입니다.
offer_url문자열

판매자의 혜택 페이지 URL입니다. offer_category가 OFFER_CATEGORY_BASE_OFFER인 경우 필수입니다.
image_url문자열

판매자의 혜택 이미지 URL입니다.

OfferDetails

필드 이름유형요구사항설명
offer_display_text문자열

필수

상품 제공업체가 검색 결과 페이지에서 고객에게 표시하고자 하는 상품 텍스트입니다. 필수입니다.
oneOf
(offer_specification)

필수

이 oneOf의 필드 중 하나만 설정할 수 있습니다.
max_discount_valueobject
(Money)

이용할 수 있는 최대 할인입니다. 예: 최대 100달러까지 10% 할인
min_spend_valueobject
(Money)

할인을 받기 위한 최소 지출 금액입니다. 예를 들어 총 가격이 100달러 이상인 경우 10% 할인됩니다.
booking_costobject
(Money)

이 혜택을 예약하는 데 드는 비용입니다. 예를 들어 테이블을 $15에 예약하면 최종 청구액에서 $100가 할인됩니다.
booking_cost_unitenum
(FeeUnit)

예약 비용의 단위입니다. 예를 들어 사용자별, 거래별로 설정할 수 있습니다.
convenience_feeobject
(Fee)

booking_cost_adjustable부울

예약 비용이 조정 가능한지 여부입니다. 즉, 예약 비용이 최종 청구서에서 차감됩니다. 예를 들어 예약 시 저녁 식사 30% 할인과 같은 혜택을 제공할 수 있습니다. 15달러를 예약하는 데 드는 비용이며 최종 청구서에 적용됩니다. 따라서 최종 청구액은 총 지출액 - 30% - $15입니다.
additional_fees객체 배열
(AdditionalFee)

사용자에게 청구되는 추가 수수료입니다. 예: 편의성, 처리 등

Money

금액과 통화 유형을 나타냅니다.

필드 이름유형요구사항설명
currency_code문자열

ISO 4217에 정의된 3자리 통화 코드입니다.
units문자열

금액의 전체 단위입니다. 예를 들어 currencyCode"USD"이면 1단위는 1달러(USD)입니다.
nanos숫자

금액의 나노 (10^-9) 단위 수입니다. 이 값은 -999,999,999~+999,999,999(끝값 포함) 사이여야 합니다. units가 양수이면 nanos는 양수 또는 0이어야 합니다. units가 0이면 nanos는 양수, 0 또는 음수일 수 있습니다. units가 음수이면 nanos는 음수 또는 0이어야 합니다. 예를 들어 $-1.75는 units=-1 및 nanos=-750,000,000으로 나타냅니다.

수수료

필드 이름유형요구사항설명
unitenum
(FeeUnit)

typeenum
(FeeType)

oneOf
(cost)

이 oneOf의 필드 중 하나만 설정할 수 있습니다.

MoneyRange

필드 이름유형요구사항설명
min_amountobject
(Money)

max_amountobject
(Money)

AdditionalFee

필드 이름유형요구사항설명
name문자열

필수

추가 수수료의 이름입니다. 예: 편의 수수료, 처리 수수료 등 필수입니다.
feeobject
(Fee)

OfferRestrictions

필드 이름유형요구사항설명
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이고 이 필드가 설정되지 않은 경우 모든 혜택 ID를 결합할 수 있습니다.
inclusions객체 배열
(OfferCondition)

혜택이 유효하려면 충족해야 하는 조건 목록입니다 (예: 무알코올 음료, 음식)
exclusions객체 배열
(OfferCondition)

혜택을 무효화하는 조건 목록 (예: 뷔페, 콤보 혜택, 칵테일)
min_guest숫자

혜택을 이용하는 데 필요한 최소 인원수입니다.
food_offer_restrictionsobject
(FoodOfferRestrictions)

음식 혜택에만 적용되는 제한사항입니다.

OfferCondition

필드 이름유형요구사항설명
description문자열

FoodOfferRestrictions

필드 이름유형요구사항설명
meal_types열거형 배열
(MealType)

혜택이 적용될 수 있는 식사 유형입니다(예: 점심 또는 저녁). 설정하지 않으면 혜택이 모든 식사 유형에 적용될 수 있습니다.
restricted_to_certain_courses부울

혜택이 특정 과정에만 적용될 수 있는지 여부입니다.

쿠폰

필드 이름유형요구사항설명
text문자열

혜택 제공업체가 사용자에게 표시하고자 하는 쿠폰 텍스트입니다.
code문자열

필수

혜택을 사용하기 위해 필요한 쿠폰 코드입니다. 필수입니다.

PaymentInstrument

필드 이름유형요구사항설명
items객체 배열
(PaymentInstrumentItem)

필수

혜택을 이용하는 데 사용할 수 있는 결제 수단 목록입니다. 필수입니다.
provider_name문자열

필수

결제 수단 제공업체의 이름입니다. 은행 파트너, 은행 이름 등이 될 수 있습니다. 예를 들면 American Express, HDFC, ICICI가 있습니다. 필수입니다.

PaymentInstrumentItem

필드 이름유형요구사항설명
typeenum
(PaymentInstrumentType)

필수

결제 수단 유형입니다. 필수입니다.
name문자열

필수

신용카드 이름과 같은 결제 수단 항목의 이름입니다. 예: HDFC Infinia, American Express Platinum 필수입니다.

구독

필드 이름유형요구사항설명
name문자열

필수

구독 이름입니다. 필수입니다.
subscription_auto_added부울

사용자가 이 혜택을 이용할 때 정기 결제가 자동으로 추가되는지 여부입니다.
costobject
(Money)

필수

구독 비용입니다. 필수입니다.
subscription_durationobject
(Duration)

필수

구독이 subscription_cost로 유효한 기간입니다. 필수입니다.
terms_and_conditions_url문자열

이 정기 결제와 관련된 파트너의 이용약관 URL입니다.

기간

필드 이름유형요구사항설명
seconds문자열

시간 범위의 부호가 있는 초입니다. -315,576,000,000~+315,576,000,000(포함) 사이여야 합니다. 참고: 이 범위는 60초/분 * 60분/시간 * 24시간/일 * 365.25일/년 * 10,000년에서 계산됩니다.
nanos숫자

시간 범위의 나노초 단위의 초수입니다. 1초 미만의 지속 시간은 0 seconds 필드와 양수 또는 음수 nanos 필드로 표현됩니다. 1초 이상의 기간의 경우 nanos 필드의 0이 아닌 값은 seconds 필드와 부호가 같아야 합니다. -999,999,999~+999,999,999(포함) 사이여야 합니다.

약관

필드 이름유형요구사항설명
url문자열

파트너의 이용약관 URL입니다.
restricted_to_certain_users부울

혜택이 특정 사용자에게만 제공되는지 여부입니다.
terms_and_conditions문자열

파트너가 제공한 기본 T&C 텍스트입니다.
additional_terms_and_conditions문자열 배열

파트너의 기본 이용약관 외 추가 이용약관

ValidityPeriod

필드 이름유형요구사항설명
valid_periodobject
(ValidityRange)

혜택이 유효한 시작 및 종료 타임스탬프입니다. 이 시간은 서로 다른 날짜를 나타내야 합니다. 즉, 시작 시간은 00:00(하루 시작)이어야 하고 종료 시간은 유효 기간이 끝나는 날짜의 00:00 (제외)이어야 합니다.
time_of_day객체 배열
(TimeOfDayWindow)

특정 날짜의 유효한 시간 간격과 혜택을 사용할 수 있는 요일을 지정합니다. 예를 들면 다음과 같습니다. 월요일: 오전 10시~오후 5시 화요일: 오전 10시~오후 2시 화요일: 오후 5시~오후 7시 수, 목, 금, 토, 일: 오후 3시~오후 7시 설정되지 않은 경우 valid_period 내에서 언제든지 혜택을 이용할 수 있음을 의미합니다.
time_exceptions객체 배열
(ValidTimeException)

위의 valid_period 및 valid_time_of_week에 대한 예외를 지정합니다.

ValidityRange

종료-시작 타임스탬프 범위입니다.

필드 이름유형요구사항설명
valid_from_timeobject
(Timestamp)

필수

범위의 시작 시간입니다 (해당 값 포함). 필수입니다.
valid_through_timeobject
(Timestamp)

범위의 종료 시간 (해당 값 제외)입니다. 설정되지 않은 경우 이 기간이 끝나지 않음을 의미합니다. 선택사항입니다.

타임스탬프

필드 이름유형요구사항설명
seconds문자열

유닉스 시간 1970-01-01T00:00:00Z 이후 UTC 시간의 초 단위로 표현합니다. 범위는 0001-01-01T00:00:00Z~9999-12-31T23:59:59Z(포함)이어야 합니다.
nanos숫자

나노초 단위의 음수가 아닌 초수입니다. 음수의 초수 값에는 시간에 반영되는 음수가 아닌 나노초 값이 있어야 합니다. 0~999,999,999(포함) 사이의 값이어야 합니다.

TimeOfDayWindow

TimeWindow 객체는 사용자의 주문이 접수되거나 처리될 수 있는 기간 목록을 설명하는 복합 항목입니다.

필드 이름유형요구사항설명
time_windowsobject
(TimeOfDayRange)

필수

주문을 접수/처리할 수 있는 기간입니다. 필수입니다.
day_of_week열거형 배열
(DayOfWeek)

기간이 적용되는 요일 목록입니다. 설정되지 않은 경우 모든 요일에 적용됩니다. 선택사항입니다.

TimeOfDayRange

종료-시작 기간입니다.

필드 이름유형요구사항설명
open_timeobject
(TimeOfDay)

범위의 시작 시간을 나타내는 시간입니다 (포함). 설정하지 않으면 00:00:00을 의미합니다. 선택사항입니다.
close_timeobject
(TimeOfDay)

범위의 하루 종료 시간을 나타내는 시간입니다 (제외). 설정하지 않으면 23:59:59를 의미합니다. 선택사항입니다.

TimeOfDay

필드 이름유형요구사항설명
hours숫자

24시간 형식의 시간입니다. 0 이상이어야 하며 일반적으로 23 이하여야 합니다. API는 비즈니스 종료 시간과 같은 시나리오에서 '24:00:00' 값을 허용하도록 선택할 수 있습니다.
minutes숫자

시간의 분입니다. 0 이상, 59 이하여야 합니다.
seconds숫자

분의 초입니다. 0 이상이어야 하며 일반적으로 59 이하여야 합니다. API가 윤초를 허용하는 경우 값에 60을 사용할 수 있습니다.
nanos숫자

나노초 단위의 초수입니다. 0 이상, 999,999,999 이하여야 합니다.

ValidTimeException

필드 이름유형요구사항설명
exceptional_periodobject
(ValidityRange)

혜택이 유효하지 않은 시작 및 종료 타임스탬프입니다. 이 시간은 서로 다른 날짜를 나타내야 합니다. 즉, 시작 시간은 예외 기간이 끝나는 날짜의 00:00(하루 시작)이어야 하고 종료 시간은 00:00 (제외)이어야 합니다.

OfferSource

이름설명
OFFER_SOURCE_UNSPECIFIED
OFFER_SOURCE_AGGREGATOR

ActionType

이름설명
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

OfferCategory

혜택의 카테고리입니다. 기본 혜택은 모든 고객에게 제공되는 표준 혜택입니다(예: 100달러 이상 지출 시 10% 할인). 쿠폰 또는 결제 수단으로 제한된 기본 혜택에는 해당 필드가 설정됩니다. ADD_ON_PAYMENT_OFFER와 같은 애드온 x 혜택도 있습니다. 이러한 혜택은 다른 혜택에 추가하여 추가 할인을 받을 수 있습니다.

이름설명
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

MealType

이름설명
MEAL_TYPE_UNSPECIFIED
MEAL_TYPE_BREAKFAST
MEAL_TYPE_LUNCH
MEAL_TYPE_DINNER

PaymentInstrumentType

이름설명
PAYMENT_INSTRUMENT_TYPE_UNSPECIFIED
PAYMENT_INSTRUMENT_CREDIT_CARD
PAYMENT_INSTRUMENT_DEBIT_CARD
PAYMENT_INSTRUMENT_BANK_ACCOUNT
PAYMENT_INSTRUMENT_UPI
PAYMENT_INSTRUMENT_ONLINE_WALLET

DayOfWeek

요일을 나타냅니다.

이름설명
DAY_OF_WEEK_UNSPECIFIED요일이 지정되지 않습니다.
MONDAY월요일
TUESDAY화요일
WEDNESDAY수요일
THURSDAY목요일
FRIDAY금요일
SATURDAY토요일
SUNDAY일요일

offer_specification

할인은 총 금액에서 차감되는 백분율 또는 고정 금액일 수 있습니다. 예를 들면 다음과 같습니다. 1. 최종 청구액 10% 할인 2. 주문 시 15달러 할인 판매자는 관련 사양 필드를 통해 '하나 구매 시 하나 무료'와 같은 맞춤 할인도 제공할 수 있습니다. 필수입니다.

필드 이름유형요구사항설명
discount_percent숫자

discount_value, other_offer_detail_text와 상호 배타적입니다.

할인된 청구서의 비율입니다. [0, 100] 전체 식사에 적용되는 1+1 또는 50% 할인 혜택(예: 1+1 뷔페, 전체 청구서 1+1, 세트 메뉴 1+1)의 경우 이 값을 50으로 설정할 수 있습니다.
discount_valueobject
(Money)

discount_percent, other_offer_detail_text와 상호 배타적입니다.

할인의 고정 값입니다.
other_offer_detail_text문자열

discount_percent, discount_value와 상호 배타적입니다.

할인을 설명하는 자유 형식 텍스트입니다. 특정 1+1 혜택 (예: 1+1 음료, +1 메인 요리, 1+1 선택 메뉴 항목)의 경우 여기에 세부정보를 설명해야 합니다.

비용

필드 이름유형요구사항설명
amountobject
(Money)

amount_range와 상호 배타적입니다.

amount_rangeobject
(MoneyRange)

amount와 상호 배타적입니다.

피드 업로드

쿠폰 피드Generic 피드 SFTP 서버에 업로드해야 합니다. 일반 피드 SFTP 서버 사용 방법 가이드의 안내를 따르고 설명자 파일에서 google.offer로 설정된 name를 사용하세요.

업로드 빈도

일반적으로 Google에서는 하루에 1회 피드 업로드를 예상합니다. 일관되게 높은 정밀도를 유지하기 위해 귀사의 혜택 업데이트 빈도에 따라 빈도가 증가하거나 감소할 수 있습니다. 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의 관련 데이터를 설정해야 합니다.
    • 파트너는 기본 혜택과 부가 혜택으로 모두 작동하는 시나리오를 포함하기 위해 이러한 혜택을 각각 2개씩 제공해야 합니다. 그런 다음 entity_ids 또는 add_on_offer_applicable_to_all_entities을 사용하여 여러 레스토랑에 부가 혜택 카피를 설정할 수 있습니다.
  • 중복 가능한 기본 혜택이 여러 개 있는 레스토랑의 경우 모든 기본 혜택에 OFFER_CATEGORY_BASE_OFFER 태그를 지정해야 하며, 결제, 구독 또는 쿠폰 혜택인 기본 혜택은 관련 부가 혜택 유형으로 추가로 전송해야 합니다.
  • ValidityPeriod은 활성 기본 혜택이 없는 경우에만 부가기능 혜택을 기본 혜택으로 활성화하는 데 사용해야 합니다.

예시 시나리오:

  • 특정 신용카드로 결제 시 5% 할인, 특정 쿠폰 코드 사용 시 무료 음료를 제공하는 식당

    • 신용카드 5% 할인 혜택은 2개의 사본으로 전송해야 합니다. 하나는 OFFER_CATEGORY_BASE_OFFER로 태그하고 다른 하나는 OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER로 태그하며 PaymentInstrument 세부정보를 포함합니다.
    • 쿠폰 코드 혜택이 포함된 무료 음료는 Coupon 세부정보가 포함된 OFFER_CATEGORY_ADD_ON_COUPON_OFFER로 전송해야 합니다.
  • 한 레스토랑에서 예약 없이 방문하는 고객에게는 10% 할인을 제공하고 특정 신용카드로 결제하는 고객에게는 5% 할인을 제공하며, 두 할인 혜택은 함께 적용할 수 있습니다.

    • 10% 오프라인 매장 방문 혜택은 OFFER_CATEGORY_BASE_OFFER로 태그해야 합니다.
    • 신용카드 5% 할인 혜택에는 사본이 2개 있어야 하며, 하나는 OFFER_CATEGORY_BASE_OFFER로 태그되고 다른 하나는 OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER로 태그되어야 합니다.
  • 레스토랑에서 평일 점심에만 10% 할인을 제공하고 특정 신용카드로 결제 시 언제든지 5% 할인을 제공합니다.

    • 10% 할인 혜택에는 평일 레스토랑의 점심시간에만 적용됨을 나타내기 위해 ValidityPeriod이 설정되어 있어야 합니다.
    • 신용카드 5% 할인 혜택은 2부로 전송해야 합니다.
      • 한 사본에는 PaymentInstrument 세부정보가 포함된 OFFER_CATEGORY_BASE_OFFER 태그가 지정되어야 합니다. 점심 할인 혜택이 활성 상태일 때 평일 점심시간을 제외하도록 ValidityPeriod를 설정해야 합니다.
      • 한 사본에는 PaymentInstrument 세부정보가 포함된 OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER 태그가 지정되어야 합니다.
    • 이 음식점의 다른 모든 결제 혜택은 OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER로 태그해야 합니다.

개발 및 출시 과정

통합 과정 내내 파트너 포털에서 개발 과정을 기반으로 정보와 의견을 제공합니다. 개발 과정은 다음과 같습니다.

  • 통합은 샌드박스 환경에서 먼저 개발됩니다. Google 샌드박스 환경에서 프로덕션 (또는 직접 프로덕션 데이터)의 내보내기를 사용해야 합니다. 이렇게 하면 개발 단계에서 모든 예외 사례를 포착하고 Google에서 데이터 품질을 평가한 후 데이터 모델을 기반으로 더 나은 지원을 제공할 수 있습니다.
  • Google 샌드박스 환경에서 전체 및 일일 판매자, 서비스, 거래 피드를 업로드하면 Google팀에서 피드를 평가합니다. Google 팀에서 승인하면 코드를 프로덕션으로 푸시하고 프로덕션 데이터를 Google 프로덕션 환경으로 전송할 수 있습니다.
  • 프로덕션 통합 테스트를 완료하면 Google팀도 테스트합니다. 모든 테스트가 완료되면 통합이 출시됩니다.

모니터링

Google에서는 우수한 사용자 환경을 제공하기 위해 출시 전후로 제공된 혜택이 유효하고 정확하며 Google 정책 기준을 충족하는지 확인합니다. 이를 위해 Google에서는 사람의 검토와 자동 검토를 모두 활용합니다. 이러한 검토 결과는 작업 센터의 혜택 대시보드에서 확인할 수 있습니다 (프로덕션만 해당). 이 모니터링의 결과는 제품의 순위에 영향을 미칠 수 있습니다.

자동 검사 (크롤러)

Google 품질팀에서 크롤러를 구현합니다. 크롤러는 웹브라우저를 자동화하여 클릭을 실행하고 품질 테스트 목적으로만 혜택 정보를 추출하는 스크립트입니다.

쿼리 수

예를 들어 하루에 5, 000회의 확인을 보내기로 결정한 경우, 하루에 5, 000회 (하루에 균등하게 분배, 즉 약 17초마다 한 번) 크롤러가 일반 사용자가 수행하는 다음 작업을 모두 수행합니다.

  • Google 검색에서 시작하여 파트너 링크를 클릭합니다.
  • 혜택 정보를 찾습니다.
  • 혜택에 예약이 필요한 경우 예약 흐름으로 계속 진행하여 지정된 시간에 혜택을 사용할 수 있는지 확인합니다 (예약은 진행되지 않음).

웹 스크레이퍼 감지

웹 스크레이퍼가 차단되지 않도록 (이로 인해 혜택을 사용할 수 없다고 결론을 내릴 수 있음) 시스템에서 Google 웹 스크레이퍼가 언제든지 페이지를 쿼리하도록 허용해야 합니다. Google 웹 스크레이퍼를 식별하려면 다음을 확인하세요.

  • 웹 스크레이퍼 사용자 에이전트에는 'Google-Offers' 문자열이 포함됩니다.
    • 예: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google-Offers) Chrome/104.0.5112.101 Safari/537.36
  • 'Googlebot 및 기타 Google 크롤러 확인'에 권장된 대로 역방향 DNS를 사용하여 호출이 Google에서 이루어졌는지 확인할 수도 있습니다. 구체적인 사례에서 역방향 DNS 확인은 google-proxy-***-***-***-***.google.com 패턴을 따릅니다.

기술적 동작

캐싱

파트너 웹사이트의 부하를 줄이기 위해 Google 크롤러는 일반적으로 응답에 있는 모든 표준 HTTP 캐싱 헤더를 따르도록 구성됩니다. 즉, 올바르게 구성된 웹사이트의 경우 거의 변경되지 않는 콘텐츠 (예: JavaScript 라이브러리)를 반복적으로 가져오지 않습니다. 캐싱을 구현하는 방법에 관한 자세한 내용은 이 HTTP 캐싱 문서를 참고하세요.