Ce guide présente les exigences et des exemples d'offres de commande de plats.
Éligibilité et règles
Cette section présente les critères d'éligibilité importants que les partenaires doivent respecter lorsqu'ils proposent des offres. Il est important de tester tous les types d'offres que vous prévoyez de lancer lors des tests de flux en bac à sable. Si vous ne savez pas si une offre est éligible, veuillez contacter votre contact Google.
Exclure les offres personnalisées et à usage unique
Pour garantir une expérience utilisateur cohérente et de qualité, les partenaires ne doivent pas inclure d'offres réservées à des sous-ensembles spécifiques d'utilisateurs. Les offres personnalisées créées uniquement pour des utilisateurs spécifiques ne sont pas éligibles. Les offres valables sur l'ensemble de la plate-forme et éligibles pour tous les utilisateurs, comme les offres pour les nouveaux utilisateurs ou pour la première commande dans un restaurant donné, sont autorisées, à condition qu'elles s'affichent sur la page de destination de l'offre pour tous les utilisateurs. Les conditions de l'offre doivent être clairement indiquées dans le titre de l'offre et sur la page de destination de l'URL de l'offre. Les offres doivent être visibles sur la page de destination de l'offre pour tous les utilisateurs, qu'ils soient connectés ou non à votre site ou application.
Offres avec codes promotionnels
Certaines offres nécessitent la saisie d'un code promotionnel par l'utilisateur, par exemple "Appliquez le code SAVE20 pour bénéficier de 20% de remise sur le montant total". Il est important de noter que Google n'affiche pas les codes promotionnels à partir de la définition du code. Les partenaires peuvent inclure ces informations dans le champ OfferDetails.offer_display_text pour les afficher aux utilisateurs. Les offres basées sur des codes promotionnels se répartissent généralement en deux catégories :
- Offres où le code promotionnel est automatiquement présenté lors du paiement à tout utilisateur provenant de Google. Elles sont autorisées.
- Les offres qui obligent l'utilisateur à saisir le code promotionnel lors du paiement, mais qui ne fournissent pas d'instructions sur la façon d'appliquer le code promotionnel sur la page de destination de l'URL de l'offre ou qui n'appliquent pas automatiquement le code promotionnel lorsque l'utilisateur suit l'URL de l'offre, ne sont pas autorisées.
Contenu et structure de l'offre
Cette section détaille les exigences concernant le contenu et la structure des offres fournies dans le flux, y compris des exemples de métadonnées structurées.
Texte d'affichage de l'offre et spécification de l'offre
Le champ OfferDetails.offer_display_text est obligatoire et sert de titre concis pour une visibilité immédiate dans la section des offres sur la recherche Google, par exemple "10 € de remise" ou "Économisez 15%".
Le champ OfferDetails.offer_specification est obligatoire
et doit être "l'un des" champs de OfferDetails. Cela signifie qu'un seul des trois champs suivants doit être fourni pour spécifier l'offre :
discount_valuediscount_percentageother_offer_details_text
Le champ OfferDetails.other_offer_details_text est un champ de texte libre utilisé pour compléter le champ offer_display_text lorsque l'offre ne peut pas être exprimée sous forme de valeur de remise fixe ou de pourcentage. Si le champ offer_display_text est déjà suffisant pour transmettre toutes les informations nécessaires sur l'offre, le champ other_offer_details_text doit être renseigné avec le même texte que le champ offer_display_text. Toutefois, pour les offres complexes, ce champ doit fournir une description spécifique de la récompense.
Champs de métadonnées structurées
Pour améliorer la clarté des offres et permettre un meilleur classement et filtrage, les partenaires doivent fournir des métadonnées d'offre dans les champs structurés correspondants. Le champ terms.terms_and_conditions est obligatoire. La valeur doit inclure les conditions d'utilisation de l'offre. Par exemple, vous pouvez renseigner ce champ avec les conditions détaillées qui s'affichent pour les utilisateurs sur la page de destination de l'offre.
Exemples JSON d'offres
20 € de remise fixe
Exemple : 20 € de remise fixe le mardi pour un minimum de 15 € d'achat
{ "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" }
Offre "Un acheté, un sans frais"
Exemple : Un apéritif acheté, un sans frais, valable du lundi au jeudi
{ "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" }
Offre de remise en pourcentage
Exemple : 25% de remise sur les sandwichs
{ "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" }
Offre de livraison gratuite
Exemple : Livraison gratuite pour les commandes supérieures à 30 €. Sinon, la livraison coûte 7 €.
{ "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" }
Exemple d'offre de base avec une offre complémentaire
Exemple : Un restaurant propose 10% de remise uniquement pour le déjeuner en semaine et 5% de remise à tout moment pour les paiements effectués avec une carte de crédit spécifique.
[ { "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" } ]
Exécution et contraintes
Cette section détaille les exigences et les bonnes pratiques liées à la spécification d'exécution des offres et aux contraintes associées.
Mode d'exécution (livraison et à emporter)
Si une seule offre s'applique à la fois à la livraison et à la vente à emporter, elle doit comporter deux offres dans le flux. Chaque entrée doit avoir un ActionType dédié :
ACTION_TYPE_FOOD_DELIVERYACTION_TYPE_FOOD_TAKEOUT
Cela permet de s'assurer que les utilisateurs qui arrivent sur le site du partenaire voient le contexte d'exécution approprié.
Périodes
Les offres doivent s'afficher sur la page de destination de l'offre pour tous les utilisateurs, qu'ils soient connectés ou non à votre site ou application. Si l'offre est valable pendant une période spécifique, vous devez inclure le validity_periods.valid_period pour spécifier la période de validité. Cela empêche l'offre de s'afficher en dehors de cette période. La période doit également être définie si l'offre s'affiche sur l'URL de l'offre à certaines heures de la journée. Par exemple, si la page de destination n'affiche pas d'offres lorsque le restaurant est fermé, vous devez inclure les TimeOfDayWindow.
Gérer les périodes qui chevauchent minuit
Les offres qui s'étendent sur minuit (par exemple, valables du mardi à 22h au mercredi à 2h) doivent être segmentées pour être traitées correctement par le pipeline d'ingestion. Exigence : Utilisez le champ TimeOfDayWindow pour diviser la période en deux segments distincts :
- Segment 1 : de 22h à 23h59min59s le jour de début (par exemple, le mardi).
- Segment 2 : de 0h à 2h le jour suivant (par exemple, le mercredi).
Cela permet de s'assurer que la validité de l'offre est reflétée avec précision pendant toute la période.
Spécifications des frais
Les frais de livraison et de vente à emporter peuvent être spécifiés à l'aide du OfferDetails.additional_fees. Les frais de service doivent être spécifiés à l'aide du OfferDetails.convenience_fee. Utilisez une valeur de plage de frais pour les frais variables, par exemple si les frais de livraison varient en fonction de l'emplacement de l'utilisateur.