Requisitos e exemplos de ofertas

Este guia destaca os requisitos e exemplos de ofertas de pedidos de comida.

Qualificação e políticas

Esta seção destaca critérios de qualificação importantes que os parceiros precisam seguir ao oferecer promoções. É importante testar todos os tipos de ofertas que você planeja lançar durante o teste de feed no sandbox. Se você não tiver certeza se uma oferta é qualificada, entre em contato com seu POC do Google.

Excluir ofertas personalizadas e de uso único

Para garantir uma experiência do usuário consistente e de alta qualidade, 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 atendem aos requisitos. As ofertas em toda a plataforma qualificadas para todos os usuários, como usuários novos ou que fazem um pedido pela primeira vez em um restaurante específico, são permitidas, desde que a oferta seja exibida na página de destino da oferta para todos os usuários. As condições precisam estar claramente indicadas no título e na página de destino do URL da oferta. As ofertas precisam estar visíveis na página de destino da oferta para todos os usuários, conectados ou não 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 no valor total da conta". É importante observar que o Google não mostra códigos de cupom da definição de cupom. Os parceiros podem incluir essas informações em 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 na finalização da compra para qualquer usuário que chegue do Google. Esses itens são permitidos.
  • Não são permitidas ofertas que exigem que o usuário insira o código do cupom na finalização da compra, 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 automaticamente o cupom ao seguir o URL da oferta.

Conteúdo e estrutura da oferta

Nesta seção, detalhamos os requisitos para o conteúdo e a estrutura das ofertas fornecidas no feed, incluindo exemplos dos metadados estruturados.

Texto de exibição da oferta 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 "one of" em OfferDetails. Isso significa que exatamente um dos três campos a seguir precisa ser fornecido para especificar a transação:

  • discount_value
  • discount_percentage
  • other_offer_details_text

O campo OfferDetails.other_offer_details_text é um campo de texto livre usado para complementar o offer_display_text quando a oferta não pode ser expressa como um valor ou porcentagem de desconto simples. Se o offer_display_text já for suficiente para transmitir todas as informações necessárias sobre a oferta, o campo other_offer_details_text deverá ser preenchido com o mesmo texto do offer_display_text. No entanto, para ofertas complexas, esse campo precisa fornecer uma descrição específica da recompensa.

Campos de metadados estruturados

Para melhorar a clareza das ofertas e permitir uma classificação e filtragem melhores, os parceiros precisam fornecer metadados nos respectivos campos estruturados. O campo terms.terms_and_conditions é obrigatório. O valor precisa incluir condições sobre como resgatar a oferta. Por exemplo, você pode preencher esse campo com os termos detalhados que são mostrados aos usuários na página de destino da oferta.

Exemplos de JSON de oferta

Desconto fixo de US $20

Exemplo: desconto fixo de R $20,00 às terças-feiras com gasto mínimo de R $15,00

{
  "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"
}

Oferta "Compre um e ganhe outro"

Exemplo: compre um aperitivo e ganhe outro sem custo financeiro, 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 desconto percentual

Exemplo: 25% de desconto em sanduíches

{
  "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"
}

Oferta de frete grátis

Exemplo: entrega grátis para pedidos acima de US $30. Caso contrário, a entrega custa US $7,00.

{
  "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"
}

Exemplo de oferta básica com oferta complementar

Exemplo: um restaurante oferece 10% de desconto apenas no almoço durante a semana e 5% de desconto a qualquer hora ao pagar com um cartão de crédito específico.

[
  {
    "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"
  }
]

Cumprimento e restrições

Esta seção detalha os requisitos e as práticas recomendadas relacionadas à especificação de atendimento de ofertas e às restrições associadas a elas.

Modo de atendimento (entrega e retirada)

Se uma única oferta for válida para entrega e retirada, ela precisará ter duas ofertas no feed. Cada entrada precisa ter um ActionType dedicado:

  • ACTION_TYPE_FOOD_DELIVERY
  • ACTION_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 exibidas na página de destino para todos os usuários, conectados ou não 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 de validade. Isso impede que a oferta seja exibida fora desse período. A janela de tempo também precisa ser definida se a oferta for exibida no URL durante determinadas horas do dia. Por exemplo, se a página de destino não mostrar ofertas quando o restaurante estiver fechado, inclua 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 taxas

As taxas de entrega e retirada podem ser especificadas usando o campo OfferDetails.additional_fees. Uma taxa de conveniência deve 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.