Best practice

Questa guida evidenzia i requisiti e fornisce esempi di offerte per l'Ordinazione di cibo.

Idoneità e norme

Questa sezione evidenzia i criteri di idoneità importanti che i partner devono rispettare quando forniscono offerte. È importante testare tutti i tipi di offerte che intendi lanciare durante il test del feed sandbox. Se non sai se un'offerta è idonea, rivolgiti al tuo punto di contatto Google.

Escludere le offerte personalizzate e monouso

Per garantire un'esperienza utente di alta qualità e coerente, i partner non devono includere offerte limitate a sottoinsiemi specifici di utenti. Le offerte personalizzate create solo per utenti specifici non sono idonee. Le offerte a livello di piattaforma idonee per tutti gli utenti, ad esempio i nuovi utenti o i primi ordini in un determinato ristorante, sono consentite a condizione che l'offerta venga visualizzata nella pagina di destinazione dell'offerta per tutti gli utenti. Le condizioni dell'offerta devono essere indicate chiaramente nel titolo dell'offerta e nella pagina di destinazione dell'URL dell'offerta. Le offerte devono essere visibili nella pagina di destinazione dell'offerta per tutti gli utenti, sia che abbiano eseguito l'accesso sia che non l'abbiano fatto al tuo sito o alla tua app.

Offerte con codici coupon

Alcune offerte richiedono l'inserimento di un codice coupon da parte dell'utente, ad esempio "Applica il codice SAVE20 per ottenere il 20% di sconto sul conto totale". È importante notare che Google non mostra i codici coupon dalla definizione del coupon. I partner possono includere queste informazioni all'interno di OfferDetails.offer_display_text da mostrare agli utenti. Le offerte basate su coupon rientrano generalmente in due categorie:

  • Offerte in cui il coupon viene presentato automaticamente al momento del pagamento a qualsiasi utente che arriva da Google. Queste offerte sono consentite.
  • Le offerte che richiedono all'utente di inserire il codice coupon al momento del pagamento, ma non forniscono istruzioni su come applicare il codice coupon nella pagina di destinazione dell'URL dell'offerta o non applicano automaticamente il coupon quando si segue l'URL dell'offerta, non sono consentite.

Contenuti e struttura dell'offerta

Questa sezione descrive in dettaglio i requisiti per i contenuti e la struttura delle offerte fornite nel feed, inclusi esempi di metadati strutturati.

Testo di visualizzazione dell'offerta e specifica dell'offerta

Il campo OfferDetails.offer_display_text è obbligatorio e funge da titolo conciso per la visibilità immediata nella sezione delle offerte su Ricerca Google, ad esempio "10 € di sconto" o "Risparmia il 15%".

Il OfferDetails.offer_specification è un campo obbligatorio "uno di" all'interno di OfferDetails. Ciò significa che è necessario fornire esattamente uno dei tre campi seguenti per specificare l'accordo:

  • discount_value
  • discount_percentage
  • other_offer_details_text

Il campo OfferDetails.other_offer_details_text è un campo di testo in formato libero utilizzato per integrare offer_display_text quando l'offerta non può essere espressa come valore o percentuale di sconto fisso. Se offer_display_text è già sufficiente per trasmettere tutte le informazioni necessarie sull'offerta, il campo other_offer_details_text deve essere compilato con lo stesso testo di offer_display_text. Tuttavia, per le offerte complesse, questo campo deve fornire una descrizione specifica del premio.

Campi dei metadati strutturati

Per migliorare la chiarezza dell'offerta e consentire un ranking e un filtraggio migliori, i partner devono fornire i metadati dell'offerta nei rispettivi campi strutturati. Il terms.terms_and_conditions è obbligatorio. Il valore deve includere le condizioni per riscattare l'offerta. Ad esempio, puoi compilare questo campo con i termini dettagliati visualizzati dagli utenti nella pagina di destinazione dell'offerta.

Le offerte specifiche per sottoinsiemi di articoli devono utilizzare i terms.terms_and_conditions o offer_restrictions.inclusions e offer_restrictions.exclusions per definire gli articoli idonei.

Esempi JSON di offerte

Sconto fisso di 20 €

Esempio: sconto fisso di 20 € il martedì con una spesa minima di 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"
}

Offerta "Prendi 2 e paghi 1"

Esempio: offerta "Prendi 2 e paghi 1" sugli antipasti, valida dal lunedì al giovedì

{
  "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"
}

Offerta con sconto percentuale

Esempio: 25% di sconto su tutti i panini

{
  "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"
}

Offerta di consegna gratuita

Esempio: consegna gratuita per ordini superiori a 30 €. In caso contrario, la consegna costa 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"
}

Esempio di offerta di base con offerta di componenti aggiuntivi

Esempio: un ristorante offre il 10% di sconto solo per il pranzo nei giorni feriali e il 5% di sconto in qualsiasi momento quando si paga con una carta di credito specifica.

[
  {
    "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"
  }
]

Adempimento e vincoli

Questa sezione descrive in dettaglio i requisiti e le best practice relativi alla specifica di adempimento dell'offerta e ai vincoli associati.

Modalità di adempimento (consegna e ritiro)

Se una singola offerta si applica sia alla consegna sia al ritiro, deve avere due offerte nel feed. Ogni voce deve avere un ActionType dedicato:

  • ACTION_TYPE_FOOD_DELIVERY
  • ACTION_TYPE_FOOD_TAKEOUT

In questo modo, agli utenti che arrivano al sito del partner viene presentato il contesto di adempimento corretto.

Finestre temporali

Le offerte devono essere visualizzate nella pagina di destinazione dell'offerta per tutti gli utenti, sia che abbiano eseguito l'accesso sia che non l'abbiano fatto al tuo sito o alla tua app. Se l'offerta è valida durante un periodo di tempo specifico, devi includere il campo validity_periods.valid_period per specificare il periodo di validità. In questo modo, l'offerta non viene visualizzata al di fuori del periodo di tempo. La finestra temporale deve essere impostata anche se l'offerta viene visualizzata nell'URL dell'offerta durante determinate ore del giorno. Ad esempio, se la pagina di destinazione non mostra le offerte quando il ristorante è chiuso, devi includere gli orari di apertura e chiusura di TimeOfDayWindow.

Gestire i periodi di tempo che attraversano la mezzanotte

Le offerte che si estendono oltre la mezzanotte (ad es. valide dalle 22:00 di martedì alle 02:00 di mercoledì) devono essere segmentate per essere elaborate correttamente dalla pipeline di acquisizione. Requisito: utilizza il campo TimeOfDayWindow per suddividere la finestra in due segmenti distinti:

  • Segmento 1: dalle 22:00 alle 23:59:59 del giorno di inizio (ad es. martedì).
  • Segmento 2: dalle 00:00 alle 02:00 del giorno successivo (ad es. mercoledì).

In questo modo, la validità dell'offerta viene riflessa con precisione per l'intero periodo.

Specifiche delle commissioni

Le commissioni per la consegna e il ritiro possono essere specificate utilizzando il OfferDetails.additional_fees. Una commissione di servizio deve essere specificata utilizzando il OfferDetails.convenience_fee. Utilizza un valore di intervallo di commissioni per le commissioni variabili, ad esempio se le commissioni di consegna cambiano in base alla località dell'utente.