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 Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
data | array object(Offer) |
Penawaran
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
offer_id | string | Wajib | ID unik penawaran. Wajib. |
entity_ids | array string | Daftar penjual yang berpartisipasi dalam penawaran ini. | |
add_on_offer_applicable_to_all_entities | boolean | Jika benar, penawaran ini berlaku untuk semua entitas di bawah agregator. Hanya berlaku untuk penawaran add-on. | |
offer_source | enum(OfferSource) | Wajib | Penawaran dapat diberikan oleh agregator, penjual perorangan, atau bahkan pihak ketiga sebagai add-on. Wajib. |
action_type | enum(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_modes | array enum(OfferMode) | Wajib | Metode yang dapat digunakan untuk mendapatkan penawaran - datang langsung, reservasi, online, dll. Wajib. |
offer_category | enum(OfferCategory) | Wajib | Kategori penawaran. Wajib. |
source_assigned_priority | angka | 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_details | object(OfferDetails) | Wajib | Detail penawaran seperti diskon, biaya pemesanan, dll. Wajib diisi. |
offer_restrictions | object(OfferRestrictions) | Wajib | Menjelaskan bagaimana penawaran dibatasi, yaitu apakah instrumen pembayaran/langganan diperlukan, apakah penawaran ini dapat digabungkan dengan penawaran lain (dan jenisnya), dll. Wajib. |
coupon | object(Coupon) | Detail kupon. Diperlukan untuk offer_category: OFFER_CATEGORY_ADD_ON_COUPON_OFFER. | |
payment_instrument | object(PaymentInstrument) | Detail instrumen pembayaran. Wajib untuk offer_category: OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER. | |
subscription | object(Subscription) | Detail langganan. Wajib untuk offer_category: OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER. | |
terms | object(Terms) | Wajib | Persyaratan dan ketentuan penawaran. Wajib. |
validity_periods | array object(ValidityPeriod) | Wajib | Periode validitas penawaran. Mendeskripsikan jangka waktu penawaran berlaku, termasuk waktu mulai dan berakhir, hari dalam seminggu, dll. Wajib diisi. |
offer_url | string | URL ke halaman penawaran penjual. Wajib ada untuk offer_category: OFFER_CATEGORY_BASE_OFFER. | |
image_url | string | URL ke gambar penawaran penjual. |
OfferDetails
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
offer_display_text | string | 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_value | object(Money) | Diskon maksimum yang dapat diperoleh. Misalnya, diskon 10% hingga Rp1.000.000. | |
min_spend_value | object(Money) | Nilai pembelanjaan minimum untuk mendapatkan diskon. Misalnya, diskon 10% jika total harga Rp1.000.000 atau lebih. | |
booking_cost | object(Money) | Biaya untuk memesan penawaran ini. Misalnya, diskon Rp1.000.000 untuk tagihan akhir saat meja dipesan dengan biaya Rp150.000. | |
booking_cost_unit | enum(FeeUnit) | Satuan biaya pemesanan. Misalnya, per orang, per transaksi. | |
convenience_fee | object(Fee) | ||
booking_cost_adjustable | boolean | 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_fees | array object(AdditionalFee) | Biaya tambahan yang ditagihkan kepada pengguna. Contoh: kenyamanan, penanganan, dll. |
Uang
Mewakili jumlah uang dengan jenis mata uangnya.
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
currency_code | string | Kode mata uang tiga huruf yang ditentukan dalam ISO 4217. | |
units | string | Seluruh unit jumlahnya.
Misalnya, jika currencyCode adalah "USD" , maka 1 unit adalah satu dolar AS. | |
nanos | angka | 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 Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
unit | enum(FeeUnit) | ||
type | enum(FeeType) | ||
| oneOf(cost) | Hanya satu kolom di oneOf ini yang dapat ditetapkan. |
MoneyRange
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
min_amount | object(Money) | ||
max_amount | object(Money) |
AdditionalFee
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
name | string | Wajib | Nama biaya tambahan. Contoh: biaya administrasi, biaya penanganan, dll. Wajib. |
fee | object(Fee) |
OfferRestrictions
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
combinable_with_other_offers | boolean | 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_categories | array 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_ids | array 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. | |
inclusions | array object(OfferCondition) | Daftar kondisi yang harus dipenuhi agar penawaran valid (misalnya, minuman non-alkohol, makanan). | |
exclusions | array object(OfferCondition) | Daftar kondisi yang akan membatalkan penawaran (misalnya, prasmanan, penawaran kombo, dan koktail). | |
min_guest | angka | Jumlah minimum orang yang diperlukan untuk memanfaatkan penawaran. | |
food_offer_restrictions | object(FoodOfferRestrictions) | Batasan khusus untuk penawaran makanan. |
OfferCondition
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
description | string |
FoodOfferRestrictions
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
meal_types | array 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_courses | boolean | Apakah penawaran hanya dapat diterapkan ke kursus tertentu. |
Kupon
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
text | string | Teks kupon yang ingin ditampilkan penyedia penawaran kepada pengguna. | |
code | string | Wajib | Kode kupon diperlukan untuk menukarkan penawaran. Wajib. |
PaymentInstrument
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
items | array object(PaymentInstrumentItem) | Wajib | Daftar alat pembayaran yang dapat digunakan untuk memanfaatkan penawaran. Wajib. |
provider_name | string | Wajib | Nama penyedia instrumen pembayaran. Dapat berupa partner perbankan, nama bank, dll. Misalnya: American Express, HDFC, ICICI. Wajib. |
PaymentInstrumentItem
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
type | enum(PaymentInstrumentType) | Wajib | Jenis instrumen pembayaran. Wajib. |
name | string | Wajib | Nama item alat pembayaran seperti nama kartu kredit. Misalnya: HDFC Infinia, American Express Platinum. Wajib. |
Langganan
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
name | string | Wajib | Nama langganan. Wajib. |
subscription_auto_added | boolean | Apakah langganan ditambahkan secara otomatis saat pengguna memanfaatkan penawaran ini | |
cost | object(Money) | Wajib | Biaya langganan. Wajib. |
subscription_duration | object(Duration) | Wajib | Durasi masa berlaku langganan dengan subscription_cost. Wajib. |
terms_and_conditions_url | string | URL persyaratan dan ketentuan partner yang relevan dengan langganan ini. |
Durasi
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
seconds | string | 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 | |
nanos | angka | 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 Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
url | string | URL persyaratan dan ketentuan partner. | |
restricted_to_certain_users | boolean | Apakah penawaran dibatasi untuk pengguna tertentu. | |
terms_and_conditions | string | Teks Syarat dan Ketentuan utama yang disediakan oleh partner. | |
additional_terms_and_conditions | array string | Persyaratan dan ketentuan selain T&K utama dari partner. |
ValidityPeriod
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
valid_period | object(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_day | array 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_exceptions | array object(ValidTimeException) | Menentukan pengecualian untuk valid_period dan valid_time_of_week di atas |
ValidityRange
Rentang stempel waktu tertutup-terbuka.
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
valid_from_time | object(Timestamp) | Wajib | Waktu awal rentang (inklusif). Wajib. |
valid_through_time | object(Timestamp) | Waktu akhir rentang (eksklusif). Jika tidak ditetapkan, berarti periode ini tidak akan pernah berakhir. Opsional. |
Stempel waktu
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
seconds | string | 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. | |
nanos | angka | 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 Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
time_windows | object(TimeOfDayRange) | Wajib | Jangka waktu pesanan dapat dilakukan/dipenuhi. Wajib. |
day_of_week | array 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 Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
open_time | object(TimeOfDay) | Waktu yang menunjukkan waktu awal hari dalam rentang (inklusif). Jika tidak disetel, berarti 00:00:00. Opsional. | |
close_time | object(TimeOfDay) | Waktu yang menunjukkan waktu berakhir hari dalam rentang (eksklusif). Jika tidak disetel, berarti 23:59:59. Opsional. |
TimeOfDay
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
hours | angka | 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. | |
minutes | angka | Menit dalam satu jam. Harus lebih besar dari atau sama dengan 0 dan kurang dari atau sama dengan 59. | |
seconds | angka | 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. | |
nanos | angka | Pecahan detik, dalam nanodetik. Harus lebih besar dari atau sama dengan 0 dan kurang dari atau sama dengan 999.999.999. |
ValidTimeException
Nama Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
exceptional_period | object(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
Nama | Deskripsi |
---|---|
OFFER_SOURCE_UNSPECIFIED | |
OFFER_SOURCE_AGGREGATOR |
ActionType
Nama | Deskripsi |
---|---|
ACTION_TYPE_UNSPECIFIED | |
ACTION_TYPE_DINING |
OfferMode
Nama | Deskripsi |
---|---|
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.
Nama | Deskripsi |
---|---|
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
Nama | Deskripsi |
---|---|
FEE_UNIT_UNSPECIFIED | |
FEE_UNIT_PER_GUEST | |
FEE_UNIT_PER_TRANSACTION |
FeeType
Nama | Deskripsi |
---|---|
FEE_TYPE_UNSPECIFIED | |
FEE_TYPE_FIXED | |
FEE_TYPE_VARIABLE |
MealType
Nama | Deskripsi |
---|---|
MEAL_TYPE_UNSPECIFIED | |
MEAL_TYPE_BREAKFAST | |
MEAL_TYPE_LUNCH | |
MEAL_TYPE_DINNER |
PaymentInstrumentType
Nama | Deskripsi |
---|---|
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.
Nama | Deskripsi |
---|---|
DAY_OF_WEEK_UNSPECIFIED | Hari dalam seminggu tidak ditentukan. |
MONDAY | Senin |
TUESDAY | Selasa |
WEDNESDAY | Rabu |
THURSDAY | Kamis |
FRIDAY | Jumat |
SATURDAY | Sabtu |
SUNDAY | Minggu |
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 Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
discount_percent | angka | Tidak dapat muncul bersamaan dengan | 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_value | object(Money) | Tidak dapat muncul bersamaan dengan | Nilai tetap diskon. |
other_offer_detail_text | string | Tidak dapat muncul bersamaan dengan | 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 Kolom | Jenis | Persyaratan | Deskripsi |
---|---|---|---|
amount | object(Money) | Tidak dapat muncul bersamaan dengan | |
amount_range | object(MoneyRange) | Tidak dapat muncul bersamaan dengan |
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
, atauCoupon
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
atauadd_on_offer_applicable_to_all_entities
.
- Bergantung pada jenisnya, data yang relevan untuk
- 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 sebagaiOFFER_CATEGORY_ADD_ON_PAYMENT_OFFER
dengan detailPaymentInstrument
disertakan. - Penawaran minuman gratis dengan kode kupon harus dikirim sebagai
OFFER_CATEGORY_ADD_ON_COUPON_OFFER
dengan detailCoupon
yang disertakan.
- Penawaran kartu kredit diskon 5% harus dikirim sebagai 2 salinan, satu ditandai sebagai
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 sebagaiOFFER_CATEGORY_ADD_ON_PAYMENT_OFFER
.
- Penawaran datang langsung 10% harus diberi tag
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 detailPaymentInstrument
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 detailPaymentInstrument
.
- Satu salinan harus diberi tag sebagai
- Semua Penawaran Pembayaran lainnya untuk restoran ini harus diberi tag sebagai
OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER
.
- Penawaran diskon 10% harus menetapkan
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.