Best Practices

In diesem Leitfaden werden die Anforderungen an Angebote für Essensbestellungen und Beispiele dafür beschrieben.

Berechtigung und Richtlinien

In diesem Abschnitt werden wichtige Berechtigungskriterien beschrieben, die Partner bei der Bereitstellung von Angeboten einhalten müssen. Es ist wichtig, alle Angebotstypen zu testen, die Sie während der Sandbox-Feedtests starten möchten. Wenn Sie sich nicht sicher sind, ob ein Angebot berechtigt ist, wenden Sie sich an Ihren Google-Ansprechpartner.

Personalisierte und einmalige Angebote ausschließen

Um eine hohe Qualität und eine einheitliche Nutzererfahrung zu gewährleisten, dürfen Partner keine Angebote einreichen, die auf bestimmte Nutzergruppen beschränkt sind. Personalisierte Angebote, die nur für bestimmte Nutzer erstellt wurden, sind nicht zulässig. Plattformweite Angebote, die für alle Nutzer gelten, z. B. für Erstnutzer oder für die erste Bestellung in einem bestimmten Restaurant, sind zulässig, sofern das Angebot auf der Angebots-Landingpage für alle Nutzer angezeigt wird. Die Angebotsbedingungen müssen im Angebotstitel und auf der Landingpage der Angebots-URL klar angegeben sein. Angebote müssen auf der Angebots-Landingpage für alle Nutzer sichtbar sein, unabhängig davon, ob sie auf Ihrer Website oder in Ihrer App angemeldet sind oder nicht.

Angebote mit Gutscheincodes

Für bestimmte Angebote muss der Nutzer einen Gutscheincode eingeben, z. B. „Gutscheincode SPAREN20 eingeben und 20% Rabatt auf die Gesamtrechnung erhalten“. Google zeigt keine Gutscheincodes aus der Gutscheindefinition an. Partner können diese Informationen in OfferDetails.offer_display_text einfügen, damit sie Nutzern angezeigt werden. Angebote mit Gutscheinen lassen sich in der Regel in zwei Kategorien unterteilen:

  • Angebote, bei denen der Gutschein beim Bezahlen automatisch allen Nutzern präsentiert wird, die über Google auf die Website oder in die App kommen. Diese sind zulässig.
  • Angebote, bei denen der Nutzer den Gutscheincode beim Bezahlen eingeben muss, aber keine Anleitung zum Einlösen des Gutscheincodes auf der Landingpage der Angebots-URL erhält oder der Gutschein nicht automatisch angewendet wird, wenn der Nutzer der Angebots-URL folgt, sind nicht zulässig.

Angebotsinhalte und -struktur

In diesem Abschnitt werden die Anforderungen an die Inhalte und die Struktur der im Feed bereitgestellten Angebote beschrieben. Außerdem finden Sie Beispiele für die strukturierten Metadaten.

Angebotstext und Angebotsspezifikation

Das Feld OfferDetails.offer_display_text ist ein Pflichtfeld, das als prägnante Überschrift dient, damit das Angebot im Bereich „Angebote“ in der Google Suche sofort sichtbar ist, z. B. „10 € Rabatt“ oder „15 % sparen“.

Das OfferDetails.offer_specification ist ein Pflichtfeld vom Typ „einer von“ in OfferDetails. Das bedeutet, dass genau eines der folgenden drei Felder angegeben werden muss, um das Angebot zu beschreiben:

  • discount_value
  • discount_percentage
  • other_offer_details_text

Das Feld OfferDetails.other_offer_details_text ist ein Freiform-Textfeld, das verwendet wird, um offer_display_text zu ergänzen, wenn das Angebot nicht als fester Rabattwert oder Prozentsatz ausgedrückt werden kann. Wenn offer_display_text bereits alle notwendigen Informationen zum Angebot enthält, sollte das Feld other_offer_details_text mit demselben Text wie offer_display_text gefüllt werden. Bei komplexen Angeboten sollte dieses Feld jedoch eine genaue Beschreibung der Prämie enthalten.

Felder für strukturierte Metadaten

Um die Klarheit von Angeboten zu verbessern und ein besseres Ranking und Filtern zu ermöglichen, müssen Partner Angebotsmetadaten in den entsprechenden strukturierten Feldern angeben. Das terms.terms_and_conditions ist ein Pflichtfeld. Der Wert sollte Bedingungen für das Einlösen des Angebots enthalten. Sie können dieses Feld beispielsweise mit den detaillierten Bedingungen füllen, die Nutzern auf der Angebots-Landingpage angezeigt werden.

Für Angebote, die sich auf bestimmte Artikelgruppen beziehen, müssen die terms.terms_and_conditions Felder oder offer_restrictions.inclusions und offer_restrictions.exclusions Felder verwendet werden, um die berechtigten Artikel zu definieren.

JSON-Beispiele für Angebote

20 € Pauschalrabatt

Beispiel: 20 € Pauschalrabatt an Dienstagen bei einem Mindestumsatz von 15 €

{
  "offer_id": "offer-example-1-takeout",
  "offer_source": "OFFER_SOURCE_AGGREGATOR",
  "action_type": "ACTION_TYPE_FOOD_TAKEOUT",
  "offer_modes": ["OFFER_MODE_ONLINE_ORDER"],
  "offer_category": "OFFER_CATEGORY_BASE_OFFER",
  "offer_details": {
    "offer_display_text": "$20 off on Tuesdays",
    "discount_value": {
      "currency_code": "USD",
      "units": 20
    },
    "min_spend_value": {
      "currency_code": "USD",
      "units": 15
    }
  },
  "validity_periods": [
    {
      "valid_period": {
        "valid_from_time": { "seconds": 1768953600 },
        "valid_through_time": { "seconds": 1795219200 }
      },
      "time_of_day": [
        {
          "time_windows": {
            "open_time": { "hours": 9 },
            "close_time": { "hours": 20, "minutes": 59, "seconds": 59 }
          },
          "day_of_week": ["TUESDAY"]
        }
      ]
    }
  ],
  "offer_restrictions": {
    "combinable_with_other_offers": false
  },
  "terms": {
    "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery or takeout orders with $15 minimum spend. Single use per order. Offer may not be combined with any other offers, discounts, or promotions. Valid only on Tuesdays."
  },
  "entity_ids": ["dining-1"],
  "offer_url": "https://www.example-restaurant.com/offer/base_offer_1"
}

Angebot „Zwei zum Preis von einem“

Beispiel: Angebot „Zwei zum Preis von einem“ für Vorspeisen, gültig von Montag bis Donnerstag

{
  "offer_id": "offer-example-2-delivery",
  "offer_source": "OFFER_SOURCE_AGGREGATOR",
  "action_type": "ACTION_TYPE_FOOD_DELIVERY",
  "offer_modes": ["OFFER_MODE_ONLINE_ORDER"],
  "offer_category": "OFFER_CATEGORY_BASE_OFFER",
  "offer_details": {
    "offer_display_text": "Buy one appetizer, get one free",
    "other_offer_detail_text": "Buy one appetizer, get one free"
  },
  "validity_periods": [
    {
      "valid_period": {
        "valid_from_time": { "seconds": 1768953600 },
        "valid_through_time": { "seconds": 1795219200 }
      },
      "time_of_day": [
        {
          "time_windows": {
            "open_time": { "hours": 10 },
            "close_time": { "hours": 23, "minutes": 59, "seconds": 59 }
          },
          "day_of_week": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY"]
        }
      ]
    }
  ],
  "offer_restrictions": {
    "combinable_with_other_offers": true,
    "inclusions": [
      {
        "description": "appetizers"
      }
    ]
  },
  "terms": {
    "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery or takeout orders. Single use per order. Valid on all menu appetizers. Offer may be combined with any other offers, discounts, or promotions. Valid Monday through Thursday."
  },
  "entity_ids": ["dining-1"],
  "offer_url": "https://www.example-restaurant.com/offer/base_offer_4"
}

Prozentualer Rabatt

Beispiel: 25% Rabatt auf alle Sandwiches

{
  "offer_id": "offer-example-3-delivery",
  "offer_source": "OFFER_SOURCE_AGGREGATOR",
  "action_type": "ACTION_TYPE_FOOD_DELIVERY",
  "offer_modes": ["OFFER_MODE_ONLINE_ORDER"],
  "offer_category": "OFFER_CATEGORY_BASE_OFFER",
  "offer_details": {
    "offer_display_text": "25% off on all Sandwiches",
    "discount_percent": 25.0
  },
  "validity_periods": [
    {
      "valid_period": {
        "valid_from_time": { "seconds": 1768953600 },
        "valid_through_time": { "seconds": 1795219200 }
      }
    }
  ],
  "offer_restrictions": {
    "combinable_with_other_offers": true,
    "combinable_offer_ids": ["offer-example-4-delivery"],
    "inclusions": [
      "Sandwiches"
    ]
  },
  "terms": {
    "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery or takeout orders. Applies to specific items only. Single use per order. May be combined with any other offers, discounts, or promotions."
  },
  "entity_ids": ["dining-1"],
  "offer_url": "https://www.example-restaurant.com/offer/base_offer_2"
}

Angebot „Kostenlose Lieferung“

Beispiel: Kostenlose Lieferung bei Bestellungen über 30 €. Andernfalls kostet die Lieferung 7 €.

{
  "offer_id": "offer-example-4-delivery",
  "offer_source": "OFFER_SOURCE_AGGREGATOR",
  "action_type": "ACTION_TYPE_FOOD_DELIVERY",
  "offer_modes": ["OFFER_MODE_ONLINE_ORDER"],
  "offer_category": "OFFER_CATEGORY_BASE_OFFER",
  "offer_details": {
    "offer_display_text": "Free delivery on orders over $30",
    "discount_value": {
      "currency_code": "USD",
      "units": 7
    },
    "min_spend_value": {
      "currency_code": "USD",
      "units": 30
    }
  },
  "validity_periods": [
    {
      "valid_period": {
        "valid_from_time": { "seconds": 1768953600 },
        "valid_through_time": { "seconds": 1795219200 }
      }
    }
  ],
  "offer_restrictions": {
    "combinable_with_other_offers": true
  },
  "terms": {
    "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery orders with $30 minimum spend. Delivery is $7.00 otherwise. Single use per order. May be combined with any other offers, discounts, or promotions."
  },
  "entity_ids": ["dining-1"],
  "offer_url": "https://www.example-restaurant.com/offer/base_offer_3"
}

Beispiel für ein Basisangebot mit einem Add-on-Angebot

Beispiel: Ein Restaurant bietet 10% Rabatt nur für das Mittagessen an Wochentagen und 5% Rabatt jederzeit bei Zahlung mit einer bestimmten Kreditkarte.

[
  {
    "offer_id": "offerId1",
    "offer_source": "OFFER_SOURCE_AGGREGATOR",
    "action_type": "ACTION_TYPE_FOOD_TAKEOUT",
    "offer_modes": ["OFFER_MODE_ONLINE_ORDER"],
    "offer_category": "OFFER_CATEGORY_BASE_OFFER",
    "offer_details": {
      "offer_display_text": "10% off",
      "discount_percent": 10.0
    },
    "validity_periods": [
      {
        "valid_period": {
          "valid_from_time": { "seconds": 1768953600 },
          "valid_through_time": { "seconds": 1795219200 }
        },
        "time_of_day": [
          {
            "day_of_week": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY"]
          }
        ]
      }
    ],
    "offer_restrictions": {
      "combinable_with_other_offers": true,
      "combinable_offer_categories": ["OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER"]
    },
    "terms": {
      "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery or takeout orders. Single use per order. Offer may be combined with any other offers, discounts, or promotions."
    },
    "entity_ids": ["dining-1"],
    "offer_url": "https://www.example-restaurant.com/offer/base_offer_5"
  },
  {
    "offer_id": "offerId2",
    "offer_source": "OFFER_SOURCE_AGGREGATOR",
    "action_type": "ACTION_TYPE_FOOD_TAKEOUT",
    "offer_modes": ["OFFER_MODE_ONLINE_ORDER"],
    "offer_category": "OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER",
    "offer_details": {
      "offer_display_text": "5% off",
      "discount_percent": 5.0
    },
    "validity_periods": [
      {
        "valid_period": {
          "valid_from_time": { "seconds": 1768953600 },
          "valid_through_time": { "seconds": 1795219200 }
        },
        "time_of_day": [
          {
            "day_of_week": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY"]
          }
        ]
      }
    ],
    "offer_restrictions": {
      "combinable_with_other_offers": true,
      "combinable_offer_ids": ["offerId1"]
    },
    "payment_instrument": {
      "items": [
        { "type": "PAYMENT_INSTRUMENT_CREDIT_CARD", "name": "Participating Credit Card" }
      ],
      "provider_name": "Card Provider"
    },
    "terms": {
      "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery or takeout orders. Single use per order. Offer may be combined with any other offers, discounts, or promotions."
    },
    "entity_ids": ["dining-1"],
    "offer_url": "https://www.example-restaurant.com/offer/addon_offer_1"
  }
]

Ausführung und Einschränkungen

In diesem Abschnitt werden die Anforderungen und Best Practices für die Spezifikation der Angebotsausführung und die damit verbundenen Einschränkungen beschrieben.

Ausführungsmodus (Lieferung und Abholung)

Wenn ein einzelnes Angebot sowohl für die Lieferung als auch für die Abholung gilt, muss es zwei Angebote im Feed geben. Jeder Eintrag muss einen eigenen ActionType haben:

  • ACTION_TYPE_FOOD_DELIVERY
  • ACTION_TYPE_FOOD_TAKEOUT

So wird sichergestellt, dass Nutzern, die auf der Website des Partners landen, der richtige Ausführungskontext präsentiert wird.

Zeitfenster

Angebote müssen auf der Angebots-Landingpage für alle Nutzer sichtbar sein, unabhängig davon, ob sie auf Ihrer Website oder in Ihrer App angemeldet sind oder nicht. Wenn das Angebot nur in einem bestimmten Zeitraum gültig ist, müssen Sie das Feld validity_periods.valid_period angeben, um den Gültigkeitszeitraum festzulegen. So wird verhindert, dass das Angebot außerhalb dieses Zeitraums angezeigt wird. Das Zeitfenster muss auch festgelegt werden, wenn das Angebot während bestimmter Tageszeiten auf der Angebots-URL angezeigt wird. Wenn auf der Landingpage beispielsweise keine Angebote angezeigt werden, wenn das Restaurant geschlossen ist, müssen Sie die TimeOfDayWindow für TimeOfDayWindow angeben.

Umgang mit Zeiträumen, die Mitternacht überschreiten

Angebote, die Mitternacht überschreiten (z.B. gültig von Dienstag, 22:00 Uhr, bis Mittwoch, 2:00 Uhr), müssen segmentiert werden, damit sie von der Aufnahmepipeline korrekt verarbeitet werden können. Anforderung: Verwenden Sie das Feld TimeOfDayWindow , um das Zeitfenster in zwei separate Segmente aufzuteilen:

  • Segment 1:22:00 Uhr bis 23:59:59 Uhr am Starttag (z. B. Dienstag)
  • Segment 2:00:00 Uhr bis 02:00 Uhr am folgenden Tag (z. B. Mittwoch)

So wird sichergestellt, dass die Gültigkeit des Angebots während des gesamten Zeitraums korrekt angegeben wird.

Gebührenspezifikationen

Gebühren für Lieferung und Abholung können mit dem OfferDetails.additional_fees angegeben werden. Eine Zahlungsgebühr sollte mit dem OfferDetails.convenience_fee angegeben werden. Verwenden Sie einen Gebührenbereich für variable Gebühren, z. B. wenn sich die Liefergebühren je nach Standort des Nutzers ändern.