Integration des Angebotsfeeds

Angebote

Mit der Angebotsintegration können Sie strukturierte Informationen zu Händlerangeboten und Rabatten weiterleiten, die zu bestimmten Zeiten auf bestimmte Dienste angewendet werden. Angebote bestehen aus dem eigentlichen Angebot (Prozentrabatt, Rabatt in Euro usw.), Gültigkeitszeiträumen (bestimmte Zeiten, Wochentage usw.) und anwendbaren Nutzungen (das Angebot kann nur für bestimmte Dienste verwendet werden) sowie komplexen Kombinationen von Einschränkungen.

Beispiele für Angebote:

  • Halber Preis für Vorspeisen mittwochs und donnerstags von 12:00 bis 17:00 Uhr im Dezember
  • Beim Abendessen zum Muttertag zwischen 18:00 und 22:00 Uhr erhalten Sie ein Dessert kostenlos.
  • 5 € Rabatt auf eine Vorspeise beim Sonntagsbrunch von 10:00 bis 14:00 Uhr
  • 10% Rabatt als Walk-in-Angebot, kombinierbar mit 5% Rabatt für Premium-Abonnenten und 5% Rabatt, wenn der Nutzer über Ihre App bezahlt.

Damit ein Angebot in die Integration aufgenommen werden kann, muss es sowohl dem technischen Datenmodell entsprechen als auch unsere Teilnahmevoraussetzungen erfüllen. Lesen Sie sich unsere Richtlinien für Angebote durch, um sicherzustellen, dass Ihre Integration den Richtlinien entspricht. Dort finden Sie auch eine Anleitung dazu, wie Sie mit Angeboten verfahren, die die technischen Anforderungen nicht erfüllen.

Implementierung von Angeboten

Die Angebotsintegration besteht aus zwei Feeds, die täglich oder in einer Häufigkeit hochgeladen werden, die für eine hohe Genauigkeit sorgt (d. h. die Aktualität erhöht):

OfferFeed

FeldnameTypAnforderungBeschreibung
dataArray von Objekten
(Offer)

Angebot

FeldnameTypAnforderungBeschreibung
offer_idString

Erforderlich

Eindeutige ID des Angebots. Erforderlich.
entity_idsString-Array

Liste der Händler, die an diesem Angebot teilnehmen.
add_on_offer_applicable_to_all_entitiesboolean

Wenn „true“, gilt dieses Angebot für alle Rechtssubjekte unter dem Aggregator. Gilt nur für Add-on-Angebote.
offer_sourceenum
(OfferSource)

Erforderlich

Ein Angebot kann vom Aggregator, einem einzelnen Händler oder sogar von einem Drittanbieter als Add-on bereitgestellt werden. Erforderlich.
action_typeenum
(ActionType)

Erforderlich

Der Dienst, der das Angebot bereitstellt. Eine offer_id kann nur zu einem action_type gehören. Wenn ein Angebot für mehrere Diensttypen freigegeben werden kann, müssen für jeden Diensttyp doppelte Angebote mit eindeutigen IDs erstellt werden. Erforderlich.
offer_modesArray von enum
(OfferMode)

Erforderlich

Die Methoden, mit denen das Angebot genutzt werden kann – z. B. ohne Reservierung, mit Reservierung, online usw. Erforderlich.
offer_categoryenum
(OfferCategory)

Erforderlich

Die Kategorie des Angebots. Erforderlich.
source_assigned_priorityZahl

Nicht negative Ganzzahl ([1–100], wobei 1 die höchste Priorität darstellt), die das von der Quelle zugewiesene Prioritätsniveau des Angebots angibt. Wenn mehrere Angebote für denselben Händler verfügbar sind, ist dies ein Signal für das Ranking von Angeboten. Der Wert 0 bedeutet, dass die Priorität nicht festgelegt ist.
offer_detailsobject
(OfferDetails)

Erforderlich

Details zum Angebot, z. B. Rabatt, Buchungskosten usw. Erforderlich.
offer_restrictionsobject
(OfferRestrictions)

Erforderlich

Beschreibt, wie das Angebot eingeschränkt ist, z.B. ob ein Abo oder Zahlungsmittel erforderlich ist, ob das Angebot mit anderen Angeboten kombiniert werden kann (und mit welchen Typen) usw. Erforderlich.
couponobject
(Coupon)

Details zu einem Gutschein. Erforderlich für offer_category: OFFER_CATEGORY_ADD_ON_COUPON_OFFER.
payment_instrumentobject
(PaymentInstrument)

Details zu einem Zahlungsmittel. Erforderlich für offer_category: OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER.
subscriptionobject
(Subscription)

Details zu einem Abo. Erforderlich für offer_category: OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER.
termsobject
(Terms)

Erforderlich

Nutzungsbedingungen des Angebots. Erforderlich.
validity_periodsArray von Objekten
(ValidityPeriod)

Erforderlich

Der Gültigkeitszeitraum des Angebots. Beschreibt, für welchen Zeitraum das Angebot gültig ist, einschließlich Start- und Endzeiten, Wochentage usw. Erforderlich.
offer_urlString

URL zur Angebotsseite des Händlers. Erforderlich für offer_category: OFFER_CATEGORY_BASE_OFFER.
tagsArray von enum
(OfferTag)

Spezielle Tags, die mit dem Angebot verknüpft sind. Damit werden Sonderangebote wie „Festlich“, „Am besten bewertet“ oder „Am häufigsten gebucht“ gekennzeichnet.
brand_idString

Erforderlich für Geschenkkartenangebote, um die Marke zu identifizieren, die das Angebot anbietet.
availability_levelenum
(AvailabilityLevel)

Die Verfügbarkeit des Angebots.

OfferDetails

FeldnameTypAnforderungBeschreibung
offer_display_textString

Erforderlich

Der Angebotstext, den der Angebotsanbieter Kunden auf der Suchergebnisseite präsentieren möchte. Das ist möglicherweise nicht genau das, was den Nutzern angezeigt wird. Wir können auch andere Metadaten verwenden, um den Text neu zu schreiben oder umzuformulieren. Erforderlich.
oneOf
(offer_specification)

Erforderlich

Nur eines der Felder in diesem „oneOf“ kann festgelegt werden.
max_discount_valueobject
(Money)

Der maximale Rabatt, der in Anspruch genommen werden kann. Beispiel: 10% Rabatt auf bis zu 100 $.
min_spend_valueobject
(Money)

Der Mindestbetrag, der ausgegeben werden muss, um den Rabatt zu erhalten. Beispiel: 10% Rabatt ab einem Gesamtpreis von 100 €.
booking_costobject
(Money)

Die Kosten für die Buchung dieses Angebots. Beispiel: 100 € Rabatt auf die Endabrechnung, wenn ein Tisch für 15 € reserviert wird.
booking_cost_unitenum
(FeeUnit)

Die Einheit der Buchungskosten. Zum Beispiel pro Person oder pro Transaktion.
convenience_feeobject
(Fee)

booking_cost_adjustableboolean

Gibt an, ob die Buchungskosten anpassbar sind, d.h., ob sie von der Endabrechnung abgezogen werden. Beispiel: 30% Rabatt auf das Abendessen mit Reservierung. Die Reservierung kostet 15 $, die auf die endgültige Rechnung angerechnet werden. Die endgültige Rechnung lautet also: Gesamtausgaben – 30 % – 15 $.
additional_feesArray von Objekten
(AdditionalFee)

Zusätzliche Gebühren, die dem Nutzer in Rechnung gestellt werden. Beispiele: Gebühren für Komfort, Bearbeitung, Lieferung, Verpackung, Servicegebühr usw.
offer_discount_typeenum
(OfferDiscountType)

Die Art des Rabatts.
gift_card_infoobject
(GiftCardInfo)

Details speziell zu Geschenkkartenangeboten.

Geld

Stellt einen Geldbetrag mit Währungstyp dar

FeldnameTypAnforderungBeschreibung
currency_codeString

Der aus drei Buchstaben bestehende Währungscode gemäß ISO 4217.
unitsZahl

Die ganzen Einheiten des Betrags. Wenn currencyCode beispielsweise "USD" ist, entspricht 1 Einheit 1 $.
nanosZahl

Anzahl der Nanoeinheiten (10^-9) des Betrags. Der Wert muss im Bereich von -999.999.999 bis +999.999.999 liegen. Wenn units positiv ist, muss nanos positiv oder null sein. Wenn units null ist, kann nanos positiv, null oder negativ sein. Wenn units negativ ist, muss nanos negativ oder null sein. Beispiel: -1,75 $ werden als units=-1 und nanos=-750.000.000 dargestellt.

Gebühr

FeldnameTypAnforderungBeschreibung
unitenum
(FeeUnit)

typeenum
(FeeType)

oneOf
(cost)

Nur eines der Felder in diesem „oneOf“ kann festgelegt werden.

MoneyRange

FeldnameTypAnforderungBeschreibung
min_amountobject
(Money)

max_amountobject
(Money)

AdditionalFee

FeldnameTypAnforderungBeschreibung
nameString

Erforderlich

Der Name der zusätzlichen Gebühr. Beispiele: Zahlungsgebühr, Bearbeitungsgebühr usw. Erforderlich.
feeobject
(Fee)

GiftCardInfo

FeldnameTypAnforderungBeschreibung
oneOf
(denomination_type)

Nur eines der Felder in diesem „oneOf“ kann festgelegt werden.

FixedDenominations

FeldnameTypAnforderungBeschreibung
amountsArray von Objekten
(Money)

Eine Liste aller verfügbaren diskreten Beträge (z.B. [100, 500, 1000]).

OfferRestrictions

FeldnameTypAnforderungBeschreibung
combinable_with_other_offersboolean

Ob dieses Angebot mit anderen Angeboten kombiniert werden kann. Wenn „true“, können Partner angeben, mit welchen Angeboten dieses Angebot kombiniert werden kann. Wenn sowohl „combinable_offer_categories“ als auch „combinable_offer_ids“ festgelegt sind, ist jedes Angebot, das eine der oben genannten Bedingungen erfüllt, kombinierbar.
combinable_offer_categoriesArray von enum
(OfferCategory)

Liste der Angebotstypen, mit denen dieses Angebot kombiniert werden kann. Dieses Angebot kann beispielsweise mit anderen Gutscheinen kombiniert werden. Wenn „combinable_with_other_offers“ auf „true“ gesetzt ist und dieses Feld nicht festgelegt ist, sind alle Typen kombinierbar.
combinable_offer_idsString-Array

Liste der offer_ids, mit denen dieses Angebot kombiniert werden kann. Einige Angebote können nur mit bestimmten anderen offer_ids kombiniert werden, die als übergeordnete Angebote betrachtet werden können. Wenn „combinable_with_other_offers“ auf „true“ gesetzt ist und dieses Feld nicht festgelegt ist, können alle Angebots-IDs kombiniert werden.
inclusionsArray von Objekten
(OfferCondition)

Liste der Bedingungen, die erfüllt sein müssen, damit das Angebot gültig ist (z.B. alkoholfreie Getränke, Speisen).
exclusionsArray von Objekten
(OfferCondition)

Liste der Bedingungen, die das Angebot ungültig machen (z.B. Buffet, Kombiangebote und Cocktails).
min_guestZahl

Die Mindestanzahl an Personen, die erforderlich ist, um das Angebot in Anspruch zu nehmen. Hinweis: Dieses Feld gilt nur für Reservierungen in Restaurants und sollte nicht für andere Branchen verwendet werden.
food_offer_restrictionsobject
(FoodOfferRestrictions)

Einschränkungen für Essensangebote
max_redemption_countZahl

Einschränkungen hinsichtlich der Häufigkeit, mit der dieses Angebot genutzt werden kann. Der Wert 0 bedeutet, dass es keine Limits gibt. Ein Wert von 3 bedeutet beispielsweise, dass der Nutzer dieses Angebot dreimal nutzen kann.
max_total_discount_valueobject
(Money)

Der maximale Rabatt, der bei mehreren Transaktionen dieses Angebots in Anspruch genommen werden kann.
special_conditionsString-Array

Besondere Bedingungen für dieses Angebot, die dem Nutzer angezeigt werden müssen. Beispiele: „Nur gültig für die Zahlung in [Bereich]“, „Gilt nicht für Onlinezahlungen“, „Gutschein KANN während des Angebots verwendet werden“.

OfferCondition

FeldnameTypAnforderungBeschreibung
descriptionString

FoodOfferRestrictions

FeldnameTypAnforderungBeschreibung
meal_typesArray von enum
(MealType)

Die Mahlzeitentypen, auf die das Angebot angewendet werden kann, z. B. Mittag- oder Abendessen. Wenn nicht festgelegt, kann das Angebot auf alle Mahlzeittypen angewendet werden.
restricted_to_certain_coursesboolean

Ob das Angebot nur für bestimmte Kurse gilt.

Gutschein

FeldnameTypAnforderungBeschreibung
textString

Der Gutscheincode, den der Angebotsanbieter Nutzern anzeigen möchte.
codeString

Erforderlich

Zum Einlösen des Angebots ist ein Gutscheincode erforderlich. Erforderlich.

PaymentInstrument

FeldnameTypAnforderungBeschreibung
itemsArray von Objekten
(PaymentInstrumentItem)

Erforderlich

Liste der Zahlungsmittel, die für das Angebot verwendet werden können. Erforderlich.
provider_nameString

Name des Anbieters des Zahlungsmittels. Das kann ein Bankpartner oder der Name einer Bank sein, z. B. American Express, HDFC oder ICICI.

PaymentInstrumentItem

FeldnameTypAnforderungBeschreibung
typeenum
(PaymentInstrumentType)

Erforderlich

Typ des Zahlungsmittels. Erforderlich.
nameString

Erforderlich

Name des Zahlungsinstruments, z. B. der Name der Kreditkarte. Beispiele: HDFC Infinia, American Express Platinum. Erforderlich.

Abo

FeldnameTypAnforderungBeschreibung
nameString

Erforderlich

Der Name des Abos. Erforderlich.
subscription_auto_addedboolean

Gibt an, ob das Abo automatisch hinzugefügt wird, wenn ein Nutzer dieses Angebot in Anspruch nimmt.
costobject
(Money)

Erforderlich

Die Kosten des Abos. Erforderlich.
subscription_durationobject
(Duration)

Erforderlich

Wie lange das Abo zum angegebenen Abopreis gültig ist. Erforderlich.
terms_and_conditions_urlString

URL zu den für dieses Abo relevanten Nutzungsbedingungen des Partners.

Dauer

FeldnameTypAnforderungBeschreibung
secondsZahl

Vorzeichenbehaftete Sekunden des Zeitraums. Muss zwischen -315.576.000.000 und +315.576.000.000 (einschließlich) liegen. Hinweis: Diese Grenzen werden so berechnet: 60 Sek./Min. × 60 Min./Std. × 24 Std./Tag × 365,25 Tage/Jahr × 10.000 Jahre
nanosZahl

Signierte Sekundenbruchteile mit Nanosekundenauflösung des Zeitraums. Dauern von weniger als einer Sekunde werden mit dem Feld „0“ seconds und einem positiven oder negativen Feld „nanos“ dargestellt. Bei Zeiträumen von einer Sekunde oder mehr muss ein Wert ungleich null für das Feld nanos dasselbe Vorzeichen wie das Feld seconds haben. Muss zwischen -999.999.999 und +999.999.999 (einschließlich) liegen.

Nutzungsbedingungen

FeldnameTypAnforderungBeschreibung
urlString

URL zu den Nutzungsbedingungen des Partners.
restricted_to_certain_usersboolean

Gibt an, ob das Angebot auf bestimmte Nutzer beschränkt ist.
terms_and_conditionsString

Primärer Text der Nutzungsbedingungen, der vom Partner bereitgestellt wird.
additional_terms_and_conditionsString-Array

Zusätzliche Nutzungsbedingungen des Partners.

ValidityPeriod

FeldnameTypAnforderungBeschreibung
valid_periodobject
(ValidityRange)

Der Start- und Endzeitstempel, für den das Angebot gültig ist. Diese Zeiten müssen unterschiedliche Tage darstellen. Das heißt, die Startzeit muss 00:00 Uhr (Tagesbeginn) und die Endzeit 00:00 Uhr (ausschließlich) am Tag des Endes des Gültigkeitszeitraums sein.
time_of_dayArray von Objekten
(TimeOfDayWindow)

Gibt das gültige Zeitintervall an einem bestimmten Tag und die Tage an, an denen das Angebot verfügbar ist. Bei Zeiträumen, die Mitternacht überschreiten (z.B. 22:00 Uhr bis 2:00 Uhr), verwenden Sie separate Zeiträume für jeden Tag: einen, der um 23:59:59 Uhr endet, und einen, der am nächsten Tag um 00:00 Uhr beginnt. Beispiel: Montag: 10:00 bis 17:00 Uhr Dienstag: 10:00 bis 14:00 Uhr Dienstag: 17:00 bis 19:00 Uhr Mi., Do., Fr., Sa., So.: 15:00 bis 19:00 Uhr Wenn nichts festgelegt ist, ist das Angebot innerhalb von valid_period jederzeit verfügbar.
time_exceptionsArray von Objekten
(ValidTimeException)

Gibt Ausnahmen für die oben genannten Parameter „valid_period“ und „valid_time_of_week“ an.
date_exceptionsArray von Objekten
(Date)

Gibt Ausnahmen in Tagen für den oben genannten gültigen Zeitraum und die Tageszeit an.
validity_scopeenum
(ValidityScope)

Gibt den Geltungsbereich des Gültigkeitszeitraums an.
validity_duration_in_daysZahl

Die Dauer (in Tagen), für die der Gutschein nach dem Kauf gültig ist.

ValidityRange

Ein geschlossener/offener Zeitstempelbereich.

FeldnameTypAnforderungBeschreibung
valid_from_timeobject
(Timestamp)

Erforderlich

Die Startzeit des Bereichs (einschließlich). Erforderlich.
valid_through_timeobject
(Timestamp)

Die Endzeit des Bereichs (ausschließlich). Wenn kein Wert angegeben ist, ist der Zeitraum unbegrenzt. Optional.

Zeitstempel

FeldnameTypAnforderungBeschreibung
secondsZahl

Stellt Sekunden der UTC-Zeit seit Unix-Epoche 1970-01-01T00:00:00Z dar. Muss zwischen -62135596800 und 253402300799 liegen (einschließlich), was 0001-01-01T00:00:00Z bis 9999-12-31T23:59:59Z entspricht.
nanosZahl

Nicht negative Sekundenbruchteile Nanosekunden-Auflösung. Dieses Feld enthält den Nanosekundenanteil der Dauer und ist keine Alternative zu Sekunden. Negative Sekundenwerte mit Brüchen müssen weiterhin nicht negative Nanosekundenwerte haben, die vorwärts in der Zeit gezählt werden. Muss zwischen 0 und 999.999.999 (einschließlich) liegen.

TimeOfDayWindow

Das TimeWindow-Objekt ist eine zusammengesetzte Einheit, die eine Liste von Zeiträumen beschreibt, in denen die Bestellung des Nutzers aufgegeben oder ausgeführt werden kann.

FeldnameTypAnforderungBeschreibung
time_windowsobject
(TimeOfDayRange)

Erforderlich

Das Zeitfenster, in dem die Bestellung aufgegeben/ausgeführt werden kann. Erforderlich.
day_of_weekArray von enum
(DayOfWeek)

Die Liste der Wochentage, an denen die Zeitfenster angewendet werden. Wenn nichts festgelegt ist, gilt die Einstellung für alle Wochentage. Optional.
day_of_monthArray von Objekten
(DayOfMonthRange)

Die Tage im Monat, an denen die Fenster angewendet werden. Wenn nichts festgelegt ist, gilt die Einstellung für alle Tage des Monats. Optional.

TimeOfDayRange

Ein geschlossener bis offener Zeitraum.

FeldnameTypAnforderungBeschreibung
open_timeobject
(TimeOfDay)

Eine Zeit, die den Beginn des Tages im Bereich angibt (einschließlich). Wenn nichts anderes festgelegt ist, ist der Wert 00:00:00. Optional.
close_timeobject
(TimeOfDay)

Eine Zeit, die das Ende des Tages im Bereich angibt (ausschließlich). Wenn nichts anderes festgelegt ist, wird 23:59:59 verwendet. Optional.

TimeOfDay

FeldnameTypAnforderungBeschreibung
hoursZahl

Stunden eines Tages im 24-Stunden-Format. Muss größer oder gleich 0 und in der Regel kleiner oder gleich 23 sein. Eine API kann den Wert „24:00:00“ für Szenarien wie Geschäftsschlusszeit zulassen.
minutesZahl

Minuten einer Stunde. Muss größer oder gleich 0 und kleiner oder gleich 59 sein.
secondsZahl

Sekunden einer Minute. Muss größer oder gleich 0 und in der Regel kleiner oder gleich 59 sein. Eine API kann den Wert 60 zulassen, wenn sie Schaltsekunden zulässt.
nanosZahl

Sekundenbruchteile in Nanosekunden. Muss größer oder gleich 0 und kleiner oder gleich 999.999.999 sein.

DayOfMonthRange

Ein Zeitraum von Tagen des Monats, der für alle Monate des Jahres gilt.

FeldnameTypAnforderungBeschreibung
valid_from_dayZahl

Erforderlich

Der erste Tag des Zeitraums (einschließlich). Erforderlich.
valid_through_dayZahl

Der letzte Tag des Zeitraums (einschließlich). Wenn nicht festgelegt, steht dieser Bereich für einen einzelnen Tag (valid_from_day). Optional.

ValidTimeException

FeldnameTypAnforderungBeschreibung
exceptional_periodobject
(ValidityRange)

Der Start- und Endzeitstempel, für den das Angebot nicht gültig ist. Diese Zeiten müssen unterschiedliche Tage darstellen. Das heißt, die Startzeit muss 00:00 Uhr (Tagesbeginn) und die Endzeit 00:00 Uhr (ausschließlich) am Tag des Endes des Ausnahmezeitraums sein.

Datum

FeldnameTypAnforderungBeschreibung
yearZahl

Jahr des Datums. Der Wert muss zwischen 1 und 9999 liegen oder kann 0 sein, wenn ein Datum ohne Jahreszahl angegeben wird.
monthZahl

Monat eines Jahres. Der Wert muss zwischen 1 und 12 liegen. Er kann auch 0 sein, wenn ein Jahr ohne Monat und Tag angegeben wird.
dayZahl

Tag eines Monats. Der Wert muss zwischen 1 und 31 liegen und für das Jahr und den Monat gültig sein. Er kann auch 0 sein, wenn das Jahr bzw. der Monat angegeben wird, der Tag selbst jedoch nicht relevant ist.

OfferSource

NameBeschreibung
OFFER_SOURCE_UNSPECIFIED
OFFER_SOURCE_AGGREGATOR

ActionType

Stellt den Einlösungsmodus des Angebots dar. Wenn ein Angebot für mehrere Fulfillment-Modi freigegeben werden kann, müssen für jeden Fulfillment-Modus doppelte Angebote erstellt werden.

NameBeschreibung
ACTION_TYPE_UNSPECIFIED
ACTION_TYPE_FOOD_DELIVERYDas Angebot gilt für Lieferservices für Lebensmittel.
ACTION_TYPE_FOOD_TAKEOUTDas Angebot gilt für Bestellungen von Speisen zur Abholung.
ACTION_TYPE_DININGDas Angebot gilt für das Essen vor Ort in einem Restaurant.
ACTION_TYPE_SHOPPING_IN_STOREDas Angebot gilt für Offline- und Ladenkäufe.

OfferMode

Gibt die Methode oder den Channel an, über die bzw. den der Nutzer das Angebot in Anspruch nehmen kann.

NameBeschreibung
OFFER_MODE_OTHERFür Erfüllungsmethoden, die nicht von anderen spezifischen Modi abgedeckt werden.
OFFER_MODE_WALK_INDas Angebot ist für Besuche vor Ort ohne vorherige Reservierung verfügbar.
OFFER_MODE_FREE_RESERVATIONDas Angebot gilt, wenn ein Nutzer eine Reservierung vornimmt, für die keine Vorauszahlung erforderlich ist.
OFFER_MODE_PAID_RESERVATIONDas Angebot gilt, wenn ein Nutzer eine Reservierung vornimmt, für die eine Vorauszahlung erforderlich ist.
OFFER_MODE_ONLINE_ORDERDas Angebot gilt für Bestellungen, die über eine Website oder digitale Plattform aufgegeben werden.
OFFER_MODE_GIFT_CARD_PURCHASEGibt an, dass der Kauf einer Geschenkkarte der primäre Schritt ist, der zum Erhalt des Angebots erforderlich ist.

OfferCategory

Kategorie des Angebots. Ein Basisangebot ist ein Standardangebot, das allen Kunden zur Verfügung steht, z. B. 10% Rabatt auf Ausgaben über 100 $. Bei einem Basisangebot, das durch einen Gutschein oder ein Zahlungsmittel eingeschränkt ist, sind die entsprechenden Felder festgelegt. Außerdem haben wir Add-on-Angebote wie ADD_ON_PAYMENT_OFFER. Solche Angebote können mit anderen Angeboten kombiniert werden, um zusätzliche Rabatte zu erhalten.

NameBeschreibung
OFFER_CATEGORY_UNSPECIFIEDDer UNSPECIFIED- oder Standard-Enum-Wert sollte nicht in Feeds verwendet werden.
OFFER_CATEGORY_BASE_OFFER
OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER
OFFER_CATEGORY_ADD_ON_COUPON_OFFER
OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER
OFFER_CATEGORY_ADD_ON_FEE_REDUCTION_OFFER

FeeUnit

NameBeschreibung
FEE_UNIT_UNSPECIFIEDDer UNSPECIFIED- oder Standard-Enum-Wert sollte nicht in Feeds verwendet werden.
FEE_UNIT_PER_GUEST
FEE_UNIT_PER_TRANSACTION

FeeType

NameBeschreibung
FEE_TYPE_UNSPECIFIEDDer UNSPECIFIED- oder Standard-Enum-Wert sollte nicht in Feeds verwendet werden.
FEE_TYPE_FIXED
FEE_TYPE_VARIABLE

OfferDiscountType

NameBeschreibung
OFFER_DISCOUNT_TYPE_UNSPECIFIED
OFFER_DISCOUNT_TYPE_INSTANT_DISCOUNT
OFFER_DISCOUNT_TYPE_CASHBACK
OFFER_DISCOUNT_TYPE_REWARD_POINT

MealType

NameBeschreibung
MEAL_TYPE_UNSPECIFIEDDer UNSPECIFIED- oder Standard-Enum-Wert sollte nicht in Feeds verwendet werden.
MEAL_TYPE_BREAKFAST
MEAL_TYPE_LUNCH
MEAL_TYPE_DINNER

PaymentInstrumentType

NameBeschreibung
PAYMENT_INSTRUMENT_TYPE_UNSPECIFIEDDer UNSPECIFIED- oder Standard-Enum-Wert sollte nicht in Feeds verwendet werden.
PAYMENT_INSTRUMENT_CREDIT_CARD
PAYMENT_INSTRUMENT_DEBIT_CARD
PAYMENT_INSTRUMENT_BANK_ACCOUNT
PAYMENT_INSTRUMENT_UPI
PAYMENT_INSTRUMENT_ONLINE_WALLET
PAYMENT_INSTRUMENT_NETBANKING

DayOfWeek

Steht für einen Wochentag.

NameBeschreibung
DAY_OF_WEEK_UNSPECIFIEDDer Wochentag ist nicht angegeben.
MONDAYMontag
TUESDAYDienstag
WEDNESDAYMittwoch
THURSDAYDonnerstag
FRIDAYFreitag
SATURDAYSamstag
SUNDAYSonntag

ValidityScope

Der Umfang des Gültigkeitszeitraums, d. h. auf welche Aktionen sich dieser Gültigkeitszeitraum bezieht.

NameBeschreibung
VALIDITY_SCOPE_UNSPECIFIED
VALIDITY_SCOPE_CLAIM
VALIDITY_SCOPE_REDEEM

OfferTag

NameBeschreibung
OFFER_TAG_UNSPECIFIEDDer UNSPECIFIED- oder Standard-Enum-Wert sollte nicht in Feeds verwendet werden.
OFFER_TAG_NEW_YEAR_SPECIAL
OFFER_TAG_VALENTINES_SPECIAL

AvailabilityLevel

Gibt den Lager- oder Verfügbarkeitsstatus eines Angebots an.

NameBeschreibung
AVAILABILITY_LEVEL_UNSPECIFIED
AVAILABILITY_LEVEL_LOWGibt an, dass das Angebot nur noch begrenzt verfügbar ist. Nutzer werden aufgefordert, sie einzulösen, bevor sie ausverkauft sind. Die Optionen „MEDIUM“ und „HIGH“ werden möglicherweise später hinzugefügt.

offer_specification

Der Rabatt kann ein Prozentsatz oder ein fester Wert sein, der vom Gesamtbetrag abgezogen wird. Beispiel: 1. 10% Rabatt auf die Endabrechnung. 2. 15 $ Rabatt auf eine Bestellung. Händler können auch benutzerdefinierte Rabatte wie „Zwei zum Preis von einem“ über die entsprechenden Spezifikationsfelder anbieten. Erforderlich.

FeldnameTypAnforderungBeschreibung
discount_percentZahl

Schließt discount_value und other_offer_detail_text aus

Prozentsatz der Rechnung, auf den ein Rabatt gewährt wird. [0, 100] Bei 1+1- oder 50 %-Rabatten, die für das gesamte Menü gelten (z.B. 1+1-Buffet, 1+1 auf die gesamte Rechnung, 1+1 auf das Menü), kann dieser Wert auf 50 gesetzt werden.
discount_valueobject
(Money)

Schließt discount_percent und other_offer_detail_text aus

Fester Wert des Rabatts.
other_offer_detail_textString

Schließt discount_percent und discount_value aus

Freitext zur Beschreibung des Rabatts. Bei bestimmten 1+1-Angeboten (z.B. 1+1 Getränke, +1 Hauptgericht, 1+1 ausgewählte Menüpunkte) sollten diese Details hier beschrieben werden.

Kosten

FeldnameTypAnforderungBeschreibung
amountobject
(Money)

Schließt amount_range aus

amount_rangeobject
(MoneyRange)

Schließt amount aus

denomination_type

FeldnameTypAnforderungBeschreibung
fixed_denominationsobject
(FixedDenominations)

Schließt custom_range aus

Wird verwendet, wenn die Geschenkkarte in bestimmten, festen Beträgen verfügbar ist.
custom_rangeobject
(MoneyRange)

Schließt fixed_denominations aus

Wird verwendet, wenn die Marke es Nutzern erlaubt, einen benutzerdefinierten (flexiblen) Nennwert innerhalb eines definierten Bereichs auszuwählen.

Feedupload

Der Angebotsfeed muss auf den SFTP-Server für den Generic-Feed hochgeladen werden. Folgen Sie der Anleitung im Tutorial zur Verwendung des SFTP-Servers für generische Feeds und verwenden Sie in Ihrer Deskriptordatei den name-Satz auf google.offer.

Upload-Häufigkeit

Im Allgemeinen erwartet Google einen Feedupload pro Tag. Die Häufigkeit kann je nach Häufigkeit der Angebotsaktualisierungen auf Ihrer Seite erhöht oder verringert werden, um eine gleichbleibend hohe Genauigkeit zu gewährleisten. Wenden Sie sich an Ihren Google-Ansprechpartner.

Es dauert einige Stunden, bis die Daten bei Google angezeigt werden.

Angebotskategorisierung

  • OFFER_CATEGORY_BASE_OFFER: Angebote, die unabhängig voneinander in Anspruch genommen werden können, ohne mit anderen Angeboten kombiniert zu werden. Dazu zählen:
    • Pauschalrabatte auf die gesamte Rechnung (z.B. 20% Rabatt)
    • Aboangebote (z.B. kostenloses Dessert bei Mitgliedschaft)
    • Zahlungsangebote in Fällen, in denen es keine anderen Basisangebote für das Restaurant gibt
    • Hinweis: Plattformweite Angebote zum Gebührenerlass oder zur Gebührenreduzierung sollten nicht als Basisangebote festgelegt werden.
  • Zusatzangebote: Angebote, für die ein Basisangebot in Anspruch genommen werden muss. Dazu gehören:
    • OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER (z.B. „Zusätzliche 10% Rabatt mit bestimmter Kreditkarte“)
    • OFFER_CATEGORY_ADD_ON_COUPON_OFFER (z.B. kostenloses Getränk mit einem bestimmten Gutscheincode)
    • OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER (z.B. zusätzliche 10% Rabatt für Abonnenten)
    • OFFER_CATEGORY_ADD_ON_FEE_REDUCTION_OFFER (z.B. kostenlose Lieferung oder reduzierte Gebühr)

Weitere Hinweise:

  • Plattformweite Angebote zum Erlass oder zur Reduzierung von Gebühren sollten nicht als Basisangebote (OFFER_CATEGORY_BASE_OFFER) festgelegt werden. Sie sollten nur als OFFER_CATEGORY_ADD_ON_FEE_REDUCTION_OFFER festgelegt werden, um ein anderes aktives Basisangebot zu ergänzen.
  • Wenn für ein Restaurant kein Basisangebot festgelegt ist, werden keine Add-on-Angebote angezeigt. Wenn es kein Basisangebot gibt, muss jedes Zahlungs-, Abo- oder Couponangebot, das ohne Kombination mit einem anderen Angebot in Anspruch genommen werden kann, mit OFFER_CATEGORY_BASE_OFFER gekennzeichnet werden.
    • Je nach Typ müssen die relevanten Daten für PaymentInstrument, Subscription oder Coupon festgelegt werden.
    • Partner müssen zwei Kopien jedes dieser Angebote bereitstellen, um Szenarien abzudecken, in denen sie sowohl als Basisangebote als auch als Add-on-Angebote fungieren. Der Text für das Add-on-Angebot kann dann für mehrere Restaurants mit entity_ids oder add_on_offer_applicable_to_all_entities festgelegt werden.
  • Wenn ein Restaurant mehrere Basisangebote hat, die kombiniert werden können, sollten alle Basisangebote mit OFFER_CATEGORY_BASE_OFFER gekennzeichnet werden. Basisangebote, die Zahlungs-, Abo- oder Gutscheinangebote sind, sollten zusätzlich als der entsprechende Add-on-Angebotstyp gesendet werden.
  • ValidityPeriod sollte nur dann verwendet werden, um Add-on-Angebote als Basisangebote zu aktivieren, wenn kein aktives Basisangebot vorhanden ist.
  • Konsolidierung identischer Angebote nach Zahlungsmittel: Wenn mehrere Zahlungsmittel denselben Rabattwert haben (z. B. Kreditkarte, Debitkarte und Net Banking mit jeweils 5% Rabatt), gruppieren Sie sie in einem einzelnen konsolidierten Offer-Objekt, anstatt separate doppelte Angebote zu senden. Füllen Sie dazu die Liste payment_instrument.items mit allen anwendbaren Zahlungsmitteln aus. So wird das Layout der Google-Oberfläche übersichtlicher und potenzielle Ranking-Einbußen aufgrund übermäßiger Einschränkungen durch Duplikate werden vermieden.

Beispielszenarien:

  • Ein Restaurant bietet 5% Rabatt bei Zahlung mit einer bestimmten Kreditkarte und ein kostenloses Getränk mit einem bestimmten Gutscheincode.

    • Das Angebot mit 5% Rabatt für Kreditkarten sollte in zwei Kopien gesendet werden, eine mit dem Tag OFFER_CATEGORY_BASE_OFFER und eine mit dem Tag OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER, jeweils mit den Details zu PaymentInstrument.
    • Ein Angebot für ein kostenloses Getränk mit einem Gutscheincode sollte als OFFER_CATEGORY_ADD_ON_COUPON_OFFER mit den Details Coupon gesendet werden.
  • Ein Restaurant bietet 10% Rabatt für Laufkundschaft und 5% Rabatt bei Zahlung mit einer bestimmten Kreditkarte. Beide Rabatte können kombiniert werden.

    • Das Angebot für Laufkundschaft mit 10% Rabatt sollte mit OFFER_CATEGORY_BASE_OFFER gekennzeichnet werden.
    • Das Kreditkartenangebot mit 5% Rabatt sollte zweimal vorhanden sein, einmal mit dem Tag OFFER_CATEGORY_BASE_OFFER und einmal mit dem Tag OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER.
  • Ein Restaurant bietet unter der Woche nur zum Mittagessen 10% Rabatt und jederzeit 5% Rabatt bei Zahlung mit einer bestimmten Kreditkarte.

    • Das Angebot mit 10% Rabatt sollte auf ValidityPeriod festgelegt werden, um es nur während der Mittagszeit des Restaurants an Wochentagen zu präsentieren.
    • Das Kreditkartenangebot mit 5% Rabatt sollte in zweifacher Ausführung gesendet werden.
      • Eine Kopie sollte mit OFFER_CATEGORY_BASE_OFFER getaggt werden und die Details der PaymentInstrument enthalten. ValidityPeriod sollte so festgelegt werden, dass die Mittagszeit an Wochentagen ausgeschlossen wird, wenn das Mittagsangebot mit 10% Rabatt aktiv ist.
      • Eine Kopie sollte mit OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER getaggt werden und die Details von PaymentInstrument enthalten.
    • Alle anderen Zahlungsangebote für dieses Restaurant sollten mit OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER gekennzeichnet werden.

Entwicklung und Einführung

Während der Integration kann Ihnen das Partner-Portal Informationen und Feedback zu Ihrer Entwicklung geben. Der Entwicklungsprozess folgt diesem Ablauf:

  • Die Integration wird zuerst in der Sandbox-Umgebung entwickelt. Sie sollten einen Export der Produktionsdaten (oder sogar Produktionsdaten direkt) in der Google-Sandbox-Umgebung verwenden. So wird sichergestellt, dass bei der Entwicklung alle Grenzfälle berücksichtigt werden. Außerdem kann Google die Datenqualität besser bewerten und Sie anhand Ihres Datenmodells besser unterstützen.
  • Sobald du täglich vollständige Händler-, Dienstleistungs- und Angebotsfeeds in der Sandbox-Umgebung hochlädst, wertet das Google-Team deine Feeds aus. Sobald das Google-Team die Genehmigung erteilt hat, können Sie Ihren Code in die Produktionsumgebung übertragen und mit dem Senden von Produktionsdaten an die Google-Produktionsumgebung beginnen.
  • Nachdem du die Produktionsintegration vollständig getestet hast, beginnt das Google-Team mit seinen Tests. Sobald alle Tests abgeschlossen sind, wird Ihre Integration eingeführt.

Monitoring

Um eine gute Nutzererfahrung zu gewährleisten, prüft Google vor und nach der Einführung, ob die Angebote gültig und korrekt sind und unseren Richtlinienkriterien entsprechen. Dazu setzt Google eine Kombination aus manueller und automatisierter Überprüfung ein. Die Ergebnisse dieser Überprüfungen sind im Angebots-Dashboard des Action Centers verfügbar (nur Produktion). Das Ergebnis dieser Überwachung kann sich auf das Ranking der Angebote auswirken.

Achten Sie darauf, dass die Seite mit den Angeboten in weniger als 5 Sekunden vollständig geladen wird. Andernfalls gilt dies als Fehler und wird als Bad link gekennzeichnet.

Automatisierte Prüfungen (Crawler)

Das Google-Qualitätsteam implementiert Crawler. Crawler sind Skripts, die einen Webbrowser automatisieren, um einige Klicks auszuführen und Angebotsinformationen zu extrahieren. Dies dient ausschließlich zu Qualitätsprüfungszwecken.

Anzahl der Abfragen

Wenn wir uns beispielsweise dazu entschließen, 5.000 Prüfungen pro Tag zu senden, führt unser Crawler 5.000 Mal pro Tag (gleichmäßig über den Tag verteilt, also etwa einmal alle 17 Sekunden) alle folgenden Aktionen aus, die ein normaler Nutzer ausführen würde:

  • Klicken Sie in der Google Suche auf den Partnerlink.
  • Suchen Sie nach den Angebotsinformationen.
  • Wenn für das Angebot eine Reservierung erforderlich ist, wird der Reservierungsvorgang fortgesetzt, um zu bestätigen, dass das Angebot zum angegebenen Zeitpunkt verfügbar ist (es wird keine Reservierung vorgenommen).

Erkennung von Web-Scrapern

Damit der Web-Scraper nicht gesperrt wird (was dazu führen kann, dass die Angebote als nicht verfügbar eingestuft werden), muss Ihr System es unserem Web-Scraper ermöglichen, Ihre Seite jederzeit abzufragen. So erkennen Sie unseren Web-Scraper:

  • Der User-Agent des Web-Scrapers enthält den String Google-Offers:
    • Beispiel:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google-Offers) Chrome/104.0.5112.101 Safari/537.36
  • Sie können auch prüfen, ob die Aufrufe von Google stammen, indem Sie einen umgekehrten DNS-Lookup durchführen, wie in Googlebot und andere Google-Crawler prüfen empfohlen. In unserem Fall folgt die umgekehrte DNS-Auflösung diesem Muster: google-proxy-***-***-***-***.google.com.

Technisches Verhalten

Caching

Um die Last auf der Partnerwebsite zu reduzieren, sind unsere Crawler in der Regel so konfiguriert, dass sie alle standardmäßigen HTTP-Caching-Headern in der Antwort berücksichtigen. Das bedeutet, dass wir bei korrekt konfigurierten Websites vermeiden, Inhalte, die sich selten ändern (z.B. JavaScript-Bibliotheken), wiederholt abzurufen. Weitere Informationen zur Implementierung von Caching finden Sie in der HTTP-Caching-Dokumentation.