Panoramica

I partner che partecipano all'integrazione delle offerte devono completare la configurazione dell'account per un passaggio di integrazione basato su commerciante o entità (progetto pilota) prima di iniziare. L'implementazione, il test e il lancio dell'integrazione delle offerte verranno descritti in dettaglio in questa guida. Leggi questa panoramica e le norme relative alle offerte prima di procedere con i passaggi di integrazione.

Offerte

L'integrazione delle offerte ti consente di trasmettere informazioni strutturate su promozioni e sconti del commerciante applicati a servizi specifici in momenti specifici. Le offerte sono costituite dall'offerta vera e propria (sconto percentuale, sconto in euro ...), finestre di validità (orari specifici, giorni della settimana ...) e utilizzi applicabili (l'offerta può essere utilizzata solo su determinati servizi), nonché da combinazioni complesse di limitazioni.

Esempi di offerte:

  • Antipasti a metà prezzo il mercoledì e il giovedì di dicembre dalle 12:00 alle 17:00
  • Acquista un dessert e ricevi il secondo in omaggio per la cena della Festa della mamma dalle 18:00 alle 22:00
  • 5 $ di sconto su un piatto principale del brunch ogni domenica dalle 10:00 alle 14:00
  • Sconto del 10% come offerta walk-in combinabile con lo sconto del 5% per gli abbonati premium e sconto del 5% se l'utente paga tramite la tua app.

Affinché un'offerta venga inclusa nell'integrazione, deve rientrare nel modello di dati tecnici e soddisfare i nostri requisiti di idoneità. Assicurati di esaminare le nostre norme relative alle offerte per assicurarti che l'integrazione sia conforme e per istruzioni su cosa fare con le offerte che non soddisfano i requisiti tecnici.

Implementazione delle offerte

L'integrazione delle offerte è costituita da due feed che verranno caricati giornalmente o con una frequenza che garantisce un'elevata precisione (riducendo l'obsolescenza):

OfferFeed

Nome campoTipoRequisitoDescrizione
dataarray di object
(Offer)

Offerta

Nome campoTipoRequisitoDescrizione
offer_idstringa

Obbligatorio

ID univoco dell'offerta. Obbligatorio.
entity_idsarray di stringhe

Elenco dei commercianti che partecipano a questa offerta.
add_on_offer_applicable_to_all_entitiesbooleano

Se è vero, questa offerta è applicabile a tutte le entità dell'aggregatore. Valido solo per le offerte di componenti aggiuntivi.
offer_sourceenum
(OfferSource)

Obbligatorio

Un'offerta può essere fornita dall'aggregatore, da un singolo commerciante o anche da una terza parte come componente aggiuntivo. Obbligatorio.
action_typeenum
(ActionType)

Obbligatorio

Il servizio che fornisce l'offerta. Un offer_id può appartenere a un solo action_type. Se un'offerta può essere condivisa tra più tipi di servizio, è previsto che vengano create offerte duplicate con ID univoci per ogni tipo di servizio. Obbligatorio.
offer_modesarray di enum
(OfferMode)

Obbligatorio

I metodi con cui è possibile usufruire dell'offerta: senza prenotazione, con prenotazione, online e così via. Obbligatorio.
offer_categoryenum
(OfferCategory)

Obbligatorio

La categoria dell'offerta. Obbligatorio.
source_assigned_prioritynumero

Numero intero non negativo ([1-100], dove 1 rappresenta la priorità più alta) che indica il livello di priorità dell'offerta assegnato dall'origine. Quando sono disponibili più offerte per lo stesso commerciante, questo sarà un segnale per il ranking delle offerte. 0 indica che la priorità non è impostata.
offer_detailsoggetto
(OfferDetails)

Obbligatorio

Dettagli dell'offerta, ad esempio sconto, costo della prenotazione e così via. Obbligatorio.
offer_restrictionsoggetto
(OfferRestrictions)

Obbligatorio

Descrive le limitazioni dell'offerta, ad esempio se è richiesto un abbonamento/strumento di pagamento, se l'offerta può essere combinata con altre offerte (e di quali tipi) e così via. Obbligatorio.
couponoggetto
(Coupon)

Dettagli di un coupon. Obbligatorio per offer_category: OFFER_CATEGORY_ADD_ON_COUPON_OFFER.
payment_instrumentoggetto
(PaymentInstrument)

Dettagli di uno strumento di pagamento. Obbligatorio per offer_category: OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER.
subscriptionoggetto
(Subscription)

Dettagli di un abbonamento. Obbligatorio per offer_category: OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER.
termsoggetto
(Terms)

Obbligatorio

Termini e condizioni dell'offerta. Obbligatorio.
validity_periodsarray di object
(ValidityPeriod)

Obbligatorio

Il periodo di validità dell'offerta. Descrive il periodo di tempo per cui l'offerta è valida, inclusi ora di inizio e di fine, giorni della settimana e così via. Obbligatorio.
offer_urlstringa

URL della pagina dell'offerta del commerciante. Obbligatorio per offer_category: OFFER_CATEGORY_BASE_OFFER.
image_urlstringa

URL dell'immagine dell'offerta del commerciante.

OfferDetails

Nome campoTipoRequisitoDescrizione
offer_display_textstringa

Obbligatorio

Il testo dell'offerta che il fornitore dell'offerta vuole mostrare ai clienti nella pagina dei risultati di ricerca. Obbligatorio.
oneOf
(offer_specification)

Obbligatorio

È possibile impostare solo uno dei campi in questo oneOf.
max_discount_valueoggetto
(Money)

Lo sconto massimo di cui è possibile usufruire. Ad esempio, sconto del 10% fino a 100 €.
min_spend_valueoggetto
(Money)

Il valore di spesa minimo per usufruire dello sconto. Ad esempio, 10% di sconto se il prezzo totale è pari o superiore a 100 $.
booking_costoggetto
(Money)

Il costo per prenotare questa offerta. Ad esempio, 100 $ di sconto sul conto finale quando viene prenotato un tavolo al costo di 15 $.
booking_cost_unitenum
(FeeUnit)

L'unità del costo della prenotazione. Ad esempio, per persona, per transazione.
convenience_feeoggetto
(Fee)

booking_cost_adjustablebooleano

Se il costo della prenotazione è regolabile, ovvero viene sottratto dalla fattura finale. Ad esempio: 30% di sconto sulla cena con prenotazione. Costo della prenotazione di 15 $che verranno applicati alla fattura finale. Quindi, la fattura finale è: Spesa totale - 30% - 15 $
additional_feesarray di object
(AdditionalFee)

Tariffe aggiuntive addebitate all'utente. Esempi: comodità, maneggevolezza e così via.

Denaro

Rappresenta un importo di denaro con il relativo tipo di valuta.

Nome campoTipoRequisitoDescrizione
currency_codestringa

Il codice valuta di tre lettere definito nello standard ISO 4217.
unitsstringa

Le unità intere dell'importo. Ad esempio, se currencyCode è "USD", un'unità corrisponde a un dollaro statunitense.
nanosnumero

Numero di unità nano (10^-9) dell'importo. Il valore deve essere compreso tra -999.999.999 e +999.999.999 inclusi. Se units è positivo, nanos deve essere positivo o zero. Se units è zero, nanos può essere positivo, zero o negativo. Se units è negativo, nanos deve essere negativo o zero. Ad esempio, -1,75 $ è rappresentato come units=-1 e nanos=-750.000.000.

A pagamento

Nome campoTipoRequisitoDescrizione
unitenum
(FeeUnit)

typeenum
(FeeType)

oneOf
(cost)

È possibile impostare solo uno dei campi in questo oneOf.

MoneyRange

Nome campoTipoRequisitoDescrizione
min_amountoggetto
(Money)

max_amountoggetto
(Money)

AdditionalFee

Nome campoTipoRequisitoDescrizione
namestringa

Obbligatorio

Il nome della tariffa aggiuntiva. Esempi: commissione per il servizio, commissione di gestione ecc. Obbligatorio.
feeoggetto
(Fee)

OfferRestrictions

Nome campoTipoRequisitoDescrizione
combinable_with_other_offersbooleano

Se questa offerta può essere combinata con altre offerte. Se è true, i partner possono specificare con quali offerte può essere combinata questa offerta. Se sono impostati sia combinable_offer_categories che combinable_offer_ids, qualsiasi offerta che soddisfi una delle condizioni sopra indicate sarà combinabile.
combinable_offer_categoriesarray di enum
(OfferCategory)

Elenco dei tipi di offerta con cui è possibile combinare questa offerta. Ad esempio, questa offerta potrebbe essere combinabile con altri coupon. Se combinable_with_other_offers è true e questo campo non è impostato, tutti i tipi saranno combinabili.
combinable_offer_idsarray di stringhe

Elenco degli offer_id con cui è possibile combinare questa offerta. Alcune offerte possono essere combinate solo con determinati altri offer_id specifici (possono essere considerate offerte principali). Se combinable_with_other_offers è true e questo campo non è impostato, tutti gli ID offerta saranno combinabili.
inclusionsarray di object
(OfferCondition)

Elenco delle condizioni che devono essere soddisfatte affinché l'offerta sia valida (ad es. bevande analcoliche, cibo).
exclusionsarray di object
(OfferCondition)

Elenco delle condizioni che invaliderebbero l'offerta (ad es. buffet, offerte combinate e cocktail).
min_guestnumero

Il numero minimo di persone richiesto per usufruire dell'offerta.
food_offer_restrictionsoggetto
(FoodOfferRestrictions)

Limitazioni specifiche per le offerte di cibo.

OfferCondition

Nome campoTipoRequisitoDescrizione
descriptionstringa

FoodOfferRestrictions

Nome campoTipoRequisitoDescrizione
meal_typesarray di enum
(MealType)

I tipi di pasti a cui può essere applicata l'offerta, ad esempio pranzo o cena. Se non impostato, l'offerta può essere applicata a tutti i tipi di pasti.
restricted_to_certain_coursesbooleano

Se l'offerta può essere applicata solo a determinati corsi.

Coupon

Nome campoTipoRequisitoDescrizione
textstringa

Il testo del coupon che il fornitore dell'offerta vuole mostrare agli utenti.
codestringa

Obbligatorio

Per utilizzare l'offerta è necessario un codice coupon. Obbligatorio.

PaymentInstrument

Nome campoTipoRequisitoDescrizione
itemsarray di object
(PaymentInstrumentItem)

Obbligatorio

Elenco degli strumenti di pagamento che possono essere utilizzati per usufruire dell'offerta. Obbligatorio.
provider_namestringa

Obbligatorio

Nome del fornitore dello strumento di pagamento. Potrebbe essere un partner bancario, il nome di una banca e così via. Ad esempio: American Express, HDFC, ICICI. Obbligatorio.

PaymentInstrumentItem

Nome campoTipoRequisitoDescrizione
typeenum
(PaymentInstrumentType)

Obbligatorio

Tipo di strumento di pagamento. Obbligatorio.
namestringa

Obbligatorio

Nome dell'elemento dello strumento di pagamento, ad esempio il nome della carta di credito. Ad esempio: HDFC Infinia, American Express Platinum. Obbligatorio.

Abbonamento

Nome campoTipoRequisitoDescrizione
namestringa

Obbligatorio

Il nome dell'abbonamento. Obbligatorio.
subscription_auto_addedbooleano

Indica se l'abbonamento viene aggiunto automaticamente quando un utente usufruisce di questa offerta.
costoggetto
(Money)

Obbligatorio

Il costo dell'abbonamento. Obbligatorio.
subscription_durationoggetto
(Duration)

Obbligatorio

Per quanto tempo è valido l'abbonamento al costo dell'abbonamento. Obbligatorio.
terms_and_conditions_urlstringa

URL dei termini e condizioni del partner pertinenti a questo abbonamento.

Durata

Nome campoTipoRequisitoDescrizione
secondsstringa

Secondi firmati dell'intervallo di tempo. Deve essere compreso tra -315.576.000.000 e +315.576.000.000 inclusi. Nota: questi limiti vengono calcolati da: 60 sec/min * 60 min/ora * 24 ore/giorno * 365,25 giorni/anno * 10.000 anni
nanosnumero

Frazioni di secondo con segno con risoluzione di nanosecondi dell'intervallo di tempo. Le durate inferiori a un secondo sono rappresentate con un campo seconds pari a 0 e un campo nanos positivo o negativo. Per durate di un secondo o più, un valore diverso da zero per il campo nanos deve avere lo stesso segno del campo seconds. Deve essere compreso tra -999.999.999 e +999.999.999 inclusi.

Termini

Nome campoTipoRequisitoDescrizione
urlstringa

URL dei termini e condizioni del partner.
restricted_to_certain_usersbooleano

Indica se l'offerta è limitata a determinati utenti.
terms_and_conditionsstringa

Testo dei Termini e condizioni principali fornito dal partner.
additional_terms_and_conditionsarray di stringhe

Termini e condizioni aggiuntivi rispetto a quelli principali del partner.

ValidityPeriod

Nome campoTipoRequisitoDescrizione
valid_periodoggetto
(ValidityRange)

Il timestamp di inizio e di fine per cui è valida l'offerta. Questi orari devono rappresentare giorni distinti, ovvero l'ora di inizio deve essere 00:00 (inizio della giornata) e l'ora di fine deve essere 00:00 (esclusa) il giorno in cui termina il periodo di validità.
time_of_dayarray di object
(TimeOfDayWindow)

Specifica l'intervallo di tempo valido in un determinato giorno e i giorni in cui l'offerta è disponibile. Ad esempio: Lunedì: dalle 10:00 alle 17:00 Martedì: dalle 10:00 alle 14:00 Martedì: dalle 17:00 alle 19:00 Mercoledì, giovedì, venerdì, sabato, domenica: dalle 15:00 alle 19:00 Se non è impostato alcun orario, l'offerta è disponibile in qualsiasi momento entro valid_period.
time_exceptionsarray di object
(ValidTimeException)

Specifica le eccezioni ai valori valid_period e valid_time_of_week indicati sopra

ValidityRange

Un intervallo di timestamp chiuso-aperto.

Nome campoTipoRequisitoDescrizione
valid_from_timeoggetto
(Timestamp)

Obbligatorio

L'ora di inizio dell'intervallo (inclusa). Obbligatorio.
valid_through_timeoggetto
(Timestamp)

L'ora di fine dell'intervallo (esclusa). Se non è impostato, significa che questo periodo non ha mai fine. (Facoltativo)

Timestamp

Nome campoTipoRequisitoDescrizione
secondsstringa

Rappresenta i secondi di tempo UTC dall'epoca di Unix 1970-01-01T00:00:00Z. Deve essere compreso tra 0001-01-01T00:00:00Z e 9999-12-31T23:59:59Z inclusi.
nanosnumero

Frazioni di secondo non negative con risoluzione in nanosecondi. I valori negativi dei secondi con frazioni devono comunque avere valori di nanosecondi non negativi che contano in avanti nel tempo. Deve essere compreso tra 0 e 999.999.999 inclusi.

TimeOfDayWindow

L'oggetto TimeWindow è un'entità composita che descrive un elenco di finestre in cui l'ordine dell'utente può essere effettuato o evaso.

Nome campoTipoRequisitoDescrizione
time_windowsoggetto
(TimeOfDayRange)

Obbligatorio

Il periodo di tempo in cui è possibile effettuare/evadere l'ordine. Obbligatorio.
day_of_weekarray di enum
(DayOfWeek)

L'elenco dei giorni della settimana in cui vengono applicate le finestre. Se non ne viene impostato nessuno, significa che si applica a tutti i giorni della settimana. (Facoltativo)

TimeOfDayRange

Un intervallo di tempo chiuso-aperto.

Nome campoTipoRequisitoDescrizione
open_timeoggetto
(TimeOfDay)

Un'ora che indica l'inizio del giorno dell'intervallo (incluso). Se non viene impostato, il valore è 00:00:00. (Facoltativo)
close_timeoggetto
(TimeOfDay)

Un'ora che indica l'ora di fine del giorno dell'intervallo (esclusa). Se non è impostato, il valore è 23:59:59. (Facoltativo)

TimeOfDay

Nome campoTipoRequisitoDescrizione
hoursnumero

Ore di un giorno nel formato 24 ore. Deve essere maggiore o uguale a 0 e in genere deve essere minore o uguale a 23. Un'API può scegliere di consentire il valore "24:00:00" per scenari come l'orario di chiusura dell'attività.
minutesnumero

Minuti di un'ora. Deve essere maggiore o uguale a 0 e minore o uguale a 59.
secondsnumero

Secondi di un minuto. Deve essere maggiore o uguale a 0 e in genere deve essere minore o uguale a 59. Un'API potrebbe consentire il valore 60 se consente i secondi intercalari.
nanosnumero

Frazioni di secondi, in nanosecondi. Deve essere maggiore o uguale a 0 e minore o uguale a 999.999.999.

ValidTimeException

Nome campoTipoRequisitoDescrizione
exceptional_periodoggetto
(ValidityRange)

Il timestamp di inizio e di fine per cui l'offerta non è valida. Questi orari devono rappresentare giorni distinti, ovvero l'ora di inizio deve essere 00:00 (inizio della giornata) e l'ora di fine deve essere 00:00 (esclusa) il giorno in cui termina il periodo di eccezione.

OfferSource

NomeDescrizione
OFFER_SOURCE_UNSPECIFIED
OFFER_SOURCE_AGGREGATOR

ActionType

NomeDescrizione
ACTION_TYPE_UNSPECIFIED
ACTION_TYPE_DINING

OfferMode

NomeDescrizione
OFFER_MODE_OTHER
OFFER_MODE_WALK_IN
OFFER_MODE_FREE_RESERVATION
OFFER_MODE_PAID_RESERVATION
OFFER_MODE_ONLINE_ORDER

OfferCategory

Categoria dell'offerta. Un'offerta di base è un'offerta standard disponibile per tutti i clienti, ad esempio uno sconto del 10% per una spesa superiore a 100 $. Un'offerta di base limitata da un coupon o uno strumento di pagamento avrà i rispettivi campi impostati. Abbiamo anche offerte di componenti aggiuntivi come ADD_ON_PAYMENT_OFFER. Queste offerte possono essere aggiunte ad altre offerte per ottenere sconti aggiuntivi.

NomeDescrizione
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

NomeDescrizione
FEE_UNIT_UNSPECIFIED
FEE_UNIT_PER_GUEST
FEE_UNIT_PER_TRANSACTION

FeeType

NomeDescrizione
FEE_TYPE_UNSPECIFIED
FEE_TYPE_FIXED
FEE_TYPE_VARIABLE

MealType

NomeDescrizione
MEAL_TYPE_UNSPECIFIED
MEAL_TYPE_BREAKFAST
MEAL_TYPE_LUNCH
MEAL_TYPE_DINNER

PaymentInstrumentType

NomeDescrizione
PAYMENT_INSTRUMENT_TYPE_UNSPECIFIED
PAYMENT_INSTRUMENT_CREDIT_CARD
PAYMENT_INSTRUMENT_DEBIT_CARD
PAYMENT_INSTRUMENT_BANK_ACCOUNT
PAYMENT_INSTRUMENT_UPI
PAYMENT_INSTRUMENT_ONLINE_WALLET

DayOfWeek

Rappresenta un giorno della settimana.

NomeDescrizione
DAY_OF_WEEK_UNSPECIFIEDIl giorno della settimana non è specificato.
MONDAYLunedì
TUESDAYMartedì
WEDNESDAYMercoledì
THURSDAYGiovedì
FRIDAYVenerdì
SATURDAYSabato
SUNDAYDomenica

offer_specification

Lo sconto può essere una percentuale o un valore fisso sottratto dal valore totale. Ad esempio: 1. 10% di sconto sulla fattura finale. 2. 15 $ di sconto su un ordine. I commercianti possono anche offrire sconti personalizzati come "Prendi due, paghi uno" tramite i campi di specifica pertinenti. Obbligatorio.

Nome campoTipoRequisitoDescrizione
discount_percentnumero

Esclusivo con discount_value, other_offer_detail_text

Percentuale della fattura scontata. [0, 100] Per le offerte 1+1 o con sconto del 50% applicabili all'intero pasto (ad es. buffet 1+1, 1+1 sull'intero conto, 1+1 sul menu fisso), questo valore può essere impostato su 50.
discount_valueoggetto
(Money)

Esclusivo con discount_percent, other_offer_detail_text

Valore fisso dello sconto.
other_offer_detail_textstringa

Esclusivo con discount_percent, discount_value

Testo in formato libero per descrivere lo sconto. Per le offerte specifiche 1+1 (ad es. 1+1 bevande, +1 piatto principale, 1+1 voci di menu selezionate), questi dettagli devono essere descritti qui.

costo

Nome campoTipoRequisitoDescrizione
amountoggetto
(Money)

Esclusivo con amount_range

amount_rangeoggetto
(MoneyRange)

Esclusivo con amount

Caricamento del feed

Il feed Offerte deve essere caricato sul server SFTP del feed Generic. Segui le istruzioni riportate nell'esercitazione su come utilizzare il server SFTP per i feed generici e utilizza il set name impostato su google.offer nel file descrittore.

Frequenza di caricamento

In generale, Google si aspetta un caricamento del feed al giorno. La frequenza può essere aumentata o diminuita a seconda della frequenza degli aggiornamenti delle offerte da parte tua per garantire una precisione costantemente elevata. Rivolgiti al tuo POC Google.

Prima di essere visualizzati su Google, i dati richiedono alcune ore.

Categorizzazione delle offerte

  • OFFER_CATEGORY_BASE_OFFER: Offerte che possono essere richieste in modo indipendente senza essere combinate con altre offerte. Ad esempio:
    • Sconti fissi sull'intero conto (ad es. 20% di sconto)
    • Offerte di abbonamento (ad es. Dolce senza costi con l'abbonamento)
    • Offerte di pagamento nei casi in cui non sono presenti altre offerte di base per il ristorante
  • Offerte aggiuntive: offerte che richiedono la rivendicazione di un'offerta base. Questi includono:
    • OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER (ad es. 10% di sconto aggiuntivo con carta di credito specifica)
    • OFFER_CATEGORY_ADD_ON_COUPON_OFFER (ad es. Bevanda senza costi con un codice coupon specifico)
    • OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER (ad es. Sconto aggiuntivo del 10% per gli abbonati)

Altre considerazioni:

  • Quando un ristorante non ha impostato un'offerta di base, le offerte aggiuntive non vengono visualizzate. Se non è presente un'offerta di base, qualsiasi offerta di pagamento, abbonamento o coupon che può essere rivendicata senza dover essere aggiunta a un'altra offerta deve essere taggata come OFFER_CATEGORY_BASE_OFFER.
    • A seconda del tipo, devono essere impostati i dati pertinenti per PaymentInstrument, Subscription o Coupon.
    • I partner devono fornire due copie di ciascuna di queste offerte per coprire gli scenari in cui funzionano sia come offerte di base sia come offerte aggiuntive. Il testo dell'offerta aggiuntiva può essere impostato per più ristoranti utilizzando entity_ids o add_on_offer_applicable_to_all_entities.
  • Quando un ristorante ha più offerte di base cumulabili, tutte le offerte di base devono essere taggate come OFFER_CATEGORY_BASE_OFFER e le offerte di base che sono offerte di pagamento, abbonamento o coupon devono essere inviate anche come tipo di offerta aggiuntiva pertinente.
  • ValidityPeriod deve essere utilizzato per attivare le offerte di componenti aggiuntivi come offerte di base solo quando non è presente un'offerta di base attiva.

Scenari di esempio:

  • Un ristorante offre il 5% di sconto se paghi con una carta di credito specifica e una bevanda senza costi con un codice coupon specifico

    • L'offerta del 5% di sconto sulla carta di credito deve essere inviata in due copie, una contrassegnata come OFFER_CATEGORY_BASE_OFFER e l'altra come OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER con i dettagli PaymentInstrument inclusi.
    • L'offerta di una bevanda senza costi con un codice coupon deve essere inviata come OFFER_CATEGORY_ADD_ON_COUPON_OFFER con i dettagli di Coupon inclusi.
  • Un ristorante offre il 10% di sconto per i clienti che si presentano senza prenotazione e il 5% di sconto se pagano con una carta di credito specifica. Entrambi gli sconti possono essere combinati.

    • L'offerta per i clienti che si presentano senza prenotazione deve essere taggata come OFFER_CATEGORY_BASE_OFFER.
    • L'offerta con carta di credito con sconto del 5% deve avere due copie, una taggata come OFFER_CATEGORY_BASE_OFFER e l'altra come OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER.
  • Un ristorante offre uno sconto del 10% solo per il pranzo nei giorni feriali e del 5% in qualsiasi momento se paghi con una carta di credito specifica.

    • L'offerta con sconto del 10% deve avere ValidityPeriod impostato per indicare solo durante l'orario di pranzo del ristorante nei giorni feriali.
    • L'offerta del 5% di sconto con carta di credito deve essere inviata in due copie.
      • Una copia deve essere contrassegnata come OFFER_CATEGORY_BASE_OFFER con i dettagli PaymentInstrument inclusi. ValidityPeriod deve essere impostato per escludere le ore di pranzo nei giorni feriali quando l'offerta del 10% di sconto per il pranzo è attiva
      • Una copia deve essere taggata come OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER con i dettagli di PaymentInstrument inclusi.
    • Tutte le altre offerte di pagamento per questo ristorante devono essere contrassegnate come OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER.

Procedura di sviluppo e lancio

Durante l'integrazione, il Partner Portal potrà aiutarti fornendoti informazioni e feedback in base al tuo sviluppo. Il processo di sviluppo seguirà questo flusso:

  • L'integrazione verrà sviluppata prima nell'ambiente sandbox. Devi utilizzare un'esportazione della produzione (o anche i dati di produzione direttamente) nell'ambiente sandbox di Google. Ciò contribuisce a garantire che il tuo sviluppo intercetti tutti i casi limite e consenta a Google di valutare la qualità dei dati e di fornirti un'assistenza migliore in base al tuo modello di dati.
  • Una volta caricati in modo completo e giornaliero i feed di Merchant, Servizi e Offerte in modo coerente nell'ambiente sandbox di Google, il team di Google valuterà i tuoi feed. Una volta che il team di Google fornisce l'approvazione, puoi eseguire il push del codice in produzione e iniziare a inviare i dati di produzione all'ambiente di produzione di Google.
  • Dopo aver testato completamente l'integrazione di produzione, anche il team di Google eseguirà dei test. Una volta completati tutti i test, l'integrazione verrà lanciata.

Monitoraggio

Per garantire una buona esperienza utente, Google verificherà che le offerte fornite siano valide, corrette e soddisfino i criteri delle nostre norme prima e dopo il lancio. A tal fine, Google utilizzerà una combinazione di revisione umana e automatica. Il risultato di queste revisioni sarà accessibile nella dashboard delle offerte del Centro azioni (solo produzione). Il risultato di questo monitoraggio potrebbe essere utilizzato per influire sul ranking delle offerte.

Controlli automatici (crawler)

Il team per la qualità di Google implementa i crawler. I crawler sono script che automatizzano un browser web per eseguire alcuni clic ed estrarre le informazioni sulle offerte, solo a scopo di test di qualità.

Numero di query

Ad esempio, se decidessimo di inviare 5000 controlli al giorno, ciò significa che 5000 volte al giorno (distribuiti uniformemente durante la giornata, ovvero circa uno ogni 17 secondi), il nostro crawler esegue tutte le azioni che un utente normale eseguirebbe:

  • Inizia dalla Ricerca Google e fai clic sul link del partner.
  • Cerca le informazioni sull'offerta.
  • Se l'offerta richiede la prenotazione, continuerà verso il flusso di prenotazione per confermare che l'offerta è disponibile all'ora specificata (non verrà effettuata alcuna prenotazione).

Rilevamento di web scraper

Per assicurarti che lo scraper web non venga bloccato (il che potrebbe portare a concludere che le offerte non sono disponibili), assicurati che il tuo sistema consenta al nostro scraper web di eseguire query sulla tua pagina in qualsiasi momento. Per identificare il nostro web scraper:

  • Lo user agent del web scraper conterrà la stringa "Google-Offers":
    • Esempio: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google-Offers) Chrome/104.0.5112.101 Safari/537.36
  • Puoi anche verificare se le chiamate provengono da Google utilizzando il DNS inverso, come consigliato in "Verificare Googlebot e altri crawler di Google". Nel nostro caso specifico, la risoluzione DNS inversa segue questo pattern: google-proxy-***-***-***-***.google.com.

Comportamento tecnico

Memorizzazione nella cache

Al fine di ridurre il carico sul sito web partner, i nostri crawler sono generalmente configurati per rispettare tutte le intestazioni di memorizzazione nella cache HTTP standard presenti nella risposta. Ciò significa che per i siti web configurati correttamente evitiamo di recuperare ripetutamente i contenuti che cambiano raramente (ad es. le librerie JavaScript). Per maggiori dettagli su come implementare la memorizzazione nella cache, leggi questa documentazione sulla memorizzazione nella cache HTTP.