Ringkasan

Partner yang berpartisipasi dalam integrasi penawaran harus menyelesaikan penyiapan akun untuk langkah integrasi berbasis Entitas atau Penjual (uji coba) sebelum mereka memulai. Penerapan, pengujian, dan peluncuran integrasi penawaran akan dijelaskan dalam panduan ini. Baca ringkasan ini dan kebijakan penawaran sebelum melakukan langkah integrasi.

Penawaran

Integrasi penawaran ini memungkinkan Anda mengirim informasi terstruktur tentang promosi dan diskon dari penjual yang diterapkan ke layanan tertentu pada waktu tertentu. Penawaran terdiri dari penawaran sebenarnya (potongan persen, potongan uang ...), periode validitas (waktu tertentu, hari tertentu ...), dan penggunaan yang berlaku (penawaran hanya dapat digunakan pada layanan tertentu) serta kombinasi pembatasan yang kompleks.

Contoh penawaran:

  • Hidangan pembuka setengah harga pada hari Rabu dan Kamis di bulan Desember dari pukul 12.00 hingga 17.00
  • Beli satu gratis satu hidangan penutup untuk makan malam Hari Ibu dari pukul 18.00 hingga 22.00
  • Diskon $5 untuk hidangan utama sarapan siang setiap hari Minggu pukul 10.00 hingga 14.00
  • Diskon 10% sebagai penawaran datang langsung yang dapat digabungkan dengan diskon 5% untuk pelanggan premium dan diskon 5% jika pengguna membayar melalui aplikasi Anda.

Agar disertakan dalam integrasi, penawaran harus sesuai dengan model data teknis serta memenuhi persyaratan kelayakan kami. Pastikan untuk meninjau kebijakan penawaran kami guna memastikan kepatuhan integrasi Anda dan mendapatkan petunjuk tentang tindakan yang harus dilakukan terkait penawaran yang tidak sesuai dengan persyaratan teknis.

Penerapan penawaran

Integrasi penawaran ini terdiri dari dua feed yang akan diupload setiap hari atau pada frekuensi yang memastikan akurasi tinggi (artinya mengurangi keusangan):

OfferFeed

Nama KolomJenisPersyaratanDeskripsi
dataarray object
(Offer)

Penawaran

Nama KolomJenisPersyaratanDeskripsi
offer_idstring

Wajib

ID unik penawaran. Wajib.
entity_idsarray string

Daftar penjual yang berpartisipasi dalam penawaran ini.
add_on_offer_applicable_to_all_entitiesboolean

Jika benar, penawaran ini berlaku untuk semua entitas di bawah agregator. Hanya berlaku untuk penawaran add-on.
offer_sourceenum
(OfferSource)

Wajib

Penawaran dapat diberikan oleh agregator, penjual perorangan, atau bahkan pihak ketiga sebagai add-on. Wajib.
action_typeenum
(ActionType)

Wajib

Layanan yang menyediakan penawaran. offer_id hanya dapat dimiliki oleh satu action_type. Jika penawaran dapat dibagikan di beberapa jenis layanan, penawaran duplikat dengan ID unik diharapkan dibuat untuk setiap jenis layanan. Wajib.
offer_modesarray enum
(OfferMode)

Wajib

Metode yang dapat digunakan untuk mendapatkan penawaran - datang langsung, reservasi, online, dll. Wajib.
offer_categoryenum
(OfferCategory)

Wajib

Kategori penawaran. Wajib.
source_assigned_priorityangka

Bilangan bulat non-negatif ([1-100], dengan 1 mewakili prioritas tertinggi) yang menunjukkan tingkat prioritas penawaran yang ditetapkan oleh sumber. Jika beberapa penawaran tersedia untuk penjual yang sama, hal ini akan menjadi sinyal untuk memberi peringkat penawaran. 0 menunjukkan bahwa prioritas tidak ditetapkan.
offer_detailsobject
(OfferDetails)

Wajib

Detail penawaran seperti diskon, biaya pemesanan, dll. Wajib diisi.
offer_restrictionsobject
(OfferRestrictions)

Wajib

Menjelaskan bagaimana penawaran dibatasi, yaitu apakah instrumen pembayaran/langganan diperlukan, apakah penawaran ini dapat digabungkan dengan penawaran lain (dan jenisnya), dll. Wajib.
couponobject
(Coupon)

Detail kupon. Diperlukan untuk offer_category: OFFER_CATEGORY_ADD_ON_COUPON_OFFER.
payment_instrumentobject
(PaymentInstrument)

Detail instrumen pembayaran. Wajib untuk offer_category: OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER.
subscriptionobject
(Subscription)

Detail langganan. Wajib untuk offer_category: OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER.
termsobject
(Terms)

Wajib

Persyaratan dan ketentuan penawaran. Wajib.
validity_periodsarray object
(ValidityPeriod)

Wajib

Periode validitas penawaran. Mendeskripsikan jangka waktu penawaran berlaku, termasuk waktu mulai dan berakhir, hari dalam seminggu, dll. Wajib diisi.
offer_urlstring

URL ke halaman penawaran penjual. Wajib ada untuk offer_category: OFFER_CATEGORY_BASE_OFFER.
image_urlstring

URL ke gambar penawaran penjual.

OfferDetails

Nama KolomJenisPersyaratanDeskripsi
offer_display_textstring

Wajib

Teks penawaran yang ingin ditampilkan penyedia penawaran kepada pelanggan di halaman hasil penelusuran. Wajib.
oneOf
(offer_specification)

Wajib

Hanya satu kolom di oneOf ini yang dapat ditetapkan.
max_discount_valueobject
(Money)

Diskon maksimum yang dapat diperoleh. Misalnya, diskon 10% hingga Rp1.000.000.
min_spend_valueobject
(Money)

Nilai pembelanjaan minimum untuk mendapatkan diskon. Misalnya, diskon 10% jika total harga Rp1.000.000 atau lebih.
booking_costobject
(Money)

Biaya untuk memesan penawaran ini. Misalnya, diskon Rp1.000.000 untuk tagihan akhir saat meja dipesan dengan biaya Rp150.000.
booking_cost_unitenum
(FeeUnit)

Satuan biaya pemesanan. Misalnya, per orang, per transaksi.
convenience_feeobject
(Fee)

booking_cost_adjustableboolean

Apakah biaya pemesanan dapat disesuaikan, yaitu biaya pemesanan dikurangi dari tagihan akhir. Misalnya: Diskon 30% untuk makan malam dengan reservasi. Biaya untuk melakukan reservasi adalah $15 dan akan diterapkan ke tagihan akhir. Oleh karena itu, tagihan akhir: Total yang Dibelanjakan - 30% - $15
additional_feesarray object
(AdditionalFee)

Biaya tambahan yang ditagihkan kepada pengguna. Contoh: kenyamanan, penanganan, dll.

Uang

Mewakili jumlah uang dengan jenis mata uangnya.

Nama KolomJenisPersyaratanDeskripsi
currency_codestring

Kode mata uang tiga huruf yang ditentukan dalam ISO 4217.
unitsstring

Seluruh unit jumlahnya. Misalnya, jika currencyCode adalah "USD", maka 1 unit adalah satu dolar AS.
nanosangka

Jumlah unit nano (10^-9) dari jumlah. Nilainya harus antara -999.999.999 dan +999.999.999 inklusif. Jika units positif, nanos harus positif atau nol. Jika units nol, nanos dapat positif, nol, atau negatif. Jika units negatif, nanos harus negatif atau nol. Misalnya $-1,75 direpresentasikan sebagai units=-1 dan nanos=-750.000.000.

Biaya

Nama KolomJenisPersyaratanDeskripsi
unitenum
(FeeUnit)

typeenum
(FeeType)

oneOf
(cost)

Hanya satu kolom di oneOf ini yang dapat ditetapkan.

MoneyRange

Nama KolomJenisPersyaratanDeskripsi
min_amountobject
(Money)

max_amountobject
(Money)

AdditionalFee

Nama KolomJenisPersyaratanDeskripsi
namestring

Wajib

Nama biaya tambahan. Contoh: biaya administrasi, biaya penanganan, dll. Wajib.
feeobject
(Fee)

OfferRestrictions

Nama KolomJenisPersyaratanDeskripsi
combinable_with_other_offersboolean

Apakah penawaran ini dapat digabungkan dengan penawaran lainnya. Jika benar (true), partner dapat menentukan penawaran yang dapat digabungkan dengan penawaran ini. Jika combinable_offer_categories & combinable_offer_ids ditetapkan, penawaran yang cocok dengan salah satu kondisi di atas akan dapat digabungkan.
combinable_offer_categoriesarray enum
(OfferCategory)

Daftar jenis penawaran yang dapat digabungkan dengan penawaran ini. Misalnya, penawaran ini dapat digabungkan dengan Kupon lainnya. Jika combinable_with_other_offers bernilai benar dan kolom ini tidak disetel, semua jenis akan dapat digabungkan.
combinable_offer_idsarray string

Daftar offer_id yang dapat digabungkan dengan penawaran ini. Beberapa penawaran hanya dapat digabungkan dengan offer_id tertentu lainnya (dapat dianggap sebagai penawaran induk). Jika combinable_with_other_offers benar dan kolom ini tidak disetel, semua id penawaran dapat digabungkan.
inclusionsarray object
(OfferCondition)

Daftar kondisi yang harus dipenuhi agar penawaran valid (misalnya, minuman non-alkohol, makanan).
exclusionsarray object
(OfferCondition)

Daftar kondisi yang akan membatalkan penawaran (misalnya, prasmanan, penawaran kombo, dan koktail).
min_guestangka

Jumlah minimum orang yang diperlukan untuk memanfaatkan penawaran.
food_offer_restrictionsobject
(FoodOfferRestrictions)

Batasan khusus untuk penawaran makanan.

OfferCondition

Nama KolomJenisPersyaratanDeskripsi
descriptionstring

FoodOfferRestrictions

Nama KolomJenisPersyaratanDeskripsi
meal_typesarray enum
(MealType)

Jenis makanan yang dapat menerapkan penawaran, seperti makan siang atau makan malam. Jika tidak disetel, penawaran dapat diterapkan ke semua jenis makanan.
restricted_to_certain_coursesboolean

Apakah penawaran hanya dapat diterapkan ke kursus tertentu.

Kupon

Nama KolomJenisPersyaratanDeskripsi
textstring

Teks kupon yang ingin ditampilkan penyedia penawaran kepada pengguna.
codestring

Wajib

Kode kupon diperlukan untuk menukarkan penawaran. Wajib.

PaymentInstrument

Nama KolomJenisPersyaratanDeskripsi
itemsarray object
(PaymentInstrumentItem)

Wajib

Daftar alat pembayaran yang dapat digunakan untuk memanfaatkan penawaran. Wajib.
provider_namestring

Wajib

Nama penyedia instrumen pembayaran. Dapat berupa partner perbankan, nama bank, dll. Misalnya: American Express, HDFC, ICICI. Wajib.

PaymentInstrumentItem

Nama KolomJenisPersyaratanDeskripsi
typeenum
(PaymentInstrumentType)

Wajib

Jenis instrumen pembayaran. Wajib.
namestring

Wajib

Nama item alat pembayaran seperti nama kartu kredit. Misalnya: HDFC Infinia, American Express Platinum. Wajib.

Langganan

Nama KolomJenisPersyaratanDeskripsi
namestring

Wajib

Nama langganan. Wajib.
subscription_auto_addedboolean

Apakah langganan ditambahkan secara otomatis saat pengguna memanfaatkan penawaran ini
costobject
(Money)

Wajib

Biaya langganan. Wajib.
subscription_durationobject
(Duration)

Wajib

Durasi masa berlaku langganan dengan subscription_cost. Wajib.
terms_and_conditions_urlstring

URL persyaratan dan ketentuan partner yang relevan dengan langganan ini.

Durasi

Nama KolomJenisPersyaratanDeskripsi
secondsstring

Detik yang ditandatangani dari rentang waktu. Harus dari -315.576.000.000 hingga +315.576.000.000 inklusif. Catatan: batas ini dihitung dari: 60 dtk/mnt * 60 mnt/j * 24 j/h * 365,25 h/thn * 10.000 thn
nanosangka

Pecahan detik bertanda pada resolusi nanodetik rentang waktu. Durasi kurang dari satu detik ditampilkan dengan kolom seconds 0 dan kolom nanos positif atau negatif. Untuk durasi satu detik atau lebih, nilai non-nol untuk kolom nanos harus memiliki tanda yang sama dengan kolom seconds. Harus dari -999.999.999 hingga +999.999.999 inklusif.

Persyaratan

Nama KolomJenisPersyaratanDeskripsi
urlstring

URL persyaratan dan ketentuan partner.
restricted_to_certain_usersboolean

Apakah penawaran dibatasi untuk pengguna tertentu.
terms_and_conditionsstring

Teks Syarat dan Ketentuan utama yang disediakan oleh partner.
additional_terms_and_conditionsarray string

Persyaratan dan ketentuan selain T&K utama dari partner.

ValidityPeriod

Nama KolomJenisPersyaratanDeskripsi
valid_periodobject
(ValidityRange)

Stempel waktu mulai dan berakhir saat penawaran berlaku. Waktu ini harus mewakili hari yang berbeda, yaitu waktu mulai harus 00.00 (awal hari) dan waktu berakhir harus 00. 00 (eksklusif) pada hari berakhirnya periode validitas.
time_of_dayarray object
(TimeOfDayWindow)

Menentukan interval waktu yang valid pada hari tertentu dan hari mana saja yang tersedia untuk penawaran. Misalnya: Senin: 10.00 hingga 17.00 Selasa: 10.00 hingga 14.00 Selasa: 17.00 hingga 19.00 Rabu, Kamis, Jumat, Sabtu, Minggu: 15.00 hingga 19.00 Jika tidak ada yang ditetapkan, berarti penawaran tersedia sepanjang waktu dalam valid_period.
time_exceptionsarray object
(ValidTimeException)

Menentukan pengecualian untuk valid_period dan valid_time_of_week di atas

ValidityRange

Rentang stempel waktu tertutup-terbuka.

Nama KolomJenisPersyaratanDeskripsi
valid_from_timeobject
(Timestamp)

Wajib

Waktu awal rentang (inklusif). Wajib.
valid_through_timeobject
(Timestamp)

Waktu akhir rentang (eksklusif). Jika tidak ditetapkan, berarti periode ini tidak akan pernah berakhir. Opsional.

Stempel waktu

Nama KolomJenisPersyaratanDeskripsi
secondsstring

Mewakili detik waktu UTC sejak epoch Unix 1970-01-01T00:00:00Z. Harus dari 0001-01-01T00:00:00Z hingga 9999-12-31T23:59:59Z inklusif.
nanosangka

Pecahan detik non-negatif pada resolusi nanodetik. Nilai detik negatif dengan pecahan harus tetap memiliki nilai nanos positif yang dihitung maju dalam waktu. Harus dari 0 hingga 999.999.999 inklusif.

TimeOfDayWindow

Objek TimeWindow adalah entitas komposit yang menjelaskan daftar jendela tempat pesanan pengguna dapat dilakukan atau dipenuhi.

Nama KolomJenisPersyaratanDeskripsi
time_windowsobject
(TimeOfDayRange)

Wajib

Jangka waktu pesanan dapat dilakukan/dipenuhi. Wajib.
day_of_weekarray enum
(DayOfWeek)

Daftar hari dalam seminggu saat jendela diterapkan. Jika tidak ada yang ditetapkan, artinya berlaku untuk semua hari dalam seminggu. Opsional.

TimeOfDayRange

Rentang waktu tertutup-terbuka.

Nama KolomJenisPersyaratanDeskripsi
open_timeobject
(TimeOfDay)

Waktu yang menunjukkan waktu awal hari dalam rentang (inklusif). Jika tidak disetel, berarti 00:00:00. Opsional.
close_timeobject
(TimeOfDay)

Waktu yang menunjukkan waktu berakhir hari dalam rentang (eksklusif). Jika tidak disetel, berarti 23:59:59. Opsional.

TimeOfDay

Nama KolomJenisPersyaratanDeskripsi
hoursangka

Jam dalam format 24 jam. Harus lebih besar dari atau sama dengan 0 dan biasanya harus kurang dari atau sama dengan 23. API dapat memilih untuk mengizinkan nilai "24:00:00" untuk skenario seperti waktu tutup bisnis.
minutesangka

Menit dalam satu jam. Harus lebih besar dari atau sama dengan 0 dan kurang dari atau sama dengan 59.
secondsangka

Detik dalam satu menit. Harus lebih besar dari atau sama dengan 0 dan biasanya harus kurang dari atau sama dengan 59. API dapat mengizinkan nilai 60 jika memungkinkan detik kabisat.
nanosangka

Pecahan detik, dalam nanodetik. Harus lebih besar dari atau sama dengan 0 dan kurang dari atau sama dengan 999.999.999.

ValidTimeException

Nama KolomJenisPersyaratanDeskripsi
exceptional_periodobject
(ValidityRange)

Stempel waktu mulai dan akhir saat penawaran tidak valid. Waktu ini harus mewakili hari yang berbeda, yaitu waktu mulai harus 00.00 (awal hari) dan waktu berakhir harus 00. 00 (eksklusif) pada hari berakhirnya periode pengecualian.

OfferSource

NamaDeskripsi
OFFER_SOURCE_UNSPECIFIED
OFFER_SOURCE_AGGREGATOR

ActionType

NamaDeskripsi
ACTION_TYPE_UNSPECIFIED
ACTION_TYPE_DINING

OfferMode

NamaDeskripsi
OFFER_MODE_OTHER
OFFER_MODE_WALK_IN
OFFER_MODE_FREE_RESERVATION
OFFER_MODE_PAID_RESERVATION
OFFER_MODE_ONLINE_ORDER

OfferCategory

Kategori penawaran. Penawaran dasar adalah penawaran standar yang tersedia untuk semua pelanggan, seperti diskon 10% untuk pembelanjaan di atas Rp1.000.000. Penawaran dasar yang dibatasi oleh kupon atau instrumen pembayaran akan memiliki kolom masing-masing yang ditetapkan. Kami juga memiliki penawaran add-on x seperti ADD_ON_PAYMENT_OFFER. Penawaran tersebut dapat ditambahkan ke penawaran lain untuk mendapatkan diskon tambahan.

NamaDeskripsi
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

NamaDeskripsi
FEE_UNIT_UNSPECIFIED
FEE_UNIT_PER_GUEST
FEE_UNIT_PER_TRANSACTION

FeeType

NamaDeskripsi
FEE_TYPE_UNSPECIFIED
FEE_TYPE_FIXED
FEE_TYPE_VARIABLE

MealType

NamaDeskripsi
MEAL_TYPE_UNSPECIFIED
MEAL_TYPE_BREAKFAST
MEAL_TYPE_LUNCH
MEAL_TYPE_DINNER

PaymentInstrumentType

NamaDeskripsi
PAYMENT_INSTRUMENT_TYPE_UNSPECIFIED
PAYMENT_INSTRUMENT_CREDIT_CARD
PAYMENT_INSTRUMENT_DEBIT_CARD
PAYMENT_INSTRUMENT_BANK_ACCOUNT
PAYMENT_INSTRUMENT_UPI
PAYMENT_INSTRUMENT_ONLINE_WALLET

DayOfWeek

Mewakili hari dalam seminggu.

NamaDeskripsi
DAY_OF_WEEK_UNSPECIFIEDHari dalam seminggu tidak ditentukan.
MONDAYSenin
TUESDAYSelasa
WEDNESDAYRabu
THURSDAYKamis
FRIDAYJumat
SATURDAYSabtu
SUNDAYMinggu

offer_specification

Diskon dapat berupa persentase atau nilai tetap yang dikurangi dari nilai total. Contoh: 1. Diskon 10% untuk tagihan akhir. 2. Diskon Rp150.000 untuk pesanan. Penjual juga dapat menawarkan diskon kustom seperti 'beli satu gratis satu' melalui kolom spesifikasi yang relevan. Wajib.

Nama KolomJenisPersyaratanDeskripsi
discount_percentangka

Tidak dapat muncul bersamaan dengan discount_value, other_offer_detail_text

Persentase tagihan yang didiskon. [0, 100] Untuk penawaran 1+1 atau diskon 50% yang berlaku untuk seluruh makanan (misalnya, prasmanan 1+1, 1+1 untuk seluruh tagihan, 1+1 untuk menu set), nilai ini dapat ditetapkan ke 50.
discount_valueobject
(Money)

Tidak dapat muncul bersamaan dengan discount_percent, other_offer_detail_text

Nilai tetap diskon.
other_offer_detail_textstring

Tidak dapat muncul bersamaan dengan discount_percent, discount_value

Teks bentuk bebas untuk mendeskripsikan diskon. Untuk penawaran 1+1 tertentu (misalnya, 1+1 minuman, +1 hidangan utama, 1+1 item menu tertentu), detail ini harus dijelaskan di sini.

biaya

Nama KolomJenisPersyaratanDeskripsi
amountobject
(Money)

Tidak dapat muncul bersamaan dengan amount_range

amount_rangeobject
(MoneyRange)

Tidak dapat muncul bersamaan dengan amount

Upload feed

Feed penawaran harus diupload ke server SFTP feed Generic. Ikuti tutorial Cara menggunakan server SFTP feed Generik untuk mendapatkan petunjuk dan gunakan name yang ditetapkan ke google.offer di file deskripsi Anda.

Frekuensi upload

Secara umum, Google mengharapkan 1 upload feed per hari. Frekuensi dapat ditingkatkan atau dikurangi, bergantung pada frekuensi update penawaran di pihak Anda untuk memastikan presisi yang tinggi secara konsisten. Konsultasikan dengan POC Google Anda.

Data akan memerlukan waktu beberapa jam sebelum muncul di Google.

Kategorisasi penawaran

  • OFFER_CATEGORY_BASE_OFFER: Penawaran yang dapat diklaim secara terpisah tanpa digabungkan dengan penawaran lainnya. Hal ini mencakup:
    • Diskon tetap untuk seluruh tagihan (misalnya, Diskon 20%)
    • Penawaran langganan (misalnya, Makanan penutup gratis dengan langganan)
    • Penawaran pembayaran jika tidak ada penawaran dasar lain untuk restoran
  • Penawaran Add-On: Penawaran yang memerlukan penawaran dasar untuk diklaim. Hal ini mencakup:
    • OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER (misalnya, Diskon tambahan 10% dengan kartu kredit tertentu)
    • OFFER_CATEGORY_ADD_ON_COUPON_OFFER (misalnya, Minuman gratis dengan kode kupon tertentu)
    • OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER (misalnya, Diskon tambahan 10% untuk pelanggan)

Pertimbangan lainnya:

  • Jika restoran tidak menetapkan Penawaran Dasar, penawaran Add-On tidak akan ditampilkan. Jika tidak ada Penawaran Dasar, setiap Penawaran Pembayaran, Langganan, atau Kupon yang dapat diklaim tanpa perlu ditambahkan ke penawaran lain harus diberi tag OFFER_CATEGORY_BASE_OFFER.
    • Bergantung pada jenisnya, data yang relevan untuk PaymentInstrument, Subscription, atau Coupon harus ditetapkan.
    • Partner harus memberikan 2 salinan setiap penawaran ini untuk mencakup skenario saat penawaran tersebut berfungsi sebagai Penawaran Dasar dan Penawaran Add-On. Salinan Penawaran Add-On kemudian dapat ditetapkan untuk beberapa restoran menggunakan entity_ids atau add_on_offer_applicable_to_all_entities.
  • Jika restoran memiliki beberapa Penawaran Dasar yang dapat digabungkan, semua Penawaran Dasar harus diberi tag sebagai OFFER_CATEGORY_BASE_OFFER, dan Penawaran Dasar yang merupakan penawaran Pembayaran, Langganan, atau Kupon harus dikirimkan juga sebagai jenis Penawaran Add-On yang relevan.
  • ValidityPeriod harus digunakan untuk mengaktifkan penawaran Add-On sebagai Penawaran Dasar hanya jika tidak ada Penawaran Dasar yang aktif.

Skenario contoh:

  • Restoran menawarkan diskon 5% jika membayar dengan kartu kredit tertentu dan minuman gratis dengan kode kupon tertentu

    • Penawaran kartu kredit diskon 5% harus dikirim sebagai 2 salinan, satu ditandai sebagai OFFER_CATEGORY_BASE_OFFER dan satu ditandai sebagai OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER dengan detail PaymentInstrument disertakan.
    • Penawaran minuman gratis dengan kode kupon harus dikirim sebagai OFFER_CATEGORY_ADD_ON_COUPON_OFFER dengan detail Coupon yang disertakan.
  • Sebuah restoran menawarkan diskon 10% untuk pelanggan yang datang langsung dan diskon 5% jika membayar dengan kartu kredit tertentu, yang keduanya dapat digabungkan.

    • Penawaran datang langsung 10% harus diberi tag OFFER_CATEGORY_BASE_OFFER.
    • Penawaran kartu kredit diskon 5% harus memiliki 2 salinan, dengan satu diberi tag sebagai OFFER_CATEGORY_BASE_OFFER, dan satu lagi diberi tag sebagai OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER.
  • Sebuah restoran menawarkan diskon 10% hanya untuk makan siang pada hari kerja, dan diskon 5% kapan saja saat membayar dengan kartu kredit tertentu.

    • Penawaran diskon 10% harus menetapkan ValidityPeriod ke hanya selama jam makan siang restoran pada hari kerja.
    • Penawaran kartu kredit diskon 5% harus dikirimkan dalam 2 salinan.
      • Satu salinan harus diberi tag sebagai OFFER_CATEGORY_BASE_OFFER dengan detail PaymentInstrument disertakan. ValidityPeriod harus ditetapkan untuk mengecualikan jam makan siang pada hari kerja saat penawaran diskon 10% untuk makan siang aktif
      • Satu salinan harus diberi tag sebagai OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER dengan menyertakan detail PaymentInstrument.
    • Semua Penawaran Pembayaran lainnya untuk restoran ini harus diberi tag sebagai OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER.

Proses pengembangan & peluncuran

Selama integrasi Anda, Partner Portal dapat membantu Anda dengan menyediakan informasi dan masukan berdasarkan pengembangan Anda. Proses pengembangan akan mengikuti alur berikut:

  • Integrasi akan terlebih dahulu dikembangkan di lingkungan sandbox. Anda harus menggunakan ekspor produksi (atau bahkan data produksi secara langsung) di lingkungan Google Sandbox. Hal ini membantu memastikan bahwa pengembangan Anda mencakup semua kasus ekstrem dan memungkinkan Google mengevaluasi kualitas data dan lebih membantu Anda berdasarkan model data Anda.
  • Setelah Anda mengupload feed harian Penjual, Layanan, dan Transaksi yang lengkap secara konsisten di lingkungan Google Sandbox, tim Google akan mengevaluasi feed Anda. Setelah tim Google memberikan persetujuan, Anda dapat memasukkan kode Anda ke produksi dan mulai mengirimkan data produksi ke lingkungan Produksi Google.
  • Setelah Anda sepenuhnya menguji integrasi Produksi, tim Google juga akan mengujinya. Setelah semua pengujian selesai, integrasi Anda akan diluncurkan.

Pemantauan

Untuk memastikan pengalaman pengguna yang baik, Google akan memeriksa bahwa penawaran yang diberikan valid, benar, dan memenuhi kriteria kebijakan kami sebelum dan setelah peluncuran. Untuk melakukannya, Google akan menggunakan kombinasi peninjauan manual dan otomatis. Hasil ulasan ini dapat diakses di Dasbor Penawaran di Pusat Aktivitas (khusus produksi). Hasil pemantauan ini dapat digunakan untuk memengaruhi peringkat penawaran.

Pemeriksaan otomatis (Crawler)

Tim kualitas Google menerapkan crawler. Crawler adalah skrip yang mengotomatiskan browser web untuk melakukan beberapa klik dan mengekstrak informasi penawaran, hanya untuk tujuan pengujian kualitas.

Jumlah kueri

Misalnya, jika kami memutuskan untuk mengirim 5.000 pemeriksaan per hari, berarti 5.000 kali per hari (didistribusikan secara merata sepanjang hari, yaitu sekitar satu kali setiap 17 detik), crawler kami melakukan semua tindakan berikut yang akan dilakukan pengguna biasa:

  • Mulai dari Google Penelusuran, lalu klik link partner.
  • Cari informasi penawaran.
  • Jika penawaran memerlukan pemesanan, penawaran akan dilanjutkan ke alur pemesanan untuk mengonfirmasi bahwa penawaran tersedia pada waktu yang ditentukan (tidak ada pemesanan yang akan dilakukan).

Deteksi scraper web

Untuk memastikan bahwa web scraper tidak dilarang (yang dapat menyebabkan web scraper menyimpulkan bahwa penawaran tidak tersedia), pastikan sistem Anda mengizinkan web scraper kami untuk mengkueri halaman Anda setiap saat. Untuk mengidentifikasi web scraper kami:

  • Agen Pengguna web scraper akan berisi string "Google-Offers":
    • Contoh: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google-Offers) Chrome/104.0.5112.101 Safari/537.36
  • Anda juga dapat memeriksa apakah panggilan berasal dari Google menggunakan DNS terbalik seperti yang direkomendasikan dalam "Memverifikasi Googlebot dan crawler Google lainnya". Dalam kasus khusus kami, resolusi DNS terbalik mengikuti pola ini: google-proxy-***-***-***-***.google.com.

Perilaku teknis

Menyimpan ke cache

Untuk mengurangi beban di situs partner, crawler kami umumnya dikonfigurasi untuk mematuhi semua header caching HTTP standar yang ada dalam respons. Artinya, untuk situs yang dikonfigurasi dengan benar, kita menghindari pengambilan konten yang jarang berubah (misalnya, library JavaScript) berulang kali. Untuk mengetahui detail selengkapnya tentang cara menerapkan caching, baca dokumentasi caching HTTP ini.