Este guia destaca os requisitos e exemplos de ofertas de pedidos de comida.
Qualificação e políticas
Esta seção destaca os critérios de qualificação importantes que os parceiros precisam seguir ao fornecer ofertas. É importante testar todos os tipos de ofertas que você planeja lançar durante o teste de feed da sandbox. Se você não tiver certeza se uma oferta é qualificada, entre em contato com o ponto de contato do Google.
Excluir ofertas personalizadas e de uso único
Para garantir uma experiência do usuário de alta qualidade e consistente, os parceiros não podem incluir ofertas restritas a subconjuntos específicos de usuários. As ofertas personalizadas criadas apenas para usuários específicos não são qualificadas. As ofertas de plataforma qualificadas para todos os usuários, como usuários iniciantes ou que fazem o primeiro pedido em um restaurante específico, são permitidas, desde que a oferta seja exibida na página de destino para todos os usuários. As condições da oferta precisam ser declaradas claramente no título e na página de destino do URL. As ofertas precisam estar visíveis na página de destino para todos os usuários, mesmo quando eles não estão conectados ao seu site ou app.
Ofertas com códigos de cupom
Algumas ofertas exigem que o usuário insira um código de cupom, como "Aplique o código SAVE20 para receber 20% de desconto na conta total". É importante observar que o Google não mostra códigos de cupom da definição do cupom. Os parceiros podem incluir essas informações no OfferDetails.offer_display_text para serem mostradas aos usuários. As ofertas baseadas em cupons geralmente se enquadram em duas categorias:
- Ofertas em que o cupom é apresentado automaticamente no checkout para qualquer usuário que chegue do Google. Essas são permitidas.
- Ofertas que exigem que o usuário insira o código do cupom no checkout, mas não fornecem instruções sobre como aplicar o código na página de destino do URL da oferta ou não aplicam o cupom automaticamente ao seguir o URL da oferta, não são permitidas.
Conteúdo e estrutura da oferta
Esta seção detalha os requisitos para o conteúdo e a estrutura das ofertas fornecidas no feed, incluindo exemplos dos metadados estruturados.
Texto de exibição e especificação da oferta
O OfferDetails.offer_display_text é um campo obrigatório que serve como título conciso para visibilidade imediata na seção de ofertas da Pesquisa Google, como "R$ 10 de desconto" ou "Economize 15%".
O OfferDetails.offer_specification
é um campo obrigatório "um de" dentro do OfferDetails. Isso significa que exatamente um dos três campos a seguir precisa ser fornecido para especificar a transação:
discount_valuediscount_percentother_offer_detail_text
O campo OfferDetails.other_offer_detail_text
é um campo de texto de formato livre usado para complementar o offer_display_text
quando a oferta não pode ser expressa como um valor ou porcentagem de desconto fixo. Se o offer_display_text já for suficiente para transmitir todas as informações necessárias sobre a oferta, o campo other_offer_detail_text precisará ser preenchido com o mesmo texto do offer_display_text. No entanto, para transações complexas, esse campo precisa fornecer uma descrição específica da recompensa.
Campos de metadados estruturados
Para melhorar a clareza da oferta e permitir uma melhor classificação e filtragem, os parceiros precisam fornecer metadados da oferta nos respectivos campos estruturados. É necessário especificar os
termos. Recomendamos definir o campo terms.terms_and_conditions com os termos detalhados que são mostrados aos usuários na página de destino da oferta.
Ofertas específicas de itens e pedidos totais
As ofertas específicas para subconjuntos de itens precisam usar os
offer_restrictions.inclusions
e os
offer_restrictions.exclusions
campos para definir os itens qualificados. Se a oferta for para um item específico, o nome dele precisará ser incluído no offer_display_text. Quando o nome do item é incluído no offer_display_text, não é necessário definir o offer_restrictions.inclusions.
Se o offer_restrictions.inclusions não estiver definido ou se o nome do item não estiver incluído no offer_display_text, a oferta será considerada aplicável ao valor total do pedido.
Ofertas de taxa de entrega
As ofertas de taxa de entrega precisam usar offer_category
OFFER_CATEGORY_ADD_ON_FEE_REDUCTION_OFFER. Isso permite que a oferta seja mostrada apenas quando combinada com outra oferta básica para o local. Uma oferta de taxa de entrega não será mostrada como uma oferta básica.
Exemplos de JSON de oferta
Desconto fixo de R $20
Exemplo: desconto fixo de R $20 no pedido total às terças-feiras com gasto mínimo de R $15
{ "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" }
50% de desconto no smoothie de frutas vermelhas
Exemplo: 50% de desconto na oferta de itens.
{ "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": "50% off on Berry Smoothie", "discount_percent": 50.0 }, "validity_periods": [ { "valid_period": { "valid_from_time": { "seconds": 1768953600 }, "valid_through_time": { "seconds": 1795219200 } } } ], "offer_restrictions": { "combinable_with_other_offers": true, "inclusions": [ {"description":"Berry Smoothie"} ] }, "terms": { "terms_and_conditions": "For use only at the participating restaurant location on qualifying delivery or takeout orders. Single use per order." }, "entity_ids": ["dining-1"], "offer_url": "https://www.example-restaurant.com/offer/base_offer_1" }
Compre um e ganhe outro
Exemplo: compre um aperitivo e ganhe outro, válido de segunda a quinta-feira
{ "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" }
Oferta de frete grátis
Exemplo: frete grátis como complemento de uma oferta básica. A oferta de taxa de entrega de R $0 será mostrada com qualquer oferta básica para o local.
[ { "offer_id": "offerId1", "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": "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_DELIVERY", "offer_modes": ["OFFER_MODE_ONLINE_ORDER"], "offer_category": "OFFER_CATEGORY_ADD_ON_FEE_REDUCTION_OFFER", "offer_details": { "offer_display_text": "$0 Delivery Fee", "other_offer_detail_text": "Free dellivery" }, "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": "Delivery is free 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" } ]
Atendimento e restrições
Esta seção detalha os requisitos e as práticas recomendadas relacionados à especificação de atendimento de ofertas e às restrições associadas a elas.
Modo de atendimento (entrega e retirada)
Se uma única transação se aplicar à entrega e à retirada, ela precisará ter duas ofertas no feed. Cada entrada precisa ter um ActionType dedicado:
ACTION_TYPE_FOOD_DELIVERYACTION_TYPE_FOOD_TAKEOUT
Isso garante que os usuários que acessam o site do parceiro recebam o contexto de atendimento correto.
Janelas de tempo
As ofertas precisam ser mostradas na página de destino para todos os usuários, mesmo quando eles não estão conectados ao seu site ou app. Se a oferta for válida durante um período específico, inclua o campo validity_periods.valid_period para especificar o período válido. Isso impede que a oferta seja mostrada fora do período. A janela de tempo também precisa ser definida se a oferta for mostrada no URL da oferta durante determinadas horas do dia. Por exemplo, se a página de destino não mostrar ofertas quando o restaurante estiver fechado, você deve incluir os horários de abertura e fechamento do TimeOfDayWindow.
Processar períodos que cruzam a meia-noite
As ofertas que abrangem a meia-noite (por exemplo, válidas das 22h de terça-feira às 2h de quarta-feira) precisam ser segmentadas para serem processadas corretamente pelo pipeline de ingestão. Requisito:use o campo TimeOfDayWindow para dividir a janela em dois segmentos distintos:
- Segmento 1 : das 22h às 23h59min59s do dia de início (por exemplo, terça-feira).
- Segmento 2 : das 0h às 2h do dia seguinte (por exemplo, quarta-feira).
Isso garante que a validade da oferta seja refletida com precisão durante todo o período.
Especificações de taxa
As taxas de entrega e retirada podem ser especificadas usando o OfferDetails.additional_fees. Uma taxa de conveniência precisa ser especificada usando o OfferDetails.convenience_fee. Use um valor de intervalo de taxa para taxas variáveis, por exemplo, se as taxas de entrega mudarem com base na localização do usuário.