מבצעים
השילוב של מבצעים מאפשר לכם להעביר מידע מובנה על קידומי מכירות והנחות של מוכרים שחלים על שירותים ספציפיים בזמנים ספציפיים. המבצעים מורכבים מהמבצע עצמו (אחוז הנחה, הנחה בשקלים וכו'), חלונות תוקף (שעות ספציפיות, ימים בשבוע וכו') ושימושים רלוונטיים (אפשר להשתמש במבצע רק בשירותים מסוימים), וגם שילובים מורכבים של הגבלות.
דוגמאות למוצרים:
- 50% הנחה על מנות ראשונות בימי רביעי וחמישי בדצמבר, בין השעות 12:00 עד 17:00
- קונים קינוח אחד ומקבלים קינוח נוסף בחינם בארוחת ערב ליום האם, בין השעות 18:00 עד 22:00
- הנחה של 5$ על מנה עיקרית בבראנץ' בכל יום ראשון בין 10:00 ל-14:00
- הנחה של 10% על הזמנה במקום, שאפשר לשלב עם הנחה של 5% למנויי פרימיום והנחה של 5% אם המשתמש משלם דרך האפליקציה.
כדי שמבצע ייכלל בשילוב, הוא צריך להתאים למודל הנתונים הטכני ולעמוד בדרישות הסף שלנו. חשוב לעיין במדיניות שלנו בנושא מבצעים כדי לוודא שהשילוב עומד בדרישות, ולקבל הוראות לגבי מה שצריך לעשות עם מבצעים שלא עומדים בדרישות הטכניות.
הטמעת מבצעים
השילוב של המבצעים מורכב משני פידים שיועלו מדי יום או בתדירות שתבטיח רמת דיוק גבוהה (כלומר, תפחית את הסיכוי שהנתונים לא יהיו עדכניים):
- אחת מהאפשרויות הבאות:
- פיד של מוכרים
(באמצעות הגדרת
Merchant) - או
פיד ישויות
(באמצעות ההגדרה
Generic)
- פיד של מוכרים
(באמצעות הגדרת
- וגם
פיד מבצעים
(באמצעות ההגדרה
Generic)
OfferFeed
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
data | מערך של אובייקטים(Offer) |
מבצע
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
offer_id | מחרוזת | חובה | המזהה הייחודי של המוצר. חובה. |
entity_ids | מערך של מחרוזות | רשימת מוֹכרים שמשתתפים במבצע הזה. | |
add_on_offer_applicable_to_all_entities | בוליאני | אם הערך הוא True, המבצע הזה חל על כל הישויות שמשויכות למצטבר. רלוונטי רק למוצרים משלימים. | |
offer_source | enum(OfferSource) | חובה | את המבצע יכולים לספק אתר אגרגטור, מוכר ספציפי או אפילו צד שלישי כתוסף. חובה. |
action_type | enum(ActionType) | חובה | השירות שמספק את המבצע. מזהה מבצע יכול להשתייך רק לסוג פעולה אחד. אם אפשר לשתף מבצע בכמה סוגי שירותים, המערכת צפויה ליצור מבצעים כפולים עם מזהים ייחודיים לכל סוג שירות. חובה. |
offer_modes | מערך של טיפוסים בני מנייה (enum)(OfferMode) | חובה | הדרכים שבהן אפשר לממש את המבצע – הגעה למקום, הזמנה מראש, אונליין וכו'. חובה. |
offer_category | enum(OfferCategory) | חובה | הקטגוריה של המבצע. חובה. |
source_assigned_priority | number | מספר שלם חיובי ([1-100], כאשר 1 מייצג את העדיפות הגבוהה ביותר) שמציין את רמת העדיפות של המוצר שהוקצתה על ידי המקור. כשכמה מבצעים זמינים אצל אותו מוכר, זה יהיה אות לדירוג המבצעים. הערך 0 מייצג מצב שבו העדיפות לא מוגדרת. | |
offer_details | אובייקט(OfferDetails) | חובה | פרטי המבצע, כמו ההנחה, עלות ההזמנה וכו'. חובה. |
offer_restrictions | אובייקט(OfferRestrictions) | חובה | תיאור של ההגבלות על המבצע, כלומר אם נדרש מינוי או אמצעי תשלום, אם אפשר לשלב את המבצע הזה עם מבצעים אחרים (ואילו סוגים), וכו'. חובה. |
coupon | אובייקט(Coupon) | פרטים של שובר. חובה עבור offer_category: OFFER_CATEGORY_ADD_ON_COUPON_OFFER. | |
payment_instrument | אובייקט(PaymentInstrument) | פרטים של אמצעי תשלום. חובה לקטגוריית המבצע: OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER. | |
subscription | object(Subscription) | פרטי המינוי. חובה להגדיר את המאפיין offer_category: OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER. | |
terms | אובייקט(Terms) | חובה | התנאים וההגבלות של המבצע. חובה. |
validity_periods | מערך של אובייקטים(ValidityPeriod) | חובה | תקופת התוקף של המבצע. תיאור של תקופת התוקף של המבצע, כולל שעות התחלה וסיום, ימים בשבוע וכו'. שדה חובה. |
offer_url | מחרוזת | כתובת ה-URL של דף המבצע של המוכר. חובה למבצע מסוג offer_category: OFFER_CATEGORY_BASE_OFFER. | |
tags | מערך של טיפוסים בני מנייה (enum)(OfferTag) | תגים מיוחדים שמשויכים למוצר. המאפיין הזה משמש לזיהוי מבצעים מיוחדים כמו 'חגיגי', 'הדירוג הכי גבוה', 'הכי הרבה הזמנות' וכו'. | |
brand_id | מחרוזת | מזהה את המותג שמשויך למוצר. אם המדיניות לא מוגדרת, המערכת תשתמש במותג שמוגדר כברירת מחדל. | |
availability_level | enum(AvailabilityLevel) | רמת הזמינות של המבצע. |
OfferDetails
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
offer_display_text | מחרוזת | חובה | טקסט המבצע שספק המבצע רוצה להציג ללקוחות בדף תוצאות החיפוש. חשוב לזכור: יכול להיות שזה לא בדיוק מה שיוצג למשתמשים, ויכול להיות שנשתמש במטא-נתונים אחרים כדי לשכתב או לנסח מחדש את הטקסט. חובה. |
| oneOf(offer_specification) | חובה | אפשר להגדיר רק אחד מהשדות ב-oneOf הזה. |
max_discount_value | object(Money) | ההנחה המקסימלית שאפשר לקבל. לדוגמה, 10% הנחה עד 400 ש"ח. | |
min_spend_value | object(Money) | סכום ההוצאה המינימלי שנדרש כדי לקבל את ההנחה. לדוגמה, 10% הנחה כשמחיר המוצר הכולל הוא 100 $או יותר. | |
booking_cost | object(Money) | העלות של הזמנת המבצע הזה. לדוגמה, הנחה של 100$ מהחשבון הסופי כשמזמינים שולחן בעלות של 15$. | |
booking_cost_unit | enum(FeeUnit) | יחידת העלות של ההזמנה. לדוגמה, לאדם, לעסקה. | |
convenience_fee | אובייקט(Fee) | ||
booking_cost_adjustable | בוליאני | אם אפשר לשנות את עלות ההזמנה, כלומר עלות ההזמנה מופחתת מהחשבון הסופי. לדוגמה: 30% הנחה על ארוחת ערב בהזמנה מראש. עלות ההזמנה היא 15 $והיא תנוכה מהחשבון הסופי. לכן החיוב הסופי הוא: סך ההוצאות – 30% – 15$ | |
additional_fees | מערך של אובייקטים(AdditionalFee) | עמלות נוספות שבהן מחויב המשתמש. דוגמאות: עמלת נוחות, עמלת טיפול, עמלת משלוח, עמלת אריזה, דמי שירות וכו'. | |
offer_discount_type | enum(OfferDiscountType) | סוג ההנחה. | |
gift_card_info | object(GiftCardInfo) | פרטים ספציפיים לגבי מבצעים על כרטיסי מתנה. |
כסף
מייצג סכום כסף עם סוג המטבע.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
currency_code | מחרוזת | קוד המטבע בן שלוש האותיות, כפי שמוגדר בתקן ISO 4217. | |
units | number | מספר היחידות השלמות של הסכום.
לדוגמה: אם הערך של currencyCode הוא "USD", המשמעות היא ש-1 יחידה = 1 דולר ארה"ב. | |
nanos | number | מספר יחידות הננו (10^-9) של הסכום.
הערך חייב להיות בין -999,999,999 ל- +999,999,999, כולל.
אם הערך של units הוא חיובי, הערך של nanos חייב להיות חיובי או אפס.
אם הערך של units הוא אפס, הערך של nanos יכול להיות חיובי, אפס או שלילי.
אם הערך של units הוא שלילי, הערך של nanos חייב להיות שלילי או אפס.
לדוגמה, עלות של -1.75$ מיוצגת על ידי units=-1 וגם nanos=-750,000,000. |
עמלה
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
unit | enum(FeeUnit) | ||
type | enum(FeeType) | ||
| oneOf(cost) | אפשר להגדיר רק אחד מהשדות ב-oneOf הזה. |
MoneyRange
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
min_amount | object(Money) | ||
max_amount | אובייקט(Money) |
AdditionalFee
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
name | מחרוזת | חובה | השם של העמלה הנוספת. דוגמאות: עמלת נוחות, דמי טיפול וכו'. חובה. |
fee | object(Fee) |
GiftCardInfo
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
| oneOf(denomination_type) | אפשר להגדיר רק אחד מהשדות ב-oneOf הזה. |
FixedDenominations
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
amounts | מערך של אובייקטים(Money) | רשימה של כל הערכים הנקובים הזמינים (למשל, [100, 500, 1000]). |
OfferRestrictions
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
combinable_with_other_offers | בוליאני | האם אפשר לשלב את המבצע הזה עם מבצעים אחרים. אם הערך הוא True, השותפים יכולים לציין עם אילו מבצעים אפשר לשלב את המבצע הזה. אם מגדירים גם את combinable_offer_categories וגם את combinable_offer_ids, כל מבצע שעומד באחד מהתנאים שלמעלה יהיה ניתן לשילוב. | |
combinable_offer_categories | מערך של enum(OfferCategory) | רשימה של סוגי מבצעים שאפשר לשלב עם המבצע הזה. לדוגמה, יכול להיות שאפשר לשלב את המבצע הזה עם שוברים אחרים. אם הערך של combinable_with_other_offers הוא true והשדה הזה לא מוגדר, אפשר לשלב את כל סוגי המבצעים. | |
combinable_offer_ids | מערך של מחרוזות | רשימה של מזהי מבצעים (offer_id) שאפשר לשלב עם המבצע הזה. יכול להיות שיהיה אפשר לשלב חלק מהמבצעים רק עם מזהי מבצעים ספציפיים אחרים (אפשר להתייחס אליהם כמבצעים ראשיים). אם הערך של combinable_with_other_offers הוא true והשדה הזה לא מוגדר, אפשר יהיה לשלב את כל מזהי המבצעים. | |
inclusions | מערך של אובייקטים(OfferCondition) | רשימת התנאים שצריכים להתקיים כדי שהמבצע יהיה תקף (למשל, משקאות לא אלכוהוליים, אוכל). | |
exclusions | מערך של אובייקטים(OfferCondition) | רשימת התנאים שבעקבותיהם המבצע לא תקף (לדוגמה, בופה, מבצעים על ארוחות משולבות וקוקטיילים). | |
min_guest | number | מספר האנשים המינימלי שנדרש כדי לממש את המבצע. הערה: השדה הזה רלוונטי רק להזמנות במסעדות, ואין להשתמש בו בענפים אחרים. | |
food_offer_restrictions | object(FoodOfferRestrictions) | הגבלות ספציפיות על מבצעים של אוכל. | |
max_redemption_count | number | הגבלות ספציפיות לגבי מספר הפעמים שאפשר להשתמש במבצע הזה. הערך 0 מציין שאין מגבלות. לדוגמה, אם הערך הוא 3, המשתמש יכול לממש את המבצע 3 פעמים. | |
max_total_discount_value | object(Money) | ההנחה המקסימלית שאפשר לקבל בכמה עסקאות במסגרת המבצע הזה. | |
special_conditions | מערך של מחרוזות | תנאים מיוחדים של המבצע שחובה להציג למשתמש. דוגמאות: "השובר תקף רק לתשלום ב[אזור]", "לא כולל תשלומים אונליין", "אפשר להשתמש בשובר המתנה במהלך המבצע". |
OfferCondition
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
description | מחרוזת |
FoodOfferRestrictions
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
meal_types | מערך של טיפוסים בני מנייה (enum)(MealType) | סוגי הארוחות שאפשר להשתמש בהן במבצע, כמו ארוחת צהריים או ארוחת ערב. אם לא מגדירים את המאפיין, המבצע יכול לחול על כל סוגי הארוחות. | |
restricted_to_certain_courses | בוליאני | אם אפשר להחיל את המבצע רק על קורסים מסוימים. |
שובר
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
text | מחרוזת | טקסט השובר שספק המבצע רוצה להציג למשתמשים. | |
code | מחרוזת | חובה | נדרש קוד שובר כדי לממש את המבצע. חובה. |
PaymentInstrument
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
items | מערך של אובייקטים(PaymentInstrumentItem) | חובה | רשימה של אמצעי תשלום שאפשר להשתמש בהם כדי לממש את המבצע. חובה. |
provider_name | מחרוזת | שם הספק של אמצעי התשלום. זה יכול להיות שותף בנקאי, שם של בנק וכו'. לדוגמה: אמריקן אקספרס, HDFC, ICICI. |
PaymentInstrumentItem
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
type | enum(PaymentInstrumentType) | חובה | סוג אמצעי התשלום. חובה. |
name | מחרוזת | חובה | שם הפריט של אמצעי התשלום, כמו שם כרטיס האשראי. לדוגמה: HDFC Infinia, אמריקן אקספרס Platinum. חובה. |
יש אפשרות להירשם למינוי
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
name | מחרוזת | חובה | שם המינוי. חובה. |
subscription_auto_added | בוליאני | אם המינוי מתווסף באופן אוטומטי כשמשתמש מממש את המבצע הזה | |
cost | object(Money) | חובה | עלות המינוי. חובה. |
subscription_duration | object(Duration) | חובה | משך התוקף של המינוי שמוגדר במאפיין עלות המינוי [subscription_cost]. חובה. |
terms_and_conditions_url | מחרוזת | כתובת ה-URL של התנאים וההגבלות של השותף שרלוונטיים למינוי הזה. |
משך
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
seconds | number | שניות חתומות של משך הזמן. הערך חייב להיות בין -315,576,000,000 לבין +315,576,000,000, כולל. הערה: הגבולות האלה מחושבים לפי: 60 שניות/דקה * 60 דקות/שעה * 24 שעות/יום * 365.25 ימים/שנה * 10,000 שנים | |
nanos | number | שבריר חתום של שנייה ברזולוציית ננו-שנייה של טווח הזמן. משכי זמן של פחות משנייה מיוצגים באמצעות שדה seconds עם הערך 0 ושדה nanos עם ערך חיובי או שלילי. אם משך הזמן הוא שנייה אחת או יותר, הערך בשדה nanos צריך להיות שונה מאפס, וסימן הערך צריך להיות זהה לסימן הערך בשדה seconds. הערך חייב להיות בין -999,999,999 ל-+999,999,999, כולל. |
תנאים
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
url | מחרוזת | כתובת ה-URL של התנאים וההגבלות של השותף. | |
restricted_to_certain_users | בוליאני | האם המבצע מוגבל למשתמשים מסוימים. | |
terms_and_conditions | מחרוזת | הטקסט הראשי של התנאים וההגבלות שסופק על ידי השותף. | |
additional_terms_and_conditions | מערך של מחרוזות | תנאים והגבלות בנוסף לתנאים ולהגבלות העיקריים של השותף. |
ValidityPeriod
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
valid_period | object(ValidityRange) | חותמת הזמן של ההתחלה ושל הסיום שבהן המבצע תקף. השעות האלה צריכות לייצג ימים נפרדים, כלומר שעת ההתחלה צריכה להיות 00:00 (תחילת היום) ושעת הסיום צריכה להיות 00:00 (לא כולל) ביום שבו מסתיימת תקופת התוקף. | |
time_of_day | מערך של אובייקטים(TimeOfDayWindow) | מציינים את מרווח הזמן התקף ביום נתון ואת הימים שבהם המבצע זמין. אם מסגרת הזמן חוצה את חצות (למשל, מ-22:00 עד 02:00), צריך להשתמש בחלונות נפרדים לכל יום: אחד שמסתיים ב-23:59:59 ואחד שמתחיל ב-00:00 ביום הבא.
לדוגמה:
שני: 10:00 עד 17:00
שלישי: 10:00 עד 14:00
שלישי: 17:00 עד 19:00
רביעי, חמישי, שישי, שבת, ראשון: 15:00 עד 19:00
אם לא מגדירים שעות, המבצע זמין בכל שעות הפעילות של העסק שמוגדרות במאפיין valid_period. | |
time_exceptions | מערך של אובייקטים(ValidTimeException) | מציין חריגים ל-valid_period ול-valid_time_of_week שלמעלה | |
date_exceptions | מערך של אובייקטים(Date) | מציין חריגים בימים ל-valid_period ול-time_of_day שלמעלה | |
validity_scope | enum(ValidityScope) | מציינת את היקף תקופת התוקף. | |
validity_duration_in_days | number | משך הזמן (בימים) שבו השובר או הקופון תקפים, מרגע הרכישה. |
ValidityRange
טווח חותמות זמן סגור-פתוח.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
valid_from_time | אובייקט(Timestamp) | חובה | שעת ההתחלה של הטווח (כולל). חובה. |
valid_through_time | object(Timestamp) | שעת הסיום של הטווח (לא כולל). אם לא מגדירים את המדיניות, התקופה הזו לא תסתיים אף פעם. אופציונלי. |
חותמת זמן
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
seconds | number | מייצג שניות של זמן UTC מאז ראשית זמן יוניקס (Unix epoch) 1970-01-01T00:00:00Z. הערך צריך להיות בין -62135596800 ל-253402300799, כולל (שמתאים לטווח 0001-01-01T00:00:00Z עד 9999-12-31T23:59:59Z). | |
nanos | number | שבריר לא שלילי של שנייה ברזולוציית ננו-שנייה. השדה הזה הוא החלק של הננו-שניות במשך הזמן, ולא חלופה לשניות. ערכים שליליים של שניות עם שברים עדיין צריכים לכלול ערכים חיוביים של ננו-שניות שסופרים קדימה בזמן. הערך חייב להיות בין 0 ל-999,999,999, כולל. |
TimeOfDayWindow
האובייקט TimeWindow הוא ישות מורכבת שמתארת רשימה של חלונות זמן שבהם אפשר לבצע או למלא את ההזמנה של המשתמש.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
time_windows | object(TimeOfDayRange) | חובה | חלון הזמן שבו אפשר לבצע או למלא את ההזמנה. חובה. |
day_of_week | מערך של טיפוסים בני מנייה (enum)(DayOfWeek) | רשימת הימים בשבוע שבהם חלונות הזמן מופעלים. אם לא מוגדרים ימים, המדיניות חלה על כל ימות השבוע. אופציונלי. | |
day_of_month | מערך של אובייקטים(DayOfMonthRange) | הימים בחודש שבהם החלונות חלים. אם לא מוגדרים ימים, המשמעות היא שהמדיניות חלה על כל הימים בחודש. אופציונלי. |
TimeOfDayRange
טווח תאריכים סגור-פתוח.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
open_time | object(TimeOfDay) | שעה שמציינת את תחילת היום בטווח (כולל). אם לא מגדירים את השעה, ברירת המחדל היא 00:00:00. אופציונלי. | |
close_time | object(TimeOfDay) | שעה שמציינת את שעת הסיום של היום בטווח (לא כולל). אם לא מגדירים שעה, ברירת המחדל היא 23:59:59. אופציונלי. |
TimeOfDay
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
hours | number | שעות ביום בפורמט של 24 שעות. הערך חייב להיות גדול מ-0 או שווה ל-0, ובדרך כלל הוא צריך להיות קטן מ-23 או שווה ל-23. יכול להיות ש-API יאפשר את הערך '24:00:00' בתרחישים כמו שעת סגירה של עסק. | |
minutes | number | מספר הדקות אחרי השעה השלמה. הערך חייב להיות גדול מ-0 או שווה לו, וקטן מ-59 או שווה לו. | |
seconds | number | שניות בדקה. הערך חייב להיות גדול מ-0 או שווה לו, ובדרך כלל קטן מ-59 או שווה לו. ב-API מסוים יכול להיות שהערך 60 יהיה מותר אם הוא מאפשר דקות מעוברות. | |
nanos | number | חלקיקי שניות, בננו-שניות. הערך חייב להיות גדול מ-0 או שווה לו, וקטן מ-999,999,999 או שווה לו. |
DayOfMonthRange
טווח של ימים בחודש שחל על כל חודשי השנה.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
valid_from_day | number | חובה | היום שבו הטווח מתחיל (כולל). חובה. |
valid_through_day | number | היום האחרון בטווח (כולל). אם לא מוגדר ערך, המשמעות היא שהטווח הזה מייצג יום אחד (valid_from_day). אופציונלי. |
ValidTimeException
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
exceptional_period | אובייקט(ValidityRange) | חותמת הזמן של ההתחלה והסיום של התקופה שבה המבצע לא תקף. השעות האלה צריכות לייצג ימים שונים, כלומר שעת ההתחלה צריכה להיות 00:00 (תחילת היום) ושעת הסיום צריכה להיות 00:00 (לא כולל) ביום שבו מסתיים תקופת החריגה. |
תאריך
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
year | number | השנה של התאריך. חייב להיות בין 1 ל-9999, או 0 כדי לציין תאריך בלי שנה. | |
month | number | חודש בשנה. הערך חייב להיות בין 1 ל-12, או 0 כדי לציין שנה בלי חודש ויום. | |
day | number | יום בחודש. הערך חייב להיות בין 1 ל-31 ותקף לשנה ולחודש, או 0 כדי לציין שנה בלבד או שנה וחודש שבהם היום לא משמעותי. |
OfferSource
| שם | תיאור |
|---|---|
OFFER_SOURCE_UNSPECIFIED | |
OFFER_SOURCE_AGGREGATOR |
ActionType
מייצג את מצב המימוש של המבצע. אם אפשר לשתף מבצע בכמה מצבי מילוי הזמנות, צריך ליצור מבצעים כפולים לכל מצב מילוי הזמנות.
| שם | תיאור |
|---|---|
ACTION_TYPE_UNSPECIFIED | |
ACTION_TYPE_FOOD_DELIVERY | המבצע תקף לשירותי משלוחי מזון. |
ACTION_TYPE_FOOD_TAKEOUT | המבצע חל על הזמנות של אוכל בטייק אוויי או באיסוף עצמי. |
ACTION_TYPE_DINING | המבצע מיועד לארוחה במסעדה עצמה. |
ACTION_TYPE_APPOINTMENT | המבצע רלוונטי לשירותים של קביעת פגישות. |
ACTION_TYPE_SHOPPING_IN_STORE | המבצע תקף לרכישות אופליין בחנות הפיזית. |
OfferMode
מציינים את השיטה או הערוץ שדרכם המשתמש יכול לממש את המבצע.
| שם | תיאור |
|---|---|
OFFER_MODE_OTHER | השתמשו בשיטה הזו לשיטות אספקה שלא נכללות במצבים ספציפיים אחרים. |
OFFER_MODE_WALK_IN | המבצע זמין לביקורים במקום ללא הזמנה מראש. |
OFFER_MODE_FREE_RESERVATION | המבצע תקף כשמשתמש מבצע הזמנה שלא מחייבת תשלום מראש. |
OFFER_MODE_PAID_RESERVATION | המבצע חל כשמשתמש מבצע הזמנה שדורשת תשלום מראש. |
OFFER_MODE_ONLINE_ORDER | המבצע תקף להזמנות שבוצעו דרך אתר או פלטפורמה דיגיטלית. |
OFFER_MODE_GIFT_CARD_PURCHASE | מציין שרכישת כרטיס מתנה היא השלב העיקרי שנדרש כדי לקבל את המבצע. |
OfferCategory
קטגוריית המבצע. מבצע בסיסי הוא מבצע רגיל שזמין לכל הלקוחות, כמו 10% הנחה על קנייה מעל 100$. אם מבצע בסיסי מוגבל על ידי שובר או אמצעי תשלום, השדות הרלוונטיים יוגדרו. יש לנו גם מבצעים על חבילות תוכן כמו ADD_ON_PAYMENT_OFFER. אפשר להוסיף את המבצעים האלה למבצעים אחרים כדי לקבל הנחות נוספות.
| שם | תיאור |
|---|---|
OFFER_CATEGORY_UNSPECIFIED | אין להשתמש בפידים בערך UNSPECIFIED או בערך ברירת המחדל של enum. |
OFFER_CATEGORY_BASE_OFFER | |
OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER | |
OFFER_CATEGORY_ADD_ON_COUPON_OFFER | |
OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER | |
OFFER_CATEGORY_ADD_ON_FEE_REDUCTION_OFFER |
FeeUnit
| שם | תיאור |
|---|---|
FEE_UNIT_UNSPECIFIED | אין להשתמש בערך ברירת המחדל או בערך UNSPECIFIED של סוג הנתונים enum בפידים. |
FEE_UNIT_PER_GUEST | |
FEE_UNIT_PER_TRANSACTION |
FeeType
| שם | תיאור |
|---|---|
FEE_TYPE_UNSPECIFIED | אין להשתמש בערך ברירת המחדל או בערך UNSPECIFIED של סוג הנתונים enum בפידים. |
FEE_TYPE_FIXED | |
FEE_TYPE_VARIABLE |
OfferDiscountType
| שם | תיאור |
|---|---|
OFFER_DISCOUNT_TYPE_UNSPECIFIED | |
OFFER_DISCOUNT_TYPE_INSTANT_DISCOUNT | |
OFFER_DISCOUNT_TYPE_CASHBACK | |
OFFER_DISCOUNT_TYPE_REWARD_POINT |
MealType
| שם | תיאור |
|---|---|
MEAL_TYPE_UNSPECIFIED | אין להשתמש בפידים בערך UNSPECIFIED או בערך ברירת המחדל של enum. |
MEAL_TYPE_BREAKFAST | |
MEAL_TYPE_LUNCH | |
MEAL_TYPE_DINNER |
PaymentInstrumentType
| שם | תיאור |
|---|---|
PAYMENT_INSTRUMENT_TYPE_UNSPECIFIED | אין להשתמש בפידים בערך UNSPECIFIED או בערך ברירת המחדל של enum. |
PAYMENT_INSTRUMENT_CREDIT_CARD | |
PAYMENT_INSTRUMENT_DEBIT_CARD | |
PAYMENT_INSTRUMENT_BANK_ACCOUNT | |
PAYMENT_INSTRUMENT_UPI | |
PAYMENT_INSTRUMENT_ONLINE_WALLET | |
PAYMENT_INSTRUMENT_NETBANKING |
DayOfWeek
מייצג יום בשבוע.
| שם | תיאור |
|---|---|
DAY_OF_WEEK_UNSPECIFIED | היום בשבוע לא צוין. |
MONDAY | שני |
TUESDAY | שלישי |
WEDNESDAY | רביעי |
THURSDAY | חמישי |
FRIDAY | שישי |
SATURDAY | שבת |
SUNDAY | ראשון |
ValidityScope
היקף תקופת התוקף, כלומר הפעולות הספציפיות שתקופת התוקף הזו חלה עליהן.
| שם | תיאור |
|---|---|
VALIDITY_SCOPE_UNSPECIFIED | |
VALIDITY_SCOPE_CLAIM | |
VALIDITY_SCOPE_REDEEM |
OfferTag
| שם | תיאור |
|---|---|
OFFER_TAG_UNSPECIFIED | אין להשתמש בערך ברירת המחדל או בערך UNSPECIFIED של סוג הנתונים enum בפידים. |
OFFER_TAG_NEW_YEAR_SPECIAL | |
OFFER_TAG_VALENTINES_SPECIAL |
AvailabilityLevel
מציין את סטטוס המלאי או הזמינות של מוצר.
| שם | תיאור |
|---|---|
AVAILABILITY_LEVEL_UNSPECIFIED | |
AVAILABILITY_LEVEL_LOW | מציין שהמבצע עומד להסתיים. כדאי למשתמשים לממש את הפרס לפני שיהיה חסר במלאי. יכול להיות שנוסיף את האפשרויות MEDIUM ו-HIGH בהמשך. |
offer_specification
ההנחה יכולה להיות אחוז או ערך קבוע שמנוכה מהערך הכולל. לדוגמה: 1. הנחה של 10% על החשבון הסופי. 2. 15$ הנחה על הזמנה. מוכרים יכולים גם להציע הנחות מותאמות אישית, כמו "קונים אחד ומקבלים אחד במתנה", דרך שדות המפרט הרלוונטיים. חובה.
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
discount_percent | number | לא יכול להתקיים יחד עם | אחוז ההנחה על החשבון. [0, 100] במבצעים של 1+1 או 50% הנחה על כל הארוחה (למשל, מזנון 1+1, הנחה של 1+1 על כל החשבון, הנחה של 1+1 על תפריט קבוע), אפשר להגדיר את הערך הזה ל-50. |
discount_value | אובייקט(Money) | לא יכולים להתקיים יחד עם | ערך קבוע של ההנחה. |
other_offer_detail_text | מחרוזת | לא יכול להיות שיהיו גם | טקסט חופשי שמתאר את ההנחה. אם יש מבצעים ספציפיים של 1+1 (למשל, 1+1 על משקאות, מנה עיקרית נוספת, 1+1 על פריטים נבחרים בתפריט), צריך לפרט אותם כאן. |
עלות
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
amount | object(Money) | לא יכול להתקיים יחד עם | |
amount_range | object(MoneyRange) | לא ניתן להשתמש ב- |
denomination_type
| שם השדה | סוג | דרישה | תיאור |
|---|---|---|---|
fixed_denominations | object(FixedDenominations) | לא יכול להתקיים יחד עם | המאפיין הזה משמש כשכרטיס המתנה זמין בסכומים ספציפיים וקבועים. |
custom_range | אובייקט(MoneyRange) | לא ניתן להשתמש ב- | משמש כשהמותג מאפשר למשתמשים לבחור ערך נקוב מותאם אישית (גמיש) בטווח מוגדר. |
העלאת פיד
צריך להעלות את פיד המוצרים לשרת ה-SFTP של פידים Generic. פועלים לפי ההוראות במדריך בנושא שימוש בשרת SFTP של פיד כללי ומשתמשים בערך google.offer של המאפיין name בקובץ התיאור.
תדירות ההעלאה
באופן כללי, Google מצפה להעלאת פיד אחת ביום. אפשר להגביר או להפחית את התדירות בהתאם לתדירות העדכונים של המוצרים בצד שלכם, כדי להבטיח רמת דיוק גבוהה באופן עקבי. התייעצו עם איש הקשר שלכם ב-Google.
הנתונים יופיעו ב-Google תוך כמה שעות.
סיווג מבצעים
-
OFFER_CATEGORY_BASE_OFFER: מבצעים שאפשר לממש בנפרד בלי לשלב אותם עם מבצעים אחרים. אפשר להציג מודעות ב:- הנחות קבועות על כל החשבון (למשל, 20% הנחה)
- מבצעים על מינויים (למשל, קינוח חינם עם מינוי)
- מבצעים על תשלום במקרים שבהם אין מבצעים בסיסיים אחרים למסעדה
- הערה: אין להגדיר מבצעים של ויתור על עמלות או הנחות בעמלות בכל הפלטפורמה כמבצעים בסיסיים.
- מבצעים על תוספים: מבצעים שנדרש מימוש של מבצע בסיסי כדי לממש אותם. למשל:
OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER(לדוגמה, 10% הנחה נוספת על שימוש בכרטיס אשראי ספציפי)OFFER_CATEGORY_ADD_ON_COUPON_OFFER(לדוגמה, משקה חינם עם קוד שובר ספציפי)OFFER_CATEGORY_ADD_ON_SUBSCRIPTION_OFFER(לדוגמה, הנחה נוספת של 10% למנויים)OFFER_CATEGORY_ADD_ON_FEE_REDUCTION_OFFER(למשל, משלוח חינם או הנחה בדמי המשלוח)
עוד דברים שכדאי לבדוק:
- מבצעים להנחה או לפטור מתשלום על כל הפלטפורמה לא צריכים להיות מוגדרים כמבצעים בסיסיים (
OFFER_CATEGORY_BASE_OFFER). הם צריכים להיות מוגדרים רק כ-OFFER_CATEGORY_ADD_ON_FEE_REDUCTION_OFFERכדי להשלים מבצע בסיסי פעיל אחר. - אם למסעדה אין מבצע בסיסי, לא יוצגו מוצרים משלימים.
אם אין מבצע בסיסי, כל מבצע של תשלום, מינוי או שובר שאפשר לממש בלי להוסיף אותו למבצע אחר צריך להיות מתויג בתור
OFFER_CATEGORY_BASE_OFFER.- בהתאם לסוג, צריך להגדיר את הנתונים הרלוונטיים עבור
PaymentInstrument,SubscriptionאוCoupon. - השותפים צריכים לספק 2 עותקים של כל אחת מההצעות האלה כדי לכסות תרחישים שבהם הן פועלות גם כהצעות בסיסיות וגם כמוצרים משלימים. אחרי זה אפשר להגדיר את הטקסט של המוצר המשלים לכמה מסעדות באמצעות
entity_idsאוadd_on_offer_applicable_to_all_entities.
- בהתאם לסוג, צריך להגדיר את הנתונים הרלוונטיים עבור
- אם למסעדה יש כמה מבצעים בסיסיים שאפשר לשלב ביניהם, צריך לתייג את כל המבצעים הבסיסיים בתור
OFFER_CATEGORY_BASE_OFFER. בנוסף, צריך לשלוח מבצעים בסיסיים שקשורים לתשלום, למינוי או לשובר בתור סוג המבצע הרלוונטי של מוצר נלווה. - צריך להשתמש ב-
ValidityPeriodכדי להפעיל מבצעים על תוספים כמבצעים בסיסיים רק אם אין מבצע בסיסי פעיל. - איחוד של מבצעים זהים לפי אמצעי תשלום: אם כמה אמצעי תשלום חולקים את אותו ערך הנחה בדיוק (לדוגמה, כרטיס אשראי, כרטיס חיוב מיידי ו-Net Banking שמציעים הנחה של 5%), צריך לקבץ אותם באובייקט
Offerמאוחד יחיד במקום לשלוח מבצעים כפולים נפרדים. כדי לעשות את זה, מאכלסים את הרשימהpayment_instrument.itemsבכל אמצעי התשלום הרלוונטיים. כך אפשר לצמצם את העומס בפריסה של ממשק Google ולמנוע ירידה פוטנציאלית בדירוג בגלל הגבלות כפולות מיותרות.
תרחישים לדוגמה:
מסעדה מציעה 5% הנחה למשלמים בכרטיס אשראי ספציפי ומשקה חינם עם קוד שובר ספציפי
- מבצע של 5% הנחה על כרטיס אשראי צריך להישלח בשני עותקים, אחד מתויג בתור
OFFER_CATEGORY_BASE_OFFERואחד מתויג בתורOFFER_CATEGORY_ADD_ON_PAYMENT_OFFERעם הפרטים שלPaymentInstrumentכלולים. - מבצע של משקה חינם עם קוד שובר צריך להישלח כ-
OFFER_CATEGORY_ADD_ON_COUPON_OFFERעם הפרטים שלCoupon.
- מבצע של 5% הנחה על כרטיס אשראי צריך להישלח בשני עותקים, אחד מתויג בתור
מסעדה מציעה 10% הנחה ללקוחות מזדמנים ו-5% הנחה למשלמים בכרטיס אשראי ספציפי, ואפשר לשלב בין שתי ההנחות.
- מבצע של 10% הנחה ללקוחות שמגיעים לחנות צריך להיות מתויג כ-
OFFER_CATEGORY_BASE_OFFER. - למבצע של 5% הנחה למשלמים בכרטיס אשראי צריכות להיות 2 עותקים, שאחד מהם מתויג בתור
OFFER_CATEGORY_BASE_OFFERוהשני מתויג בתורOFFER_CATEGORY_ADD_ON_PAYMENT_OFFER.
- מבצע של 10% הנחה ללקוחות שמגיעים לחנות צריך להיות מתויג כ-
מסעדה מציעה הנחה של 10% רק על ארוחת צהריים בימי חול, והנחה של 5% בכל שעה אם משלמים באמצעות כרטיס אשראי ספציפי.
- המבצע של 10% הנחה צריך להיות מוגדר עם
ValidityPeriodכדי לציין שהוא תקף רק בשעות הצהריים של המסעדה בימי חול. - אם אתם מציעים 5% הנחה על כרטיס אשראי, אתם צריכים לשלוח 2 עותקים.
- עותק אחד צריך להיות מתויג בתור
OFFER_CATEGORY_BASE_OFFERעם הפרטים שלPaymentInstrument.ValidityPeriodצריך להגדיר את המאפיין כך שיחריג את שעות ארוחת הצהריים בימי חול, כשהמבצע של 10% הנחה על ארוחת צהריים פעיל. - עותק אחד צריך להיות מתויג כ-
OFFER_CATEGORY_ADD_ON_PAYMENT_OFFERעם הפרטים שלPaymentInstrument.
- עותק אחד צריך להיות מתויג בתור
- כל שאר מבצעי התשלום במסעדה הזו צריכים להיות מתויגים בתג
OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER.
- המבצע של 10% הנחה צריך להיות מוגדר עם
תהליך הפיתוח וההשקה
במהלך תהליך השילוב, תוכלו להיעזר בפורטל לשותפים כדי לקבל מידע ומשוב על סמך הפיתוח שלכם. תהליך הפיתוח יתבצע לפי השלבים הבאים:
- השילוב יפותח קודם בסביבת ארגז החול. אתם צריכים להשתמש בייצוא של סביבת הייצור (או אפילו בנתוני סביבת הייצור ישירות) בסביבת Google Sandbox. כך תוכלו לוודא שהפיתוח שלכם כולל את כל מקרי הקצה, ו-Google תוכל להעריך את איכות הנתונים ולעזור לכם בצורה טובה יותר על סמך מודל הנתונים שלכם.
- אחרי שתעלו באופן עקבי פידים מלאים של מוכרים, שירותים ודילים לסביבת Google Sandbox, הצוות של Google יעריך את הפידים שלכם. אחרי שהצוות של Google יאשר את הקוד, תוכלו להעביר אותו לסביבת הייצור ולהתחיל לשלוח נתוני ייצור לסביבת הייצור של Google.
- אחרי שתסיימו לבדוק את השילוב בסביבת הייצור, הצוות של Google יבדוק אותו גם כן. אחרי שכל הבדיקות יסתיימו, השילוב יושק.
מעקב
כדי להבטיח חוויית משתמש טובה, Google תבדוק לפני ההשקה ואחריה שהמבצעים תקפים, נכונים ועומדים בקריטריונים של המדיניות שלנו. לשם כך, Google תשתמש בשילוב של בדיקה אנושית ואוטומטית. תוצאות הבדיקות האלה יהיו זמינות ב-Offer Dashboard (לוח הבקרה של המבצעים) ב-Action Center (סביבת הייצור בלבד). יכול להיות שהתוצאה של המעקב הזה תשמש להשפעה על דירוג המוצרים.
חשוב לוודא שדף הנחיתה נטען במלואו תוך פחות מ-5 שניות, כולל המוצרים. אחרת, המערכת תזהה את זה ככשל ותסמן את הבעיה Bad link.
בדיקות אוטומטיות (סורקים)
צוות האיכות של Google מטמיע סורקים. סורקים הם סקריפטים שמפעילים דפדפן אינטרנט באופן אוטומטי כדי לבצע כמה קליקים ולחלץ מידע על המוצרים, למטרות בדיקת איכות בלבד.
מספר השאילתות
לדוגמה, אם החלטנו לשלוח 5,000 בדיקות ביום, זה אומר ש-5,000 פעמים ביום (בחלוקה שווה לאורך היום, כלומר בערך פעם אחת בכל 17 שניות), הסורק שלנו מבצע את כל הפעולות הבאות שמשתמש רגיל היה מבצע:
- מתחילים בחיפוש Google ולוחצים על הקישור לשותף.
- מחפשים את פרטי המבצע.
- אם המבצע מחייב הזמנה, המערכת תמשיך לתהליך ההזמנה כדי לוודא שהמבצע זמין בזמן שצוין (לא תתבצע הזמנה).
זיהוי של כלי לגירוד נתונים מאתרים
כדי לוודא שהכלי לחילוץ נתונים לא ייחסם (מה שעלול לגרום לו להסיק שהמוצרים לא זמינים), צריך לוודא שהמערכת מאפשרת לכלי לחילוץ נתונים לשלוח שאילתות לדף בכל שלב. כדי לזהות את כלי הגירוד שלנו:
- סוכן המשתמש של סורק האינטרנט יכיל את המחרוזת "Google-Offers":
- דוגמה: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; Google-Offers) Chrome/104.0.5112.101 Safari/537.36
- אפשר גם לבדוק אם הקריאות מגיעות מ-Google באמצעות DNS הפוך, כמו שמומלץ במאמר אימות של Googlebot וסורקים אחרים של Google.
במקרה הספציפי שלנו, פענוח ה-DNS ההפוך פועל לפי התבנית הבאה:
google-proxy-***-***-***-***.google.com.
התנהגות טכנית
שמירה במטמון
כדי להפחית את העומס על אתר השותף, הסורקים שלנו מוגדרים בדרך כלל לכבד את כל כותרות השמירה במטמון הרגילות של HTTP שקיימות בתגובה. המשמעות היא שבאופן הזה אנחנו נמנעים מאתרים שהוגדרו בצורה נכונה לשלוף שוב ושוב תוכן שמשתנה לעיתים רחוקות (למשל ספריות JavaScript). במאמר הזה מוסבר איך להטמיע שמירה במטמון של HTTP.