These guide highlights requirements and examples of Food Ordering offers.
Eligibility and Policies
This section highlights important eligibility criteria that partners must adhere to when providing offers. It is important to test all offer types types that you plan to launch during sandbox feed testing. If you are unsure if an offer is eligible, please reach out to your Google POC.
Exclude personalized and single-use offers
To ensure a high-quality and consistent user experience, partners must not include offers that are restricted to specific subsets of users. Personalized offers created only for specific users are not eligible. Platform-wide offers eligible for all users such as first-time users or first-time ordering at a particular restaurant are allowed given that the offer is displayed on the offer landing page for all users. The offer conditions must be clearly stated in the offer title and on the offer URL landing page. Offers must be visible on the offer landing page for all users when logged-out or logged-in to your site or app.
Offers with coupon codes
Certain offers require the entry of a coupon code by the user, such as "Apply code SAVE20 to get 20% off on the total bill". It is important to note that Google doesn't display coupon codes from the coupon definition. Partners may include this information within the OfferDetails.offer_display_text to be displayed to users. Coupon-based offers generally fall into two categories:
- Offers where the coupon is automatically presented at checkout to any user arriving from Google. These are permitted.
- Offers that require the user to enter the coupon code at checkout but don't provide instructions on how to apply the coupon code on the offer url landing page, or don't automatically apply the coupon when following the offer url, are not permitted.
Offer Content and Structure
This section details the requirements for the content and structure of the offers provided in the feed, including examples of the structured metadata.
Offer display text and Offer specification
The OfferDetails.offer_display_text is a required field that serves as the concise headline for immediate visibility in the offers section on Google Search, such as "$10 off" or "Save 15%".
The OfferDetails.offer_specification is a required
"one of" field within the OfferDetails. This means that exactly one of the
following three fields must be provided to specify the deal:
discount_valuediscount_percentageother_offer_details_text
The OfferDetails.other_offer_details_text field is a
free-form text field used to supplement the offer_display_text when the offer
cannot be expressed as a flat discount value or percentage. If the
offer_display_text is already sufficient to convey all necessary information
about the offer, the other_offer_details_text field should be populated with
the same text as the offer_display_text. However, for complex deals, this
field should provide a specific description of the reward.
Structured metadata fields
To improve offer clarity and enable better ranking and filtering, partners must provide offer metadata in the respective structured fields. The terms.terms_and_conditions field is required. The value should include conditions on how to redeem the offer. For example, you may populate this field with the detailed terms that are displayed to users on the offer landing page.
Offer JSON Examples
Flat $20 off
Example: Flat $20 off discount on Tuesdays with $15 minimum spend
{ "offer_id": "offer-example-1-takeout", "offer_source": "OFFER_SOURCE_AGGREGATOR", "action_type": "ACTION_TYPE_FOOD_TAKEOUT", "offer_modes": ["OFFER_MODE_ONLINE_ORDER"], "offer_category": "OFFER_CATEGORY_BASE_OFFER", "offer_details": { "offer_display_text": "$20 off on Tuesdays", "discount_value": { "currency_code": "USD", "units": 20 }, "min_spend_value": { "currency_code": "USD", "units": 15 } }, "validity_periods": [ { "valid_period": { "valid_from_time": { "seconds": 1768953600 }, "valid_through_time": { "seconds": 1795219200 } }, "time_of_day": [ { "time_windows": { "open_time": { "hours": 9 }, "close_time": { "hours": 20, "minutes": 59, "seconds": 59 } }, "day_of_week": ["TUESDAY"] } ] } ], "offer_restrictions": { "combinable_with_other_offers": false }, "terms": { "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery or takeout orders with $15 minimum spend. Single use per order. Offer may not be combined with any other offers, discounts, or promotions. Valid only on Tuesdays." }, "entity_ids": ["dining-1"], "offer_url": "https://www.example-restaurant.com/offer/base_offer_1" }
Buy One Get One Free offer
Example: Buy one appetizer, get one free offer, valid Monday through Thursday
{ "offer_id": "offer-example-2-delivery", "offer_source": "OFFER_SOURCE_AGGREGATOR", "action_type": "ACTION_TYPE_FOOD_DELIVERY", "offer_modes": ["OFFER_MODE_ONLINE_ORDER"], "offer_category": "OFFER_CATEGORY_BASE_OFFER", "offer_details": { "offer_display_text": "Buy one appetizer, get one free", "other_offer_detail_text": "Buy one appetizer, get one free" }, "validity_periods": [ { "valid_period": { "valid_from_time": { "seconds": 1768953600 }, "valid_through_time": { "seconds": 1795219200 } }, "time_of_day": [ { "time_windows": { "open_time": { "hours": 10 }, "close_time": { "hours": 23, "minutes": 59, "seconds": 59 } }, "day_of_week": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY"] } ] } ], "offer_restrictions": { "combinable_with_other_offers": true, "inclusions": [ { "description": "appetizers" } ] }, "terms": { "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery or takeout orders. Single use per order. Valid on all menu appetizers. Offer may be combined with any other offers, discounts, or promotions. Valid Monday through Thursday." }, "entity_ids": ["dining-1"], "offer_url": "https://www.example-restaurant.com/offer/base_offer_4" }
Percentage Discount offer
Example: 25% off on Sandwitches
{ "offer_id": "offer-example-3-delivery", "offer_source": "OFFER_SOURCE_AGGREGATOR", "action_type": "ACTION_TYPE_FOOD_DELIVERY", "offer_modes": ["OFFER_MODE_ONLINE_ORDER"], "offer_category": "OFFER_CATEGORY_BASE_OFFER", "offer_details": { "offer_display_text": "25% off on Sandwitches", "discount_percent": 25.0 }, "validity_periods": [ { "valid_period": { "valid_from_time": { "seconds": 1768953600 }, "valid_through_time": { "seconds": 1795219200 } } } ], "offer_restrictions": { "combinable_with_other_offers": true }, "terms": { "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery or takeout orders. Applies to specific items only. Single use per order. May be combined with any other offers, discounts, or promotions." }, "entity_ids": ["dining-1"], "offer_url": "https://www.example-restaurant.com/offer/base_offer_2" }
Free Delivery offer
Example: Free delivery on orders over $30. Delivery is $7.00 otherwise.
{ "offer_id": "offer-example-4-delivery", "offer_source": "OFFER_SOURCE_AGGREGATOR", "action_type": "ACTION_TYPE_FOOD_DELIVERY", "offer_modes": ["OFFER_MODE_ONLINE_ORDER"], "offer_category": "OFFER_CATEGORY_BASE_OFFER", "offer_details": { "offer_display_text": "Free delivery on orders over $30", "discount_value": { "currency_code": "USD", "units": 7 }, "min_spend_value": { "currency_code": "USD", "units": 30 } }, "validity_periods": [ { "valid_period": { "valid_from_time": { "seconds": 1768953600 }, "valid_through_time": { "seconds": 1795219200 } } } ], "offer_restrictions": { "combinable_with_other_offers": true }, "terms": { "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery orders with $30 minimum spend. Delivery is $7.00 otherwise. Single use per order. May be combined with any other offers, discounts, or promotions." }, "entity_ids": ["dining-1"], "offer_url": "https://www.example-restaurant.com/offer/base_offer_3" }
Base offer with addon offer example
Example: A restaurant offers 10% off only for lunch on weekdays, and 5% off anytime when paying with a specific credit card.
[ { "offer_id": "offerId1", "offer_source": "OFFER_SOURCE_AGGREGATOR", "action_type": "ACTION_TYPE_FOOD_TAKEOUT", "offer_modes": ["OFFER_MODE_ONLINE_ORDER"], "offer_category": "OFFER_CATEGORY_BASE_OFFER", "offer_details": { "offer_display_text": "10% off", "discount_percent": 10.0 }, "validity_periods": [ { "valid_period": { "valid_from_time": { "seconds": 1768953600 }, "valid_through_time": { "seconds": 1795219200 } }, "time_of_day": [ { "day_of_week": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY"] } ] } ], "offer_restrictions": { "combinable_with_other_offers": true, "combinable_offer_categories": ["OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER"] }, "terms": { "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery or takeout orders. Single use per order. Offer may be combined with any other offers, discounts, or promotions." }, "entity_ids": ["dining-1"], "offer_url": "https://www.example-restaurant.com/offer/base_offer_5" }, { "offer_id": "offerId2", "offer_source": "OFFER_SOURCE_AGGREGATOR", "action_type": "ACTION_TYPE_FOOD_TAKEOUT", "offer_modes": ["OFFER_MODE_ONLINE_ORDER"], "offer_category": "OFFER_CATEGORY_ADD_ON_PAYMENT_OFFER", "offer_details": { "offer_display_text": "5% off", "discount_percent": 5.0 }, "validity_periods": [ { "valid_period": { "valid_from_time": { "seconds": 1768953600 }, "valid_through_time": { "seconds": 1795219200 } }, "time_of_day": [ { "day_of_week": ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY"] } ] } ], "offer_restrictions": { "combinable_with_other_offers": true, "combinable_offer_ids": ["offerId1"] }, "payment_instrument": { "items": [ { "type": "PAYMENT_INSTRUMENT_CREDIT_CARD", "name": "Participating Credit Card" } ], "provider_name": "Card Provider" }, "terms": { "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery or takeout orders. Single use per order. Offer may be combined with any other offers, discounts, or promotions." }, "entity_ids": ["dining-1"], "offer_url": "https://www.example-restaurant.com/offer/addon_offer_1" } ]
Fulfillment and Constraints
This section details requirements and best practices related to offer fulfillment specification and constraints associated with them.
Fulfillment mode (Delivery and Takeout)
If a single deal applies to both delivery and takeout, it must have two offers in the feed. Each entry must have a dedicated ActionType:
ACTION_TYPE_FOOD_DELIVERYACTION_TYPE_FOOD_TAKEOUT
This ensures that users landing on the partner site are presented with the correct fulfillment context.
Time windows
Offers are expected to be displayed on the offer landing page for all users when logged-out or logged-in to your site or app. If the offer is valid during a specific time period, you must include the validity_periods.valid_period field to specify the valid period. This prevents the offer from being displayed outside of the time period. The time window must also be set if the offer is displayed on the offer url during certain hours of the day. For example, if the landing page does not display offers when the restaurant is closed, you must include the TimeOfDayWindow open and close times.
Handle timeframes crossing midnight
Offers that span across midnight (e.g., valid from 10:00 PM Tuesday to 2:00 AM Wednesday) must be segmented to be processed correctly by the ingestion pipeline. Requirement: Use the TimeOfDayWindow field to break the window into two distinct segments:
- Segment 1: 10:00 PM to 11:59:59 PM on the starting day (e.g., Tuesday).
- Segment 2: 12:00 AM to 2:00 AM on the following day (e.g., Wednesday).
This ensures the offer's validity is accurately reflected throughout the entire period.
Fee specifications
Fees for delivery and takeout can be specified using the OfferDetails.additional_fees field. A convenience fee should be specified using the OfferDetails.convenience_fee. Use a fee range value for variable fees, for example, if delivery fees change based on the user's location.